Установка nginx + php fpm + mysql + memcache на UBUNTU 18.04: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Настройка)
(Установка MYSQL сервера)
 
(не показано 6 промежуточных версий этого же участника)
Строка 11: Строка 11:
 
<pre>sudo apt install nginx</pre>
 
<pre>sudo apt install nginx</pre>
 
После инсталляции NGINX будет стартовать автоматически после перезагрузки.<br>
 
После инсталляции NGINX будет стартовать автоматически после перезагрузки.<br>
Если у Вас установлен фаервол ufw, то его настройка описана в [[https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04 статье]. Здесь описывать не буду.<br>
+
Если у Вас установлен фаервол ufw, то его настройка описана в [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04 статье]. Здесь описывать не буду.<br>
 
Находим ip адрес компьютера
 
Находим ip адрес компьютера
 
<pre>ifconfig</pre>
 
<pre>ifconfig</pre>
 
и пробуем зайти на него из браузера по адресу http://<local_address_server><br>
 
и пробуем зайти на него из браузера по адресу http://<local_address_server><br>
 
Если получили приглашение NGINX - идем дальше.
 
Если получили приглашение NGINX - идем дальше.
 +
 
==Установка MYSQL сервера==
 
==Установка MYSQL сервера==
<pre>$ sudo apt install mysql</pre>
+
<pre>$ sudo apt install mysql-server</pre>
 
В данной версии вход пользователем mysql/root сделан только от системного пользователя root и без пароля, поэтому mysql_secure_installation запускаем так.
 
В данной версии вход пользователем mysql/root сделан только от системного пользователя root и без пароля, поэтому mysql_secure_installation запускаем так.
 
<pre>$ sudo mysql_secure_installation</pre>
 
<pre>$ sudo mysql_secure_installation</pre>
 
И выполняем все, что предлагает скрипт<br>
 
И выполняем все, что предлагает скрипт<br>
 
'''Примечание:''' У меня не получилось изменить пароль mysql/root и вход так и остался, через sudo mysql -uroot - без пароля.
 
'''Примечание:''' У меня не получилось изменить пароль mysql/root и вход так и остался, через sudo mysql -uroot - без пароля.
 +
 
==Установка и настройка PHP==
 
==Установка и настройка PHP==
 
===Установка===
 
===Установка===
Строка 64: Строка 66:
 
<pre>index index.php index.html index.htm index.nginx-debian.html;</pre>
 
<pre>index index.php index.html index.htm index.nginx-debian.html;</pre>
  
 
+
Было
 
+
<pre>server_name _;</pre>
server {
+
Стало
    listen 80 default_server;
+
<pre>server_name server_domain_or_IP;</pre>
    listen [::]:80 default_server;
+
И добавляем модули location в модуль server
 
+
<pre>location ~ \.php$ {
    root /var/www/html;
+
  include snippets/fastcgi-php.conf;
    index index.php index.html index.htm index.nginx-debian.html;
+
  fastcgi_pass unix:/run/php/php7.2-fpm.sock;
 
 
    server_name server_domain_or_IP;
 
 
 
    location / {
 
        try_files $uri $uri/ =404;
 
    }
 
 
 
    location ~ \.php$ {
 
        include snippets/fastcgi-php.conf;
 
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 
    }
 
 
 
    location ~ /\.ht {
 
        deny all;
 
    }
 
 
}
 
}
 
+
location ~ /\.ht {
When you've made the above changes, you can save and close the file.
+
    deny all;
 
+
}</pre>
Test your configuration file for syntax errors by typing:
+
После сделанных изменений, сохраняем и закрываем файл.<br>
 
+
Проверяем конфигурацию nginx
    sudo nginx -t
+
<pre>sudo nginx -t</pre>
 
+
И если ошибок нет, то перезапускам nginx.
If any errors are reported, go back and recheck your file before continuing.
+
<pre>sudo systemctl reload nginx</pre>
 
+
==Создание файла для проверки конфигурации==
When you are ready, reload Nginx to make the necessary changes:
+
Для проверки можно создать файл с любым кодом PHP и проверить как оно работает.<br>
 
+
Например, создаем файл /var/www/html/index.php со следующим содержимым
    sudo systemctl reload nginx
+
<pre><?php
 +
phpinfo();</pre>
 +
Теперь в браузере заходим http://server_domain_or_IP/index.php<br>
 +
И если Вы увидите таблицу настроек PHP, то настройки сделаны правильно.
 +
==[http://miac.volmed.org.ru/wiki/index.php/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_memcache Добавления модуля memcache]==

Текущая версия на 08:42, 29 июня 2018

Источники информации

  1. How To Install Linux, Nginx, MySQL, PHP (LEMP stack) in Ubuntu 16.04.
  2. Install Nginx with PHP-FPM and Memcached Support on Ubuntu 17.04 / 17.10.

Обновление системы

Для начала обновляем систему

$ sudo apt update
$ sudo apt upgrade

Установка NGINX

sudo apt install nginx

После инсталляции NGINX будет стартовать автоматически после перезагрузки.
Если у Вас установлен фаервол ufw, то его настройка описана в статье. Здесь описывать не буду.
Находим ip адрес компьютера

ifconfig

и пробуем зайти на него из браузера по адресу http://<local_address_server>
Если получили приглашение NGINX - идем дальше.

Установка MYSQL сервера

$ sudo apt install mysql-server

В данной версии вход пользователем mysql/root сделан только от системного пользователя root и без пароля, поэтому mysql_secure_installation запускаем так.

$ sudo mysql_secure_installation

И выполняем все, что предлагает скрипт
Примечание: У меня не получилось изменить пароль mysql/root и вход так и остался, через sudo mysql -uroot - без пароля.

Установка и настройка PHP

Установка

$ sudo apt-get install php-fpm php-mysql

Настройка

sudo nano /etc/php/7.2/fpm/php.ini

Было

;cgi.fix_pathinfo=1

Стало

cgi.fix_pathinfo=1

Заодно можно сделать настройки указанные тут
Теперь нам надо просто перезапустить PHP fpm сервис.

$ sudo systemctl restart php7.2-fpm

Настройка NGINX для работы с PHP fpm сервером.

Мы установили все нужные компоненты. Осталось только сделать настройки Nginx, что бы он работал с динамическим контентом через PHP сервер.<php> Открываем настройки Nginx сервера по умолчанию:

sudo nano /etc/nginx/sites-available/default

Файл /etc/nginx/sites-available/default выглядит примерно так

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

Мы должны сделать некоторые изменения для нашего сайта

  1. Во-первых, нам нужно добавить index.php в качестве первого значения строки директивы index, так чтобы файл с именем index.php был открыт, если он доступен, когда запрашивается каталог.
  2. Мы можем изменить директиву server_name, чтобы указать доменное имя или общедоступный IP-адрес нашего сервера.
  3. Для фактической обработки PHP нам просто нужно раскомментировать сегмент файла, который обрабатывает запросы PHP, удаляя символы фунта (#) перед каждой строкой. Это будет блок местоположения ~ \ .php $, включенный фрагмент fastcgi-php.conf и сокет, связанный с php-fpm.
  4. Мы также раскомментируем блок местоположения, связанный с файлами .htaccess, используя тот же метод. Nginx не обрабатывает эти файлы. Если какой-либо из этих файлов попадает в корень документа, они не должны обслуживаться посетителями.

Было

index index.html index.htm index.nginx-debian.html;

Стало

index index.php index.html index.htm index.nginx-debian.html;

Было

server_name _;

Стало

server_name server_domain_or_IP;

И добавляем модули location в модуль server

location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
     deny all;
}

После сделанных изменений, сохраняем и закрываем файл.
Проверяем конфигурацию nginx

sudo nginx -t

И если ошибок нет, то перезапускам nginx.

sudo systemctl reload nginx

Создание файла для проверки конфигурации

Для проверки можно создать файл с любым кодом PHP и проверить как оно работает.
Например, создаем файл /var/www/html/index.php со следующим содержимым

<?php
phpinfo();

Теперь в браузере заходим http://server_domain_or_IP/index.php
И если Вы увидите таблицу настроек PHP, то настройки сделаны правильно.

Добавления модуля memcache