Nginx apache centos 7: Полноценный веб-сервер на CentOS 7 — NGINX + Apache (httpd) + MySQL + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + xCache

Содержание

Установка Nginx и Apache в связи в CentOS

Установка  Nginx и Apache в связи в CentOS

Данная связка распараллеливает ресурсы между двумя серверами, один работает в качестве фронтенда  за это отвечает Nginx, а второй выполняет функцию бэкенда за это отвечает apache2 и сделано это все для снижения общей нагрузки на сервер. Выполняется все это за счет того, что более легкий и не обремененный дополнительным функционалом nginx который обрабатывает все запросы от пользователей. Он сам отдает по запросам весь статический контент, такой как — изображения, html, javascript (его скрипты) и все остальное и не нагружая этим apache, который занимается свою очередь, обрабаткой динамического контента. Собственно, apache не работает с клиентами напрямую, все ихние запросы проксируются на nginx и ему только возвращаются ответы на те запросы. Так соблюдается разделение труда: nginx делает свободным apache от необходимости “обращаться” с большим количеством юзеров и выполнять запросы по статике- это очень большая его часть исходящего трафика. Сам apache не создает  никаких дочерних процессов, потребляющие RAM (оперативную память).

Данная связка очень часто используется для обеспечения работы больших ресурсов с очень большей посещаемостью на сайте, но если ресурс с маленькой посещаемостью, то данная связка не даст нормального роста производительности и в своей теме «Установка  Nginx и Apache в связи в CentOS» я расскажу и покажу как можно это сделать.

Установка nginx

Первое что нужно сделать — это подключение  репозиториев EPEL и CentALT. Они нужны для того, чтобы мы установили Nginx с поддержкой модуля RPAF, модуль для Apache.

Я писал статью по этой теме, по этому Вы можете легко найти:
1. Установка и подключения репозитория EPEL

2. Установка centalt для centos

После подключения всех репозиториях, выполняем:

# yum install nginx

Я сейчас сделаю так, чтобы веб-сервер nginx автоматически стартовал при запуске ОС. Для этого:

# chkconfig nginx on

Конфигурация Nginx

Следующим этапом будет — коректировка файла конфигурации на сервере nginx:

# vim  /etc/nginx/nginx. conf
user nginx;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
worker_rlimit_nofile auto; # С версии 1.3 нужно порекомендовать ставить 'auto', если не будет работать, задаем число

events {
worker_connections 2048;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] $status ‘
‘»$request» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;

# немного тюнинга
sendfile on; 
tcp_nopush on; 
server_tokens off; 
keepalive_timeout 65; 
# включим сжатие данных до отправкой
gzip on; 
gzip_static on; 
gzip_comp_level 5; 
gzip_min_length 1024;

# можно подключить директорию для всех наших конфигов (виртуальных хостов), но я закомментирую ее т.к использую всего 1 сайт
# include /etc/nginx/conf. .+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|js)$ {
root /var/www/212.66.44.35;
}
}
}

Для более нормальной читабельности я его положил в файл и его можно прочитать тут, чтобы скачать выполните (не забудьте переименовать данный файл тогда):

# cd /etc/nginx/
# wget http://linux-notes.org/wp-content/uploads/files/apache_nginx/nginx_for_conjunction_apache_CenOS.conf

Установка Apache2

Веб-серер энжинкс уже установлен и настроен, сейчас установим и настроим apache2 который в списке пакетов имеет имя  httpd и для его установки нужно выполнить:

# yum install httpd

Конфигурация Apache

Нужно немного подредактировать  конфигурационный файл в apache и привести к такому виду:

# vim /etc/httpd/conf/httpd.conf
[...]
Listen 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
ServerAdmin [email protected]
DocumentRoot /var/www/212. 66.44.35/
ServerName 212.66.44.35
ErrorLog logs/212.66.44.35-error_log
CustomLog logs/212.66.44.35-access_log common
</VirtualHost>
[...]

Мой рабочий конфиг Вы можете посмотреть тут, можно так же и скачать (но не забудьте переименовать его):

# cd /etc/httpd/conf/
# wget http://linux-notes.org/wp-content/uploads/files/apache_nginx/httpd_for_conjunction_nginx_CenOS.conf

Установка модуля RPAF

Сейчас все запросы к апачу поступают  не от удаленных посетителей, а уже от  nginx, то в итоге IP-адрес посетителя apache будет оприделятся как локальный (127.0.0.1). Собственно, чтобы решить эту проблему нужно установить и настроить модуль RPAF. Расскажу как работает данный модуль:

Собственно, нечего непонятного тут нет, RPAF  берет тело заголовка X-Forwarded-For, который прислал наш  фронтенд (веб-сервер nginx) и делает замену в заголовке REMOTE_ADDR на бекенде (веб-серера apache).

Выполним установку:

# yum install mod_rpaf

У меня этот метод установки почему то не работал, по этому я решил свою проблему немного по другому.

Сначала я поставил пакеты  нужных для работы утилит (http-devel и gcc -это компилятор):

# yum -y install httpd-devel gcc

После чего я перейду в папку src:

# cd /usr/local/src

После этого я скачаю архив с исходным кодом mod_rpaf:

# wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz

Распакую данный, скачанный архив следующей командой и перейду в нужную папку для дальнейшей работы:

# tar zxvf mod_rpaf-0.6.tar_.gz && cd mod_rpaf-0.6

После чего, выполняем команду и устанавливаем данный модуль в апач:

# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Настройка модуля RPAF

Следующим шагом будет настройка модуля, для этого откроем нужный файл и впишем в него некоторые изменения:

# vim /etc/httpd/conf.d/rpaf.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
RPAFheader X-Real-IP

Все, установка и настройка nginx и apache в связи в CentOS, но остались последние штрихи — нужно перегрузить все сервисы:

# /etc/init. d/httpd restart
# /etc/init.d/nginx restart

На этом, тема «Установка  Nginx и Apache в связи в CentOS» завершена, спасибо что читаете мой блог http://linux-notes.org

Не забываем поставить еще PHP5, базы данных (Mysql, MariaDB, MongoBD, oracle или любую другую), на сайте можно найти многое по различным темам.

установка Apache HTTP + NGINX

CentOS: установка Apache HTTP + NGINX
Перейти к содержимому

Предполагается, что Apache HTTP уже установлен, согласно статье CentOS: установка Apache HTTP + suEXEC + mod_fcgid.

Установка выполняется на:

# uname -r; cat /etc/redhat-release
2.6.32-431.20.3.el6.x86_64
CentOS release 6.5 (Final)

Для установки NGINX подключим его родной репозиторий:

# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch. rpm
warning: /var/tmp/rpm-tmp.K7nOMw: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ########################################### [100%]
1:nginx-release-centos ########################################### [100%]

Проверяем:

# yum repolist | grep nginx
nginx nginx repo 56

Устанавливаем NGINX:

# yum -y install nginx --enablerepo="nginx"

Проверяем:

# yum list installed | grep nginx
nginx.x86_64 1.6.0-1.el6.ngx @nginx
nginx-release-centos.noarch

Редактируем файл /etc/nginx/nginx.conf, устанавливаем:

user nginx; # пользователь, под которым будет работать nginx;
worker_processes 1; # кол-во процессов nginx, по кол-ву ядер/процессоров;

pid /var/run/nginx.pid;

events {
    worker_connections 1024; # макс. кол-во одновременно обслуживаемых соединений, считается макс. клиентов = worker_processes * worker_connections
}

http {
    include /etc/nginx/mime. types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;

    # немного тюнинга
    sendfile on;
    tcp_nopush on;
    server_tokens off;
    keepalive_timeout 65;

    # сжатие некоторых данных перед отправкой
    gzip on;
    gzip_static on;
    gzip_comp_level 5;
    gzip_min_length 1024;

    # ограничиваем кол-во подключений с одного IP ко всем сайтам;
    # что бы установить различные ограничения для каждого отдельного виртуалхоста - перенесите limit_conn perip в блок server каждого конфига;
    limit_zone myzone $binary_remote_addr 2m;
    limit_conn perip 5;

    # для Apache
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # подключем директорию для файлов конфигурации виртуалхостов
    include /etc/nginx/conf. d/*.conf;

    # описываем сервер по-умолчанию
    server {
    listen 80 default;

    location ~ /.ht {
        deny all;
    }

    location / {
       proxy_pass http://127.0.0.1:8080;
    }

    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;
    }
}
}

Убираем ненужный теперь конфиг сервера по-умолчанию:

# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bkp

Проверяем синтаксис:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Редактируем /etc/httpd/conf/httpd.conf, меняем:

Listen 80

На:

Listen 127.0.0.1:8080

Редактируем файл виртуалхоста /etc/httpd/conf. d/setevoy.org.ua.conf, меняем:

<VirtualHost 77.***.***.20:80>

на:

<VirtualHost 127.0.0.1:8080>

Проверяем конфиг:

# httpd -t
Syntax OK

Создаём файл конфигу виртуалхоста для NGINX/etc/nginx/conf.d/setevoy.org.ua.conf:

server {

    listen 80;
    server_name setevoy.org.ua wwww.setevoy.org.ua;

    location ~ /.ht {
        deny all;
    }

    location ~* .(jpg|swf|jpeg|gif|png|css|js|ico)$ {
    root /var/www/vhosts/setevoy.org.ua;
    }

    location / {
    proxy_pass http://127.0.0.1:8080;
    }
}

Ещё раз проверяем:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Останавливаем Apache:

# service httpd stop
Stopping httpd: [ OK ]

И запускаем NGINX:

# service nginx start
Starting nginx: [ OK ]

Запускаем Apache:

# service httpd start
Starting httpd: [ OK ]

Проверяем порты:

# netstat -anp | grep -E "nginx|httpd"
tcp 0 0 127. 0.0.1:8080 0.0.0.0:* LISTEN 4597/httpd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4584/nginx

И отдельно – установим mod_rpaf, что бы в логе Apache отображались корректные IP, а не 127.0.0.1:

127.0.0.1 - - [06/Jul/2014:19:48:26 +0300] "GET / HTTP/1.0" 200 16781 "http://setevoy.org.ua/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"

Во многих (да почти всех) мануалах говорится про репозиторий CentALT, который сейчас отдаёт 403 при любом запросе. Потому – установим вручную.

Ставим набор утилит http-devel и компилятор gcc:

# yum -y install httpd-devel gcc

Переходим в директорию src:

# cd /usr/local/src

Качаем архив и устанавливаем mod_rpaf:

# wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz
# tar zxvf mod_rpaf-0.6.tar_. gz
# cd mod_rpaf-0.6
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Ждём появления:

Libraries have been installed in:
/usr/lib64/httpd/modules

Всё установилось.

Создаём файл /etc/httpd/conf.d/mod_rpaf.conf с таким содержимым:

LoadModule rpaf_module modules/mod_rpaf-2.0.so

# mod_rpaf configuration

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Forwarded-For

Перезапускаем Apache:

# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

И проверяем логи:

37.***.***.56 - - [06/Jul/2014:19:49:10 +0300] "GET / HTTP/1.0" 200 16781 "http://setevoy.org.ua/wp-admin/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"

Ссылки по теме

http://nginx.org

http://itblog.by

http://www.theadmin.ru

Homepage

Раздел: Apache HTTP Server CentOS HOWTO’s NGINX
Метки: Apache HTTP Server, CentOS, NGINX

More results. ..

Exact matches only

Search in title

Search in content

Navigation

Самое читаемое

  • CentOS: установка, настройка Zabbix-agent и добавление нового хоста в мониторинг — 507 291 views
  • MySQL/MariaDB: наиболее используемые команды, примеры — 289 340 views
  • BASH: описание циклов for, while, until и примеры использования — 152 318 views
  • Карта сайта — 143 275 views
  • Команда find и её опции в примерах — 139 755 views

Архив месяца

Июнь 2023
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
2627282930 

Архивы по годам

Архивы по годам
Выберите месяц Февраль 2023  (2) Январь 2023  (2) Декабрь 2022  (1) Октябрь 2022  (4) Сентябрь 2022  (1) Июнь 2022  (1) Май 2022  (1) Апрель 2022  (1) Март 2022  (2) Январь 2022  (1) Декабрь 2021  (3) Ноябрь 2021  (8) Октябрь 2021  (4) Сентябрь 2021  (5) Август 2021  (5) Июль 2021  (6) Июнь 2021  (6) Май 2021  (6) Апрель 2021  (11) Март 2021  (8) Февраль 2021  (6) Январь 2021  (1) Декабрь 2020  (1) Ноябрь 2020  (9) Октябрь 2020  (9) Сентябрь 2020  (4) Август 2020  (8) Июль 2020  (4) Июнь 2020  (3) Май 2020  (5) Апрель 2020  (9) Март 2020  (8) Февраль 2020  (9) Январь 2020  (2) Декабрь 2019  (9) Ноябрь 2019  (9) Октябрь 2019  (11) Сентябрь 2019  (11) Август 2019  (10) Июль 2019  (2) Июнь 2019  (4) Май 2019  (9) Апрель 2019  (13) Март 2019  (32) Февраль 2019  (20) Январь 2019  (10) Декабрь 2018  (9) Ноябрь 2018  (12) Октябрь 2018  (15) Сентябрь 2018  (12) Август 2018  (14) Июль 2018  (17) Июнь 2018  (18) Май 2018  (21) Апрель 2018  (6) Март 2018  (18) Февраль 2018  (7) Январь 2018  (13) Декабрь 2017  (14) Ноябрь 2017  (6) Октябрь 2017  (24) Сентябрь 2017  (13) Август 2017  (15) Июль 2017  (11) Июнь 2017  (11) Май 2017  (11) Апрель 2017  (7) Март 2017  (18) Февраль 2017  (13) Январь 2017  (14) Декабрь 2016  (12) Ноябрь 2016  (15) Октябрь 2016  (13) Сентябрь 2016  (21) Август 2016  (19) Июль 2016  (14) Июнь 2016  (8) Май 2016  (24) Апрель 2016  (15) Март 2016  (19) Февраль 2016  (21) Январь 2016  (19) Декабрь 2015  (17) Ноябрь 2015  (17) Октябрь 2015  (14) Сентябрь 2015  (13) Август 2015  (1) Июль 2015  (20) Июнь 2015  (23) Май 2015  (26) Апрель 2015  (28) Март 2015  (30) Февраль 2015  (26) Январь 2015  (24) Декабрь 2014  (31) Ноябрь 2014  (21) Октябрь 2014  (28) Сентябрь 2014  (23) Август 2014  (31) Июль 2014  (23) Июнь 2014  (11) Май 2014  (14) Апрель 2014  (8) Март 2014  (11) Февраль 2014  (11) Январь 2014  (11) Декабрь 2013  (12) Ноябрь 2013  (23) Октябрь 2013  (20) Сентябрь 2013  (30) Август 2013  (20) Июль 2013  (6) Июнь 2013  (9) Май 2013  (5) Апрель 2013  (13) Март 2013  (22) Февраль 2013  (36) Январь 2013  (10) Декабрь 2012  (4) Ноябрь 2012  (8) Октябрь 2012  (13) Сентябрь 2012  (29) Август 2012  (24) Июль 2012  (18) Июнь 2012  (2) Май 2012  (4) Март 2012  (5) Февраль 2012  (5) Январь 2012  (25) Декабрь 2011  (15) Ноябрь 2011  (6) Август 2011  (13)

Iconic One Theme | Powered by WordPress

Как установить Nginx на CentOS 7 {обновленное руководство}

Что такое Nginx?

Nginx (произносится как «engine X») является альтернативой Apache и считается одним из самых популярных веб-серверов HTTP в мире. В отличие от Apache, Nginx потребляет меньше ресурсов и повышает скорость отклика сервера. Его ориентированный на события дизайн делает его ресурсосберегающим.

Прежде всего, он позволяет администраторам настраивать расширенные конфигурации и может справляться с высокой нагрузкой одновременных подключений. Помимо того, что Nginx хорошо подходит для веб-сервера HTTP, он также работает как обратный прокси-сервер, балансировщик нагрузки и стандартный почтовый сервер.

В этой статье вы узнаете как установить и настроить Nginx на CentOS 7 .

Предварительные требования

  • Самоуправляемый сервер CentOS или виртуальная машина
  • Домен. Вам нужно будет подключить домен к вашему веб-серверу Nginx
  • Sudo или привилегии root [root@user ~]
  • SELinux настроить правильно

Как установить Nginx на CentOS 7

9000 2 Как правило, CentOS предпочтительный пакет распространения в индустрии хостинга. В настоящее время CentOS 8 является последней версией, а CentOS 7 поддерживается до 2024 года.

В приведенной ниже процедуре настройки подробно описаны шаги, необходимые для настройки Nginx в CentOS 7.

Инструкции по установке для CentOS 8 см. в разделе Как установить Nginx в CentOS 8.

Шаг 1. Обновите списки пакетов репозитория

Сделать поэтому выполните следующую команду:

 sudo yum -y update 

-y — необязательный параметр. Он служит для того, чтобы избежать подтверждающих вопросов. Как вы заметили, мы будем использовать его часто. Если вы не используете этот параметр, вам будет предложено подтвердить ваши команды.

Шаг 2: Установите дополнительные пакеты для Enterprise Linux (EPEL)

Nginx недоступен в стандартных репозиториях, поставляемых с пакетом CentOS, поэтому вам необходимо установить репозиторий EPEL на свой сервер. EPEL бесплатен и предоставляет множество пакетов с открытым исходным кодом для установки вместе с Yum.

Чтобы установить EPEL, выполните следующую команду с помощью менеджера пакетов Yum:

 sudo yum install -y epel-release 

Шаг 3: Установите Nginx

Шаг номер два добавил репозиторий Nginx на ваш сервер. Теперь вы можете установить Nginx, выполнив следующую команду yum:

 sudo yum –y install nginx 

Шаг 4. Запустите службу Nginx

Ваш экземпляр Nginx установлен, но не запускается автоматически.

Чтобы запустить Nginx, выполните:

 sudo systemctl start nginx 

После нажатия Enter вы не получите возвращаемого значения. Однако Nginx должен был запуститься. Чтобы проверить его статус, запустите:

 sudo systemctl status nginx 

Должен быть зеленый фрагмент текста, который гласит: « активно (работает)».0079 Если вы не можете его найти, возможно, ваш экземпляр Nginx не запустился успешно.

Примечание: Если у вас уже запущен сервер Apache, вам необходимо отключить его перед запуском Nginx. Используйте команду sudo service httpd stop . Имейте в виду, что отключение Apache приведет к отключению любого веб-сайта, размещенного в настоящее время.

Вы отключили Apache, но он по-прежнему может запускаться автоматически при перезагрузке сервера. Отключите автоматический запуск, выполнив следующую команду:

 sudo systemctl disable httpd 

Шаг 5. Настройте Nginx для запуска при загрузке

Большинство администраторов захотят убедиться, что NGINX запускается автоматически при каждом перезапуске сервера. Чтобы настроить это, запустите:

 sudo systemctl enable nginx 

Шаг 6. Настройте брандмауэр для разрешения трафика

CentOS 7 включает брандмауэры по умолчанию и блокирует доступ к портам 80 и 443. Nginx.

Чтобы разрешить трафик HTTP и HTTPS, выполните следующие команды:

 firewall-cmd --zone=public --permanent --add-service=http 
 firewall-cmd --zone=public --permanent --add-service=https 
 firewall-cmd --reload 

После каждой команды вы должны увидеть success , указывающее, что команда была выполнена правильно.

Шаг 7. Проверка установки Nginx

Самый простой способ проверить, правильно ли работает Nginx, — посетить общедоступный IP-адрес вашего сервера. Просто откройте веб-браузер и посетите http:// server_IP_or_domain_name /

Сначала найдите общедоступный IP-адрес вашего сервера.

 ip a 

Наш IP адрес 192.168.122.1/24 . Скопируйте свой IP-адрес и вставьте его в адресную строку браузера. Это должно загрузить страницу Welcome to Nginx  .

Как устранить ошибку «test failed»

Если вы получаете сообщение об ошибке «test failed» для файла nginx.conf, возможно, вы столкнулись с проблемой IP-адреса.

Служба Nginx по умолчанию прослушивает IPv4 и IPv6. Ваш тест не будет выполнен, если ваш сервер не поддерживает IPv6. Однако это можно исправить, изменив основной файл конфигурации.

Откройте основной файл конфигурации, /etc/nginx/nginx.conf . Найдите и закомментируйте следующую строку:

 listen [::]:80 default_server; 

Просто добавьте «#» в начале строки. Это должно выглядеть так:

 # listen [::]:80 default_server; 

Сохраните внесенные изменения и перезагрузите службу Nginx.

 sudo systemctl reload nginx 

Перейдите к IP-адресу вашего сервера в браузере. Вы должны увидеть тестовую страницу Nginx по умолчанию.

Файлы конфигурации Nginx и корневой каталог

Вам обязательно нужно знать расположение файлов конфигурации Nginx и корневой каталог сервера Nginx по умолчанию.

Дополнительные серверные блоки

В Apache администраторы используют виртуальные хосты для запуска нескольких веб-сайтов. С Nginx запуск нескольких веб-сайтов на одном сервере осуществляется с помощью серверных блоков.

Дополнительные серверные блоки добавляются путем создания новых файлов конфигурации с расширением .conf. Поместите эти файлы в /etc/nginx/conf. d , и они будут загружаться при каждом запуске Nginx.

Корневой каталог сервера Nginx по умолчанию

Корневой каталог сервера Nginx по умолчанию — /usr/share/nginx . Это указано в файле конфигурации блока сервера по умолчанию, расположенном по адресу /etc/nginx/conf.d/default.conf .

Корневой каталог документов сервера по умолчанию, содержащий веб-файлы, — usr/доля/nginx/html .

Глобальная конфигурация

Глобальные конфигурации можно настроить, изменив основной файл конфигурации Nginx, расположенный по адресу /etc/nginx/nginx.conf . Этот файл конфигурации разбит на контексты. По умолчанию вы можете определить три (3) контекста.

  1. События — это глобальные настройки, которые определяют, как Nginx в целом обрабатывает соединения.
  2. HTTP определяет, как сервер обрабатывает соединения HTTP и HTTPS.
  3. Сервер определяется в контексте HTTP. Он указывает порты сервера, корень документа и т. д.

Вы всегда можете добавить дополнительные контексты.

Управление Nginx — общие задачи

Остановить Nginx

Чтобы остановить сервер Nginx, выполните:

 sudo systemctl stop nginx 

Перезапустите Nginx

Чтобы перезапустить службу Nginx, выполните: 9 0003

 sudo systemctl перезапустить nginx 

Перезагрузить Nginx

Если вы внесли некоторые изменения в основные изменения конфигурации Nginx. Вам необходимо перезагрузить сервер для распространения изменений.

 sudo systemctl reload nginx 

Отключить автоматический запуск при загрузке

Если вы не хотите, чтобы Nginx автоматически запускался при загрузке, выполните:

 sudo systemctl отключить nginx 

Настройка нового каталога

9000 2 Если вы размещаете несколько веб-сайтов , хорошее эмпирическое правило — следовать стандартным соглашениям об именах. Давайте воспользуемся стандартным названием cPanel и создадим каталог.

 sudo mkdir -p /var/www/yourdomain.com/public_html 

Следующее, что вам нужно, это индексная страница. Это поможет вам протестировать конфигурацию.

 sudo nano /var/www/yourdomain.com/public_html/index.html 

В целях тестирования введите одну строку текста в index.html. Сохраните и закройте файл.

Изменить права доступа к файлам Linux, чтобы к данным можно было получить доступ в Интернете.

 sudo chmod 755 /var/www/yourdomain.com/public_html 

Попробуйте открыть страницу index.html. Он должен быть доступен онлайн.

Заключение

После успешной установки Nginx на CentOS 7, многие решают полностью установить стек LEMP, альтернативу известному стеку LAMP. ЛЭМП — это аббревиатура; каждая буква обозначает один компонент с открытым исходным кодом.

  • L — Linux OS
  • E — NGINX (произносится как вы говорите «Engine X ‘)
  • M — MySQL или Mariadb Реляционная система управления базой данных
  • P — PHP для динамических веб -сайтов

». поверх другого.» Ваша операционная система Linux служит базовым уровнем.

Поверх него находится Nginx, ваш веб-демон. Система управления реляционной базой данных хранит все данные, обрабатываемые и обслуживаемые вашим веб-демоном. Наконец, PHP позволяет пользователям взаимодействовать с этими данными.

Чтобы узнать о новых версиях CentOS, ознакомьтесь с нашей статьей об установке и настройке Nginx в CentOS 8.

Как установить и настроить NGINX в CentOS 7

Примечание редактора. обновлено 5 апреля 2018 г.

Итак, вы только что приобрели новый самоуправляемый сервер. Поздравляю с мудрым решением!

В этой статье мы рассмотрим отключение Apache, а затем установку и активацию NGINX на новом сервере. Это предполагает определенный уровень предыдущих знаний по администрированию серверов или, по крайней мере, готовность учиться.

ПРИМЕЧАНИЕ. Эта статья не предназначена для использования в качестве руководства по переносу существующих сайтов на рабочем сервере с Apache на NGINX. Пожалуйста, имейте это в виду при выполнении следующих шагов, так как один из шагов, которые мы предпримем, — это отключение Apache. Если вы сделаете это на сервере с работающими рабочими сайтами, сайты перестанут работать до тех пор, пока они не будут перенастроены для работы с NGINX.

Что такое NGINX?

NGINX (произносится как «Engine Ex») был запущен в производство в 2004 году и быстро становится популярной альтернативой традиционному веб-серверу Apache. Он имеет управляемый событиями дизайн, который может лучше использовать современное компьютерное оборудование, чем дизайн Apache, управляемый процессами.

Из-за этого NGINX часто рассматривается как «более быстрая» альтернатива Apache, способная обрабатывать более высокую нагрузку одновременных подключений при использовании меньшего количества ресурсов.

Существует множество сравнений между Apache и NGINX; мы оставим дебаты до сообщества. Но вот несколько советов, которые определяют основные причины выбора Apache вместо NGINX.

Подходит ли вам NGINX или Apache?

Если вы…

  • Использование сервера для размещения одного веб-сайта с высоким трафиком
  • Умеет работать с расширенной настройкой и настройкой и обладает необходимыми навыками
  • Желание работать с более новыми средами веб-разработки
  • Желание использовать альтернативу CGI/FastCGI, например WSGI
  • Нормально с меньшим количеством надстроек , компоненты или модули
  • подходят для более сложной конфигурации

… тогда вам может подойти NGINX.

Если вы …

  • Используете традиционные приложения MySQL/PHP, такие как WordPress или Drupal
  • Планирование размещения множества веб-сайтов с различными конфигурациями для каждого сайта через .htaccess
  • Вам удобнее пользоваться хорошо известной и задокументированной платформой
  • Хотите получить доступ к множеству различных модулей, надстроек и компонентов
  • Хотите, чтобы ваш веб-сервер работал прямо из коробки

. .. тогда вы, вероятно, захотите придерживаться Apache.

Вот хорошее практическое правило: если вы хотите запустить ОДИН сайт с молниеносной скоростью в расширенной конфигурации, NGINX, вероятно, является сервером для вас. Если вы хотите запустить МНОГИЕ сайты с простой настройкой и гибкостью, Apache по-прежнему будет вашим хлебом с маслом.

В конце концов, и NGINX, и Apache хорошо подходят для большинства сайтов. Apache включен во все основные дистрибутивы Linux и требует гораздо меньше настроек. Тем не менее, большинство тестов показали, что NGINX быстрее обслуживает веб-сайты. Вы также можете увидеть некоторые конфигурации, которые работают с обоими — все зависит от вас, как от администратора.

В конце концов, выбор платформы веб-сервера полностью зависит от того, что вы делаете с сервером.

Прежде чем мы начнем…

Прежде чем мы начнем, убедитесь, что у нас есть все необходимое:

Активный сервер CentOS 7. Если вы работаете над небольшим проектом или только начинаете, мы рекомендуем использовать план GoDaddy VPS. Если вы ищете больше контроля и мощности, план выделенного сервера может подойти лучше.

Домен. Нам, конечно, потребуется привязать домен к веб-серверу NGINX, поэтому нам понадобится домен для использования. Все наши примеры будут использовать домен вашдомен.com . Просматривая статью, замените любой экземпляр yourdomain.com доменом, который вы хотите использовать для своего сайта.

Возможность подключения по SSH. Используйте клиент SSH, например PuTTY или PowerShell (для Windows) или Terminal (Mac). Вы можете найти инструкции здесь. Если этот шаг вызывает затруднения, эта статья может быть не для вас, поскольку большая часть работы, которую мы выполняем, выполняется в командной строке.

Окно браузера, открытое для выбранной вами поисковой системы. В NGINX есть много пользовательских настроек, которые вам могут понадобиться в соответствии с вашими потребностями, а также другие переменные, которые не учитываются в этой статье. Но это не должно сбивать вас с толку — поисковые системы — ваш союзник.

Если все эти элементы на месте, мы готовы к вылету. Пойдем!

Шаг 0: Подключитесь к вашему серверу

Войдите на свой сервер через SSH, затем войдите в систему как пользователь root, выполнив:

 sudo su - 

Необязательно: Установите текстовый редактор nano

Если вы не являетесь поклонником VIM, вам может быть проще работать с редактором nano. Если он не установлен на вашем сервере, установите его с помощью:

 yum install nano 

Это упростит редактирование файлов конфигурации.

Шаг 1. Отключите Apache

Каждый основной дистрибутив Linux по умолчанию содержит пакеты с Apache. Он интегрирован в ОС, подобно тому, как Windows поставляется в комплекте с IIS.

Поскольку мы настраиваем выделенное пространство для NGINX, возможно, что существующая конфигурация Apache может вызвать проблемы при активации NGINX. Итак, мы отключим Apache, а затем настроим Apache так, чтобы он не запускался при перезагрузке сервера.

Примечание. Отключение Apache на сервере с действующими сайтами приведет к отключению этих сайтов. Действуй соответственно!

Выключите Apache. Помните: это приведет к отключению всех текущих веб-сайтов, размещенных на сервере.

 service httpd stop 

Теперь нам нужно удалить Apache из цикла загрузки, чтобы он не пытался запуститься во время загрузки сервера:

 systemctl disable httpd 

Apache полностью отключен не будет запускаться снова, пока мы не скажем об этом.

ПРИМЕЧАНИЕ: Если у вас позже возникнут угрызения совести покупателей по поводу NGINX и вы хотите, чтобы Apache снова запускался при загрузке, вы можете легко исправить эту предыдущую команду, выполнив:

 systemctl enable httpd 

Шаг 2: Установите NGINX

Сейчас что мы отключили Apache, мы можем начать установку NGINX.

Во-первых, нам нужно добавить пакет CentOS EPEL, чтобы мы могли установить NGINX:

 yum install epel-release 

Теперь, когда наш репозиторий установлен на сервере, мы можем использовать yum для установки NGINX, например так:

 yum -y install nginx 

Запуск NGINX:

 запуск службы nginx 

Что делать, если вы видите сообщение об ошибке «test failed» для nginx.conf?

Возможно, вы имеете дело с проблемой IP-адреса. По умолчанию NGINX прослушивает как IPv4, так и IPv6. Однако, если ваш сервер не поддерживает IPv6, тест не будет выполнен.

Вы можете исправить это, открыв файл конфигурации:

 nano /etc/nginx/nginx.conf 

Закомментируйте следующую строку:

 слушать [::]:80 default_server; 

Итак, это выглядит так:

 # listen [::]:80 default_server; 

Закройте и сохраните файл, затем попробуйте снова запустить службу:

 запуск службы nginx 

Если вы не видите ошибок, все готово.

Настройте сервер для запуска NGINX при перезагрузке:

 systemctl enable nginx 

Теперь вы сможете увидеть тестовую страницу NGINX, перейдя по IP-адресу вашего сервера в браузере.

Шаг 3. Настройте NGINX для обслуживания вашего домена

Итак, мы перешли со шхуны Apache на пароход NGINX. Теперь пришло время заставить его работать для вашего домена.

Создадим новый каталог для сайта DocumentRoot.

Рекомендуется следовать стандартному соглашению об именах, если вы размещаете несколько веб-сайтов.

Мы будем следовать стандарту, используемому cPanel, mk, и создадим наш DocumentRoot на основе имени public_html, например:

 mkdir -p /var/www/yourdomain.com/public_html 

Давайте создадим тестовый index.html в этом каталоге, чтобы нам было на что посмотреть, когда мы будем тестировать конфигурацию позже:

 nano /var/ www/yourdomain. com/public_html/index.html 

Все, что нам нужно, это простая строка текста, чтобы показать, что соединение работает:

 Привет, мир! 

Закройте и сохраните файл index.html.

Нам нужно установить разрешения для этой папки, чтобы ее мог просматривать внешний мир:

 chmod 755 /var/www/yourdomain.com/public_html 

Теперь наш каталог настроен, и у нас есть тестовый index.html, ожидающий просмотра.

Шаг 4. Настройте NGINX для распознавания серверных блоков

Мы можем разместить несколько веб-сайтов на одном сервере Apache с помощью виртуальных хостов. Это эффективно действует как инструкции маршрутизации, указывающие домен на соответствующий каталог на сервере.

В NGINX этот вид маршрутизации обрабатывается «серверными блоками», а не записями виртуального хоста. Они похожи, но файл конфигурации немного отличается.

Во-первых, нам нужно настроить каталоги, в которых будут находиться серверные блоки:

 mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
 

ПРИМЕЧАНИЕ. Да, мы могли бы просто отредактировать файл глобальной конфигурации NGINX (nginx.conf) вместо создания структуры каталогов. Однако, настроив дерево каталогов (что и делают дистрибутивы Linux на основе Debian, такие как Ubuntu), это позволяет упростить настройку в будущем, если будет добавлено больше веб-сайтов.

Теперь нам нужно указать NGINX использовать просмотр этих каталогов для серверных блоков. Откройте глобальный файл конфигурации NGINX:

 nano /etc/nginx/nginx.conf 

Добавьте эти строки в конец блока http {}, затем сохраните файл:

 include /etc/nginx/sites -включено/*.conf;
server_names_hash_bucket_size 64;
 

Отлично! Теперь NGINX может распознавать блок сервера.

Создайте новый файл специально для блока server для сайта yourdomain.com:

 nano /etc/nginx/sites-available/yourdomain.com.conf 

Мы собираемся вставить новый блок сервера NGINX в этот файл:

 server {
 слушать 80;
 имя_сервера вашдомен. com www.вашдомен.com;
 расположение / {
 корень /var/www/yourdomain.com/public_html;
 индекс index.html index.htm;
 try_files $uri $uri/ =404;
 }
 error_page 500 502 503 504 /50x.html;
 местоположение = /50x.html {
 корень html;
 }
}
 

Давайте разберем несколько важных частей блока сервера.

server_name: Это домен, который вы будете использовать для своего сайта. Вместо localhost мы будем использовать общедоступный домен и www-версию домена, который вы хотите использовать, например:

 server_name yourdomain.com www.yourdomain.com; 

корень: Это корневой каталог для файлов сайта.

 корень /var/www/yourdomain.com/public_html; 

try_files: Здесь мы говорим серверу отображать ошибку 404, когда данный файл не найден.

 try_files $uri $uri/ =404; 

Создайте свой серверный блок, используя эти параметры, затем сохраните и закройте файл.

Нам нужно создать символическую ссылку между сайтами-доступными и сайтами-включенными:

 ln -s /etc/nginx/sites-available/yourdomain.