- Установка Nginx на CentOS 7
- Что такое Nginx?
- Требования
- 1: Репозиторий Nginx
- 2: Установка Nginx
- 3: Запуск Nginx
- Как узнать общественный IP-адрес сервера
- Root-каталог и конфигурационные файлы Nginx
- Root-каталог Nginx по умолчанию
- Конфигурационный файл блока server
- Глобальная настройка Nginx
- Читайте также
- NGINX на CentOS 7 — установка и настройка
- NGINX + PHP + PHP-FPM
- Настройка NGINX для работы с PHP и PHP-FPM
- Установка и базовая настройка Nginx на CentOS 7
- Установка и оптимальная настройка Nginx + LAMP (CentOS 7)
Установка Nginx на CentOS 7
Что такое Nginx?
Nginx – это веб-сервер высокой производительности, гораздо более гибкий и легкий, чем HTTP-сервер Apache.
Это руководство покажет, как установить и запустить Nginx на сервере CentOS 7.
Требования
Для выполнения данного руководства понадобятся привилегии root. Чтобы узнать, как получить все root-привилегии, читайте руководство «Начальная настройка сервера CentOS 7».
1: Репозиторий Nginx
Чтобы добавить yum-репозиторий Nginx на CentOS 7, откройте терминал и используйте следующую команду:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2: Установка Nginx
Теперь можно приступать к установке Nginx на сервер. Для этого используйте команду yum:
sudo yum install nginx
Затем нужно ответить yes на извещение, после чего Nginx завершит установку на виртуальный выделенный сервер.
3: Запуск Nginx
Веб-сервер Nginx не запускается самостоятельно. Чтобы запустить Nginx, наберите:
sudo systemctl start nginx.service
На данном этапе можно выполнить проверку, чтобы убедиться, что все прошло должным образом; для этого посетите общественный IP-адрес сервера в веб-браузере (чтобы узнать общественный IP-адрес сервера, см. инструкции в следующем разделе):
Это должно вывести веб-страницу Nginx для CentOS 7 по умолчанию, которая предоставляет некоторую важную информацию, а также позволяет протестировать Nginx.
Если такая страница появилась, значит, все идет как надо.
Прежде чем продолжить, вероятно, понадобится активировать автоматический запуск Nginx, чтобы веб-сервер запускался при загрузке системы. Для этого введите следующую команду:
sudo servicectl enable nginx.service
Готово! Теперь веб-сервер Nginx установлен и запущен.
Как узнать общественный IP-адрес сервера
Чтобы узнать общественный IP сервера, запустите следующую команду:
ip addr show eth0 | grep inet | awk ‘< print $2; >‘ | sed ‘s/\/.*$//’
Root-каталог и конфигурационные файлы Nginx
Чтобы начать обслуживать собственные страницы или приложения через Nginx, нужно знать расположение конфигурационных файлов и root-каталога веб-сервера по умолчанию.
Root-каталог Nginx по умолчанию
Root-каталог веб-сервера находится в /usr/share/nginx/html. Файлы, размещенные в нем, будут обслуживаться веб-сервером. Это место определяется в конфигурационном файле блока server по умолчанию, который поставляется вместе с Nginx и находится в /etc/nginx/conf.d/default.conf.
Конфигурационный файл блока server
Любые дополнительные блоки server (известные в Apache как виртуальные хосты, Virtual Hosts) вносятся путем создания нового конфигурационного файла в /etc/nginx/conf.d. Файлы этого каталога, которые заканчиваются на .conf, будут загружаться при запуске Nginx.
Глобальная настройка Nginx
Главный конфигурационный файл Nginx находится в /etc/nginx/nginx.conf. В нем можно изменить основные настройки (как, например, пользователя, который запускает процессы демона Nginx, а также количество рабочих процессов, которые создаются при запуске Nginx).
Читайте также
Установив Nginx на облачный сервер, приступайте к установке LEMP Stack.
Источник
NGINX на CentOS 7 — установка и настройка
Для получения последней версии NGINX создаем файл с настройками нового репозитория:
И приводим его к следующему виду:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Обновляем систему и список пакетов:
* если система запросит подтверждение, отвечаем Y.
Устанавливаем NGINX следующей командой:
yum install nginx
По умолчанию, в CentOS работает брандмауэр, поэтому необходимо добавить рабочие порты 80 (http) и 443 (https) в правила на исключение:
firewall-cmd —permanent —add-port=80/tcp
firewall-cmd —permanent —add-port=443/tcp
* в данном примере добавлены порты 80 и 443. Первый используется в NGINX по умолчанию. Если планируется использовать другой, необходимо добавить его. Или наоборот — если не запланирована работа по безопасному протоколу https, можно его не включать.
Теперь добавляем 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.
Переименовываем индексный файл для текущего сайта по умолчанию:
mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.php
Отредактируем его (содержимое заменим на это):
Источник
Установка и базовая настройка Nginx на CentOS 7
Про установку и базовую настройку Nginx на Debian я уже писал неоднократно, а вот CentOS как-то обошел стороной.
Исправим же это.
Исходные данные: ОС CentOS 7
Задача: Установить и настроить Nginx (ветка Mainline)
1. Установим вспомогательные утилиты
2. Добавим репозитарий Nginx в ОС
Добавим файл репозитария Nginx:
Включим репозитарий nginx-mainline:
3. Установим Nginx и OpenSSL (опционально)
4. Запустим Nginx
5. Проверим факта запуска Nginx
Строка «Active: active (running)» говорит о работе Nginx.
6. Проверим открытые порты
Видим, что Nginx ожидает соединения на 80 порту на всех сетевых интерфейсах.
Теперь займемся базовой настройкой.
1. Создадим директорию для хранения SSL сертификатов и DH-ключей, а также создаем файл с параметрами для DHE-шифров:
2. Создадим директории для хранения настроек Web-сайтов:
3. Отредактируем основной файл настроек Nginx.
Я приведу базовый эталонный файл настроек который использую я на 99% серверов, рекомендую использовать его с дополнительными Вашими правками под конкретные нужды. В предыдущей статье мы уже рассматривали его, с тех пор ничего не изменилось.
Скачать уже готовый файл для Nginx версии 1.21.x :
После этого проверяем конфигурацию Nginx:
Если ошибок нет, то перезагружаем конфигурацию Nginx:
4. Меняем системные лимиты на количество открытых файлов.
Т.к. мы указали в nginx.conf параметр worker_rlimit_nofile = 10000, то будем исходить из него.
Традиционно во всех статьях в Интернет все меняют лимиты через редактирование файла /etc/security/limits.conf, но это неправильно, т.к. для CentOS этот файл не работает так как хочется.
В CentOS 7 используется система инициализации systemd и поэтому лимиты на максимальное количество открытых файлов нужно настроить для systemd, для этого выполняем:
Теперь проверим лимиты, для этого смотрим строку «Max open files» в выводе:
ВАЖНО! Если на Вашем сервере с CentOS включен firewall (посмотреть список правил можно командой iptables -nvL), то необходимо разрешить сетевые подключения на порт 80 и 443. В данной статье я не буду рассматривать как это сделать.
Теперь по адресу http://IP-адрес-вашего-сервер Вы сможете увидеть приветственную страницу «Welcome to nginx!».
За вывод данной страницы отвечает пока один единственный виртуальный сервер, его конфигурация находится в файле /etc/nginx/conf.d/default.conf
Выведем его содержимое без комментариев:
На данном этапе Вы должны прочитать документацию о том как Nginx обрабатывает входящие запросы, определение виртуальных серверов по имени и IP адресу и там же описана конфигурация простого сайта на PHP, но настройка PHP-FPM — это уже тема следующей статьи.
На этом базовая настройка Nginx завершена, до скорых встреч.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Источник
Установка и оптимальная настройка Nginx + LAMP (CentOS 7)
Недавно приняли решение переехать с хостинга на VPS, будем использовать: CentOS 7, Nginx, Apache, PHP, MySQL. Несмотря на большое количество статей на эту тему, многие аспекты не упоминаются, поэтому выкладываем эту статью чтобы услышать мнение знающих и опытных людей. Настраивать сервер как Вы уже поняли будем первый раз, поэтому о актуальности статьи можно будет судить из комментариев. Nginx будет отдавать статику, а динамику Apache (скрипты PHP), чтобы снизить нагрузку на сервер.
Все настройки будем применять на рабочем сервере нашего проекта с конфигурацией сервера: CPU — 2 × 2000 МГц и RAM — 2048 МБ.
Для начала работы находим подходящий VPS с предустановленной CentOS 7, к серверу будем подключаться по SSH через PuTTY.
Вводим название хоста и порт, нажимаем Open:
Далее вводим логин [Enter], потом пароль (обратите внимание, ввод пароля не отображается) [Enter]:
Обновить систему, при этом сохранить устаревшие версии пакетов:
Создаём файловую структуру и пользователей под сайты.
Создаём каталог (папку) для файлов под все сайты:
Под каждый отдельный сайт выполните такие действия.
Содержимое каждого сайта будет находиться в собственном каталоге, поэтому создаём нового пользователя и отдельный каталог для разграничения прав доступа:
-b папка в которой будет создан каталог пользователя
-m создать каталог
-U создаём группу с таким же именем как у пользователя
-s /bin/false отключаем пользователю shell
]# useradd name.site -b /website/ -m -U -s /bin/false
]# mkdir -p -m 754 /website/name.site/www
[root@test
]# mkdir -p -m 754 /website/name.site/logs
[root@test
]# mkdir -p -m 777 /website/name.site/tmp
]# chown -R name.site:name.site /website/name.site/
]# chmod 755 /website/name.site
Инструкции по установке приведены на официальном сайте Nginx.
Для настройки репозитория yum в CentOS создаём файл /etc/yum.repos.d/nginx.repo:
]# cd /etc/yum.repos.d
[root@test
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
]# rpm —import http://nginx.org/keys/nginx_signing.key
]# systemctl start nginx.service
]# systemctl stop nginx.service
Устанавливаем Apache и PHP.
Устанавливаем Apache (в CentOS — httpd):
]# systemctl start httpd.service
]# systemctl stop httpd.service
Добавляем в автозагрузку:
]# systemctl enable nginx.service
user nginx;
worker_processes 2;
pid /var/run/nginx.pid;
events <
worker_connections 1024;
multi_accept on;
>
http <
error_log /var/log/nginx/error.log warn;
access_log off;
charset utf-8;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 30;
send_timeout 15;
keepalive_timeout 5;
keepalive_requests 30;
client_max_body_size 8m;
limit_rate_after 30M;
limit_rate 500K;
open_file_cache max=10000 inactive=3m;
open_file_cache_min_uses 2;
open_file_cache_valid 1m;
sendfile on;
tcp_nodelay on;
tcp_nopush on;
open_file_cache max=10000 inactive=3m;
Для каждого сайта создаём виртуальный хост Nginx.
Чтобы Nginx получил доступ к файлам сайта, добавим пользователя nginx в группу name.site:
]# usermod -a -G name.site nginx
server <
listen 80;
server_name name.site www.name.site;
#access_log /website/name.site/logs/nginx_access.log;
error_log /website/name.site/logs/nginx_error.log;
location / <
proxy_pass http://127.0.0.1:8080/;
proxy_read_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
>
* \.(css|js|png|gif|jpg|jpeg|ico)$ <
root /website/name.site/www;
expires 1d;
>
error_page 500 502 503 504 /50x.html;
location = /50x.html <
root /usr/share/nginx/html;
>
>
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
* \.(css|js|png|gif|jpg|jpeg|ico)$ <
root /serves/name.site/www;
expires 1d;
>
Посмотрите какой именно модуль Apache у вас установлен. У меня — apache2-mpm-prefork (один процесс с одним потоком будет обрабатывать одно соединение, рекомендуется как безопасный совместно с PHP):
ServerRoot «/etc/httpd»
DocumentRoot «/website»
Include conf.modules.d/*.conf
User apache
Group apache
Listen 127.0.0.1:8080
ServerName 127.0.0.1:8080
ServerAdmin root@localhost
ServerSignature Off
ServerTokens Prod
RLimitMEM 786432000
TimeOut 250
AddDefaultCharset utf-8
DefaultLanguage ru
KeepAlive Off
ContentDigest Off
EnableSendfile off
ErrorLog «logs/error_log»
LogLevel error
DirectoryIndex index.php
AllowOverride none
Require all denied
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 30
MaxRequestsPerChild 2500
Require all denied
Для каждого сайта создаём виртуальный хост Apache.
Добавляем пользователя apache в группу каждого сайта:
]# usermod -a -G name.site apache
ServerName name.site
ServerAlias www.name.site
AllowOverride None
Require all granted
ErrorLog /website/name.site/logs/error.log
CustomLog /website/name.site/logs/requests.log combined
Блок VirtualHost, указывается какой порт слушать:
CustomLog /website/name.site/logs/requests.log combined
Проверка Nginx и Apache.
Добавляем Apache в автозагрузку:
]# systemctl enable httpd.service
]# touch /website/name.site/www/index.php
[root@test
]# cp /etc/httpd/conf.d/php.conf /etc/httpd/sites-enabled/php.conf
]# systemctl start nginx.service
[root@test
]# systemctl start httpd.service
engine = On
expose_php = Off
short_open_tag = Off
zlib.output_compression = Off
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, etc
display_startup_errors = Off
display_errors = Off
log_errors = On
error_log = «/usr/local/zend/var/log/php.log»
ignore_repeated_errors = Off
ignore_repeated_source = Off
html_errors = On
implicit_flush = Off
output_buffering = 4K
realpath_cache_size = 2M
realpath_cache_ttl = 1800
zend.enable_gc = On
max_input_time = 200
max_execution_time = 30
file_uploads = On
memory_limit = 256M
post_max_size = 8M
upload_max_filesize = 2M
max_file_uploads = 4
extension_dir = «/usr/local/zend/lib/php_extensions»
date.timezone = Europe/Moscow
default_mimetype = «text/html»
default_charset = «UTF-8»
variables_order = «CGPS»
register_argc_argv = Off
auto_globals_jit = On
enable_dl = Off
allow_url_fopen = On
allow_url_include = Off
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, etc
Устанавливаем и настраиваем MySQL.
key_buffer_size + innodb_buffer_pool_size + tmp_table_size + ((sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack) × max_connections) = ?
Немного про безопасность.
Под root заходить нежелательно, поэтому создаём нового пользователя:
]# gpasswd -a newuser wheel
]# service sshd restart
P.S. Можно использовать Nginx с php-fpm, но есть такое мнение, что при правильно настроенном Apache особой разницы в производительности не наблюдается.
Особое внимание хотелось обратить на безопасность и производительность сервера, поэтому если вы нашли ошибки или недочёты, просим написать это в комментариях и в случае необходимости мы внесём изменения в статью.
Источник