Как установить apache на centos 7

Установка базового программного обеспечения LEMP

Для выполнения дальнейших шагов нам необходимы настроенные LEMP серверы с установленными сертификатами Let’s Encrypt. В зависимости от выбранной ОС, вы можете воспользоваться для настройки одним из руководств, приведенных ниже. При настройке каждого сервера используйте его доменное имя — , , .

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

Установка LEMP в CentOS 7 с использованием внешнего репозитория Remi’s Repository для установки PHP 7.2.

Стандартная установка LEMP в Debian 9 Stretch с использованием PHP 7.0

Стандартная установка LEMP в Ubuntu 18.04 Bionic с использованием PHP 7.2

На этом шаге вы должны получить три сервера с установленным стеком LEMP. Каждый сервер должен быть доступен по доменному имени по протоколу HTTPS. На каждом сервере должен быть установлен сервер СУБД MariaDB.

Установка Certbot на CentOS 7 с nginx / apache

Для установки certbot нам потребуется установить репозиторий epel-release (все команды выполняются с правами root):

Далее устанавливаем сам клиент и модуль работы с сервером (пример для nginx):

Если же вы используете apache, то выполните установку certbot с соответствующим модулем:

Приступаем к непосредственному получению бесплатного сертификата и настройке https. Если вы используете nginx, выполните:

Если у вас установлен apache:

Certbot попросит указать адрес электронной почты, которая будет использована срочного продления и уведомлений безопасности. Указываем свою почту и нажимаем Enter:

Далее необходимо принять пользовательское соглашение, вводим A и нажимаем Enter:

Нам предложат опубликовать наш адрес электронной почты после успешного получения сертификата. Отказываемся, введя N и Enter:

Certbot проверит конфигурационные файлы nginx / apache на наличие доменных имен. Если они будут найдены, то он выведет их список и предложит указать те, для которых требуется получить сертификаты и настроить веб-сервер (в консоли вводятся номера позиций, возможно указание нескольких через пробел). Если же у вас нет настроенных доменов, то имя потребуется указать вручную:

После этого дожидаемся окончания работы клиента:

Для успешной работы Certbot необходимо, чтобы у вас были открыты порты 80 и 443!

Заходим в браузер и вводим наш домен. Справа от него будет указан значок замка, который говорит о защищенном соединении:

Так как сертификаты Let’s Encrypt выдаются на три месяца, то настроим их автоматическое обновление. Для этого откроем любым текстовым редактором крон:

И укажем периодическое задание на обновление всех сертификатов с помощью certbot:

Установка Certbot на CentOS 8 с nginx / apache

Для установки certbot нам потребуется установить репозиторий epel-release (все команды выполняются с правами root):

Далее устанавливаем сам клиент и модуль работы с сервером (пример для nginx):

Если же вы используете apache, то выполните установку certbot с соответствующим модулем:

Приступаем к непосредственному получению бесплатного сертификата и настройке https. Если вы используете nginx, выполните:

Если у вас установлен apache:

Certbot попросит указать адрес электронной почты, которая будет использована срочного продления и уведомлений безопасности. Указываем свою почту и нажимаем Enter:

Далее необходимо принять пользовательское соглашение, вводим A и нажимаем Enter:

Нам предложат опубликовать наш адрес электронной почты после успешного получения сертификата. Отказываемся, введя N и Enter:

Certbot проверит конфигурационные файлы nginx / apache на наличие доменных имен. Если они будут найдены, то он выведет их список и предложит указать те, для которых требуется получить сертификаты и настроить веб-сервер (в консоли вводятся номера позиций, возможно указание нескольких через пробел). Если же у вас нет настроенных доменов, то имя потребуется указать вручную:

После этого дожидаемся окончания работы клиента:

Для успешной работы Certbot необходимо, чтобы у вас были открыты порты 80 и 443!

Заходим в браузер и вводим наш домен. Справа от него будет указан значок замка, который говорит о защищенном соединении:

Так как сертификаты Let’s Encrypt выдаются на три месяца, то настроим их автоматическое обновление. Для этого откроем любым текстовым редактором крон:

И укажем периодическое задание на обновление всех сертификатов с помощью certbot:

Установка сервера CentOS 7

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

Итак, для начала необходимо отыскать сам сервер. Его можно либо нанять в Сети (от 250 рублей), либо настроить на локальной машине. Единственное, что потребуется, – это данные SSH, которые будут использоваться для входа на сервер. Возьмем в качестве примера абстрактный почтовый адрес [email protected] и имя пользователя c паролем тоже centos.

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

  • Добавляем пользователя командой useradd centos;
  • Создаем для него уникальный пароль – passwd centos;
  • Заставляем систему отправлять root-почту этому пользователю – vi /etc/aliases;
  • Даем пользователю права sudo командой visudo (командная строка отзовется подтверждением операции).

Далее необходимо указать имя хоста. Это можно сделать командой hostnamectl set-hostname server1.centos.net.

После нужно отключить Firewall и SeLinux. Это необходимо сделать для того, чтобы случайно не лишить себя прав доступа к серверу. Приостановить работу Firewall можно, используя команды systemctl stop firewalld и systemctl disable firewalld. Ситуация с SeLinux немного сложнее: необходимо открыть соответствующий конфигурационный файл в текстовом редакторе Vi с помощью команды vi /etc/selinux/config, разыскать там строку SELINUX=enabled и заменить на SELINUX=disabled. Затем нужно перезагрузить систему.

Следующим этапом настройки будет установка SSH.

Для этого необходимо:

  • Добавить соответствующие ключи с севера командой ssh-copy-id [email protected].
  • Изменить порт в конфигурационном файле /etc/ssh/sshd_config на Port 222.
  • Запретить вход на сервер без прав Root, вписав строку PermitRootLogin without-password.
  • И перезагрузить сервер командой systemctl restart sshd.

Также нужно обновить все системы и установить хранилища epel и rpmforge. Для этого необходимо:

  • Обновить все системные элементы командой yum update.
  • Загрузить новые системные компоненты командой yum -enablerepo=cr update.
  • Если существующих компонентов недостаточно, можно загрузить более современные версии epel и rpmforge, для этого вводим команду yum -y install *адрес репозитория, где хранится нужная версия программного обеспечения* (подходящий репозиторий можно легко найти на профильных ресурсах).

Установка и настройка PhpMyAdmin (PMA)

Ставить будем вручную. Для этого нам потребуется менеджер загрузок wget.
Если у вас нет, то ставим:
#
yum-yinstall wget
Идем на http://www.phpmyadmin.net/home_page/downloads.php и копируем ссылку на самую последнюю мультиязычную версию PhpMyAdmin со сжатием .zip (На данный момент это — http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.8/phpMyAdmin-4.2.8-all-languages.zip).
Идем в /var/www/html/:
#
cd/var/www/html/
Скачиваем PMA:
#
wget http//sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.8/phpMyAdmin-4.2.8-all-languages.zip
В директории появится архив phpMyAdmin-4.2.8-all-languages.zip, распаковываем его:
#
unzip phpMyAdmin-4.2.8-all-languages.zip
Переименуем директорию phpMyAdmin-4.2.8-all-languages в pma:
#
mv phpMyAdmin-4.2.8-all-languages pma
Удалим архив phpMyAdmin-4.2.8-all-languages.zip т.к. он нам больше не нужен:
#
rm phpMyAdmin-4.2.8-all-languages.zip

По идее у нас уже полностью рабочий PhpMyAdmin должен быть доступен по адресу — https://IP-адрес_сервера/pma/

Дополнительно читаем: Тонкая настройка PhpMyAdmin

Плановое ручное переключение

Если по каким-то причинам надо поменять primary и standby местами, то сделать это можно одной командой

Внимание! Данная команда запускает довольно сложную серию операций на двух серверах, поэтому перед запуском убедитесь в надёжности вашего оборудования, стабильности сетевого соединения, отсутствии активных клиентов и наличии резервной копии (в первую очередь наличие резервной копии!). Выполним на standby-сервере:

# sudo -u postgres /usr/pgsql-9.6/bin/repmgr -f /etc/repmgr/9.6/repmgr.conf standby switchover
NOTICE: executing switchover on node "v83node2" (ID: 2)
NOTICE: local node "v83node2" (ID: 2) will be promoted to primary; current primary "v83node1" (ID: 1) will be demoted to standby
NOTICE: stopping current primary node "v83node1" (ID: 1)
NOTICE: issuing CHECKPOINT
DETAIL: executing server command "/usr/pgsql-9.6/bin/pg_ctl  -D '/var/lib/pgsql/9.6/data' -W -m fast stop"
NOTICE: current primary has been cleanly shut down at location 0/A000028
NOTICE: promoting standby to primary
DETAIL: promoting server "v83node2" (ID: 2) using "/usr/pgsql-9.6/bin/pg_ctl  -w -D '/var/lib/pgsql/9.6/data' promote"
server promoting
NOTICE: STANDBY PROMOTE successful
DETAIL: server "v83node2" (ID: 2) was successfully promoted to primary
NOTICE: setting node 1's primary to node 2
NOTICE: starting server using "/usr/pgsql-9.6/bin/pg_ctl  -w -D '/var/lib/pgsql/9.6/data' start"
NOTICE: NODE REJOIN successful
DETAIL: node 1 is now attached to node 2
NOTICE: replication slot "repmgr_slot_2" deleted on node 1
NOTICE: switchover was successful
DETAIL: node "v83node2" is now primary and node "v83node1" is attached as standby
NOTICE: STANDBY SWITCHOVER has completed successfully

Вернуть всё обратно можно той же командой, только выполнить её теперь надо на v83node1.

Создание контента веб-сервера

После определения  DocumentRoot веб-сервера вы знаете все, что нужно знать для настройки базового веб-сервера. По умолчанию веб-сервер Apache ищет файл с именем index.html и представляет содержимое этого документа клиентам, использующим браузер для доступа к веб-серверу.

Чтобы протестировать веб-сервер, вы можете запустить браузер. Браузер Firefox установлен по умолчанию во всех графических установках RHEL / CentOS. Если ваш сервер не поддерживает графический интерфейс, используйте yum install elinks для установки текстового браузера elinks.

Этот браузер не позволяет загружать сложные веб-страницы, но он позволяет вам проверить работу веб-сервера. Ниже на скриншоте   показано, как выглядит интерфейс elinks.

В упражнении 1 вы узнаете, как настроить базовый веб-сервер.

Упражнение 1. Настройка базового веб-сервера

В этом упражнении вы узнаете, как настроить базовый веб-сервер Apache.

Компоненты web сервера

Для работы с веб сайтом как правило необходимо иметь три компонента.

  • Nginx — по сути это и есть сам веб сервер который будет обрабатывать все запросы и выдавать информацию пользователям,
  • MariaDB — база данных в которой будут хранится данные сайтов. MariaDB ответвление от популярной mysql и полностью с ней совместима,
  • PHP — язык программирования, который чаще всего применяется веб разработчиками.

Теперь обо всех этих компонентах расскажу подробно.

Дальнейшие действия производим с учетом начальной настройки сервера CetnOS 7 на Айхор Хостинге. Все действия будут правильны для других хостингов и серверов где необходимо развернуть данный функционал на операционной системе CentOS 7.

Установка phpMyAdmin

Для установки phpMyAdmin вводим следующую команду:

yum install phpmyadmin

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

vi /etc/nginx/conf.d/phpMyAdmin.conf

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

server {
        listen       80;
        server_name  phpmyadmin.dmosk.local;
        set $root_path /usr/share/phpMyAdmin;
        location / {
                root $root_path;
                index index.php;
        }
        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;
                fastcgi_read_timeout 300;
        }
}

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

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

systemctl reload nginx

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

systemctl restart php-fpm

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

Настройка виртуальных хостов apache2 в ubuntu

Виртуальные хосты позволяют размещать более одного веб-сайта на одном сервере Apache2. В Nginxэто называется серверными блоками.

По умолчанию Apache2 поставляется с одним виртуальным хостом, а его конфигурационная информация хранится в файле /etc/apache2/sites-enabled/000-default.conf. Кроме того, корень веб-сайта по умолчанию — располагается в  /var/www/html.

Настроить новый виртуальный хост очень просто. Следуйте инструкции и просто замените setiwik своим собственным зарегистрированным доменным именем.

Примечание: ваше зарегистрированное доменное имя должно указывать на IP-адрес вашего сервера Ubuntu.

Устанавливаем PHP на CentOS 7.1

Для установки языка программирования PHP на CentOS необходимо выполнить следующую команду, но учтите, что если Вы используете дополнительные расширения PHP, то их необходимо включать в установку, например, мы сразу установим расширение для работы с базой MySQL (указываем название расширения через пробел). Если Вы не знаете, какие расширения Вы будете использовать, то ничего страшного, потом их конечно можно доустановить, итак, команда для установки php и расширения mysql будет выглядеть следующим образом (все от имени root):

 
   yum -y install php php-mysql

Перезапускаем Apache

 
   systemctl restart httpd

Для проверки установился ли PHP, создаем тестовый файл (например, таким же способом как мы создавали конфиг Apache чуть выше), допустим с названием test.php в директории тестового сайта (/var/www/html/testsite/www/), содержание файла следующее (просто информация о PHP)

 
   <?PHP
         echo phpinfo();
   ?>

После создания мы обращаемся к этому файлу из браузера, например ip_адрес/test.php

В ответ мы должны получить вот такую страницу

Как видите, у нас установилась версия PHP 5.4.16.

Устанавка MySQL.

# yum -y install mysql mysql-server

Пропишем MySQL в автозапуск:

# chkconfig mysqld on

Стартуем MySQL:

# service mysqld start

Установим пароль MySQL для root :

# mysqladmin -u root password 'your-pass'

Где your-pass —  root пароль для MySQL. ВСЕ УСТАНОВИЛИ! Но для удобства добавим пару последних штрихов:

Структура будет выглядеть следующим образом:

/home/captain/ — директория с вашими сайтами
/home/captain/test.com/ —  папка для сайта test.com
/home/captain/test.com/www/ — файлы сайта test.com
/home/captain/test.com/logs/ — логи сайта test.com
/home/captain/test.com/tmp/ — папка с временными файлами сайта test.com

И так, создаем в /home/captain/ в директории каждого из сайтов создаем папки www, logs, tmp. После этого прописываем их в конфиг апача: /etc/httpd/conf.d/ — В эту директорию будем создавать отдельный конфиг файл для каждого сайта (так удобнее).

Файл test.com.conf:

<VirtualHost *:80>
ServerName test.com ServerAlias www.test.com
DocumentRoot /home/captain/test.com/www
<Directory /home/captain/test.com/www>
Options FollowSymLinks
AllowOverride All Order allow,deny Allow from all
</Directory>
#лог ошибок ErrorLog /home/captain/test.com/logs/error.log
# #лог обращений выключен по умолчанию, для включения уберите
# Установка и настройка Apache, PHP, MySQL в CentOS
# #CustomLog /home/captain/test.com/logs/access.log common
# # php safety options
# php_admin_flag register_globals 1 php_admin_value date.timezone 'Europe/Kiev'
php_admin_value open_basedir /home/captain/test.com
php_admin_value max_execution_time 60
php_admin_value upload_max_filesize 50M
php_admin_value upload_tmp_dir /home/captain/test.com/tmp
php_admin_value session.save_path /home/captain/test.com/tmp
</VirtualHost>

И так для каждого сайта что находится в директории /home/captain. Затем рестартанем апачик:

# service httpd restart

Установка и настройка FTP-сервера

В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей. Для его установки вводим следующую команду:

yum install proftpd proftpd-utils

Создаем каталог для хранения настроек:

mkdir /etc/proftpd.d

Создаем виртуального пользователя:

ftpasswd —passwd —file=/etc/proftpd.d/ftpd.passwd —name=ftpwww —uid=48 —gid=48 —home=/var/www —shell=/sbin/nologin

* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (apache); /var/www — домашний каталог пользователя; /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.

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

vi /etc/proftpd.conf

И редактируем следующее (комментируем):

#AuthOrder …

В конце файла добавим следующее:

UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

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

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

systemctl enable proftpd —now

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

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

Топология

Мы будем настраивать трехузловую конфигурацию, как изображено на следующем рисунке:

Внутренняя сеть

Для успешной настройки все узлы должны быть соединены высоконадежной внутренней сетью. В том случае, если вы используете виртуальные машины, у которых есть только публичная сеть, то вы можете использовать VXLAN, туннели GRE или VPN для организации внутренней сети. В целом, мы предполагаем, что вы как-то свяжете свои серверы между собой, и эта связь будет надежной. От надежности и производительности внутренней сети будет зависеть то, насколько качественно будет работать отказоустойчивая конфигурация.

Если вы используете аппаратные серверы, рекомендуем связать их между собой через свич с поддержкой LACP, а лучше посредством MLAG, через два независимых коммутатора. Если же ваши коммутаторы не поддерживают MLAG, то вы можете использовать протокол OSPF для организации отказоустойчивой внутренней сети, используя Quagga, развернутый на каждом узле.

Если же у вас только один коммутатор, просто воткните три сервера в него и настройте общую частную сеть.

Публичная сеть

Публичная сеть в рамках планируемой конфигурации может быть ненадежной. Если вы используете аппаратные серверы, можете взять публичные каналы от нескольких провайдеров, чтобы защититься от аварии инфраструктуры провайдера. В общем случае, к публичной сети требования довольно просты — она должна быть приемлемо надежной и обеспечивать прохождение нужного объема трафика.

Обратите внимание, что в моменты деградации, например, если один из узлов выйдет из строя, трафик перетечет на оставшиеся два узла. Каналы каждого из этих узлов должны выдержать добавление от 1/6 до 1/3 трафика без деградации

На каждом узле мы установим одну и ту же операционную систему и все прикладное программное обеспечение — Nginx, GlusterFS, MariDB, PHP7 и настроим публичное взаимодействие с этими серверами по безопасному протоколу Let’s Encrypt.

DNS

Будем считать, что наши серверы имеют доменные имена:

  • ,
  • ,
  • ,

Необходимо убедиться, что серверы доступны по этим доменным именам из сети интернет (корректные записи A, AAAA). Доменные имена необходимы для получения сертификатов Let’s Encrypt, которые будут шифровать трафик.

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

Если вы не планируете использовать для внешней балансировки трафика CDN, необходимо установить корректный TTL для записей . Устанавливайте минимальный, какой позволяет провайдер. Это необходимо, чтобы при отказе сервера вы могли удалить запись для него и быстро исключить его из списка доступных.

Если вы планируете отправку почты с напрямую серверов или через внешний SMTP, то для настройки обратитесь к руководствам по настройке дополнительных записей, необходимых для правильной доставки почты — SPF, PTR.

Начнем установку apache, я установлю с SSL:

# yum -y install httpd mod_ssl

Апач установился, нужно подправить его конфиг, открыв в текстовом редакторе :

# ee /etc/httpd/conf/httpd.conf

И в поле ServerName прописываем ваш IP или имя сервера, у меня оно выглядит так:ServerName 192.168.77.113

Чтобы Apache стартовал автоматически пропишем в автозапуск следующее:

# chkconfig httpd on

Стартуем Apache:

# service httpd start

Создадим пробную страницу, можно не выполнять это:

# echo '<h1>It's Work</h1>' > /var/www/html/index.html

Проверить можно перейдя по адресу который вы прописали в ServerName:http://192.168.77.113/

И мы увидим строчку «It’s Work»

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

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

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

yum install mariadb-server

* будет установлена mariadb версии 5.5. Если нужна другая, то читаем подробнее в инструкции .
** для установки mysql выполняем команду yum install mysql

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

systemctl enable mariadb —now

* для работы с mysql меняем mariadb на mysql.

Сразу создаем пароль для учетной записи root:

mysqladmin -u root password

PHP + MariaDB (MySQL)

Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:

yum install php-mysqli

Если мы установили php5, также ставим php-mysql:

yum install php-mysql

После перезагружаем php-fpm:

systemctl restart php-fpm

* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.

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

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

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

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