Установка lamp в centos 7

Установка 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 сервера:

  1. По умолчанию конфигурационный файл: /etc/httpd/conf/httpd.conf
  2. Файлы конфигурации, загружаемых модулей: /etc/httpd/conf.modules.d/ (например, PHP)
  3. Выберите MPMs как загружаемые модули  и события: / etc/httpd/conf.modules.d/00-mpm.conf
  4. Стандартные порты: 80 и 443 (SSL)
  5. Файлы журналов по умолчанию: /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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

<?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
2

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

Не забудьте после этого удалить оставшиеся символические ссылки и конфигурации.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Вадлейд
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: