ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как настроить серверные блоки Nginx на Ubuntu и CentOS

Как настроить блоков сервера Nginx на Ubuntu и CentOS

На этом уроке мы собираемся предоставить вам шаг за шагом инструкции о том, как настроить Nginx серверные блоки на Ubuntu 16.04 VPS и на CentOS 7 VPS. Блоки сервера Nginx часто используются для запуска нескольких веб – сайтов на одном IP – адресе.

Обратите внимание, что данное учебное пособие только для Nginx. Если вы используете Apache, то вам необходимо настроить виртуальные хосты.

Установка Nginx на Ubuntu

Убедитесь, что пакеты сервер ОС полностью до современных:

apt-get update 
apt-get upgrade

Остановите и удалите Apache, а затем установите Nginx с помощью следующих команд:

service apache2 stop
apt-get remove apache2
apt-get autoremove
apt-get install nginx

Удалите файл конфигурации Nginx по умолчанию:

rm /etc/nginx/sites-enabled/default

Включите службу Nginx для запуска при загрузке системы и запустите ее:

systemctl enable nginx
systemctl start nginx.service

Установка Nginx на CentOS

Убедитесь, что все пакеты ОС находятся в актуальном состоянии, выполнив следующие команды:

yum clean all
yum update

Остановите и удалите Apache, если он установлен и запущен на виртуальном сервере:

systemctl stop httpd
systemctl disable httpd
yum remove httpd

Установка Nginx:

yum install nginx

Кроме того, вы можете установить PHP и MariaDB, поэтому выполните следующую команду:

yum install nginx mariadb mariadb-server php php-fpm php-cli php-curl php-gd php-mbstring php-mysql php-xml

Отредактируйте файл конфигурации /etc/php-fpm.d/www.conf и внесите изменения:

до

user = apache
group = apache

после

user = www-data
group = www-data

Выполните следующую команду:

chown www-data: -R /var/lib/php/session

Запустите службы PHP-FPM, Nginx и MariaDB и добавьте их в загрузку:

systemctl start php-fpm
systemctl start nginx
systemctl start mariadb
systemctl enable php-fpm
systemctl enable nginx
systemctl enable mariadb

Настройка Nginx и настройка блоков сервера Nginx

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

vi /etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

user – пользователь, который будет владеть и запустит сервер Nginx.

worker_processes – в общем, лучше установить конфигурацию Nginx worker_processes с числом процессоров. Если, например, если на сервере установлено 2 процессора, установите worker_processes равное 2.

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

#cat /proc/cpuinfo | grep processor | wc -l

4

pid – место, где Nginx будет писать свой идентификатор мастера-процесса или PID.

Если вы используете CentOS, создайте новый конфигурационный файл Nginx для вашего сайта:

vi /etc/nginx/conf.d/domain1.ru.conf

Добавьте следующее содержимое:

server {
    server_name www.domain1.ru domain1.ru;
    listen 80;
    root /var/www/html/domain1.ru;
    access_log /var/log/nginx/domain1.ru-access.log;
    error_log /var/log/nginx/domain1.ru-error.log;
    index index.php;
 
    location / {
        try_files  $uri $uri/ /index.php?$args;
    }

    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
        access_log off;
        expires max;
    }

    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

}

Если вам необходимо разместить более одного сайта на том же сервере (используя один и тот же IP-адрес), вы можете создать новый блок сервера. Лучше всего создать новый файл конфигурации для каждого веб-сайта.

Например, создайте второй файл конфигурации Nginx с именем /etc/nginx/conf.d/domain2.ru.conf и добавьте такое же содержание, как в файле /etc/nginx/conf.d/domain1.ru.conf, но убедитесь, что заменили domain1.ru вторым именем домена, включая корневой каталог документов вашего веб-сайта, расположение файлов журналов и т.д.:

server {
    server_name www.domain2.ru domain2.ru;
    listen 80;
    root /var/www/html/domain2.ru;
    access_log /var/log/nginx/domain2.ru-access.log;
    error_log /var/log/nginx/domain2.ru-error.log;
    index index.php;
 
    location / {
        try_files  $uri $uri/ /index.php?$args;
    }

    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
        access_log off;
        expires max;
    }

    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

}

Если вы используете ОС Ubuntu, создайте файл конфигурации Nginx с именем domain1.ru.conf  в каталоге /etc/nginx/sites-available.

vi /etc/nginx/sites-enabled/domain1.ru.conf

(Добавить такое же содержание, что и содержание перечисленных выше, т.е. /etc/nginx/conf.d/domain1.ru.conf на сервере CentOS).

Затем создать символическую ссылку из этого файла в каталог сайтов с поддержкой:

ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/

Повторите ту же процедуру и создайте новые файлы конфигурации для всех других сайтов, размещенных на сервере.

Проверьте конфигурацию Nginx

nginx -t

Если испытание прошло успешно, перезапустить службу Nginx:

systemctl restart nginx

Загрузка файлов в каталоги сайта /var/www/html/domain1.ru, /var/www/html/domain2.ru /var/www/html/domainN.ru.

Пользователь веб-сервер (www-data) должен иметь доступ к каталогам /var/www/html/domain1.ru, /var/www/html/domain2.ru, /var/www/html/domainN.ru. Это может быть легко достигнуто путем выполнения следующей команды:

chown -R www-data:www-data /var/www/html/

 

Exit mobile version