LEMP или nginx + mysql + php

Дата публикации: 25-07-2013 | Автор: MelfisFettel | Рубрика: Ubuntu Server

LEMP php+nginx+mysql Ubuntu ServerНа одном из своих виртуальных серверов я решил отказаться от использования Apache вообще, так как основные проекты используют uwsg + nginx, а вторичные проекты на php не особо масштабные. Все описанное в статье производилось на Ubuntu Server 11.04, и отлично работает поддерживая 4 проекта (3 Drupal и 1 WordPress). Для того что бы достигнуть требуемого функционала, Вам будет необходимо установить следующие компонеты: Nginx, MySQL, PHP5, php-fpm.

Для начала необходимо установить MySql. (У меня на сервере данная СУБД уже развернута, но я приведу базовые команды установки.)

1
sudo apt-get install mysql-server mysql-client
sudo apt-get install mysql-server mysql-client

В процессе установки, MySQL потребует ввода пароля пользователя root (не системного пользователя root, а пользователя root самой СУБД.) Дважды введите пароль. По окончании установки, MySQL сервер будет запущен и готов к работе. (Так же я бы рекомендовал изменить кодировки таблиц по умолчанию. Как это сделать я описывал в этой статье по установке uwsgi + nginx)

Теперь необходимо установить сам nginx сервер. Вы можете собрать его из исходников, или просто выполнить установку из пакета:

1
sudo apt-get install nginx
sudo apt-get install nginx

По окончании установки nginx, Вам необходимо его запустить командой:

1
/etc/init.d/nginx start
/etc/init.d/nginx start

или

1
sudo service nginx start
sudo service nginx start

Проверьте Ваш nginx сервер, набрав в браузере ip адрес Вашего сервера. Если все работоспособно, то можно продолжать.

Далее Вам необходимо установить php-fpm. (По идее, можно ограничится только командой установки php-fpm, но я так же устанавливаю php указывая этот пакет явно, за одно устанавливаю дополнительные пакеты для работы моих сайтов. Далеко не факт что все эти пакеты Вам нужны, но все же.)

1
sudo apt-get install php5 php5-common php5-cli  php5-mysql php5-gd php5-cgi php-pear php5-mcrypt php5-fpm
sudo apt-get install php5 php5-common php5-cli  php5-mysql php5-gd php5-cgi php-pear php5-mcrypt php5-fpm

После окончания установки, начнем конфигурирование пакета php5-fpm:

Данные действия, важны для, безопасности Вашего сервера!

1
sudo nano /etc/php5/fpm/php.ini
sudo nano /etc/php5/fpm/php.ini

В файле найдите закомментированную строку:

1
;cgi.fix_pathinfo = 1
;cgi.fix_pathinfo = 1

И раскомментировав и изменив 1 на 0 приведите ее к виду:

1
cgi.fix_pathinfo = 0
cgi.fix_pathinfo = 0

После чего, сохраните изменения в файле и закройте его. Теперь необходимо указать список файлов для работы php-fpm и точку подключения:

1
sudo nano /etc/php5/fpm/pool.d/www.conf
sudo nano /etc/php5/fpm/pool.d/www.conf

Вам необходимо найти строку security.limit_extensions, и если она закоментирована, то раскомментировать ее и привести к следующему виду:

1
security.limit_extensions = .php .php3 .php4 .php5
security.limit_extensions = .php .php3 .php4 .php5

Далее в этом же файле найдите строку listen 127.0.0.1:9000 (Могу ошибиться в номере порта.) И привести ее к виду:

1
listen = /var/run/php5-fpm.sock
listen = /var/run/php5-fpm.sock

После чего сохраните изменения и закройте редактор.

Теперь сконфигурируем дефолтный виртуальный хост для nginx (Я на всякий случай с начала создаю копию этого файла. мало ли что мне понадобится. :) ):

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

Я не буду касаться https в данной статье, так как подключение по https требует наличия сертификата, (и главное, я не работаю с https :) ).

Приведу сразу вид базового, работоспособного конфига с комментариями:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
server {
       listen   80;  #Порт который будет слушать Ваш nginx сервер
 
        root /var/www/nginx/default;  #Корневая директория в которой расположены скрипты
        index index.php index.html index.htm; #Думаю тут и так все понятно
 
        access_log /var/www/nginx/default/log/access.log; #Расположение лога доступа
        error_log /var/www/nginx/default/log/error.log; #Расположение лога с ошибками
 
        server_name shizopolis.com; #Доменное имя Вашего сайта
        client_max_body_size 20M; #Максимальный размер файла. (Используется для загрузки на сайт)
 
        location / {
                try_files $uri $uri/ /index.php;
        }
 
        #Страницы ошибок
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
               root /usr/share/nginx/www;
        }
 
        # Собственно говоря путь к обработчику Ваших php скриптов.
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                #With php5-fpm:
                fastcgi_pass   unix:/var/run/php5-fpm.sock;
                fastcgi_split_path_info>^(.+\.php)(.*)$;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
 
        fastcgi_param    SCRIPT_FILENAME>    $document_root$fastcgi_script_name;
        fastcgi_param    PATH_TRANSLATED>    $document_root$fastcgi_script_name;
        fastcgi_param    PATH_INFO           $fastcgi_path_info;
        }
}
server {
       listen   80;  #Порт который будет слушать Ваш nginx сервер

        root /var/www/nginx/default;  #Корневая директория в которой расположены скрипты
        index index.php index.html index.htm; #Думаю тут и так все понятно

        access_log /var/www/nginx/default/log/access.log; #Расположение лога доступа
        error_log /var/www/nginx/default/log/error.log; #Расположение лога с ошибками

        server_name shizopolis.com; #Доменное имя Вашего сайта
        client_max_body_size 20M; #Максимальный размер файла. (Используется для загрузки на сайт)

        location / {
                try_files $uri $uri/ /index.php;
        }

        #Страницы ошибок
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
               root /usr/share/nginx/www;
        }

        # Собственно говоря путь к обработчику Ваших php скриптов.
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                #With php5-fpm:
                fastcgi_pass   unix:/var/run/php5-fpm.sock;
                fastcgi_split_path_info>^(.+\.php)(.*)$;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        fastcgi_param    SCRIPT_FILENAME>    $document_root$fastcgi_script_name;
        fastcgi_param    PATH_TRANSLATED>    $document_root$fastcgi_script_name;
        fastcgi_param    PATH_INFO           $fastcgi_path_info;
        }
}

В принципе на данном этапе все готово. Осталось только создать в корне Вашего default сайта файл index.php и вписать в него код для проверки:

1
2
3
<?php
phpinfo();
?>
<?php
phpinfo();
?>

Теперь необходимо перезапустить nginx и php5-fpm:

1
2
sudo service nginx restart
sudo service php5-fpm restart
sudo service nginx restart
sudo service php5-fpm restart
Понравилась статья? Расскажи друзьям:


Комментариев (1)

Спасибо за полезную информацию. Надо добавить ваш блог в закладки

Обсудить