Установка Apache on a CentOS 7 /RHEL 7 сервер
Для установки веб сервера используем команду
Shell
yum install httpd
1 | yum install httpd |
Включите службу HTTPd в автозагрузки
Shell
systemctl enable httpd.service
1 | systemctl enable httpd.service |
Shell
ln -s ‘/usr/lib/systemd/system/httpd.service’ ‘/etc/systemd/system/multi-user.target.wants/httpd.service’
1 | ln-s’/usr/lib/systemd/system/httpd.service»/etc/systemd/system/multi-user.target.wants/httpd.service’ |
Чтобы отключить, автоматическую загрузку
Shell
systemctl disable httpd.service
1 | systemctl disable httpd.service |
Shell
rm ‘/etc/systemd/system/multi-user.target.wants/httpd.service’
1 | rm’/etc/systemd/system/multi-user.target.wants/httpd.service’ |
Запустите HTTPd службу на CentOS 7 / RHEL 7
Shell
systemctl start httpd.service
1 | systemctl start httpd.service |
На данном этапе вы можете указать в веб-браузере IP-адрес вашего сервера, http://10.180.10.10. Вы увидите стартовую страницу apache:
Shell
systemctl stop httpd.service
1 | systemctl stop httpd.service |
Shell
systemctl restart httpd.service
1 | systemctl restart httpd.service |
Просмотр статуса apache службы на CentOS 7 / RHEL 7
Убедитесь что веб сервер запущен
Shell
systemctl status httpd.service
1 | systemctl status httpd.service |
Также перезапуск веб сервера может быть выполнен следующей командой
Shell
apachectl graceful
1 | apachectl graceful |
Проверка apache / httpd на наличие ошибок конфигурации в Centos 7/ RHEL 7
Shell
apachectl configtest
1 | apachectl configtest |
Конфигурация по умолчанию HTTPD сервера:
- По умолчанию конфигурационный файл: /etc/httpd/conf/httpd.conf
- Файлы конфигурации, загружаемых модулей: /etc/httpd/conf.modules.d/ (например, PHP)
- Выберите MPMs как загружаемые модули и события: / etc/httpd/conf.modules.d/00-mpm.conf
- Стандартные порты: 80 и 443 (SSL)
- Файлы журналов по умолчанию: /var/log/httpd/{access_log,error_log}
7 phpMyAdmin installation
phpMyAdmin is a web interface through which you can manage your MySQL databases.
phpMyAdmin can now be installed as follows:
yum -y install phpMyAdmin
Now we configure phpMyAdmin. We change the Apache configuration so that phpMyAdmin allows connections not just from localhost (by commenting out the <RequireAny> stanza and adding the ‘Require all granted’ line):
nano /etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 # <RequireAny> # Require ip 127.0.0.1 # Require ip ::1 # </RequireAny> Require all granted </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> <Directory /usr/share/phpMyAdmin/> Options none AllowOverride Limit Require all granted </Directory>
Next, we change the authentication in phpMyAdmin from cookie to http:
nano /etc/phpMyAdmin/config.inc.php
$cfg = 'http'; // Authentication method (config, http or cookie based)?
Restart Apache:
systemctl restart httpd.service
Afterwards, you can access phpMyAdmin under :
Установка php-fpm 7.1
Установка и настройка 7-й версии php на centos не очень простая задача. Ранее я уже рассказывал как обновить php до 7-й версии, но в итоге откатился назад. Прошло прилично времени и откатываться уже не будем, так как большинство проблем исправлены.
Вторая проблема в том, что надо определить, какой репозиторий использовать для установки php7. Их существует очень много. К примеру, мой хороший знакомый в своей статье по настройке web сервера использует репозиторий Webtatic. В принципе, чтобы просто поставить php 7-й версии это нормальный вариант. Но если вы после этого захотите установить phpmyadmin через yum уже ничего не получится. Будет ошибка зависимостей, которые нужно будет как-то руками разбирать.
То же самое будет и с другими пакетами. К примеру, zabbix без плясок с бубнами скорее всего не встанет. В сторонних репозиториях есть еще одна проблема. Иногда они закрываются. И это станет для вас большой проблемой на боевом сервере. Так что к выбору репозитория нужно подходить очень аккуратно и внимательно. Я до сих пор иногда встречаю настроенные сервера centos 5 с очень популярным в прошлом репозиторием centos.alt.ru, который закрылся. Сейчас это уже не так актуально, так как таких серверов осталось мало, но некоторое время назад мне это доставляло серьезные неудобства.
Для установки свежей версии php я буду использовать репозиторий Remi. Это известный и популярный репозиторий, который ведет сотрудник RedHat. И хотя надежность репозитория, который ведет один человек не так высока, но ничего лучше и надежнее remi лично я не нашел для своих целей. Если вы можете что-то посоветовать на этот счет — комментарии в вашем распоряжении. Буду благодарен за дельный совет.
Подключаем remi репозиторий для centos 7.
# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Я получил ошибку:
Retrieving http://rpms.remirepo.net/enterprise/remi-release-7.rpm warning: /var/tmp/rpm-tmp.nwcDV1: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY error: Failed dependencies: epel-release = 7 is needed by remi-release-7.3-2.el7.remi.noarch
Тут все понятно, нужен репозиторий epel. Те, кто готовили сервер по моей статье по базовой настройке сервера его уже подключили, а те кто не делали этого, подключают сейчас:
# yum install epel-release
После этого повторяем установку remi, все должно пройти нормально. Проверим список подключенных репозиториев.
# yum repolist
У меня такая картинка получилась.
Активируем репу remi-php71, для этого выполняем команду:
# yum-config-manager --enable remi-php71
Если получаете ошибку:
bash: yum-config-manager: command not found
то установите пакет yum-utils.
# yum install yum-utils
Теперь устанавливаем php7.1.
# yum install php71
Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
Запускаем php-fpm и добавляем в автозагрузку.
# systemctl start php-fpm # systemctl enable php-fpm
Проверяем, запустился ли он.
# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9084/php-fpm: maste
Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:
;listen = 127.0.0.1:9000
Вместо нее добавляем несколько других:
listen = /var/run/php-fpm/php-fpm.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx
Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx.
user = nginx group = nginx
Перезапускаем php-fpm.
# systemctl restart php-fpm
Проверяем, стартовал ли указанный сокет.
# ll /var/run/php-fpm/php-fpm.sock srw-rw----. 1 nginx nginx 0 Oct 26 18:08 /var/run/php-fpm/php-fpm.sock
На текущий момент с настройкой php-fpm закончили, двигаемся дальше.
Для того, чтобы проверить работу нашего веб сервера, нужно установить ssl сертификаты. Без них nginx с текущим конфигом не запустится. Исправляем это.
Настройка виртуальных хостов
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/.
Создадим директории для хранения файлов сайтов
# mkdir /var/www/html/{ws35.local,test.ws35.local}
После этого создадим в них файл index.html
# touch /var/www/html/{ws35.local,test.ws35.local}/index.html
Теперь откроем файл для сайта ws35.local
# vi /var/www/html/ws35.local/index.html
и впишем в него:
<html> <body> <h1>ws35.local works!</h1> </body> </html>
также и для test.ws35.local
# vi /var/www/html/test.ws35.local/index.html
<html> <body> <h1>test.ws35.local works!</h1> </body> </html>
Затем создадим файлы конфигураций виртуальных хостов в директории /etc/httpd/conf.d/
# cd /etc/httpd/conf.d/ # touch ws35.local.conf ws35.local.ssl.conf test.ws35.local.conf test.ws35.local.ssl.conf
Теперь откроем файл для сайта ws35.local
# vi ws35.local.conf
и впишем в него:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/ws35.local/" ServerName www.ws35.local ServerAlias ws35.local ErrorLog "/var/log/httpd/ws35.local-error_log" CustomLog "/var/log/httpd/ws35.local-access_log" combined <Directory "/var/www/html/ws35.local/"> DirectoryIndex index.html index.php Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
затем SSL для него же:
# vi ws35.local.ssl.conf
<VirtualHost *:443> DocumentRoot "/var/www/html/ws35.local/" ServerName www.ws35.local ServerAlias ws35.local ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLHonorCipherOrder on SSLCipherSuite PROFILE=SYSTEM SSLProxyCipherSuite PROFILE=SYSTEM SSLCertificateFile /etc/pki/tls/certs/ws35.local.ssl.crt SSLCertificateKeyFile /etc/pki/tls/private/ws35.local.ssl.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE " \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
а также для test.ws35.local
# vi test.ws35.local.conf
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/test.ws35.local/" ServerName test.ws35.local ServerAlias test.ws35.local ErrorLog "/var/log/httpd/test.ws35.local-error_log" CustomLog "/var/log/httpd/test.ws35.local-access_log" combined <Directory "/var/www/html/test.ws35.local/"> DirectoryIndex index.html index.php Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
# vi test.ws35.local.ssl.conf
<VirtualHost *:443> DocumentRoot "/var/www/html/test.ws35.local/" ServerName test.ws35.local ServerAlias test.ws35.local ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLHonorCipherOrder on SSLCipherSuite PROFILE=SYSTEM SSLProxyCipherSuite PROFILE=SYSTEM SSLCertificateFile /etc/pki/tls/certs/ws35.local.ssl.crt SSLCertificateKeyFile /etc/pki/tls/private/ws35.local.ssl.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE " \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
После этого скопируем файлы для предварительных SSL-сертификатов, иначе служба httpd выдаст ошибку при следующем запуске
# cp /etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/ws35.local.ssl.crt # cp /etc/pki/tls/private/localhost.key /etc/pki/tls/private/ws35.local.ssl.key
и перезапускаем httpd
# systemctl restart httpd
Проверяем:
http://ws35.local
https://ws35.local
http://test.ws35.local
https://test.ws35.local
Устанавливаем MySQL или MariaDB.
В связи с тем, что MariaDB набирает все большую популярность за свои выдающиеся характеристики и полную совместимость с mysql приложениями, рассмотрим оба варианта:
-
Ставим MySQL
#
yum-yinstall mysql mysql-serverПрописываем MySQL в автозапуск:
CentOS 6: #
chkconfig mysqld on
CentOS 7: #
systemctl enable mysqldЗапускаем MySQL:
CentOS 6: #
service mysqld start
CentOS 7: #
systemctl start mysqldУстанавливаем root пароль MySQL:
#
mysqladmin-uroot password’new-password’
Где new-password — ваш новый root пароль для MySQL. -
Или ставим MariaDB
#
yum install-ymariadb-server mariadbПрописываем MariaDB в автозапуск:
CentOS 6: #
chkconfig mysql on
CentOS 7: #
systemctl enable mysqlЗапускаем MariaDB:
CentOS 6: #
service mysql start
CentOS 7: #
systemctl start mysqlЗатем нужно запустить простой скрипт безопасной установки, который удалит некоторые опасные настройки по умолчанию и усложнит доступ к системе базы данных. Запустите интерактивный скрипт:
#
mysql_secure_installation
Система спросит текущий root-пароль. Но поскольку система MySQL только что установлена, такого пароля пока что нет, потому просто нажмите enter. Затем вас спросят, хотите ли вы установит пароль, введите Y и следуйте инструкциям.
На все остальные вопросы просто нажмите enter.
Подключаем и проверяем
Устанавливаем модуль php для работы с БД
#
yum-yinstall php-mysql
Проверяем MySQL (или MariaDB):
Создаём и редактируем проверочный фаил mysqltest.php
#
mcedit/var/www/html/mysqltest.php
Копируем в него следующий код:
PHP
<?php
ini_set(‘display_errors’, 1); //включаем вывод ошибок на страницу
$dblocation = «localhost»; //хост бд (не меняем)
$dbname = «mysql»; //база данных, которая создается по умолчанию при установке
$dbuser = «root»; //имя пользователя БД
$dbpasswd = «ваш пароль»; //Ваш root пароль от БД
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx){
echo «<p>К сожалению, не доступен сервер mySQL</p>»;
exit();
}
if (!@mysql_select_db($dbname,$dbcnx)){
echo «<p>К сожалению, не доступна база данных</p>»;
exit();
}
$ver = mysql_query(«SELECT VERSION()»);
if(!$ver){
echo «<p>Ошибка в запросе</p>»;
exit();
}
echo mysql_result($ver, 0);
?>
1 |
<?php ini_set(‘display_errors’,1);//включаем вывод ошибок на страницу $dblocation=»localhost»;//хост бд (не меняем) $dbname=»mysql»;//база данных, которая создается по умолчанию при установке $dbuser=»root»;//имя пользователя БД $dbpasswd=»ваш пароль»;//Ваш root пароль от БД $dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd); if(!$dbcnx){ echo»<p>К сожалению, не доступен сервер mySQL</p>»; exit(); } if(!@mysql_select_db($dbname,$dbcnx)){ echo»<p>К сожалению, не доступна база данных</p>»; exit(); } $ver=mysql_query(«SELECT VERSION()»); if(!$ver){ echo»<p>Ошибка в запросе</p>»; exit(); } echomysql_result($ver,); ?> |
Сохраняем. Проверяем:
http://IP-адрес_сервера/mysqltest.php (после успешной проверки скрипт желательно удалить)
Если вывелась версия MySQL сервера, то продолжаем.
Доступ в web интерфейс Freepbx
Переходим в браузере по ip адресу или доменному имени сервера и создаем учетную запись администратора Freepbx. При первом заходе в 14-ю версию я увидел ошибку.
Текст ошибки.
YAML
Whoops \ Exception \ ErrorException (E_DEPRECATED)
Methods with the same name as their class will not be constructors in a future version of PHP; gui_hidden has a deprecated constructor in /var/www/html/admin/libraries/components.class.php on line 571
1 |
Whoops\Exception\ErrorException(E_DEPRECATED) MethodswiththesamenameastheirclasswillnotbeconstructorsinafutureversionofPHP;gui_hiddenhasadeprecatedconstructorin/var/www/html/admin/libraries/components.class.phponline571 |
Насколько я понял, это сообщение о том, что используется какая-то конструкция, которая объявлена Deprecated и скоро не будет работать. Что с этим делать сейчас, я не понял. Нашел баг репорт с этой ошибкой — https://issues.freepbx.org/browse/FREEPBX-19941 Он почему-то отклонен, помещен как дублирующий, но найти эту же ошибку в трекере я не смог.
Если взять версию php 5.6, то там этой ошибки не будет. Freepbx 14 официально поддерживает только 5.6, но откатываться на нее совсем не хочется.
Я решил просто отключить обработчик ошибок bootstrap. Для этого открываем конфиг freepbx и добавляем туда новое значение.
YAML
# mcedit /etc/freepbx.conf
1 | # mcedit /etc/freepbx.conf |
YAML
$bootstrap_settings = false;
1 | $bootstrap_settings=false; |
Заходим в web интерфейс freepbx еще раз и создаем администратора.
Потом, используя созданную учетку, логинимся в панель и указываем начальные настройки. Рекомендую выбрать английский язык. Как я уже говорил, перевод на русский так себе, с ним иногда бывает сложно понять суть настроек.
После этого оказываетесь в веб панели Freepbx. Нажмите сверху на Dashboard и увидите сводную информацию по системе. Теперь можно начинать ее настройку
Step 3 — Installing PHP
You have Apache installed to serve your content and MariaDB to store and manage your data. PHP will process code to display dynamic content to the user. In addition to the package, you’ll need , a PHP module that allows PHP to communicate with MySQL-based databases. Core PHP packages will automatically be installed as dependencies.
Use this command to install the and packages with :
Restart the Apache web server to enable the PHP module you installed:
Your server is now configured with all the components necessary for your LAMP stack application. The next step is to test your configuration to ensure that everything is working harmoniously.
Настройка MySQL
После завершения установки запускается MySQL Server Instance Configuration Wizard (его можно запустить вручную из Компьютер → Program Files → MySQL → MySQL Server 5.5 → bin → MySQLInstanceConfig.exe). Нажимаем Next:
Далее выбираем пункт Detailed Configuration (расширенная настройка):
Выбираем сценарий установки: Developer Machine — для установки на домашний компьютер (наш выбор), Server Machine — для установки на сервер, Dedicated MySQL Server Machine — для установки на сервер полностью выделенный под MySQL. Эти опции влияют в первую очередь на объем потребляемой MySQL памяти:
MySQL поддерживает два основных типа БД (InnoDB — с поддержкой транзакций и MyISAM — без транзакций). Multifunctional Database — будет установлена поддержка БД обоих типов (наш выбор). Transactional Database Only — будет установлена поддержка только InnoDB. Non-Transactional Database Only — будет установлена поддержка только MyISAM.
Если на предыдущем этапе была выбрана поддержка InnoDB, здесь можно настроить расположение файлов данных InnoDB:
Поддержка одновременных соединений. Decision Support — до 20 одновременных соединений (наш выбор). Online Transaction Processing — до 500 соединений. Manual Setting — ручная установка количества соединений.
Отмечаем опции «Enable TCP/IP Networking» и «Enable Strict Mode». Port Number оставляем без изменений — 3306. Если к серверу планируются прямые подключения с других компьютеров, отмечаем опцию «Add firewall exception for this port» (открыть порт в брандмауэре windows).
Выбираем кодировку по умолчанию. Сейчас самый разумный выбор — это UTF-8. Выбираем опцию Best Support For Multilingualism:
Обязательно отмечаем опцию «Install As Windows Service» (запускать как службу Windows). Отмечаем «Launch the MySQL Server automatically», если нужен автозапуск службы.
Завершающий этап. Установка пароля администратора (root). Этот пароль лучше не терять! Опции «Enable root access from remote machines» и «Create An Anonymous Account» отмечать не рекомендуется, т.к. они снижают безопасность.
Далее нажимаем Next и Execute. На этом базовая настройка завершена.
Примечание: если вы до этого устанавливали MySQL, а потом удалили или переустановили, то на последнем этапе будет возникать ошибка 1045 (Connection Error). Чтобы этого не было, придется удалить MySQL, затем удалить скрытую папку MySQL находящуюся в C:\ProgramData (в этой папке находятся файлы информации о данных пользователя). После этого повторите процедуру установки и настройки.
Теперь осталось проверить успешно ли прошла установка. Открываем Пуск → Все программы → MySQL → MySql Server 5.5 → MySQL 5.5 Command Line Client (утилита для работы с MySQL в командной строке).
Далее вводим пароль администратора (root). Если пароль правильный, вы попадете в командную строку ( mysql> ). Введите команду: show databases; (точка с запятой на конце обязательны). В результате вы должны увидеть список баз данных (как минимум две — information_schema и mysql). Это означает, что сервер работает правильно. Закрываем командную строку выполнив команду exit.
Step 3 – Install PHP
The Remi repository contains the latest PHP packages for the CentOS 8 Linux system. So first of all, you need to add the REMI repository to your system. Just execute the following command to add the repository.
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Then enable the required DNF module for PHP installation. Here we are enabling the module for installing PHP 7.4. You can change this to PHP 7.3 or PHP 7.2 as per your requirements.
sudo dnf module reset php sudo dnf module enable php:remi-7.4
Once the repository is enabled on your system. Install PHP packages along with required PHP modules.
sudo dnf install php php-mysqlnd
You many also need to install other required php modules as per your application requirements. The below command will install few frequently used php modules:
dnf install php-gd php-zip php-mcrypt php-json php-xml php-gettext php-curl php-intl
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Настройка файрвола UFW
Файрвол UFW (брэндмауэр) это функциональный и в то же время очень простой в настройке файрвол, который позволяет разрешать или ограничивать доступ к вашему серверу.
Если UFW не установлен, то вы можете установить его из штатных репозиториев Ubuntu, выполнив команду:
Некоторые приложения создают для UFW готовые профили с настройками. Это очень удобно, так как пользователю достаточно всего лишь включить нужный профиль.
Прежде, чем включить файрвол UFW, необходимо настроить его так, чтобы он разрешал использование SSH, иначе после включения мы не сможем подключиться по SSH.
Выведем список доступных профилей:
Нам нужно включить профиль OpenSSH. Для этого выполняем команду:
Включаем файрвол:
Скорее всего, появится следующее предупреждение, информирующее о том, что SSH-соединение может прерваться. Но так как мы разрешили использование SSH, то вводим y и нажимаем Enter.
Если все прошло успешно, то вы по прежнему должны будете иметь SSH доступ. Выведем текущий статус UFW:
Apache (httpd)
Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает только Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
И так, устанавливаем httpd:
yum install httpd
Заходим в настройки:
vi /etc/httpd/conf/httpd.conf
И редактируем следующее:
Listen 8080
* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html
Добавляем:
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталого разрешен со всех адресов (all granted).
Проверяем синтаксис конфигурационного файла httpd:
apachectl configtest
Разрешаем автозапуск и запускаем службу:
systemctl enable httpd —now
Создаем php-файл со следующим содержимым:
vi /var/www/html/index.php
<?php phpinfo(); ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080. Мы должны увидеть привычную страницу:
NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
vi /etc/nginx/conf.d/default.conf
* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
…
location ~ \.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;
}
…
и меняем на:
…
location ~ \.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:
nginx -t
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:
cd /usr/local/src
Скачиваем модуль:
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
Распаковываем его:
unzip stable.zip
Переходим в распакованный каталог:
cd mod_rpaf-stable/
Собираем модуль и устанавливаем его:
make
make install
* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой yum install which.
Создаем конфигурационный файл со следующим содержимым:
vi /etc/httpd/conf.d/mod_rpaf.conf
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
Перезапускаем httpd:
systemctl restart httpd
Для проверки настройки открываем на редактирование созданный index-файл для httpd:
vi /var/www/html/index.php
И редактируем содержимое на:
<?php echo $_SERVER ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера. Мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу.
Установка Phpmyadmin CentOS 7
Система управления базами данных mysql набрала огромной популярности в последнее время. Она используется на большинстве веб-серверов, поскольку для работы современных веб-технологий нужно быстрое и надежное хранилище данных.
Время от времени нам нужно вручную внести изменения в хранимые данные, но по умолчанию mysql поддерживает работу только через терминал. Это достаточно сложно, поэтому был разработан веб-интерфейс phpmyadmin. В этой статье мы рассмотрим как выполняется установка Phpmyadmin CentOS 7 и как все настроить для максимально правильной работы.
Установка Phpmyadmin CentOS 7
В репозиториях, которые поставляются по умолчанию вместе с дистрибутивом Phpmyadmin нет. Он находится в репозитории EPEL или Extra Packages for Enterprise Linux. Поэтому сначала нам нужно установить этот репозиторий:
sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Затем обновляем списки доступных пакетов из нового репозитория. В CentOS это делать не обязательно в отличие от Ubuntu, но будет так будет более правильно:
sudo yum -y update
Заодно команда установит все доступные обновления. Дальше можно устанавливать Phpmyadmin:
sudo yum -y install phpmyadmin
Установка новой версии Phpmyadmin
Но, таким образом, вы получите старую версию phpmyadmin 4.4, которая работает на php 5.4. Если вы хотите php 7 и самый свежий phpmyadmin, то его можно установить из репозитория remi. Сначала добавляем репозиторий в систему:
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Обновляем доступные пакеты, как и выше:
sudo yum update
Включаем поддержку новой версии PHP 7.1:
yum-config-manager —enable remi-php71
И теперь осталось только установить phpmyadmin Centos 7, нужную версию php он возьмет сам:
sudo yum install phpmyadmin
Дальше phpmyadmin будет доступен по тому же адресу при условии, что вы используете Apache.
Настройка Phpmyadmin Nginx
Если же вы используете Nginx, то перед тем, как вы сможете открыть веб-интерфейс, вам будет необходимо его включить. Для этого выполните команду:
sudo ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin
Тут /var/www/html/phpmyadmin — это папка с вашим проектом. Затем перезапустите php-fpm:
sudo systemctl restart php-fpm
В основной конфигурационный файл nginx.conf, в секцию http добавьте такую команду, это включит поддержку перехода по символическим ссылкам:
sudo vi /etc/nginx/nginx.conf
И еще, если у вас ISPManager поищите строчку disable_symlinks if_not_owner в настройке сайта и удалите ее иначе тоже ничего не заработает. Перезапустите nginx:
sudo nginx -s reload
Теперь вы сможете получить доступ к phpmyadmin добавив его адрес к адресу вашего рабочего проекта. Дальше про безопасность. Нам нужно, чтобы к этому адресу могли получить доступ только вы. Несмотря на то, что интерфейс запрашивает пароль, его можно пытаться перебрать, а это для нас очень нежелательно. Во-первых, вы можете переименовать ссылку во что-то более непонятное, например:
mv /var/www/html/phpmyadmin /var/www/html/pppma
Но для большей надежности можно использовать аутентификацию Nginx. Сначала создадим зашифрованный пароль:
Полученное значение нужно скопировать. Дальше создайте файл /etc/nginx/passwords и поместите в него имя пользователя и пароль через двоеточие, например:
sudo vi /etc/nginx/passwords
Теперь добавьте такой location в файл настройки вашего сайта, адрес pppma, в случае, если вы меняли название ссылки:
location /pppma auth_basic «Admin Login»; auth_basic_user_file /etc/nginx/passwords; >
Теперь при запросе этого адреса будет спрашиваться пароль.
И только после ввода этого пароля и пароля базы данных вы сможете войти в интерфейс управления.
Настройка phpmyadmin Apache
Радует то, что при работе с Apache Phpmyadmin будет доступен сразу же, без необходимости выполнять кучу дополнительных настроек. Но безопасность настраивать все же надо. Настройки phpmyadmin для Apache находится в файле /etc/httpd/conf.d/phpMyAdmin.conf нам будет достаточно добавить несколько строк. Но сначала создаем пароль:
htpasswd -c /etc/httpd/passwords admin
Дальше редактируем файл настроек:
Добавьте в секцию <Directory> такие строки:
Options Indexes FollowSymLinks AllowOverride All AuthType Basic AuthName «Restricted Content» AuthUserFile /etc/httpd/passwords Require valid-user
Теперь, как и в предыдущем варианте, при попытке открыть phpmyadmin вы увидите запрос пароля.
Как удалить Phpmyadmin
Удаление Phpmyadmin выполняется такой командой:
sudo yum remove phpmyadmin
Не забудьте после этого удалить оставшиеся символические ссылки и конфигурации.