Установка LEMP stack (Linux, nginx, MySQL, PHP) на CentOS 6

Что такое 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

Tags: , , , , , , ,

Добавить комментарий