- Установка Nginx, MySQL, PHP (LEMP) на CentOS 7
- Шаг 1. Установка Nginx
- Добавляем CentOS 7 Nginx репозиторий.
- Установка Nginx.
- После установки Nginx — запускаем его.
- Шаг 2. Установка MySQL (MariaDB)
- Установка сервера и клиента MariaDB
- Запуск сервера баз данных.
- Шаг 3. Установка и настройка PHP (PHP-FPM)
- Установка PHP
- Незначительная конфигурация для повышения безопасности
- Запускаем PHP-FPM
- Добавляем PHP-FPM в автозагрузку
- Шаг 4. Конфигурация NGINX
- Создаем директории под виртальные хосты
- Создаем виртуальный хост
- Подключаем наш виртуальный хост
- Проверяем работу PHP
- Как установить LEMP (Linux+Nginx+MySQL+PHP) на CentOS 7
- Установка Nginx
- Установка MySQL (MariaDB)
- Установка и настройка PHP
- Установка и настройка Nginx
Установка Nginx, MySQL, PHP (LEMP) на CentOS 7
Установка веб-сервера LEMP (NGINX + MySQL + PHP-FPM) на CentOS 7.
Шаг 1. Установка Nginx
Добавляем CentOS 7 Nginx репозиторий.
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Установка Nginx.
После установки Nginx — запускаем его.
systemctl start nginx.service
Проверить, что веб-сервер запущен можно по адресу http://example.com/
Мы увидим дефолтную страницу Nginx.
После проверки успешного запуска, добавим сервис в автозагрузку при старте системы.
systemctl enable nginx.service
Шаг 2. Установка MySQL (MariaDB)
Теперь, после того как закончена установка веб-сервера, приступаем к установке и настройке сервера баз данных. В данном примере будет использоваться MariaDB, поскольку данный форк зарекомендовал себя с лучшей стороны.
Установка сервера и клиента MariaDB
yum install mariadb-server mariadb
Запуск сервера баз данных.
После того как сервер запущен, приступаем к базовой настройке. Запускаем скрипт настройки простой командой.
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on.
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
. Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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, MariaDB 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 MariaDB
installation should now be secure.
Thanks for using MariaDB!
После настройки добавим сервис в автозагрузку.
systemctl enable mariadb.service
Шаг 3. Установка и настройка PHP (PHP-FPM)
PHP позволяет отображать динамический контент сайта, а также получать информацию из MySQL базы.
Установка PHP
yum install php php-mysql php-fpm
Прочие компоненты и модули можно установить в зависимости от требований.
Незначительная конфигурация для повышения безопасности
Открываем конфигурационный файл PHP
Нас интересует параметр cgi.fix_pathinfo . По умолчанию он закомментирован и установлен в значение 1 .
Это значение небезопасно, поскольку любой пользователь будет иметь возможность заливать файлы на сервер (например аватары). Создав особенное изображение, которое будет одновременно проходить валидацию размеров GD и исполняться php интерпретатором, будет иметь права на исполнение произвольного кода на сервере с правами php процесса.
Раскомментируем строчку и изменим значение на 0 .
Также это можно сделать через настройки Nginx
location ~* .php$ {
try_files $fastcgi_script_name =404;
fastcgi_index index.php;
fastcgi_param script_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Теперь доступ для несуществующих файлов с разрешением *.php закрыт.
Cама реализация cgi.fix_pathinfo достаточно тормознутая — на каждый запрос проверяется каждый компонент пути — не скрипт ли это.
Поэтому стоит выключать также и из соображений производительности.
Также не забываем изменить временную зону, для этого раскомментируем строчку ;date.timezone = и впишем необходимую временную зону.
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Moscow
Далее, откроем конфигурационный файл PHP-FPM
Находим строчку начинающуюся с listen и заменяем её полностью новым значением.
listen = /var/run/php-fpm/php-fpm.sock
Запускаем PHP-FPM
Добавляем PHP-FPM в автозагрузку
systemctl enable php-fpm.service
Шаг 4. Конфигурация NGINX
После того, как мы завершили установку основных компонентов для успешной работы веб-сервера, приступим к его настройке.
NGINX как и Apache поддерживает работу виртуальных хостов. Создавать файлы с хостами можно в директории /etc/nginx/conf.d/ , но мы будем использовать другую схему.
Создаем директории под виртальные хосты
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
В файл конфигурации /etc/nginx/nginx.conf добавляем в конец строчку:
## Load virtual host conf files. ##
include /etc/nginx/sites-enabled/*;
Вероятно уже стало понятно, что в директории sites-available будут храниться файлы вирутальных хостов, а в директории sites-enabled будут симлинки на них, которые будут активны. Таким образом можно всегда просто включить/отключить один из хостов.
Создаем виртуальный хост
Создаем директории под содержимое сайта, а также под логи для каждого из хостов.
mkdir -p /srv/www/example.com/public_html
mkdir /srv/www/example.com/logs
chown -R apache:apache /srv/www/example.com
Создаем файл example.com в директории /etc/nginx/sites-available .
server {
server_name example.com;
access_log /srv/www/example.com/logs/access.log;
error_log /srv/www/example.com/logs/error.log;
root /srv/www/example.com/public_html;
location / {
try_files $uri $uri/ /index.html;
}
location ~ /\.ht {
deny all;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~* .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
# fastcgi_pass 127.0.0.1:9000; ## Если работаем не по сокетам
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public_html$fastcgi_script_name;
}
}
Подключаем наш виртуальный хост
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/example.com
systemctl restart nginx
Проверяем работу PHP
Создаем файл в директории сайта /srv/www/example.com/public_html/info.php
Открываем файл в браузере
Если все в порядке, то можем наблюдать приблизительно следующее.
Не забываем удалить файл info.php .
На этом установка LEMP в CentOS 7 завершена.
Как установить LEMP (Linux+Nginx+MySQL+PHP) на CentOS 7
Эта инструкция предназначена для базовой установки и настройки стека LEMP (Linux+Nginx+MySQL+PHP) на виртуальный сервер с операционной системой CentOS 7.
Установка Nginx
2) Для установки Nginx нужно добавить репозиторий:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3) После добавления репозитория, устанавливаем сам Nginx:
4) Для проверки работы Nginx нам нужно открыть порты 80 и 443, для этого последовательно выполняем команды:
firewall-cmd —permanent —zone=public —add-service=http
firewall-cmd —permanent —zone=public —add-service=https
sudo systemctl start nginx.service
6) И добавляем Nginx в автоматическую загрузку при перезапуске сервера:
sudo systemctl enable nginx.service
7) Теперь можно проверить работу Nginx. Для этого введите ip-адрес виртуального сервера в браузере. Вам должна открыться стандартная страница приветствия. Если она открывается, значит Nginx установлен.
Установка MySQL (MariaDB)
8) Мы будем устанавливать не MySQL, а аналог MariaDB, так как он представляет ряд преимуществ для администраторов. Вводите команду:
sudo yum install mariadb-server mariadb -y
sudo systemctl start mariadb
10) Далее нужно настроить безопасность баз данных. При первом заходе будет запрошен пароль, если вы его не установили, то он пустой, нужно нажать просто Enter:
В процессе будут заданы несколько вопросов, после согласия с ними клавишу “y”.
11) В конце добавляем для MariaDB автоматический запуск:
sudo systemctl enable mariadb.service
Больше никаких настроек для баз данных не нужно.
Установка и настройка PHP
12) Установим PHP и необходимые компоненты для работы с Nginx и MariaDB:
sudo yum install php php-mysql php-fpm -y
13) Нужна небольшая настройка PHP. Открывайте файл:
В самом конце дописывайте данную строку:
Сохраняйте файл комбинацией клавиш CTRL+X.
14) Далее редактируйте еще один файл:
sudo nano /etc/php-fpm.d/www.conf
Нужно найти строку “listen =” и изменить ее значение. Должно быть вот так:
listen = /var/run/php-fpm/php-fpm.sock
Сохраняем файл комбинацией клавиш CTRL+X.
15) Всё. Осталось запустить PHP:
sudo systemctl start php-fpm
16) И включить автоматическую загрузку при старте виртуального сервера:
sudo systemctl enable php-fpm.service
Установка и настройка Nginx
17) Нужно настроить Nginx на работу с PHP. Открывайте файл:
sudo nano /etc/nginx/conf.d/default.conf
Удаляйте все данные из него и вписывайте данный код, в третьей строке нужно указать домен или ip-адрес виртуального сервера и сохраняем комбинацией клавиш CTRL+X::
server <
listen 80;
server_name домен_или_IP_сервера;
root /usr/share/nginx/html;
index index.php index.html index.htm;
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_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
>
>
18) Перезапускаем Nginx, чтобы все изменения вступили в силу:
sudo systemctl restart nginx
19) Далее нужно протестировать все настройки. Создаем файл для проверки работы:
sudo nano /usr/share/nginx/html/info.php
20) Вписываем в него строку и сохраняем комбинацией клавиш CTRL+X:
21) Заходите по адресу в браузере — http://IP_адрес_сервера/info.php
Если все настроено правильно, будет показана данная страница:
22) Важно удалить файл, так как он доступен каждому неавторизованному посетителя. Из него можно узнать параметры настройки сервера:
sudo rm /usr/share/nginx/html/info.php
Все. Базовая настройка стека LEMP на виртуальном сервере с операционной системой CentOS 7 выполнена.