Nginx + php-fpm на CentOS 7
Установка nginx на CentOS 7
Ставим непосредственно web сервер:
Добавляем в автозагрузку:
Проверяем, запустился ли:
Теперь можно зайти на тестовую страничку, чтобы убедиться, что nginx работает:
Не забудьте открыть 80-й порт на фаерволе.
Установка mysql на CentOS 7
Практически ни один web сервер сейчас не обходится без mysql. В centos 7 вместо mysql устанавливается mariadb, которая имеет полную совместимость с mysql, в том числе понимает все ее команды. Так что ставим на сервер:
Добавляем в автозапуск:
Проверяем, запустилась ли mysql:
Теперь воспользуемся скриптом безопасности, который позволит задать пароль root и произвести некоторые настройки:
Установка php-fpm на CentOS 7
Устанавливаем php-fpm и некоторые модули, которые скорее всего пригодятся в дальнейшей работе:
На все вопросы просто жмем enter, выбирая параметры по-умолчанию.
Теперь отредактируем /etc/php.ini как нам рекомендует инсталлятор:
Задаем параметр cgi.fix_pathinfo=0 и добавляем в конце строку extension=apc.so
Заодно установим сразу же часовой пояс: date.timezone = «Europe/Moscow»
Создадим файл настроек APC:
Добавляем php-fpm в автозагрузку:
Настройка nginx и php-fpm на CentOS 7
Теперь отредактируем конфиги для совместной работы. Приводим конфиг nginx к следующему виду:
Более подробно о том, как выполнить базовую настройку nginx читайте в отдельной обширной статье.
Теперь правим конфиг php-fpm, приводим его к следующему виду:
Создаем необходимые каталоги:
Теперь все готово, можно проверять. Создаем в папке /web/sites/site1.ru/www тестовый файл:
Заходим по адресу: http://site1.ru/ и если наблюдаем информацию о php, то все сделано правильно.
Если нет, то идем в логи и смотрим, в чем ошибка.
Установка phpmyadmin на CentOS 7
Для удобства управления базами веб сайтов я всегда использую phpmyadmin. Установим ее:
Копируем файлы панели в наш виртуальный домен, созданный ранее:
Заходим по адресу http://pma.site1.ru/ и проверяем, все ли в порядке.
У меня при первом запуске в браузере открылся просто белый лист. Начал разбираться в чем дело. В логе ошибок nginx этого виртуального хоста увидел ошибку:
*43 FastCGI sent in stderr: «PHP message: PHP Fatal error: Call to undefined function __() in /web/sites/pma.site1.ru/www/libraries/core.lib.php on line 245» while reading response header from upstream, client: 77.47.234.119, server: pma.site1.ru, request: «GET /index.php HTTP/1.1», upstream: «fastcgi://unix:/var/run/php-fpm/php5-fpm.sock:», host: «pma.site1.ru»
Немного погуглил на эту тему и нашел, в чем причина ошибки. Проблема с директорией для файлов сессий. Чтобы исправить ошибку, создаем эту директорию и выставляем на нее нужные права:
После этого загрузилась панель phpmyadmin:
Более подробную информацию об установке и настройке phpmyadmin смотрите в отдельной статье.
На этом все, настройка nginx + php-fpm на CentOS7 закончена.
Онлайн курс Внедрение и работа в DevSecOps
Помогла статья? Подписывайся на telegram канал автора
Автор Zerox
27 комментариев
Добрый день!
Вы тут в пункте «Настройка nginx и php-fpm на CentOS 7» связали nginx и php-fpm но php 5.4
где можно найти связку nginx и php-fpm 7.1?
нашёл ссылку Вашу https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/
там установка nginx и php-fpm 7.1 есть но связки не нашёл(а может только их установка хватит)
Zerox, огромное спасибо за статью!
Сможете подсказать, возможно ли настроить и если возможно, то как это сделать)
Есть сервер mysql на Windows 2012 R2, к нему привязано несколько других сервесов. Необходимо использовать его для работы с Сайтом.
Как это настроить?
Если делать по инструкции, то будет использоваться mariadb, что распологается локально.
Буду признателен, если сможете подсказать и/или направить в нужное русло.
Так ничего делать и не надо. Создайте базу на текущем сервере и подключайтесь к ней удаленно. В больших проектах так чаще всего и бывает, что сервер с базой данных это отдельный сервер.
Запуск нескольких версий PHP на одном сервере с помощью Apache и PHP-FPM в CentOS 7
Веб-сервер Apache использует виртуальные хосты для управления несколькими доменами в рамках одного сервера. Точно так же для управления несколькими версиями PHP в рамках одного сервера PHP-FPM использует специальный демон. Объединив эти возможности Apache и PHP-FPM, вы можете одновременно разместить на одном сервере несколько веб-приложений PHP, каждое из которых будет использовать индивидуальную версию PHP. Это удобно, потому что для разных приложений могут потребоваться разные версии PHP, но часто серверные стеки (например, стандартный LAMP) могут управлять только одной версией. Сочетание Apache с PHP-FPM – экономное решение, ведь вам не придется размещать каждое приложение на отдельном сервере.
PHP-FPM также предлагает параметры для логирования stderr и stdout, аварийных перезапусков и адаптивного запуска процессов, что полезно для сайтов с высоким трафиком. Фактически связка Apache+PHP-FPM – один из лучших стеков для размещения приложений PHP, особенно когда дело касается производительности.
В этом мануале мы покажем, как запустить два сайта PHP на одном сервере. Каждый сайт будет использовать свой собственный домен, каждый домен будет развертывать свою собственную версию PHP. Первый, site1.your_domain, использует PHP 7.0; второй, site2.your_domain, использует PHP 7.2.
Требования
1: Установка PHP 7.0 и PHP 7.2
Выполнив предварительные требования к мануалу, мы можем установить PHP версий 7.0 и 7.2, а также PHP-FPM и несколько дополнительных расширений. Чтобы установить несколько версий PHP на один сервер, необходимо установить и включить репозиторий SCL (Software Collections). Он обеспечивает поддержку многих версий PHP для системы CentOS 7. Если вам нужна новая версия PHP, которой нет в SCL, обратитесь к PPA репозиторию remi.
Вы можете добавить репозиторий SCL в свою систему, используя следующую команду:
Сначала давайте узнаем, какие версии PHP 7 доступны в SCL:
sudo yum list rh-php78.x86_64
Вы увидите примерно такой результат:
Available Packages
rh-php70.x86_64 2.3-1.el7 centos-sclo-rh
rh-php71.x86_64 1-1.el7 centos-sclo-rh
rh-php72.x86_64 1-2.el7 centos-sclo-rh
rh-php73.x86_64 1-1.el7 centos-sclo-rh
Давайте сначала установим версию 7.0. Для этого нам нужны пакеты rh-php70 и rh-php70-php-fpm::
Теперь повторите весь процесс для PHP версии 7.2. Установите rh-php72 and rh-php72-php-fpm.
После установки обеих версий PHP запустите сервисы:
sudo scl enable rh-php70 bash
sudo scl enable rh-php72 bash
По умолчанию обе версии PHP прослушивают порт 9000. Но в этом мануале мы хотим запускать две версии одновременно, поэтому мы должны выбрать два новых порта.
Для этого вы можете открыть /etc/opt/rh/rh-php70/php-fpm.d/www.conf в текстовом редакторе и изменить каждое вхождение 9000 на 9002. Сохраните и закройте файл. Откройте файл /etc/opt/rh/rh-php72/php-fpm.d/www.conf и теперь замените все вхождения порта 9000 на 9003. Для выполнения замен вы также можете использовать эти две команды sed:
Вы присвоили индивидуальный порт для каждой из ваших версий PHP. Однако, прежде чем эти изменения вступят в силу, вы должны добавить порты в конфигурацию SELinux.
SELinux – это сокращение от Security Enhanced Linux, и он включен в CentOS 7по умолчанию. Вы должны добавить свои новые порты 9002 и 9003 в базу данных SELinux и присвоить их сервисам httpd, иначе ваши приложения не будут работать. Используйте команду semanage для выполнения этой задачи:
Теперь вы можете запустить и включить свои сервисы, давайте начнем с rh-php70-php-fpm.
sudo systemctl start rh-php70-php-fpm
sudo systemctl enable rh-php70-php-fpm
Затем проверьте статус сервиса rh-php70-php-fpm с помощью следующей команды:
sudo systemctl status rh-php70-php-fpm
Вы увидите следующий результат:
Повторите этот процесс для версии 7.2; запустите сервис rh-php72-php-fpm и добавьте его в автозагрузку с помощью следующих команд:
sudo systemctl start rh-php72-php-fpm
sudo systemctl enable rh-php72-php-fpm
А затем проверьте состояние сервиса h-php72-php-fpm с помощью следующей команды:
sudo systemctl status rh-php72-php-fpm
Вы увидите следующий результат:
Теперь на вашем сервере есть две версии PHP. После этого мы можем создать структуру каталогов для каждого сайта, который должен обслуживаться этим сервером.
2: Создание структуры каталогов для сайтов
Теперь мы создадим корневые каталоги для каждого сайта, который будет развернут на этом сервере. В нашем мануале мы развернем 2 сайта: site1.your_domain и site2.your_domain. Создавая каталоги, укажите домены ваших сайтов.
sudo mkdir /var/www/site1.your_domain
sudo mkdir /var/www/site2.your_domain
По умолчанию веб-сервер Apache запускается как пользователь и группа apache. Чтобы убедиться, что права собственности и доступа на корневые каталоги сайтов установлены верно, выполните следующие команды:
Команда chown передает права на каталоги сайтов пользователю и группе apache. Команда chmod изменяет права доступа этого пользователя и группы, а также с других пользователей в системе.
Затем внутри каждого корневого каталога мы создадим файл info.php. Позже он поможет нам отобразить информацию о версии PHP для каждого веб-сайта. Начните с site1:
sudo vi /var/www/site1.your_domain/info.php
Добавьте в файл следующую строку:
Сохраните и закройте файл. Теперь скопируйте созданный вами файл info.php для site2:
sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php
Теперь у вас есть корневые каталоги, необходимые каждому сайту для обслуживания данных. Затем мы настроим свой веб-сервер Apache для поддержки двух разных версий PHP.
3: Настройка Apache для поддержки двух сайтов
В этом разделе вы создадите два конфигурационных файла для виртуального хоста. Это позволит двум вашим веб-сайтам одновременно работать в рамках одного сервера с двумя разными версиями PHP.
Чтобы Apache обслуживал этот контент, необходимо создать виртуальный хост с правильными директивами. Создайте два новых файла конфигурации виртуального хоста в каталоге /etc/httpd/conf.d/.
Сначала создайте новый конфигурационный файл хоста для сайта site1.your_domain. Здесь мы настроим Apache для обработки контента с помощью php7.0.
sudo vi /etc/httpd/conf.d/site1.your_domain.conf
Вставьте в файл следующие строки. Убедитесь, что вы указали правильный путь к корневому каталогу, ServerName и версию PHP.
В DocumentRoot укажите путь к корневому каталогу вашего веб-сайта. В ServerAdmin укажите адрес электронной почты для администратора сайта your_domain. В директиве ServerName определяется URL-адрес первого поддомена. В SetHandler нужно задать порт 9002. Остальные директивы настраивают сервис для развертывания php 7.0.
Сохраните и закройте файл.
Затем создайте новый конфигурационный файл виртуального хоста для сайта site2.your_domain. Этот поддомен будет обслуживаться версией php7.2.
sudo vi /etc/httpd/conf.d/site2.your_domain.conf
Добавьте следующий код в файл. Убедитесь, что путь к корневому каталогу, ServerName и версия PHP соответствуют вашей конфигурации.
Сохраните и закройте файл. Затем проверьте конфигурации Apache на наличие синтаксических ошибок с помощью следующей команды:
sudo apachectl configtest
Если ошибок нет, вы увидите вывод:
Теперь можно перезапустить сервис Apache, чтобы изменения вступили в силу:
sudo systemctl restart httpd
Теперь, когда мы настроили Apache для обслуживания каждого сайта, мы должны протестировать их, чтобы убедиться, что все работает правильно.
4: Тестирование настройки
Итак, мы уже настроили два веб-сайта, которые работают на двух разных версиях PHP. Давайте проверим результаты.
Откройте браузер и посетите оба сайта.
Вы увидите две страницы с информацией о PHP. Обратите внимание на заголовки этих страниц. На первой странице указано, что site1.your_domain использует PHP версии 7.0. Вторая страница сообщает, что site2.your_domain развернул PHP версии 7.2.
Теперь, когда вы проверили свои сайты, удалите файлы info.php. Они содержат конфиденциальную информацию о вашем сервере и доступны неавторизованным пользователям – следовательно, они представляют собой уязвимость для системы безопасности. Чтобы удалить оба файла, выполните следующие команды:
Теперь у вас есть сервер CentOS 7, обслуживающий два веб-сайта с двумя разными версиями PHP.
Заключение
В этом мануале вы научились объединять виртуальные хосты и PHP-FPM для обслуживания нескольких веб-сайтов и нескольких версий PHP на одном сервере. Единственное практическое ограничение на количество сайтов PHP и версий PHP, которые может обрабатывать Apache, – это вычислительная мощность вашего экземпляра.
Здесь вы можете изучить более продвинутые функции PHP-FPM, такие как адаптивное порождение процессов или возможности логирования sdtout и stderr. Кроме того, теперь вы можете защитить свои сайты с помощью бесплатных сертификатов TLS/SSL от Let’s Encrypt.
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:
* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.
2. Открываем необходимые порты в брандмауэре:
* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 40900-40999 также необходимы для работы FTP (динамические порты для пассивного режима); 25, 465 и 587 порты нужны для работы почтового сервера по SMTP; последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.
Установка 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
Открываем файл для настройки виртуального домена по умолчанию. В зависимости от версии CentOS 7 пути могут различаться:
В секции location редактируем параметр index на следующее значение:
location / <
index index.php index.html index.htm;
>
* добавляем index.php в начало списка. Если параметра index нет, создаем его.
А внутри секции server добавим следующее:
* где /usr/share/nginx/html — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.
Открываем настройки php-fpm:
Проверяем, настройки параметров:
listen = /run/php-fpm/www.sock
.
listen.group = nginx
* listen должен иметь значение /run/php-fpm/www.sock (путь до сокетного файла, который мы указали в конфигурационном файле nginx); listen.group указывает, какую группу назначить сокетному файлу.
. иначе, меняем значение. После перезагружаем 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:
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
Однако, если мы устанавливали php версии 7 и выше, необходимо указать репозиторий, который мы использовали для этого, например:
* в данном примере предполагается, что мы использовали репозиторий remi-php74.
Это необходимо для корректной установки расширений PHP.
Теперь создадим для него отдельный виртуальный домен в NGINX:
И добавим в него следующее содержимое:
* где 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 должна появиться новая секция:
. или вводим команду:
Мы должны получить:
Установка xCache
xCache не поддерживается в php7. Если мы установили именно эту версию, пропускаем установку данного пакета.
Запускаем установку xCache следующей командой:
yum install php-xcache
systemctl restart php-fpm
В phpinfo должно появиться следующее:
Установка и настройка FTP-сервера
В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей. Для его установки вводим следующую команду:
yum install proftpd proftpd-utils
Создаем каталог для хранения настроек:
Создаем виртуального пользователя:
* где /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
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd
systemctl start proftpd
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS 7.
Apache (httpd)
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
И так, устанавливаем 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:
Разрешаем автозапуск и запускаем службу:
systemctl enable httpd
systemctl start httpd
Создаем php-файл со следующим содержимым:
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080. Мы должны увидеть привычную страницу:
NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
Проверяем и перезапускаем 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:
Переходим в распакованный каталог:
Собираем модуль и устанавливаем его:
Создаем конфигурационный файл со следующим содержимым:
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 уже установлен и запущен. Нам необходимо сделать несколько простых настроек:
* где 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, так как только такие файлы веб-сервер подгружает в конфигурацию.
И добавляем следующее содержимое.
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;
* ^.+\.(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;
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;
* ^.+\.(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
Создаем каталоги для сайта:
Создаем индексный файл со следующим содержимым:
Задаем права на папки:
Проверяем корректность настроек конфигурационных файлов:
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.











