Как настроить nginx centos

Установка 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 особой разницы в производительности не наблюдается.

Особое внимание хотелось обратить на безопасность и производительность сервера, поэтому если вы нашли ошибки или недочёты, просим написать это в комментариях и в случае необходимости мы внесём изменения в статью.

Источник

Читайте также:  После установки драйвера realtek hd audio не работает звук
Оцените статью