Меню

Centos настройка fastcgi для nginx



Настройка виртуальных хостов Nginx в CentOS 7

Nginx – один из самых популярных веб-серверов в мире. Nginx отвечает за размещение и обслуживание объёмных и производительных сайтов с большой нагрузкой. В большинстве случаев Nginx легче Apache и лучше подаётся масштабированию. Кроме того, Nginx можно использовать как веб-сервер и обратный прокси.

Для управления индивидуальными настройками отдельных сайтов Nginx использует блоки server, которые принято называть виртуальными хостами (как в Apache). Виртуальные хосты позволяют размещать несколько сайтов с разными конфигурациями на одном сервере.

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

Данное руководство поможет настроить блоки server для Nginx на виртуальном выделенном сервере CentOS 7.

Требования

Для выполнения руководства понадобится:

  • Предварительно настроенный сервер CentOS 7.
  • Не-root пользователь с доступом к sudo (информацию о настройке такого пользователя можно найти здесь).

Также нужно заранее установить веб-сервер Nginx. Можно установить полный стек LEMP согласно этому руководству. Чтобы установить только Nginx, используйте yum. Сначала добавьте Nginxв список исходников системы:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Затем при помощи yum загрузите и установите Nginx:

sudo yum install nginx

После завершения установки подключитесь как не-root пользователь при помощи SSH.

Примечание: В данном руководстве будут созданы виртуальные хосты для условных доменов example.com и example2.com. Замените их своими доменными адресами.

Если же у вас ещё нет доменных имён, вы сможете протестировать настройку при помощи фиктивных данных.

1: Структура каталогов

Для начала нужно создать структуру каталогов для хранения данных для сайтов.

Такие каталоги (каталоги верхнего уровня, в которых Nginx ищет запрашиваемый контент) называются document root. В каталоге /var/www нужно создать отдельные подкаталоги для каждого сайта. а в них – подкаталоги html для хранения файлов сайта.

Для создания каталогов используется команда mkdir, а флаг –p позволяет создать каталог с подкаталогом в нём.

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example2.com/html

Примечание: Напоминаем, что условные доменные имена нужно заменять своими доменами.

Права доступа

Теперь структура каталогов для сайтов готова, но все эти каталоги принадлежат пользователю root. Нужно передать права на них текущему пользователю, иначе он не сможет изменять данные. Для этого используйте команду chown:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html

Переменная $USER автоматически задаёт имя текущего пользователя. Теперь текущему пользователю принадлежат подкаталоги public_html, в которых будет храниться контент сайтов.

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

sudo chmod -R 755 /var/www

Теперь сервер имеет необходимые права доступа и может корректно обслуживать контент в соответствующих каталогах.

2: Создание демо-страниц

Теперь нужно создать пару стандартных страниц сайтов, чтобы иметь возможность просмотреть контент.

Для тестирования подойдут и самые простые страницы. Создайте для каждого домена страницу index.html:

Чтобы создать страницу index.html для первого сайта, наберите:

Добавьте в этот файл простой HTML-код:

Success! The example.com server block is working!

Источник

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

Nginx (или Engine X) — это бесплатный, свободный и мощный HTTP- и прокси-сервер с открытым исходным кодом и архитектурой на основе обработки событий. Он написан на языке программирования С и может работать как в Windows, так и в Unix-подобных системах.

Кроме функции веб-сервера, программа может работать в качестве обратного прокси, прокси для 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

Далее надо разрешить трафик для веб-сервера в брандмауэре системы:

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

И перезагрузить брандмауэр:

Если все было сделано правильно, то, открыв адрес сервера, на который вы устанавливали 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 в этой папке для теста веб-сервера с таким текстом:

It words!

Этот файл тоже должен принадлежать пользователю Nginx. Далее в конфигурационном файле /etc/nginx/nginx.conf найдите секцию server и замените значение параметра root на /var/www/html/default:

Теперь Nginx будет брать файлы сайта из этого каталога при всех запросах. Перезапустите Nginx:

systemctl restart nginx

Затем откройте снова адрес сервера в браузере, чтобы посмотреть, работает ли наше расположение файлов. Если всё было сделано правильно, вы увидите сообщение it works:

Если возникает ошибка, убедитесь, что у 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

Откройте конфигурационный файл php-fpm, который находится по адресу /etc/php-fpm.d/www.conf и посмотрите, на каком порту ожидает соединений запущенная служба. По умолчанию это 9000:

Далее нам осталось только связать 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;
>

Здесь очень важно значение этого параметра:

Оно должно соответствовать тому, которое мы видели в файле /etc/php-fpm.d/www.conf. Это адрес и порт на котором ожидает подключения служба php-fpm. Всё остальное можно оставить как есть и модифицировать при необходимости. Затем перезагрузите Nginx:

sudo systemctl reload nginx

Опция reload позволяет перечитать конфигурацию без перезагрузки веб-сервера. Осталось создать тестовый файл с таким содержимым:

Затем откройте адрес сервера на который был установлен Nginx плюс phpinfo.php в браузере:

Теперь вы увидите, что php-fpm nginx настроен полностью и корректно работает.

Обратите внимание, что секция location для php — это регулярное выражение и если у вас будут более общие регулярные выражения, то эта секция должна находиться перед ними, потому что Nginx не будет проверять все регулярные выражения и искать самое подходящее, а выберет первое, которое совпадёт.

Выводы

В этой статье мы разобрали, как установить Nginx CentOS 7, а также как настроить первый веб-сайт и подключить обработку скриптов с помощью интерпретатора php-fpm. В следующих статьях разберёмся с настройкой виртуальных хостов для Nginx и SSL-сертификатов.

Оцените статью:

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.

3 комментария

А зачем php в статье про nginx? мб стоит как то более подробно расписать возможности nginx, например stream проксирование, либо возможность разным сайтам работать под разными пользователями. Подобных этой статей слишком много уже.

почему синтаксис $yum install nginx? ведь должно быть
#yum install nginx
$ sudo yum install nginx
или не прав?

После перезапуска в браузере выдает 403 ошибку, где права не применились?
# ls -l
итого 60
drwxr-xr-x. 2 root root 6 май 10 16:14 conf.d
drwxr-xr-x. 2 root root 6 май 10 16:14 default.d
-rw-r—r—. 1 root root 1077 май 10 16:10 fastcgi.conf
-rw-r—r—. 1 root root 1077 май 10 16:10 fastcgi.conf.default
-rw-r—r—. 1 root root 1007 май 10 16:10 fastcgi_params
-rw-r—r—. 1 root root 1007 май 10 16:10 fastcgi_params.default
-rw-r—r—. 1 root root 2837 май 10 16:10 koi-utf
-rw-r—r—. 1 root root 2223 май 10 16:10 koi-win
-rw-r—r—. 1 root root 3957 май 10 16:10 mime.types
-rw-r—r—. 1 root root 3957 май 10 16:10 mime.types.default
-rw-r—r—. 1 nginx nginx 2467 июл 6 21:31 nginx.conf
-rw-r—r—. 1 root root 2656 май 10 16:10 nginx.conf.default
-rw-r—r—. 1 root root 636 май 10 16:10 scgi_params
-rw-r—r—. 1 root root 636 май 10 16:10 scgi_params.default
-rw-r—r—. 1 root root 664 май 10 16:10 uwsgi_params
-rw-r—r—. 1 root root 664 май 10 16:10 uwsgi_params.default
-rw-r—r—. 1 root root 3610 май 10 16:10 win-utf

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

Источник

NGINX + Apache (httpd) + MariaDB (MySQL) + PHP + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + xCache + Postfix на CentOS 7

Веб-сервер, настроенный по данной инструкции можно будет использовать для размещения собственных сайтов в локальной сети или сети Интернет. Данная инструкция проверена для CentOS 7.

Общая настройка системы

Установка пакетов

1. Обновляем CentOS:

2. Устанавливаем репозиторий EPEL и пакет для загрузки:

yum install epel-release wget

Время

1. Устанавливаем часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* данной командой мы установим часовой пояс по московскому времени.

2. Устанавливаем и запускаем службу для автоматической синхронизации времени:

yum install chrony

systemctl enable chronyd

systemctl start chronyd

Настройка безопасности

1. Отключаем SELinux:

sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config

* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.

2. Открываем необходимые порты в брандмауэре:

firewall-cmd —permanent —add-port=<80,443,8080>/tcp

firewall-cmd —permanent —add-port=<20,21,40900-40999>/tcp

firewall-cmd —permanent —add-port=<25,465,587>/tcp

* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 40900-40999 также необходимы для работы FTP (динамические порты для пассивного режима); 25, 465 и 587 порты нужны для работы почтового сервера по SMTP; последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.

Установка NGINX

yum install nginx

Внесем небольшую корректировку в файл nginx.conf:

http <
.
server_names_hash_bucket_size 64;
.
>

* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.

Разрешаем автозапуск сервиса и запустим его:

systemctl enable nginx

systemctl start nginx

Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:

* обратите внимание, что данное приветствие может иметь и другой вид.

Для настройки http/2 читайте соответствующую статью.

Установка 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 start php-fpm

systemctl enable php-fpm

Настройка связки NGINX + PHP

Открываем файл для настройки виртуального домена по умолчанию:

* в некоторых версиях nginx данного файла может не быть и настройка выполняется в файле /etc/nginx/nginx.conf.

В секции location редактируем параметр index на следующее значение:

Читайте также:  Tony hawk pro skater hd настройки графики

location / <
index index.php index.html index.htm;
>

* добавляем index.php в начало списка. Если параметра index нет, создаем его.

А внутри секции server добавим следующее:

\.php$ <
set $root_path /usr/share/nginx/html;
fastcgi_pass unix:/run/php-fpm/www.sock;
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 — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.

Открываем настройки php-fpm:

Проверяем, что параметр listen настроен так:

. иначе, меняем значение. После перезагружаем php-fpm:

systemctl restart php-fpm

* в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.

Проверяем правильность настроек nginx:

И перезагружаем его:

systemctl restart nginx

Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:

Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:

Установка MariaDB или MySQL

В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.

Устанавливаем MariaDB следующей командой:

yum install mariadb mariadb-server

* для установки mysql выполняем команду yum install mysql

Разрешаем автозапуск и запускаем СУБД:

systemctl enable mariadb

systemctl start mariadb

* для работы с 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

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

И добавим в него следующее содержимое:

server <
listen 80;
server_name phpmyadmin.dmosk.local;
set $root_path /usr/share/phpMyAdmin;

location / <
root $root_path;
index index.php;
>

\.php$ <
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
fastcgi_read_timeout 300;
>
>

* где phpmyadmin.dmosk.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому есть нет возможность зарегистрировать домен и имя узла в DNS, можно воспользоваться локальным файлом hosts. /usr/share/phpMyAdmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.

После перезапускаем NGINX:

systemctl reload nginx

Также нужно перезапустить php-fpm, так как в процессе установки был добавлен модуль mbstring:

systemctl restart php-fpm

И открываем в браузере наш домен, в данном примере, http://phpmyadmin.dmosk.local. Откроется форма для авторизации — вводим логин root и пароль, который мы указали после установки и запуска mariadb.

Установка Memcached

Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.

Сервис memcached

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

yum install memcached

После разрешаем автозапуск и запускаем сервис кэширования:

systemctl enable memcached

systemctl start memcached

Модуль для 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 40900 40999

RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

* где 40900 — 40999 — диапазон динамических портов для пассивного режима.

Разрешаем автозапуск FTP-серверу и запускаем его:

systemctl enable proftpd

systemctl start proftpd

Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.

Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS 7.

Apache (httpd)

Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает только Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.

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

И так, устанавливаем httpd:

yum install httpd

Заходим в настройки:

И редактируем следующее:

* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.

DirectoryIndex index.php index.html

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html

AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted

* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталого разрешен со всех адресов (all granted).

Проверяем синтаксис конфигурационного файла httpd:

Читайте также:  Настройка тп линк 741 для билайна

Разрешаем автозапуск и запускаем службу:

systemctl enable httpd

systemctl start httpd

Создаем php-файл со следующим содержимым:

Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080. Мы должны увидеть привычную страницу:

NGINX + Apache

Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.

Открываем конфигурационный файл nginx:

* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.

Находим наш настроенный location для php-fpm:

\.php$ <
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
>
.

\.php$ <
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>
.

Проверяем и перезапускаем nginx:

systemctl restart nginx

Пробуем открыть в браузере IP-адрес нашего сервера — должна открыться та же страница, что при проверке Apache (с добавлением 8080):

Apache Real IP

Так как все запросы на httpd приходят от NGINX, они воспринимаются как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей.

Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:

yum install httpd-devel gcc unzip

Переходим в каталог /usr/local/src:

Переходим в распакованный каталог:

Собираем модуль и устанавливаем его:

* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой yum install which.

Создаем конфигурационный файл со следующим содержимым:

LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off

systemctl restart httpd

Для проверки настройки открываем на редактирование созданный index-файл для httpd:

И редактируем содержимое на:

Открываем браузер и вводим в адресную строку IP-адрес нашего сервера. Мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу.

Postfix

В CentOS postfix уже установлен и запущен. Нам необходимо сделать несколько простых настроек:

myorigin = $mydomain
smtp_generic_maps = hash:/etc/postfix/generic_map

* где myhostname — имя узла для почтового сервера (его он будет использовать в представлениях другим почтовым серверам); mydomain — домен сервера; myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; smtp_generic_maps указывает на карту с общими правилами пересылки.

Открываем карту пересылки:

* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес no-reply@dmosk.local.

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

systemctl restart postfix

Тюнинг веб-сервера

Открываем на редактирование следующий файл:

И правим следующее:

upload_max_filesize = 256M
post_max_size = 256M
short_open_tag = On
date.timezone = «Europe/Moscow»

Перезапускаем php-fpm и httpd:

systemctl restart php-fpm

systemctl restart httpd

NGINX

Открываем на редактирование следующий файл:

И правим следующее:

И внутри секции http добавляем:

После перезапускаем nginx:

systemctl restart nginx

Postfix

Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:

Создание первого сайта

Задаем переменную, значение которой будет домен сайта:

* где site1 — имя домена. Нам будет намного удобнее копировать и вставлять команды с переменной (не придется править после копипасты).

Создаем новый файл виртуального домена NGINX:

* обязательно на конце должен быть .conf, так как только такие файлы веб-сервер подгружает в конфигурацию.

И добавляем следующее содержимое.

server <
listen 80;
server_name site1.local www.site1.local;
set $root_path /var/www/site1/www;

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;

location / <
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>

* ^.+\.(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 и так далее).
*** обратите внимание на выделения полужирным — здесь нужно подставить свои данные.

server <
listen 80;
server_name site1.local www.site1.local;
return 301 https://$host$request_uri;
>

server <
listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;

server_name site1.local www.site1.local;
set $root_path /var/www/site1/www;

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;

location / <
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>

* ^.+\.(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;
>
>

* в первой секции server мы перенаправляем все запросы по незащищенному http на https.
** ssl_certificate и ssl_certificate_key — пути к публичному и приватному ключам соответственно.
*** для получения бесплатного сертификата читайте статью Получение бесплатного SSL сертификата Let’s Encrypt.

Теперь создаем виртуальный домен в Apache:

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

Создаем каталоги для сайта:

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

systemctl reload httpd

Открываем сайт в браузере.

При необходимости, создаем базу данных.

> CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON site1.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

* данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password. При желании сделать соединение более безопасным, можно убрать WITH GRANT OPTION.

Источник

Adblock
detector