Продолжение статьи об установке MariaDB + Nginx + PHP-FPM на сервер под управлением CentOS 7. Предыдущие части: Часть 1, Часть 2, Часть 3, Часть 4.
Вся указанная в заголовке статей связка теперь установлена. Осталось сделать несколько доводок до рабочего состояния и проверить работу всего комплекса в целом. В качестве скриптов я не буду использовать какие либо CMS, ограничусь самым простейшим phpinfo(), дабы убедиться в правильности работы.
Содержание:
- Проверка текущей версии CentOS
- Установка FTP сервера (vsFTPd)
- Создание пользователя с правами root
- Настройка строки приглашения
- Установка MariaDB (MySQL)
- Настройка MariaDB
- Установка PHP
- Настройка PHP-FPM
- Установка NGINX
- Ключ на старт...
- Послесловие
10. Ключ на старт...
Для работы общего сервиса, как я и говорил в предыдущей статье, мы указали пользователя и группу, которых еще нет в системе. Поэтому мы должны создать такого пользователя и группу. К тому же, для данной учетной записи не требуется авторизация, так это не пользователь.
[23:37 ebabenko@centos7 ~]$ sudo groupadd www -g 80 [23:37 ebabenko@centos7 ~]$ sudo useradd www -d /var/www -u 80 -g 80 -s /sbin/nologin
Проверяем созданные записи.
[23:37 ebabenko@centos7 ~]$ cat /etc/group | grep www www:x:80: [23:38 ebabenko@centos7 ~]$ cat /etc/passwd | grep www www:x:80:80::/var/www:/sbin/nologin
Создаем индексный файл, предварительно проверив и/или создав рабочую директорию.
[23:40 ebabenko@centos7 ~]$ sudo mkdir -p /var/www/html [23:41 ebabenko@centos7 ~]$ sudo vi /var/www/html/index.php
Прописываем в нем следующее содержимое.
<h4>This is the public site</h4> <?php phpinfo(); ?>
Теперь осталось указать, что все файлы и директории принадлежат новому пользователю и новой группе.
[23:41 ebabenko@centos7 ~]$ cd /var [23:43 ebabenko@centos7 /var]$ sudo chown -R www:www www
С общим сервисом работы закончились. Переходим к пользовательской директории.
[23:44 ebabenko@centos7 /var]$ cd /home/ebabenko [23:44 ebabenko@centos7 ~]$ mkdir -p public_html [23:44 ebabenko@centos7 ~]$ vi public_html/index.php
Так же создаем индексный файл. Только здесь дополнительно я ещё прописал подключение к установленной MariaDB для проверки, что все работает верно.
<h4>This is the private site</h4> <?php $mi = new mysqli('localhost', 'root', 'root', 'mysql'); printf("Server version: <b>%s</b><br/>\n", $mi->server_info); var_export($mi->get_charset()); $mi->close(); phpinfo(); ?>
Все готово. Запускаем сервисы и прописываем их в автозагрузку.
[23:46 ebabenko@centos7 ~]$ systemctl list-unit-files | grep php php-fpm.service disabled [23:46 ebabenko@centos7 ~]$ systemctl list-unit-files | grep nginx nginx.service disabled [23:46 ebabenko@centos7 ~]$ sudo systemctl start php-fpm.service [23:50 ebabenko@centos7 ~]$ sudo systemctl start nginx.service [23:50 ebabenko@centos7 ~]$ sudo systemctl enable php-fpm.service ln -s '/usr/lib/systemd/system/php-fpm.service' '/etc/systemd/system/multi-user.target.wants/php-fpm.service' [23:50 ebabenko@centos7 ~]$ sudo systemctl enable nginx.service ln -s '/usr/lib/systemd/system/nginx.service' '/etc/systemd/system/multi-user.target.wants/nginx.service'
Чтобы вы смогли получить ответ по указанным адресам в конфигурациях серверов NGINX, вам потребуется изменить файл hosts на локальной машине, с которой вы будете открывать страницы (не на сервере). Содержание следующее:
192.168.0.123 nginx.local 192.168.0.123 www.local 192.168.0.123 ebabenko.local
где:
- 192.168.0.123 - это IP-адрес сервера CentOS, который вы конфигурировали.
- nginx.local www.local ebabenko.local - имена доменов серверов NGINX.
Что ж, проверяем. Открываем для начала сайт со статическими страницами NGINX. Набираем в адресной строке браузера http://nginx.local и... обламываемся, потому что соединения к серверу блочит фаервол на стороне CentOS. Я не буду сейчас заморачиваться в настройке фаервола, да и параноей не болею. Поэтому, исправляю ситуацию "топорно". Кому интересно поиграться с найтроками, ваше личное право.
Для того, чтобы фаервол сервера не блокировал подключения, отключаем его.
[00:07 ebabenko@centos7 ~]$ systemctl list-unit-files | grep iptable [00:07 ebabenko@centos7 ~]$ systemctl list-unit-files | grep firewall firewalld.service enabled [00:07 ebabenko@centos7 ~]$ sudo systemctl stop firewalld.service [00:08 ebabenko@centos7 ~]$ sudo systemctl disable firewalld.service rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service'
Теперь можно приступать к тестированию.
Общий сервис уже выдаст информацию PHP.
Пользовательский сервис помимо информации PHP еще выдаст информацию о сервере БД и установленным в ней кодировкам.
Так же проверяем, что каждый из сервисов пишет в лог свои действия.
[00:09 ebabenko@centos7 ~]$ ps ax | grep php 4684 ? Ss 0:00 php-fpm: master process (/etc/php-fpm.conf) 5173 pts/0 S+ 0:00 grep --color=auto php [00:13 ebabenko@centos7 ~]$ ps ax | grep nginx 4692 ? Ss 0:00 nginx: master process /usr/sbin/nginx 4693 ? S 0:00 nginx: worker process 4694 ? S 0:00 nginx: worker process 5175 pts/0 S+ 0:00 grep --color=auto nginx [00:13 ebabenko@centos7 ~]$ ll /var/log/php-fpm ls: cannot open directory /var/log/php-fpm: Permission denied [00:13 ebabenko@centos7 ~]$ sudo ls -la /var/log/php-fpm total 16 drwxrwx---. 2 apache root 76 Jul 1 23:50 . drwxr-xr-x. 9 root root 4096 Jul 1 22:40 .. -rw-------. 1 root root 318 Jul 2 00:11 access.ebabenko.log -rw-------. 1 root root 280 Jul 2 00:10 access.www.log -rw-------. 1 root root 186 Jul 1 23:50 error.master.log [00:14 ebabenko@centos7 ~]$ sudo ls -la /var/log/nginx total 32 drwx------. 2 nginx nginx 4096 Jul 1 23:50 . drwxr-xr-x. 9 root root 4096 Jul 1 22:40 .. -rw-r--r--. 1 root root 864 Jul 2 00:09 access.default.log -rw-r--r--. 1 root root 493 Jul 2 00:11 access.ebabenko.log -rw-r--r--. 1 root root 0 Jul 1 23:50 access.master.log -rw-r--r--. 1 root root 493 Jul 2 00:10 access.www.log -rw-r--r--. 1 root root 426 Jul 2 00:09 error.default.log -rw-r--r--. 1 root root 1314 Jul 2 00:11 error.ebabenko.log -rw-r--r--. 1 root root 0 Jul 1 23:50 error.log -rw-r--r--. 1 root root 0 Jul 1 23:50 error.master.log -rw-r--r--. 1 root root 1174 Jul 2 00:10 error.www.log
Так-с, а откуда ошибки уже взялись?
[00:14 ebabenko@centos7 ~]$ sudo cat /var/log/nginx/error.default.log 2015/07/02 00:09:45 [error] 4693#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.1.250, server: _, request: "GET /favicon.ico HTTP/1.1", host: "nginx.local" 2015/07/02 00:09:45 [error] 4693#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.1.250, server: _, request: "GET /favicon.ico HTTP/1.1", host: "nginx.local"
Понятно. "Фав-иконок" не хватает, но это уже не беда. С остальными логами то же самое.
11. Послесловие
На этом можно было и закончить описание. Тем не менее, считаю нужным вкратце объяснить как пользоваться такой структурой.
Для создания нового сервиса требуется:
- Создать нового пользователя, если требуется. Если сервис будет запускаться в рамках уже существующего пользователя, то понятное дело, создавать еще одного такого же пользователя не нужно.
- Создать базу данных в рамках учетной записи, если для нового сервиса она требуется. Как это сделать я писал в предыдущих статьях, в данной статье я не рассматривал этот момент.
- Создать директорию, где будут располагаться файлы сервиса. Перенести в эту директорию файлы сайта и проверить все ли файлы и директории принадлежат этому пользователю и группе. После произвести все нужные настройки сайта (конфигурация, подключение к БД и прочее).
- В директории /etc/php-fpm.d/pool-available скопировать конфигурацию пула из любого имеющегося, более подходящему по содержимому для нового пула и сделать в нём соответствующие изменения. Создать симлинк на созданный пул в директории /etc/php-fpm.d/pool-enabled.
- В директории /etc/nginx/sites-available скопировать конфигурацию сервера из любого имеющегося, более подходящему по содержимому для нового сервера. Если новый сервис запускается в рамках уже существующего пользователя, лучше выбрать ту конфигурацию, которая у него уже существует и потом уже дополнить или изменить содержимое до нужной конфигурации. После этого создать симлинк на созданную конфигурацию в директории /etc/nginx/sites-enabled.
- Перезапускаем сервисы: сначала PHP-FPM, потом NGINX.
[00:31 ebabenko@centos7 ~]$ sudo systemctl restart php-fpm.service [00:31 ebabenko@centos7 ~]$ sudo systemctl restart nginx.service
Отключение определенного сервиса делается проще:
- Из директории /etc/php-fpm.d/pool-enabled, удаляем симлинк пула, который требуется отключить.
- Из директории /etc/nginx/sites-enabled, удаляем симлинк того сервера, который требуется отключить.
- Перезапускаем сервисы в обратном порядке: сначала перезапускается NGINX, после него перезапускается PHP-FPM
[00:31 ebabenko@centos7 ~]$ sudo systemctl restart nginx.service [00:31 ebabenko@centos7 ~]$ sudo systemctl restart php-fpm.service
На этом все. Если заметили недочеты по статьям, пишите в комментариях.
При использовании всего или части содержимого, не забывайте указывать ссылку на источник, то есть на мой блог.
Комментариев нет :
Отправить комментарий