Переустановка nginx ispmanager centos
Веб-сервер, настроенный по данной инструкции можно будет использовать для размещения собственных сайтов в локальной сети или сети Интернет. Данная инструкция проверена для CentOS 7.
Общая настройка системы
Установка пакетов
1. Обновляем CentOS:
2. Устанавливаем репозиторий EPEL и пакет для загрузки:
yum install epel-release wget
Время
1. Устанавливаем часовой пояс:
timedatectl set-timezone Europe/Moscow
* данной командой мы установим часовой пояс по московскому времени.
2. Устанавливаем и запускаем службу для автоматической синхронизации времени:
yum install chrony
systemctl enable chronyd --now
Настройка безопасности
1. Отключаем SELinux:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.
2. Открываем необходимые порты в брандмауэре:
firewall-cmd --permanent --add-port=/tcp
firewall-cmd --permanent --add-port=/tcp
* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.
Установка NGINX
yum install nginx
Внесем небольшую корректировку в файл nginx.conf:
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Разрешаем автозапуск сервиса и запустим его:
systemctl enable nginx --now
Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:
* обратите внимание, что данное приветствие может иметь и другой вид.
Установка PHP и PHP-FPM
Устанавливаем PHP и php-fpm следующей командой:
yum install php php-fpm
* В CentOS 7 будет установлена php версии 5.4. Если необходимо установить PHP 7, читайте статью Как установить PHP 7 на CentOS 7.
Запускаем php-fpm и разрешаем его автозапуск:
systemctl enable php-fpm --now
Настройка связки NGINX + PHP
Открываем файл для настройки виртуального домена по умолчанию. В зависимости от версии CentOS 7 пути могут различаться:
В секции location редактируем параметр index на следующее значение:
location / index index.php index.html index.htm;
>
* добавляем index.php в начало списка. Если параметра index нет, создаем его.
А внутри секции server добавим следующее:
Открываем настройки php-fpm:
Проверяем, настройки параметров:
. иначе, меняем значение. После перезагружаем php-fpm:
systemctl restart php-fpm
Проверяем правильность настроек nginx:
И перезагружаем его:
systemctl restart nginx
Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:
Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:
Установка MariaDB или MySQL
В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.
Устанавливаем MariaDB следующей командой:
yum install mariadb-server
* будет установлена mariadb версии 5.5. Если нужна другая, то читаем подробнее в инструкции Установка MariaDB на CentOS или Ubuntu.
** для установки mysql выполняем команду yum install mysql
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb --now
* для работы с mysql меняем mariadb на mysql.
Сразу создаем пароль для учетной записи root:
mysqladmin -u root password
PHP + MariaDB (MySQL)
Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:
yum install php-mysqli
Если мы установили php5, также ставим php-mysql:
yum install php-mysql
После перезагружаем php-fpm:
systemctl restart php-fpm
И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:
* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.
Установка phpMyAdmin
Для установки phpMyAdmin вводим следующую команду:
yum install phpmyadmin
Однако, если мы устанавливали php версии 7 и выше, необходимо указать репозиторий, который мы использовали для этого, например:
yum --enablerepo=remi-php74 install phpmyadmin
* в данном примере предполагается, что мы использовали репозиторий remi-php74.
Это необходимо для корректной установки расширений PHP.
Теперь создадим для него отдельный виртуальный домен в NGINX:
И добавим в него следующее содержимое:
server listen 80;
server_name phpmyadmin.dmosk.local;
set $root_path /usr/share/phpMyAdmin;
location / root $root_path;
index index.php;
>
* где phpmyadmin.dmosk.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому есть нет возможность зарегистрировать домен и имя узла в DNS, можно воспользоваться локальным файлом hosts. /usr/share/phpMyAdmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.
После перезапускаем NGINX:
systemctl reload nginx
Также нужно перезапустить php-fpm, так как в процессе установки был добавлен модуль mbstring:
systemctl restart php-fpm
Установка Memcached
Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.
Сервис memcached
Выполняем установку пакетов:
yum install memcached
После разрешаем автозапуск и запускаем сервис кэширования:
systemctl enable memcached --now
Модуль для php
Установить компонент из репозитория:
yum install php-pecl-memcached
После устаноки модуля перезапускаем php-fpm:
systemctl restart php-fpm
Чтобы проверить, что модуль memcached работаем, открываем наш сайт в браузере — в phpinfo должна появиться новая секция:
. или вводим команду:
php -m | grep memcached
Мы должны получить:
Установка xCache
xCache не поддерживается в php7. Если мы установили именно эту версию, пропускаем установку данного пакета.
Запускаем установку xCache следующей командой:
yum install php-xcache
systemctl restart php-fpm
В phpinfo должно появиться следующее:
Установка и настройка FTP-сервера
В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей. Для его установки вводим следующую команду:
yum install proftpd proftpd-utils
Создаем каталог для хранения настроек:
Создаем виртуального пользователя:
ftpasswd --passwd --file=/etc/proftpd.d/ftpd.passwd --name=ftpwww --uid=48 --gid=48 --home=/var/www --shell=/sbin/nologin
* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (apache); /var/www — домашний каталог пользователя; /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Открываем на редактирование конфигурационный файл proftpd:
И редактируем следующее (комментируем):
В конце файла добавим следующее:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
* где 60000 - 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd --now
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS 7.
Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает только Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
Заходим в настройки:
И редактируем следующее:
* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталого разрешен со всех адресов (all granted).
Разрешаем автозапуск и запускаем службу:
Создаем php-файл со следующим содержимым:
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080. Мы должны увидеть привычную страницу:
NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
Проверяем и перезапускаем nginx:
systemctl restart nginx
Пробуем открыть в браузере IP-адрес нашего сервера — должна открыться та же страница, что при проверке Apache (с добавлением 8080):
Apache Real IP
Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:
Переходим в каталог /usr/local/src:
Переходим в распакованный каталог:
Собираем модуль и устанавливаем его:
* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой yum install which.
Создаем конфигурационный файл со следующим содержимым:
И редактируем содержимое на:
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера. Мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу.
Postfix
В CentOS postfix уже установлен и запущен. Нам необходимо сделать несколько простых настроек:
myorigin = $mydomain
smtp_generic_maps = hash:/etc/postfix/generic_map
Открываем карту пересылки:
* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес [email protected].
Для применения настроек перезагружаем почтовый сервер:
systemctl restart postfix
Тюнинг веб-сервера
Открываем на редактирование следующий файл:
И правим следующее:
upload_max_filesize = 256M
post_max_size = 256M
short_open_tag = On
date.timezone = "Europe/Moscow"
systemctl restart php-fpm
NGINX
Открываем на редактирование следующий файл:
И правим следующее:
После перезапускаем nginx:
systemctl restart nginx
Postfix
Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:
Создание первого сайта
Задаем переменную, значение которой будет домен сайта:
Создаем новый файл виртуального домена NGINX:
* обязательно на конце должен быть .conf, так как только такие файлы веб-сервер подгружает в конфигурацию.
И добавляем следующее содержимое.
access_log /var/www/site1/log/nginx/access_log;
error_log /var/www/site1/log/nginx/error_log;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ expires modified +1w;
>
>
* где site1.local — домен, для которого создается виртуальный домен; /var/www/site1 — каталог, в котором будет размещаться сайт.
** все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
*** обратите внимание на выделения полужирным — здесь нужно подставить свои данные.
/.well-known root /usr/share/nginx/html;
allow all;
>
if ($uri !
server listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
access_log /var/www/site1/log/nginx/access_log;
error_log /var/www/site1/log/nginx/error_log;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
/.well-known root /usr/share/nginx/html;
allow all;
>
* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ expires modified +1w;
>
>
Теперь создаем виртуальный домен в Apache:
<VirtualHost *:8080>
Define root_domain site1.local
Define root_path /var/www/site1
ErrorLog $/log/apache/error_log
TransferLog $/log/apache/access_log
php_admin_value upload_tmp_dir $/tmp
php_admin_value doc_root $
php_admin_value open_basedir $:/usr/local/share/smarty:/usr/local/share/pear
php_admin_value session.save_path 0;0660;$/tmp
</VirtualHost>
Создаем каталоги для сайта:
mkdir -p /var/www/$TMP_SITE/
mkdir -p /var/www/$TMP_SITE/log/
Создаем индексный файл со следующим содержимым:
Задаем права на папки:
chown -R apache:apache /var/www/$TMP_SITE
chmod -R 775 /var/www/$TMP_SITE
Проверяем корректность настроек конфигурационных файлов:
systemctl reload nginx
Открываем сайт в браузере.
При необходимости, создаем базу данных.
> CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password. При желании сделать соединение более безопасным, можно убрать WITH GRANT OPTION.
Если вы начинающий администратор или только перенесли свой проект на VPS и еще не со всем разобрались, то у вас может возникнуть вопрос как перезапустить Nginx. Это очень популярный веб-сервер, такой же популярный, как и Apache и достаточно часто используется для различных проектов.
Перезапуск веб-сервера может понадобиться после того, как вы изменили его настройки, добавили новый домен и так далее. В этой небольшой статье мы рассмотрим как выполняется перезагрузка Nginx на сервере.
Как перезапустить Nginx
Первое что вам нужно - это получить доступ по ssh к серверу, но если вы уже меняли там какие-либо настройки, то, скорее всего, доступ у вас есть, так что этот момент упустим. Другой момент, это система управления процессами, сейчас большинство, если не все популярные дистрибутивы, используют systemd. Поэтому я буду описывать работу именно с ней. И еще, вам нужен именно VPS, или сервер, на хостинге такое сделать у вас не получится, даже если есть ssh доступ.
Первое что желательно сделать если вы меняли настройки Nginx, и что-то делали с конфигурационными файлами, это проверить их на ошибки с помощью команды:
Если это производственный сервер, то пользователи вообще не должны заметить что был перезапуск Nginx, а если будут проблемы то после установки веб-сервер не запустится и будет лежать пока вы их не решите. Только теперь можно перезапустить Nginx:
systemctl restart nginx
Если нужно только перечитать конфигурационные файлы выполните:
systemctl reload nginx
Есть еще один путь, можно передать команду перезапуска самому сервису nginx с помощью опции -s:
В случае если обычная перезагрузка не помогла, можно попытаться остановить сервис, а затем снова его запустить:
systemctl status nginx
systemctl stop nginx
systemctl start nginx
Перезапуск Nginx с помощью ISPManager
Панель управления VPS ISPManager довольно популярна среди пользователей и если вы используете ее на своем сервере, то можете перезапустить Nginx с помощью нее. Для этого авторизуйтесь в панели, перейдите на вкладку "Система", "Службы", а затем найдите там пункт "Nginx", выделите его и нажмите кнопку "Перезапуск":
Готово, теперь Nginx перезапущен.
Выводы
В этой небольшой статье мы рассмотрели как перезапустить Nginx на вашем сервере. Если у вас остались вопросы, спрашивайте в комментариях!
Конференция HighLoad в которой рассказывается что нового в Nginx:
Кроме функции веб-сервера, программа может работать в качестве обратного прокси, прокси для TCP/UDP или почты, а также в качестве балансировщика нагрузки. Nginx используется для обеспечения работы огромного количества сайтов в сети интернет, а также известна, как самый высокопроизводительный веб-сервер. В этой статье мы рассмотрим, как выполняется установка Nginx CentOS 7, а также как выполнить первоначальную настройку программы.
Установка Nginx в CentOS 7
Веб-сервер Nginx есть в официальных репозиториях дистрибутива, та версия уже устарела, и если вы хотите получить новую версию с современными возможностями, вам придётся использовать репозиторий EPEL. Для его добавления в систему выполните:
yum install epel-release
Затем можно установить Nginx:
yum install nginx
Чтобы запустить сервис Nginx, выполните:
systemctl start nginx
Затем необходимо добавить программу в автозагрузку:
systemctl enable nginx
Далее надо разрешить трафик для веб-сервера в брандмауэре системы:
И перезагрузить брандмауэр:
Если все было сделано правильно, то, открыв адрес сервера, на который вы устанавливали Nginx, вы увидите страницу по умолчанию:
Настройка расположения файлов сайта
Установка Nginx CentOS 7 завершена, теперь будет рассмотрена настройка Nginx. Нам нужно сообщить Nginx, где будут находится файлы нашего сайта. В конфигурационном файле /etc/nginx.conf, уже настроен один виртуальный хост. Его мы и будем использовать. Здесь указана опция default_server, поэтому он будет открываться для всех запросов к Nginx:
Сначала нужно создать само расположение файлов. Создайте папку /var/www/html/default, в которой будут храниться наши файлы сайтов, и дайте на неё права пользователю nginx:
mkdir /var/www/html/default
chown nginx:nginx /var/www/html/default
Также можно создать файл index.html в этой папке для теста веб-сервера с таким текстом:
Этот файл тоже должен принадлежать пользователю Nginx. Далее в конфигурационном файле /etc/nginx/nginx.conf найдите секцию server и замените значение параметра root на /var/www/html/default:
Теперь Nginx будет брать файлы сайта из этого каталога при всех запросах. Перезапустите Nginx:
systemctl restart nginx
Если возникает ошибка, убедитесь, что у Nginx есть права для доступа к этому файлу, а также, что SELinux отключён или правильно настроен.
Настройка PHP-FPM Nginx CentOS
Если вам нужен Nginx, то скорее всего, вам нужно также настроить его для работы с интерпретатором PHP. Дальше будет разобрана настройка php-fpm Nginx CentOS 7. Прочитать более подробно про установку PHP 7 в CentOS можно в отдельной статье, а в этой статье мы будем работать с версией, доступной в официальных репозиториях. Для Nginx нам необходимо установить пакет php-fpm:
yum install php-fpm
Затем запустите службу php-fpm командой:
systemctl start php-fpm
Далее нам осталось только связать Nginx с новой службой. Для этого в секцию server добавьте такой код:
\.php$ try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
>
Здесь очень важно значение этого параметра:
sudo systemctl reload nginx
Опция reload позволяет перечитать конфигурацию без перезагрузки веб-сервера. Осталось создать тестовый файл с таким содержимым:
Затем откройте адрес сервера на который был установлен Nginx плюс phpinfo.php в браузере:
Теперь вы увидите, что php-fpm nginx настроен полностью и корректно работает.
Обратите внимание, что секция location для php - это регулярное выражение и если у вас будут более общие регулярные выражения, то эта секция должна находиться перед ними, потому что Nginx не будет проверять все регулярные выражения и искать самое подходящее, а выберет первое, которое совпадёт.
Выводы
В этой статье мы разобрали, как установить Nginx CentOS 7, а также как настроить первый веб-сайт и подключить обработку скриптов с помощью интерпретатора php-fpm. В следующих статьях разберёмся с настройкой виртуальных хостов для Nginx и SSL-сертификатов.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Оцените статью:
(2 оценок, среднее: 5,00 из 5)Об авторе
5 комментариев
А зачем php в статье про nginx? мб стоит как то более подробно расписать возможности nginx, например stream проксирование, либо возможность разным сайтам работать под разными пользователями. Подобных этой статей слишком много уже.
О каких вопросах в комментариях может быть речь, если даже вызов phpinfo написан с ошибкой. Не читайте статью - пустая трата времени.
Я полчаса потратил на ковыряние конфигов, только после твоего коммента дошло! Сайт нормальный вроде, но авторы косячат иногда!
Для получения последней версии NGINX создаем файл с настройками нового репозитория:
И приводим его к следующему виду:
Обновляем систему и список пакетов:
* если система запросит подтверждение, отвечаем Y.
Устанавливаем NGINX следующей командой:
yum install nginx
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
Теперь добавляем NGINX в автозапуск при загрузке CentOS
systemctl enable nginx
И запускаем веб-сервер:
systemctl start nginx
Для проверки запустите браузер на другом компьютере и введите в адресную строку IP-адрес сервера, который был настроен. Должна загрузиться тестовая страница, наприимер:
NGINX + PHP + PHP-FPM
В чистом виде, веб-сервер NGINX используется редко. Настроим связку с PHP и его обработчиком — PHP-FPM.
Для начала, устанавливаеми тот и другой следующими командами:
yum install php
yum install php-fpm
Разрешаем автозапуск php-fpm и запускаем его:
systemctl start php-fpm
systemctl enable php-fpm
Настройка NGINX для работы с PHP и PHP-FPM
Открываем настройки сайта по умолчанию:
Редактируем секцию location:
location / root /usr/share/nginx/html;
index index.php;
>
* здесь мы поменяли index.html на index.php. Эта настройка позволит автоматически искать и запускать файл index.php, если путь к скрипту не указан явно.
Приводим к следующему виду секцию server:
\.php$ set $root_path /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
>
* где /usr/share/nginx/html — корневой путь по умолчанию для хранения сайта; 9000 — порт, на котором работает php-fpm.
Читайте также: