Добрый день.
Решил попробовать настроить nginx + php5-fpm + mysql на Ubuntu Server 12.10 (NLPM).
Как же быстренько нам обзавестись таким сервером?
1. Поднимаем права до root:
$ sudo su
что бы каждый раз не вводить sudo перед каждой командой.
2. Установка nginx
Тут ничего сложного:
# apt-get install nginx
В данный момент в репах Ubuntu лежит версия nginx-1.2.1.
3. Установка php5-fpm
и прочих плюшек.
# apt-get install php5-cli \ # работа с php5 из терминала
php5-common \ # документация и примеры
php5-mysql \ # работа php4 с mysql
php5-suhosin \ # модули для вызова suhosin функций
php5-gd \ # для работы с изображениями
php5-fpm \ # php Реализация FastCGI
php5-cgi \ # реализация CGI
php-pear \ # репозиторий приложений и модулей php
php5-mcrypt \#
-y # соглашаемся со всем.
Сразу же необходимо устранить уязвимость PHP:
# nano /etc/php5/fpm/php.ini
Ищем строку:
;cgi.fix_pathinfo = 1
и изменяем ее до такого вида:
cgi.fix_pathinfo = 0
Изменим конфиг php5-fpm, что бы он слушал 9000 порт (пригодится нам дальше, можете выбрать любой другой порт).
# nano /etc/php5/fpm/pool.d/www.conf
Ищем строку listen = /var/run/php5-fpm.sock
и приводим к виду:
listen = 127.0.0.1:9000
Сохраняем изменения и перезапускаем php5-fpm:
# /etc/init.d/php5-fpm restart
4. Создадим пользователя для работы с виртуальным хостом.
Так как я собираюсь установить на все это дело Wordpress в будущем, то создадим пользователя с именем wp:
# useradd wp -b /home/ -m \ # Создадим каталог, если его нет
-U \ # Создадим группу с таким же именем, как имя юзера
-s /bin/false # Делаем так, что бы у данного пользователя не было консоли.
При создании данного пользователя. так же создалась одноименная группа wp.
Зададим пароль для нового пользователя:
# passwd wp
вводим дважды придуманный пароль.
Создадим необходимые, для работы WEB сайта, директории:
# mkdir -p \ # создать недостающие родительские каталоги, для каждого каталога
-m 755 \ # зададим права доступа для созданных каталогов
/home/wp/www
# mkdir -p -m 754 /home/wp/logs
Предоставляем пользовалею wp права на них:
# chown -R wp: /home/wp/www/
# chown -R wp: /home/wp/logs/
Предоставим nginx доступ в домашнюю директорию пользователя wp, добавив пользователя www-data в группу wp:
# usermod -a \ # добавить пользователя в дополнительную группу
-G wp www-data # имя групп(ы) в которые добавить
5. Создадим виртуальный хост nginx
Создадим виртуальный хост wp.org:
# nano /etc/nginx/conf.d/wp.org.conf
С содержимым:
(приводятся только базовые настройки, если нужны плюшки, гугл в помощь)
server {
listen 80;
root /home/wp/www;
access_log /home/wp/logs/nginx.access.log;
server_name wp.org www.wp.org;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
Перезапустим nginx, чтобы изменения вступили в силу:
# /etc/init.d/nginx restart
6. Установка mysql.
# apt-get install mysql-server mysql-client
При установке введите пароль для root пользователя MySQL.
7. Тестируем работоспособность.
Создадим тестовый файл, чтобы проверить работоспособность PHP5:
# nano /home/wp/www/test.php
С содержимым:
<?php phpinfo();?>
ВАЖНО! так как я все это делаю на виртуальной машине, то мне необходимо с хост машины подключиться к домену wp.org, но так как я буду обращаться к реальному адресу wp.org. то нужно сделать небольшое изменение в хост системе.
Так как в данный момент моя хост система это Windows, то делаем так:
Открываем файл:
C:\Windows\System32\drivers\etc\hosts
и добавляем такие строки:
<IP-адрес виртуальной машины> wp.org
<IP-адрес виртуальной машины> www.wp.org
Теперь открываем свой любимый браузер и переходим по адресу:
wp.org/test.php
и видим радостную картину:
Решил попробовать настроить nginx + php5-fpm + mysql на Ubuntu Server 12.10 (NLPM).
Как же быстренько нам обзавестись таким сервером?
1. Поднимаем права до root:
$ sudo su
что бы каждый раз не вводить sudo перед каждой командой.
2. Установка nginx
Тут ничего сложного:
# apt-get install nginx
В данный момент в репах Ubuntu лежит версия nginx-1.2.1.
3. Установка php5-fpm
и прочих плюшек.
# apt-get install php5-cli \ # работа с php5 из терминала
php5-common \ # документация и примеры
php5-mysql \ # работа php4 с mysql
php5-suhosin \ # модули для вызова suhosin функций
php5-gd \ # для работы с изображениями
php5-fpm \ # php Реализация FastCGI
php5-cgi \ # реализация CGI
php-pear \ # репозиторий приложений и модулей php
php5-mcrypt \#
-y # соглашаемся со всем.
Сразу же необходимо устранить уязвимость PHP:
# nano /etc/php5/fpm/php.ini
Ищем строку:
;cgi.fix_pathinfo = 1
и изменяем ее до такого вида:
cgi.fix_pathinfo = 0
Изменим конфиг php5-fpm, что бы он слушал 9000 порт (пригодится нам дальше, можете выбрать любой другой порт).
# nano /etc/php5/fpm/pool.d/www.conf
Ищем строку listen = /var/run/php5-fpm.sock
и приводим к виду:
listen = 127.0.0.1:9000
Сохраняем изменения и перезапускаем php5-fpm:
# /etc/init.d/php5-fpm restart
4. Создадим пользователя для работы с виртуальным хостом.
Так как я собираюсь установить на все это дело Wordpress в будущем, то создадим пользователя с именем wp:
# useradd wp -b /home/ -m \ # Создадим каталог, если его нет
-U \ # Создадим группу с таким же именем, как имя юзера
-s /bin/false # Делаем так, что бы у данного пользователя не было консоли.
При создании данного пользователя. так же создалась одноименная группа wp.
Зададим пароль для нового пользователя:
# passwd wp
вводим дважды придуманный пароль.
Создадим необходимые, для работы WEB сайта, директории:
# mkdir -p \ # создать недостающие родительские каталоги, для каждого каталога
-m 755 \ # зададим права доступа для созданных каталогов
/home/wp/www
# mkdir -p -m 754 /home/wp/logs
Предоставляем пользовалею wp права на них:
# chown -R wp: /home/wp/www/
# chown -R wp: /home/wp/logs/
Предоставим nginx доступ в домашнюю директорию пользователя wp, добавив пользователя www-data в группу wp:
# usermod -a \ # добавить пользователя в дополнительную группу
-G wp www-data # имя групп(ы) в которые добавить
5. Создадим виртуальный хост nginx
Создадим виртуальный хост wp.org:
# nano /etc/nginx/conf.d/wp.org.conf
С содержимым:
(приводятся только базовые настройки, если нужны плюшки, гугл в помощь)
server {
listen 80;
root /home/wp/www;
access_log /home/wp/logs/nginx.access.log;
server_name wp.org www.wp.org;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
Перезапустим nginx, чтобы изменения вступили в силу:
# /etc/init.d/nginx restart
6. Установка mysql.
# apt-get install mysql-server mysql-client
При установке введите пароль для root пользователя MySQL.
7. Тестируем работоспособность.
Создадим тестовый файл, чтобы проверить работоспособность PHP5:
# nano /home/wp/www/test.php
С содержимым:
<?php phpinfo();?>
ВАЖНО! так как я все это делаю на виртуальной машине, то мне необходимо с хост машины подключиться к домену wp.org, но так как я буду обращаться к реальному адресу wp.org. то нужно сделать небольшое изменение в хост системе.
Так как в данный момент моя хост система это Windows, то делаем так:
Открываем файл:
C:\Windows\System32\drivers\etc\hosts
и добавляем такие строки:
<IP-адрес виртуальной машины> wp.org
<IP-адрес виртуальной машины> www.wp.org
Теперь открываем свой любимый браузер и переходим по адресу:
wp.org/test.php
и видим радостную картину:
прелесть fpm в том, что он может работать под разными пользователями для каждого вхоста. поэтому лучше не добавлять пользователя wp в группу www-data, а запускать pool от wp
ОтветитьУдалитьтак же если fpm на том же сервере что и фронтенд, то лучше использовать сокет, как и указано в конфиге по-умолчанию.