Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu
Стек программного обеспечения LEMP это совокупность утилит, которые используются для обслуживания и обеспечения динамических веб-страниц, а так же веб-приложений. Это акроним, который описывает операционную систему Linux, с веб-сервера Nginx. Базовые данные хранятся в MySQL и динамическая обработка обрабатывается на PHP.
Установка nginx.
Для обработки веб-страниц для пользователей сайта, я собираюсь заюзать, эффективный и современный веб-сервер, такой как nginx. По этому, первым шагом, я установлю nginx на свою VPS-ку.
Все ПО, я буду получать для этой процедуры от репозиториев по умолчанию. Перед самой установкой должны обновить систему, а затем мы сможем установить его:
# sudo apt-get update # sudo apt-get install nginx
На Ubuntu и Debian, Nginx настроен для запуска сразу же после завершения установки. Можно выполнить проверку и узнать запущен ли сервер и работает нормально. Если у вас нет домена на сервере и вы не помните ваш IP-адрес сервера, вы можете найти его, набрав одно из следующих действий в консоле:
# ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
или выполнить
# sudo ifconfig
Еще один способ проверить какой у вас ИП:
# curl http://icanhazip.com
Попробуйте одну из команд выше, после чего откройте ваш браузер и введите:
http://your_domain_or_IP_address
Если вы видите эту надпить ( эту страницу), то вы успешно установили Nginx.
Установка Mysql сервера.
Сейчас, у нас есть уже есть установленный nginx web-сервер, но не хватает сервера БД, такого как MySQL — система управления БД, для сохранения и управления данными сайта.
Установка выполняется:
# sudo apt-get install mysql-server
Вам будет предложено поставить root (администратор) пароль для использования в системе MySQL. СУБД сервер в настоящее время установлен, но его нужно настроить.
Во-первых, нам нужно сейчас создать структуры для каталогов, необходимую для сохранения БД и различной информации:
# sudo mysql_install_db
Далее, вы хотите, чтобы запустим скрипт на выполнение, который запустит конфигурацию mysql, изменит некоторые параметры по умолчанию:
# sudo mysql_secure_installation
Вас попросят ввести пароль от MySQL (пароль root), который установили в процессе установки.
Далее, он будет просить, если вы хотите изменить этот пароль. Если вы не хотите менять пароль администратора MySQL, нажмите «N». Впоследствии, вам предложат удалить некоторые тестовые базы данных и их пользователи.
Установка PHP.
Теперь имеется на сервере энжинкс, чтобы обслуживать наших страницы, так же установлен уже сервер MySQL для хранения и управления нашими данными, но нам все еще нужно что-то, чтобы соединить эти две части для создания динамического контента, за это будет отвечать PHP.
Т.к Nginx не имеет свою обработку PHP как и некоторые другие веб-серверы, то необходимо будет установить php5-FPM — менеджер процессов FastCGI. Мы укажем nginx-у осуществлять обработку PHP запросов.
Установим данный модуль, но также установим еще нужные пакеты, которые позволят PHP обращаться с нашему серверу СУБД:
# sudo apt-get install php5-fpm php5-mysql
Конфигурирование PHP процесса.
Теперь имеются все компоненты PHP и они уже готовы к работе, но мы должны сделать небольшое изменение в конфигурации, чтобы сделать наши установки более безопасными.
Открываем главный php5-FPM конфиг с привилегиями суперпользователя:
# sudo vim /etc/php5/fpm/php.ini
Теперь ищем переменную cgi.fix_pathinfo она будет закомментирована с запятой (;) и установлен параметр по умолчанию в «1». Это не есть хорошо, потому что это PHP будет попытаться выполнить ближайший файл который найдет, если файл PHP не совпадает. Это даст возможность пользователям обрабатывать запросы PHP таким образом, что позволит им выполнять сценарии, хотя они не должны быть разрешены для выполнения.
Мы изменим оба эти условия, для этого раскомментиреум строчку и установим параметр с «1» на «0», как показано:
[…]
cgi.fix_pathinfo = 0
[…]
Теперь, нам нужно просто перезагрузить наш процессор PHP, набрав:
# sudo service php5-fpm restart
Это будет осуществлять изменения, которые мы сделали.
Настройка Nginx использовать PHP Processor
Теперь у нас есть все необходимые компоненты, но нужно еще должны сделать так чтобы nginx использовал наш процессор PHP для динамического контента.
Мы делаем это на уровне блоков сервера (блоки сервера, как виртуальные хосты в апаче). Откройте файл по умолчанию Nginx блок конфигурации, набрав:
# sudo nano /etc/nginx/sites-available/default
В настоящее время, с замечаниями удалены, блок-сервер по умолчанию файл nginx выглядит:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; } }
Сейчас должны сделать некоторые изменения в этом файле для сайта.
Во-первых, мы должны добавить опцию index.php в качестве первого значения нашей директивы. Мы также должны изменить переменную server_name, чтобы указать там свой домен или IP-адрес сервера. Сам файл конфигурации включает в себя некоторые закомментированные линий, которые определяют процедуры обработки ошибок. Сейчас должны раскомментировать нужные нам строки и включить их функциональность. Для фактической обработки PHP, нам нужно будет раскомментировать часть другого разделе. Мы также должны добавить директиву try_files чтобы убедиться, что на энжиникс не проходит плохие запросы нашего процессора PHP.
Изменения, которые вы должны сделать это в синем в тексте ниже:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name your_IP__or_domain;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Перезапустите Nginx, чтобы внести необходимые изменения:
# sudo service nginx restart
Ваш стек LEMP теперь должен быть полностью созданный и готов к использованию. Но, по-прежнему, мы еще должны проверить это, чтобы убедиться, что nginx может правильно передать .php файлы к нашему процессору PHP.
Мы можем сделать это путем создания файла PHP (назову его php_info.php) в нашей директории. Для этого выполняем:
# sudo vim /usr/share/nginx/html/php_info.php
<? PHP phpinfo (); ?>
Теперь, вы можете открыть данную страницу в веб-браузере, перейдя на свой домен или ИП адрес:
http://your_domain_or_IP-address/php_info.php
Если вы видите страницу, которая выглядит, как это, вы создали обработку PHP с Nginx успешно. После того как вы это проверите, то наверное, лучше удалить файл который мы создали, как это может на самом деле дать неавторизованных пользователей некоторые советы по конфигурации, которые могут помочь им чтобы взломать вас. Вы всегда можете восстановить этот файл, если вам это нужно позже.
В настоящее время, удалить файл:
# sudo rm /usr/share/nginx/html/php_info.php
Вот и вся «Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu», думаю все просто и понятно описано.