Если вам надо, чтоб сайт работал быстро - нужно использовать веб сервер Nginx, который отличается от других веб серверов своей простотой, быстротой и надёжностью. На данный момент, большинство крупнейших интернет компаний, располагающих высоконагруженными веб ресурсами используют именно Nginx.
Установка Nginx, MySQL, PHP
Устанавливать PHP будем в режиме PHP-FPM (PHP-FPM (FastCGI Process Manager), который является альтернативой PHP FastCGI и который имеет дополнительные возможности. PHP-FPM работает как демон, запускаемый при старте системы и по умолчанию слушает запросы на порту 9000.
apt-get install nginx
sudo apt-get install mysql-server mysql-client
apt-get install php5-fpm
mysql при установке попросит ввести имя пользователя и пароль. В случае необходимости его потом можно сменить.
Смотрим модули, которые можно установить для PHP
aptitude search php
Устанавливаем необходимые модули:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick \
php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode \
php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Настраиваем установленные программы
Для того, чтоб подружить nginx с PHP, нам нужно внести некоторые правки в конфигурационный файл:
vi /etc/nginx/nginx.conf
Сначала изменяем количество рабочих процессов (worker processes) и установим keepalive_timeout к более-менее адекватному значению в соответствии с возможностями сервера:
worker_processes 4;
keepalive_timeout 2;
Виртуальные хосты
Виртуальные хосты определяются блоком server {}.
В файле /etc/nginx/sites-available/default определен виртуальный хост по умолчанию.
Создайте копию этого файла и откройте его на редактирование любым текстовым редактором:
cd /etc/nginx/sites-available/
sudo cp default new-site
sudo vi new-site
Учтите, что для работы с конфигурационными файлами сервера нужны рутовые права, поэтому вначале должна стоять команда sudo.
Нас интересует секция, обозначенная server { ... }
Разкоментируйте обе Listen строки, для того, чтоб nginx слушал запросы на 80 порту как по IPv4 так и по IPv6 протоколам.
listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default ipv6only=on; ## listen for ipv6
Следующие две строки определяют корневую папку веб сервера и индексные файлы. Поправьте путь корневой папки в соответствии с вашими требованиями. К индексным файлам добавьте index.php.
root /usr/share/nginx/www;
index index.php index.html index.htm;
server_name - DNS имя, которое сопоставлено IP адресу данного веб сервера. Символ подчерка обозначает виртуальный хост по умолчанию.
# Make site accessible from http://localhost/
#server_name _;
server_name new-site.profhelp.com.ua
Добавление обработки PHP файлов
В конфигурационном файле по умолчанию этот блок закоментирован - разкомментируйте его. Проверте, чтоб конфиг выглядел так:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
Остальные параметры конфигурационного файла пока можно не трогать.
Обратите внимание, что в секции location ~ \.php$ { ... } добавлен параметр try_files $uri =404; Он предназначен для предотвращения запуска произвольного PHP кода на вашем сервере. Эта проблема актуальна для серверов, на которых разрешена выгрузка файлов и включен PHP FastCGI интерпретатор. Так-же, как вариант, можно прописать в файле /etc/php5/fpm/php.ini параметр cgi.fix_pathinfo = 0;.
Сохраните изменения и перегрузите конфигурацию nginx и создайте символическую ссылку в директории /etc/nginx/sites-enabled/, для того, чтоб конфигурация была загружена сервером:
sudo ln -s /etc/nginx/sites-available/new-site /etc/nginx/sites-enabled/new-site
Перезагрузите конфигурацию nginx:
/etc/init.d/nginx reload
По умолчанию, PHP-FPM слушает на порту 9000 лупбэк интерфейса. Так как сервер один, нет необходимости перегружать лупбэк интерфейс:
vi /etc/php5/fpm/pool.d/www.conf
Закомментируйте существующую строку, устанавливая точку с запятой перед ней. Добавьте строку, приведенную ниже:
;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock
Сохраните изменения и перезагрузите сервис php5-fpm:
service php5-fpm restart
Теперь снова откройте конфигурационный файл nginx:
vi /etc/nginx/sites-available/default
Измените для всех виртуальных хостов строку fastcgi_pass 127.0.0.1:9000; на строку fastcgi_pass unix:/tmp/php5-fpm.sock; например так:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
;fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Перезагрузите конфигурацию nginx:
sudo /etc/init.d/nginx reload
Теперь давайте проверим, что сервер у нас может отображать php скрипты. Создайте в корневой папке веб сервера файл с расширением .php (можно index.php), откройте его на редактирование, вставьте код из следующего блока и сохраните изменения:
<?php
phpinfo();
?>
После открытия в браузере адреса http://вашего-сервер/ваш-файл.php вы должны увидеть страницу следующего плана:
Полезные ссылки
- Основная страница проэкта
- ссылка 1 ссылка 2 и ссылка 3 - вопрос исправления ситуации с запуском произвольного кода на сервере.
- Документация на wiki сайте поэкта nginx.
Добавить комментарий