Установка LEMP stack (Linux, nginx, MySQL, PHP) на CentOS 6
Centos, LEMP Stack | Комментировать запись
Что такое LEMP?
LEMP stack – это группа программ с открытым исходным кодом, которая помогает установить и запустить веб-сервер. Данный акроним расшифровывается как Linux, nginx (произносится “Engine x”), MySQL и PHP. Поскольку сервер уже работает на CentOS, первый компонент, Linux, уже установлен. Данное руководство расскажет, как установить все остальное.
1: Установка репозиториев
Все программное обеспечение будет устанавливаться при помощи yum. Однако ни Nginx, ни php-fpm не доступны и репозитория CentOS, потому сначала нужно загрузить на сервер два дополнительных репозитория.
sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
2: Установка MySQL
Теперь можно приступать к установке самого программного обеспечения. Для начала установите систему управления базами данных MySQL и ее зависимости.
sudo yum install mysql mysql-server
По завершении установки MySQL нужно перезапустить.
sudo /etc/init.d/mysqld restart
С помощью следующей команды можно выполнить настройку MySQL:
sudo /usr/bin/mysql_secure_installation
Далее будет запрошен root-пароль, но, поскольку MySQL был установлен только что, такого пароля пока что нет, потому оставьте это поле пустым (для этого нажмите enter).
Enter current password for root (enter for none):
OK, successfully used password, moving on...
После этого можно установить root-пароль для MySQL. Нажмите Y для подтверждения и следуйте инструкциям.
CentOS автоматизирует процесс настройки MySQL, задавая ряд вопросов. Проще всего ответить Yes на все вопросы. В завершение MySQL перезагрузится и активирует все изменения.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
3: Установка Nginx
Как и в случае с MySQL, для установки Nginx на виртуальный выделенный сервер нужно использовать yum:
sudo yum install nginx
Nginx не запускается самостоятельно. Для запуска Nginx наберите:
sudo /etc/init.d/nginx start
Чтобы убедиться, что Nginx установлен на сервер, направьте браузер на IP-адрес. Чтобы узнать IP-адрес сервера, наберите следующую команду.
ifconfig eth0 | grep inet | awk '{ print $2 }'
4: Установка PHP
Пакет php-fpm находится в репозитории REMI, который на данный момент недоступен. Потому для начала нужно получить доступ к REMI, а затем установить php и php-fpm:
sudo yum --enablerepo=remi install php-fpm php-mysql
5: Настройка PHP
В настройки PHP нужно внести одно изменение. Откройте файл php.ini:
sudo vi /etc/php.ini
Найдите строку cgi.fix_pathinfo=1 и измените 1 на 0.
cgi.fix_pathinfo=0
Если оставить значение данной строки без изменений, интерпретатор php будет изменять путь и обрабатывать файл, ближайший к запрошенному. Это серьезный риск для безопасности сервера. Если значение изменить на 0, то интерпретатор будет обрабатывать только точный путь к файлу, что гораздо более безопасно.
Внеся это важное изменение в настройки PHP, сохраните и закройте файл.
6: Настройка Nginx
Откройте конфигурационный файл Nginx, nginx.conf:
sudo vi /etc/nginx/nginx.conf
Увеличьте количество рабочих процессов до 4, затем сохраните и закройте файл.
Теперь нужно настроить виртуальный хост Nginx.
Чтобы файл Nginx по умолчанию был более сжатым, настройки виртуальных хостов расположены в другом месте.
sudo vi /etc/nginx/conf.d/default.conf
Итак, настройки виртуального хоста должны содержать следующий код (его описание можно найти ниже):
#
# The default server
#
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Данный блок кода:
- вносит index.php в строку index;
- заменяет значение строки server_name доменом или IP-адресом сервера (укажите свои данные вместо example.com);
- изменяет root на /usr/share/nginx/html;
- снимает комментарий с раздела, который начинается с location ~ \.php$ {;
- изменяет строку fastcgi_param, что помогает интерпретатору PHP найти скрипт PHP, расположенный в root каталоге.
Сохраните и закройте файл.
Откройте конфигурации php-fpm:
sudo vi /etc/php-fpm.d/www.conf
Замените пользователя и группу (измените apache на nginx):
[...]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
[...]
Затем перезапустите php-fpm.
sudo service php-fpm restart
7: Тестирование LEMP
Готово! Программный стек LEMP установлен на сервер. Теперь нужно проверить работу программ. Для этого нужно создать страницу php info.
Итак, создайте новый файл:
sudo vi /usr/share/nginx/html/info.php
Внесите в него следующий код:
<?php
phpinfo();
?>
Сохраните и закройте файл.
Перезапустите nginx, чтобы изменения вступили в силу.
sudo service nginx restart
В завершение посетите страницу php info (не забудьте указать правильный IP-адрес):
http://12.34.56.789/info.php
Если страница открылась – значит, все работает верно.
8: Настройка автозапуска
Последнее, что нужно сделать для полноценной работы LEMP, – настроить автоматический запуск всех установленных программ при загрузке VPS. Используйте
sudo chkconfig --levels 235 mysqld on
sudo chkconfig --levels 235 nginx on
sudo chkconfig --levels 235 php-fpm on