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

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Установка PHP)
(Настройка)
Строка 31: Строка 31:
 
Стало
 
Стало
 
<pre>cgi.fix_pathinfo=1</pre>
 
<pre>cgi.fix_pathinfo=1</pre>
Заодно можно сделать настройки указанные тут
+
Заодно можно сделать настройки указанные [http://miac.volmed.org.ru/wiki/index.php/FAQ#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8.2C_.D0.BA.D0.BE.D1.82.D0.BE.D1.80.D1.8B.D0.B5_.D1.8F_.D1.81.D0.B4.D0.B5.D0.BB.D0.B0.D0.BB_.D0.BF.D1.80.D0.B8_.D0.BF.D0.B5.D1.80.D0.B5.D1.85.D0.BE.D0.B4.D0.B5_.D0.BD.D0.B0_php_5.3 тут]<br>
 +
Теперь нам надо просто перезапустить PHP fpm сервис.
 +
<pre>$ sudo systemctl restart php7.2-fpm</pre>
 +
==Настройка NGINX для работы с PHP fpm сервером.==
 +
Мы установили все нужные компоненты. Осталось только сделать настройки Nginx, что бы он работал с динамическим контентом через PHP сервер.<php>
 +
Открываем настройки Nginx сервера по умолчанию:
 +
<pre>sudo nano /etc/nginx/sites-available/default</pre>
 +
Файл /etc/nginx/sites-available/default выглядит примерно так
 +
<pre>
 +
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;
 +
    }
 +
}
 +
</pre>
 +
Мы должны сделать некоторые изменения для нашего сайта
 +
# Во-первых, нам нужно добавить index.php в качестве первого значения  строки директивы index, так чтобы файл с именем index.php был открыт, если он доступен, когда запрашивается каталог.
 +
# Мы можем изменить директиву server_name, чтобы указать доменное имя или общедоступный IP-адрес нашего сервера.
 +
# Для фактической обработки PHP нам просто нужно раскомментировать сегмент файла, который обрабатывает запросы PHP, удаляя символы фунта (#) перед каждой строкой. Это будет блок местоположения ~ \ .php $, включенный фрагмент fastcgi-php.conf и сокет, связанный с php-fpm.
 +
# Мы также раскомментируем блок местоположения, связанный с файлами .htaccess, используя тот же метод. Nginx не обрабатывает эти файлы. Если какой-либо из этих файлов попадает в корень документа, они не должны обслуживаться посетителями.
 +
Было
 +
<pre>index index.html index.htm index.nginx-debian.html;</pre>
 +
Стало
 +
<pre>index index.php index.html index.htm index.nginx-debian.html;</pre>
 +
 
 +
 
 +
 
 +
server {
 +
    listen 80 default_server;
 +
    listen [::]:80 default_server;
 +
 
 +
    root /var/www/html;
 +
    index index.php index.html index.htm index.nginx-debian.html;
 +
 
 +
    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;
 +
    }
 +
}
 +
 
 +
When you've made the above changes, you can save and close the file.
 +
 
 +
Test your configuration file for syntax errors by typing:
 +
 
 +
    sudo nginx -t
 +
 
 +
If any errors are reported, go back and recheck your file before continuing.
 +
 
 +
When you are ready, reload Nginx to make the necessary changes:
 +
 
 +
    sudo systemctl reload nginx

Версия 16:19, 27 июня 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

В данной версии вход пользователем 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 {

   listen 80 default_server;
   listen [::]:80 default_server;
   root /var/www/html;
   index index.php index.html index.htm index.nginx-debian.html;
   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;
   }

}

When you've made the above changes, you can save and close the file.

Test your configuration file for syntax errors by typing:

   sudo nginx -t

If any errors are reported, go back and recheck your file before continuing.

When you are ready, reload Nginx to make the necessary changes:

   sudo systemctl reload nginx