Centos 7 web server: Полноценный веб-сервер на CentOS 7 — NGINX + Apache (httpd) + MySQL + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + xCache
Содержание
Установка веб-сервера Apache в CentOS 7
23 марта, 2019 12:26 пп
19 799 views
| Комментариев нет
Centos, LAMP Stack | Amber
| Комментировать запись
HTTP-сервер Apache – самый популярный веб-сервер. Он предоставляет множество производительных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.
В этом мануале вы узнаете, как установить веб-сервер Apache на сервер CentOS 7.
Требования
- Сервер CentOS 7.
- Пользователь с доступом к sudo (все действия нужно выполнить в сессии этого пользователя). Инструкции можно найти в мануале по начальной настройке сервера.
- Базовый брандмауэр (читайте мануал Дополнительные рекомендации по настройке сервера CentOS 7).
1: Установка Apache
Пакет Apache есть в стандартном репозитории CentOS, потому его можно установить с помощью стандартного пакетного менеджера yum.
Как пользователь с правами sudo, обновите индекс локальных пакетов:
sudo yum update httpd
Затем введите команду:
sudo yum install httpd
Команда установит Apache и его зависимости. Теперь можно запустить сервис.
2: Проверка веб-сервера
В CentOS веб-сервер Apache не запускается автоматически после завершения установки. Вам нужно запустить Apache вручную:
sudo systemctl start httpd
Убедитесь, что сервер запущен:
sudo systemctl status httpd
Redirecting to /bin/systemctl status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1290 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─1290 /usr/sbin/httpd -DFOREGROUND
├─1291 /usr/sbin/httpd -DFOREGROUND
├─1292 /usr/sbin/httpd -DFOREGROUND
├─1293 /usr/sbin/httpd -DFOREGROUND
├─1294 /usr/sbin/httpd -DFOREGROUND
└─1295 /usr/sbin/httpd -DFOREGROUND
. ..
В выводе должен быть статус active.
Согласно выводу сервис работает правильно. Но лучше также запросить страницу Apache, чтобы подтвердить работу веб-сервера.
Чтобы открыть стандартную посадочную страницу Apache, укажите свое доменное имя или IP сервера.
Если у вас нет домена, укажите внешний IP-адрес своего сервера. Если вы не знаете свой IP-адрес, вы можете узнать его с помощью командной строки. Введите:
hostname -I
Вы получите список адресов, разделенных пробелами. Проверьте каждый адрес в браузере.
Также вы можете узнать свой IP, запросив его с помощью команды curl:
curl -4 icanhazip.com
Узнав свой внешний адрес, введите в браузер:
http://your_server_ip
Вы увидите стандартную страницу Apache для CentOS 7.
Эта страница позволяет убедиться, что Apache работает правильно; также она содержит базовую информацию о важных файлах и каталогах Apache.
3: Управление процессами Apache
Чтобы остановить сервер, введите:
sudo systemctl stop httpd
Запустить сервер может команда:
sudo systemctl start httpd
Для перезапуска используйте:
sudo systemctl restart httpd
Во время настройки Apache можно часто перезагружать, не сбрасывая соединений. Для этого вы можете использовать команду:
sudo systemctl reload httpd
По умолчанию Apache запускается автоматически вместе с сервером. Чтобы удалить Apache из автозагрузки, отключите сервис:
sudo systemctl disable httpd
Чтобы добавить Apache в автозагрузку, используйте команду:
sudo systemctl enable httpd
Стандартная настройка Apache позволяет вам разместить один сайт. Если вы хотите обслуживать больше сайтов, нужно настроить виртуальные хосты.
5: Настройка виртуального хоста (рекомендуется)
На веб-сервере Apache вы можете использовать виртуальные хосты (аналогичные блокам server в Nginx) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, но вы должны заменить его собственным доменом.
Apache в CentOS 7 по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.
Создайте каталог example.com, используя флаг -p для создания всех необходимых родительских каталогов:
sudo mkdir -p /var/www/example.com/html
Создайте дополнительный каталог для хранения логов нового сайта:
sudo mkdir -p /var/www/example.com/log
Затем определите права на каталог с помощью переменной $USER:
sudo chown -R $USER:$USER /var/www/example.com/html
Установите привилегии:
sudo chmod -R 755 /var/www
Затем создайте образец страницы index.html с помощью любого редактора:
sudo vi /var/www/example.com/html/index.html
Нажмите i, чтоб перейти в режим INSERT, и вставьте в файл:
<html>
<head>
<title>Welcome to Example. com!</title>
</head>
<body>
<h2>Success! The example.com virtual host is working!</h2>
</body>
</html>
Сохраните и закройте файл (Esc, :wq, Enter).
Вы почти готовы создать файл виртуального хоста. Файлы виртуальных хостов задают конфигурацию отдельных сайтов и сообщают веб-серверу Apache, как реагировать на запросы к разным доменам.
Прежде чем создавать виртуальные хосты, вам нужно создать каталог sites-available, в котором они будут храниться, а также каталог sites-enabled, который сообщит Apache, что виртуальный хост готов обслуживать посетителей. Каталог sites-enabled будет содержать симлинки на виртуальные хосты, которые нужно включить в работу. Создайте оба каталога с помощью следующей команды:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Теперь настройте Apache для поиска виртуальных хостов в каталоге sites-enabled. Для этого отредактируйте главный конфигурационный файл:
sudo vi /etc/httpd/conf/httpd. conf
В конец файла добавьте строку:
IncludeOptional sites-enabled/*.conf
Сохраните и закройте файл. Теперь можно создать сам виртуальный хост.
sudo vi /etc/httpd/sites-available/example.com.conf
Вставьте в файл следующие конфигурации. Замените example.com своим доменом:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>
Теперь Apache знает, где найти корневой каталог проекта, в котором хранятся все доступные веб-документы. Также Apache знает, где хранить логи ошибок и запросов этого сайта.
Сохраните и закройте файл.
Включите файл, создав символьную ссылку на этот виртуальный хост в каталоге sites-enabled (так Apache будет понимать, что этот сайт нужно обслуживать):
sudo ln -s /etc/httpd/sites-available/example. com.conf /etc/httpd/sites-enabled/example.com.conf
Ваш виртуальный хост настроен и готов к обслуживанию контента. Прежде чем перезапустить сервис Apache, убедитесь, что политики SELinux для виртуальных хостов установлены правильно.
5: Настройка прав SELinux для виртуального хоста
SELinux поддерживает стандартные параметры Apache. Поскольку в файле виртуального хоста вы настроили пользовательский каталог логов, вы получите сообщение об ошибке, если попытаетесь запустить сервис Apache. Чтобы решить эту проблему, вам нужно обновить политики SELinux и позволить Apache изменять некоторые файлы. SELinux повышает безопасность среды CentOS 7, поэтому полностью отключать модуль ядра не рекомендуется.
Существуют различные способы установки политик в зависимости от потребностей вашей среды (SELinux позволяет настраивать уровень безопасности). Этот раздел продемонстрирует два метода настройки политик Apache: глобальный и в определенном каталоге. Корректировка политик для отдельного каталога более безопасна и поэтому является рекомендуемым подходом.
Глобальное изменение политик Apache
При глобальной настройке политики Apache SELinux будет одинаково обрабатывать все процессы Apache, применяя логическое значение httpd_unified. Этот подход более удобен, но он менее гибкий и безопасный.
Выполните следующую команду, чтобы установить универсальную политику Apache:
sudo setsebool -P httpd_unified 1
Команда setsebool изменяет логические значения SELinux. Флаг -P обновит значение времени загрузки, сохраняя это изменение при перезагрузках. httpd_unified – это логическое значение, благодаря которому SELinux будет обрабатывать все процессы Apache как один и тот же тип. Значение 1 включает его.
Изменение политики по каталогам
Индивидуальная настройка привилегий SELinux для каталога /var/www/example.com/log дает больший контроль над политиками Apache, но также может потребовать дополнительного обслуживания. Поскольку это не глобальная настройка, вам нужно будет вручную установить тип контекста для всех каталогов с логами, указанных в конфигурациях виртуального хоста.
Сначала проверьте тип контекста, который SELinux предоставил каталогу /var/www/example.com/log:
sudo ls -dZ /var/www/example.com/log/
Эта команда выводит список всех контекстов SELinux для каталогов:
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/
Текущий контекст – httpd_sys_content_t, который говорит SELinux, что процесс Apache может только читать файлы, созданные в этом каталоге. Нам нужно изменить тип контекста каталога /var/www/example.com/log на httpd_log_t. Этот тип позволит Apache создавать и добавлять файлы логов веб-приложений:
sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
Затем используйте команду restorecon, чтобы применить эти изменения и сохранить их при перезагрузке:
sudo restorecon -R -v /var/www/example.com/log
Флаг -R запускает эту команду рекурсивно, то есть она обновит все существующие файлы и они тоже будут использовать новый контекст. Флаг -v выведет изменения контекста, которые выполнила команда. Вы увидите следующий вывод, подтверждающий изменения:
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0
Снова запросите список контекстов:
sudo ls -dZ /var/www/example.com/log/
Вы увидите изменения:
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log
Теперь, когда каталог /var/www/example.com/log использует тип httpd_log_t, вы можете протестировать конфигурацию виртуального хоста.
6: Тестирование виртуального хоста (рекомендуется)
Как только вы обновите контекст SELinux (любым из методов), Apache сможет записывать и изменять файлы в каталоге /var/www/example.com/log. Теперь вы можете перезапустить Apache:
sudo systemctl restart httpd
Запросите содержимое каталога /var/www/example.com/log, чтобы увидеть, создал ли Apache файлы логов:
ls -lZ /var/www/example. com/log
Вы увидите, что Apache смог создать файлы error.log и requests.log, указанные в конфигурации виртуального хоста:
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log
Теперь, когда виртуальный хост и привилегии SELinux настроены, Apache будет обслуживать ваш домен. Вы можете проверить его работу, перейдя по ссылке http://example.com, где вы должны увидеть строку:
Success! The example.com virtual host is working!
Если страница открылась, значит виртуальный хост успешно настроен и обслуживает контент. Повторите разделы 4 и 5, чтобы создать новые виртуальные хосты и обновить привилегии SELinux.
Заключение
В этом мануале вы научились устанавливать и управлять веб-сервером Apache. Теперь у вас есть много вариантов: вы можете выбрать тип контента, который хотите обслуживать, и внедрить дополнительные технологии для создания более сложного сайта.
Если вы хотите установить полный стек приложений, читайте Установка LAMP stack на CentOS 7.
Tags: Apache, CentOS 7, LAMP stack
Пошаговая настройка Web сервера на centos 7
Привет, я уже писал статью, как поставить и настроить веб сервер на Ubuntu. Но, я понял, что эта — ОС совсем не предназначена для WEB сервера, самый главный минус, она сильно много жрет оперативной памяти. Поэтому я её снеси и поставил на центос.
Устанавливаем Centos 7 на сервер. Я думаю с этим сложностей не будет, т.к. этим занимается хостер, который вам предоставляет VPS. Затем необходимо обновить все пакеты.
Contents
Установка FastVps
yum upgrade
Устанавливаем панель управления сервером fastvps.
wget http://repo.fastpanel.direct/install_fastpanel.sh -O /tmp/install_fastpanel.sh && bash /tmp/install_fastpanel.sh -m mysql8.0
По умолчанию, у меня ставится МарияДБ, по этому я явно указываю, что хочу mysql. Если вы хотите мариюДБ, то строка будет выглядеть так.
wget http://repo.fastpanel.direct/install_fastpanel.sh -O /tmp/install_fastpanel.sh && bash /tmp/install_fastpanel.sh
Установка fail2ban
После этого нужно установить fail2ban. Вначале добавляем репозиторий.
yum install epel-release
После этого устанавливаем сам пакет.
yum install fail2ban
Для запуска службы вводим следующие команды.
systemctl enable fail2ban systemctl start fail2ban
Установка МС
Затем устанавливаем mc.
yum install mc
Настройка fail2ban
Вводим в командную строку mc и переходим в etc/fail2ban, а там есть файл jail.local его и редактируем. Вот мой конфиг.
[DEFAULT] bantime. increment = true bantime.rndtime = 30m bantime.maxtime = 60d bantime.factor = 2 bantime = 3h findtime = 10m maxretry = 5 banaction = iptables-ipset-proto6 ignoreip = 127.0.0.1 [sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/auth.log findtime = 600 maxretry = 3 bantime = 43200 [recidive] enabled = true bantime = 9w findtime = 3d [apache-auth] # Ban hosts with password authentication failures enabled = true port = http,https logpath = %(apache_error_log)s [apache-badbots] # Ban spammer robots crawling the web for email addresses. port = http,https logpath = %(apache_access_log)s bantime = 172800 maxretry = 1 [apache-noscript] # Ban hosts searching for scripts on the website to execute and exploit enabled = true port = http,https logpath = %(apache_error_log)s maxretry = 6 [apache-overflows] # Ban hosts attempting to request unusually long and suspicious URLs enabled = true port = http,https logpath = %(apache_error_log)s maxretry = 2 [apache-nohome] # If you do not provide access to web content within users’ home directories enabled = true port = http,https logpath = %(apache_error_log)s maxretry = 2 [exim] enabled = true [exim-spam] enabled = true [postfix] enabled = true [wordpress-hard] enabled = true port = http,https filter = wordpress-hard logpath = /var/log/auth. log bantime = 1h maxretry = 1 [non-standard] enabled = true port = port your app/service uses logpath = where its log file is located
После сохранения нужно перезагрузить fail2ban:
systemctl restart fail2ban
Проверить статус.
systemctl status fail2ban
Если вылезда ошибка, то удалите из фаила jail.local, то на что ругается.
Установка свежего PHP
Теперь пришла пора сменить версию php на сервере. По умолчанию на вашем сервере php 5.4.
php -v
Нужно это исправить, я не советую устанавливать последнюю версию. На сегодняшний день уже вышел php 8. Я буду себе ставить php 7.3. Для этого необходимо ввести команду.
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh http://rpms. remirepo.net/enterprise/remi-release-7.rpm
Дальше смотрим, что можно активировать.
ls /etc/yum.repos.d/remi*
Я выбираю это —/etc/yum.repos.d/remi-php73.repo, открываю MC и редактирую этот файл.
Дальше обновим систему и пхп нужной версии автоматически установится.
yum update systemctl restart php-fpm php -v
Дальше нужно исправить ошибку Ioncube, для этого качаем архив с нужной версией.
Wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz //или если 32 Wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
Перенесем нужный файл сюда /usr/lib64/php/modules, в моем случае это ioncube_loader_lin_7.3.so.
Дальше необходимо поправить файл ioncube… /etc/php.d/ioncube.ini
Все ошибки на этом кончились.
php -v
Установка php-xml
Этот пакет мне понадобился для роботы воркера во фреймворке laravel.
yum install php-xml
Установка Supervizor
yum install supervisor
Настройка Supervizor
А дальше настраиваем конфигурацию /etc/supervisord.conf в самый конец вставляем это:
;[include] ;files = relative/directory/*.ini [program:laravel-worker] ;process_name=%(program_name)s_%(process_num)02d command=php /var/www/keycheck.ru/data/www/keycheck.ru/artisan queue:work --sleep=3 --tries=1 autostart=true autorestart=true user=keycheck.ru //этот пользователь должен быть создан numprocs=1 redirect_stderr=true stdout_logfile=/var/log/supervisor/worker.log
Затем, выполняем следующие команды.
systemctl enable supervisord //автозапуск при старте systemctl restart supervisord //перезапустить службу supervisorctl reload supervisorctl update supervisorctl start laravel-worker:*
Настройка Mysql
Для того поможет софт — MysqlTuner.
yum install mysqltuner
Запускаем его просто командой:
mysqltuner
Выполняем рекомендации программы.
Подождите сутки перед тем как выполнять её рекомендации, пусть накопится статистика для анализа.
Все теперь можно переносить все файлы на сервер ваших сайтов и настраивать саму fastpanel.
PS: еще раз ознакомьтесь с этой статьёй, там написано более подробно по каждому пункту, плюс есть настройка фаервола.
Предыдущая
ПрограммированиеНастройка Web сервера на Ubuntu 20.04
Следующая
ПрограммированиеLaravel 8 установка OpenAPI (Swagger)
Установка веб-сервера Apache на CentOS 7 • CloudSigma
Веб-сервер хранит, обрабатывает и доставляет веб-страницы посетителям веб-сайта. Существует довольно много вариантов программного обеспечения веб-сервера с открытым исходным кодом, но HTTP-сервер Apache считается наиболее широко используемым веб-сервером в мире. Это связано с тем, что, помимо открытого исходного кода, его модульная архитектура позволяет расширять его возможности за счет добавления модулей для различных целей. В результате веб-сервер чрезвычайно надежен.
Если вы хотите установить Apache в системе CentOS 7, это руководство для вас. Кроме того, вы узнаете, как создавать виртуальные хосты, чтобы вы могли обслуживать несколько веб-сайтов на одном HTTP-сервере Apache, работающем на CentOS.
Это подробное руководство посвящено только установке Apache. Если вы искали точечный учебник по стеку LAMP, у нас есть это руководство по установке Linux, Apache, MySQL, PHP (LAMP) на CentOS 7, которое вы можете проверить. Теперь начнем!
Предварительные требования
Поскольку это практическое руководство, у вас должно быть следующее:
- Сервер под управлением CentOS 7. Вы можете создать его в CloudSigma, выполнив несколько простых шагов по этой ссылке.
- Настройте пользователя без полномочий root с привилегиями sudo на вашем сервере. Затем войдите под этим пользователем.
- Настройте базовый брандмауэр, следуя инструкциям из нашего руководства по настройке брандмауэра с помощью FirewallD в CentOS 7.
Шаг 1. Установка HTTP-сервера Apache
Вы можете найти Apache в стандартных репозиториях CentOS. Следовательно, установка проста с использованием менеджера пакетов yum . В разделе предварительных требований вам необходимо войти в систему с пользователем без полномочий root. Выполните следующую команду в своем терминале, чтобы обновить локальный индекс пакета Apache httpd:
обновление судо-юм httpd
обновление sudo yum httpd |
После обновления пакетов введите следующую команду для установки Apache:
судо юм установить httpd
Судо Юм установить httpd |
Подтвердите установку и подождите, пока yum установит Apache и его необходимые зависимости.
Если вы следовали инструкциям руководства по настройке брандмауэра с помощью FirewallD в CentOS 7 и включили брандмауэр для порта 80, то все готово. Firewalld — это менеджер брандмауэра для CentOS. В противном случае вы можете включить службу http (порт 80) firewalld, введя следующую команду:
sudo firewall-cmd —permanent —add-service=http
sudo firewall-cmd —permanent —add-service=http |
Если вы планируете обслуживать трафик через безопасный HTTPS, вы можете включить службу https (порт 443) firewalld, введя следующую команду:
sudo firewall-cmd —permanent —add-service=https
sudo firewall-cmd —permanent —add-service=https |
Наконец, вы должны перезагрузить firewalld, чтобы изменения вступили в силу. Вот команда для перезагрузки:
sudo firewall-cmd – перезагрузка
sudo firewall-cmd – перезагрузка |
На этом этапе вы установили и настроили Apache для обслуживания трафика по HTTP или HTTPS, в зависимости от того, выполняете ли вы приведенные выше команды.
Шаг 2. Подтверждение того, что веб-сервер Apache работает
В CentOS процесс Apache не запускается автоматически после установки. Чтобы вручную запустить Apache, введите следующую команду:
sudo systemctl начать httpd
sudo systemctl start httpd |
Чтобы убедиться, что служба запущена успешно, проверьте статус, введя следующую команду:
.
статус sudo systemctl httpd
статус sudo systemctl httpd |
Если служба запущена, вы должны увидеть вывод, аналогичный приведенному ниже снимку экрана. Обратите внимание на активный статус:
Вывод указывает, что служба успешно запущена и работает. Затем мы также должны проверить, может ли Apache обслуживать страницу для пользователей Интернета. Apache поставляется со страницей по умолчанию, которую вы можете использовать для проверки возможности доступа к вашему серверу через Интернет.
Вам нужно будет найти общедоступный IP-адрес вашего сервера, если у вас его еще нет. Этот IP-адрес вы будете использовать в адресной строке браузера для запроса веб-страницы Apache по умолчанию. Вы можете отобразить сетевые адреса хоста, введя следующую команду:
.
имя хоста –I
имя хоста –I |
Из полученного списка адресов вы можете попробовать каждый в своем браузере, чтобы убедиться, что они работают. По желанию можно использовать curl , чтобы получить ваш IP-адрес с icanhazip.com . Приведенная ниже команда выводит ваш общедоступный IP-адрес так, как он виден с компьютера в другом месте в Интернете:
.
curl -4 icanhazip.com
curl -4 icanhazip.com |
Получив общедоступный IP-адрес вашего сервера, скопируйте и вставьте его в адресную строку браузера:
.
http://ваш_сервер_публичный_ip
http://ваш_сервер_публичный_ip |
Ваш браузер должен загрузить веб-страницу Apache CentOS 7 по умолчанию:
Если вы смогли загрузить веб-страницу Apache по умолчанию, это означает, что ваш сервер работает правильно. Если вы прокрутите вниз, вы увидите некоторую основную информацию о файлах Apache и расположении каталогов. Если служба установлена и работает правильно, вы сможете использовать различные systemctl команды для управления сервисом.
Шаг 3: Управление службой Apache
В этом разделе мы покажем вам некоторые основные команды управления Apache. Вот команда, которая останавливает веб-сервер:
sudo systemctl остановить httpd
sudo systemctl остановить httpd |
Вот команда для запуска веб-сервера:
sudo systemctl начать httpd
sudo systemctl start httpd |
Далее это команда для перезапуска веб-сервера (остановка и запуск):
sudo systemctl перезапустить httpd
sudo systemctl перезапустить httpd |
После этого мы покажем вам команду для перезагрузки службы Apache. Эта команда необходима, когда вы просто вносите изменения в конфигурацию. При перезагрузке процесс Apache примет изменения конфигурации, не разрывая соединения, как это было бы в случае перезапуска:
sudo systemctl перезагрузить httpd
sudo systemctl перезагрузить httpd |
В конфигурациях по умолчанию Apache запускается автоматически при загрузке сервера. Если вы хотите изменить это поведение, вот команда, чтобы отключить запуск службы при загрузке:
sudo systemctl отключить httpd
sudo systemctl отключить httpd |
Чтобы снова включить запуск службы при загрузке, введите следующую команду:
.
sudo systemctl включить httpd
sudo systemctl включить httpd |
Шаг 4. Настройка виртуальных хостов Apache
По умолчанию Apache настроен для размещения и обслуживания одного веб-сайта. В большинстве случаев вам понадобится, чтобы ваш веб-сервер обслуживал и размещал несколько веб-сайтов. Например, у вас могут быть поддомены или вы можете настроить страницу блога для основного веб-сайта вашей компании/организации. Вот где вступают в игру виртуальные хосты Apache. Виртуальные хосты Apache позволяют настроить веб-сервер для обслуживания нескольких веб-сайтов. Виртуальные хосты Apache являются эквивалентом серверных блоков на сервере Nginx.
В этом руководстве мы покажем вам, как создать виртуальный хост, используя example.com в качестве нашего домена. Конечно, домен example.com не будет работать в Интернете, поэтому вам следует заменить его своим реальным доменом — шаги те же.
Когда вы устанавливаете Apache в CentOS, он устанавливает один виртуальный хост, настроенный для обслуживания контента из каталога /var/www/html . Этот дизайн хорошо работает, если вы размещаете один сайт. Однако мы хотим иметь возможность размещать несколько сайтов. Мы оставим значение по умолчанию /var/www/html и вместо этого создайте другой каталог для домена example.com в расположении /var/www . Причина отказа от каталога по умолчанию заключается в том, что он обслуживается, когда запросы клиентов не соответствуют каким-либо другим сайтам, которые вы настроили с виртуальными хостами. Более того, если вы хотите отключить созданные вами виртуальные хосты, по умолчанию остается обслуживать трафик.
Сначала создайте каталог внутри /var/www для вашего доменного имени. Вы вольны выбрать имя по вашему выбору. Тем не менее, рекомендуется выбрать имя, похожее на ваш домен, чтобы его было легче запомнить при создании виртуального хоста 9.Файл 0023 conf . Введите следующую команду, чтобы создать пример каталога:
sudo mkdir -p /var/www/example
sudo mkdir -p /var/www/example |
Введите следующую команду, чтобы создать дополнительную папку, в которой будут храниться файлы журнала для сайта:
sudo mkdir -p /var/www/example/log
sudo mkdir -p /var/www/example/log |
Имея каталоги вашего веб-сайта, назначьте владельца каталога с помощью переменной окружения $USER , используя следующую команду:
sudo chown -R $USER:$USER /var/www/example
sudo chown -R $USER:$USER /var/www/example |
Выполните следующую команду, чтобы убедиться, что ваш веб-корневой каталог имеет разрешения по умолчанию:
.
sudo chmod -R 755 /var/www
sudo chmod -R 755 /var/www |
Теперь создайте простую страницу index.html , используя nano внутри каталога example , введя следующую команду:
судо нано /var/www/example/index.html
судо нано /var/www/example/index.html |
В редакторе nano добавьте следующий фрагмент кода HTML:
<голова>
голова>
<тело>
Если вы видите это сообщение, это означает, что виртуальный хост
example.com работает!
тело>
1 2 3 4 5 6 7 8 |
Если вы видите это сообщение, значитexample. com виртуальный хост работает!
|
После этого сохраните файл, нажав Ctrl O и нажмите ENTER . Теперь вы можете закрыть редактор, нажав Контр. X .
Пока у нас есть каталог вашего сайта и базовая веб-страница для тестирования виртуального хоста. Далее мы хотим создать файлы конфигурации виртуального хоста. Файлы виртуального хоста определяют конфигурации различных сайтов, которые вы хотите разместить на одном сервере Apache. Они направляют запросы заданного доменного имени в конкретный каталог.
Файлы виртуального хоста хранятся в каталоге /etc/httpd/sites-available . Активированные файлы виртуального хоста связаны символическими ссылками с /etc/httpd/sites-available в каталог /etc/httpd/sites-enabled . Эти два каталога не создаются по умолчанию в CentOS, поэтому вам придется создать их самостоятельно. Введите следующую команду для создания каталогов:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Имея каталоги, укажите Apache искать виртуальные хосты в каталоге с включенными сайтами. Вы сделаете это, изменив основной файл конфигурации для Apache. Введите следующую команду, чтобы открыть файл в редакторе nano:
судо нано /etc/httpd/conf/httpd.conf
судо нано /etc/httpd/conf/httpd.conf |
Мы хотим добавить строку, которая будет указывать Apache искать дополнительные файлы конфигурации в необязательном каталоге. Прокрутите файл до конца и добавьте в конец следующую строку:
.
IncludeOptional sites-enabled/*.conf
IncludeOptional sites-enabled/*.conf |
Сохраните файл, нажав Ctrl O и нажмите ENTER . Теперь вы можете закрыть редактор, нажав Ctrl X . Следующим шагом является создание файла виртуального хоста в каталоге, доступном для сайтов. Введите следующую команду, чтобы создать и открыть новый файл в редакторе nano:
sudo nano /etc/httpd/sites-available/example. conf
sudo nano /etc/httpd/sites-available/example.conf |
В открывшемся файле добавьте следующий блок конфигурации. Не забудьте заменить наш example.com вашим фактическим доменным именем, и если вы использовали другое имя каталога в /var/www/example , также обновите его соответствующим образом:
<Виртуальный хост *:80>
Имя сервера www.example.com
Псевдоним сервера example.com
DocumentRoot /var/www/example
Журнал ошибок /var/www/example/log/error.log
CustomLog /var/www/example/log/requests.log вместе
Виртуальный хост>
1 2 3 4 5 6 7 | ServerName www.example.com Serveralias example.com DocumentRoot/var/www/Пример errorlog /var/ww/example/log/error.log customlog /var/example/log/error.log customlog /var/ww/example/log. log customlog /var/ww/example/log.log Customlog /var/ww/example/log.log . var/www/example/log/requests.log вместе взятые
|
Как видите, мы указали имя домена и корень документа, где будут находиться файлы, которые будут обслуживаться для этого домена. Мы также указали расположение журнала ошибок — это поможет вам при устранении неполадок сервера.
Как только наш файл виртуального хоста находится в каталоге с доступом к сайтам , следующим шагом будет включение файла путем создания символической ссылки на каталог с поддержкой сайтов . Введите следующую команду, чтобы создать символическую ссылку:
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Если вы выполнили шаги до этого момента, ваш виртуальный хост теперь должен быть готов обслуживать контент вашего веб-сайта. Однако есть еще одна проверка, которую необходимо настроить, прежде чем виртуальные хосты начнут работать. Мы рассмотрим это далее.
Шаг 5. Настройте разрешения SELinux для разрешения виртуальных хостов
Дистрибутивы Linux, включая Fedora, RHEL и CentOS, поставляются с SELinux по умолчанию. SELinux (Security Enhanced Linux) — это архитектура безопасности для систем Linux, которая ограничивает и определяет, как сервер должен обрабатывать запросы и как пользователи должны взаимодействовать с сокетами, сетевыми портами и важными каталогами.
По умолчанию SELinux будет работать с конфигурацией Apache по умолчанию. Однако с созданным вами настраиваемым виртуальным хостом, включая настраиваемый каталог журналов, при попытке перезапустить службу Apache будет выдана ошибка службы. Решение состоит в том, чтобы изменить политики SELinux, чтобы служба Apache могла записывать необходимые файлы.
SELinux делает CentOS высокозащищенным сервером. Таким образом, мы не рекомендуем отключать его полностью. Учитывая, что SELinux позволяет настраивать уровень безопасности различными способами, рекомендуется обновлять или устанавливать политики только в соответствии с потребностями вашей среды.
У вас есть два варианта обновления политик Apache: либо Универсально , либо для конкретного каталога . Обновление политик, специфичных для каталога, более безопасно. Следовательно, это рекомендуемый вариант.
Вы можете универсально изменить политику Apache, которая будет указывать SELinux одинаково обрабатывать все процессы Apache, используя логическое значение httpd_unified . Имейте в виду, что универсальное изменение политик Apache не даст вам такого же уровня контроля, как изменение каждого каталога определенным образом. Тем не менее, это более удобно, когда дело доходит до обслуживания. Выполните следующую команду для универсального обновления политик Apache:
.
sudo setsebool -P httpd_unified 1
sudo setsebool -P httpd_unified 1 |
Давайте определим, что делают значения в этой команде:
Если вам нужен больший контроль над каталогами, то настройка политик Apache для каждого каталога — правильный путь. Тем не менее, это связано с накладными расходами, требующими большего обслуживания. Это потому, что политика не является глобальной. Следовательно, вам нужно будет вручную установить тип контекста для любых новых каталогов журналов, которые вы укажете в файлах конфигурации вашего виртуального хоста.
Перед обновлением политики сначала проверьте тип контекста, который SELinux присвоил каталогу /var/www/example/log , используя следующую команду:
sudo ls -dZ /var/www/example/log/
sudo ls -dZ /var/www/example/log/ |
Команда выведет что-то вроде следующего, что в основном является контекстом каталога SELinux:
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t — это текущий контекст, сообщающий SELinux, что процессу Apache разрешено читать только файлы, созданные в этом каталоге. Поскольку из наших конфигураций виртуального хоста мы хотим, чтобы Apache писал в файлы журнала в каталоге /var/www/example/log , мы изменим эту политику, чтобы разрешить Apache создавать и добавлять файлы журнала веб-приложений. Контекст, который позволяет это сделать, — это httpd_log_t . Вот команда для обновления контекста:
sudo semanage fcontext -a -t httpd_log_t «/var/www/example/log(/.*)?»
sudo semanage fcontext -a -t httpd_log_t «/var/www/example/log(/.*)?» |
Чтобы применить изменения из приведенной выше команды и сохранить их при загрузке, выполните следующую команду:
sudo restorecon -R -v /var/www/example/log
sudo restorecon -R -v /var/www/example/log |
Давайте определим, что делает команда:
- restorecon — применяет изменения и обеспечивает их сохранение при перезагрузке.
- -R — запустит команду рекурсивно, обновив все существующие файлы для использования нового контекста.
- -v флаг — выводит изменения контекста после запуска команды. Он выведет что-то вроде этого:
Флаг
Выход:
restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0
Вывод: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
Чтобы просмотреть изменения контекста, вы можете снова запустить следующую команду:
sudo ls -dZ /var/www/example/log/
sudo ls -dZ /var/www/example/log/ |
Вы должны увидеть обновленный тип контекста в выводе:
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
После обновления политик каталогов SELinux, позволяющих Apache записывать в каталог журналов, мы теперь можем протестировать виртуальный хост.
Шаг 6. Проверка конфигурации виртуального хоста
Прежде чем мы сможем протестировать виртуальный хост, вам необходимо перезапустить службы Apache. Вот команда для этого:
sudo systemctl перезапустить httpd
sudo systemctl перезапустить httpd |
Затем выведите список содержимого каталога журнала с помощью следующей команды:
ls -lZ /var/www/example/log
ls -lZ /var/www/example/log |
Он должен отображать что-то вроде этого, показывая, что Apache создал файлы журнала:
Если вы выполняли шаги до этого момента, Apache должен теперь иметь возможность обслуживать образец HTML-страницы при посещении вашего доменного имени как определенный в вашем файле виртуального хоста. При желании вы можете повторить шаги 4 и 5, чтобы настроить дополнительные домены и соответствующим образом обновить их разрешения SELinux.
Заключение
В этом руководстве мы установили Apache, узнали, как обновить политики SELinux, чтобы позволить Apache записывать в пользовательские файлы журналов, и, наконец, протестировали нашу конфигурацию, чтобы убедиться, что она работает правильно. Используя этот фон, вы сможете использовать его и обслуживать более качественные приложения с более богатым опытом.
Если вы хотите изучить полный веб-стек, ознакомьтесь с нашим руководством по установке стека LAMP в CentOS 7.
Успехов в работе!
- О
- Последние новости
Об Акшае Нагпале
Аналитика больших данных и энтузиаст машинного обучения.
- Настройка CSS и HTML для вашего веб-сайта: учебное пособие — 28 октября 2022 г.
- Как импортировать пакеты в Go — 13 сентября 2022 г.
- Быстрые решения для восстановления поврежденных таблиц в MySQL: учебное пособие — 26 августа 2022 г.
- Написание пакетов в Go — 24 августа 2022 г.
- Введение в Helm: диспетчер пакетов для Kubernetes — 13 декабря 2021 г.
Подробное руководство по установке веб-сервера Apache на CentOS 7 | by Kinsey Parham
Вместе мы рассмотрим самый простой и эффективный способ установки веб-сервера Apache в дистрибутиве Linux CentOS 7. Если вы читаете это, вы, вероятно, уже знаете, что такое CentOS и Apache, но давайте быстро рассмотрим их вместе:
CentOS: CentOS — это дистрибутив Linux, который предоставляет бесплатный и открытый исходный код, поддерживаемый сообществом. вычислительная платформа, функционально совместимая с исходным кодом Red Hat Enterprise Linux. Впервые он был создан, потому что компания, создавшая Red Hat, перестала делать его бесплатным. Теперь многие люди работают с CentOS, и еще больше людей используют ее на своих компьютерах. Часто CentOS используется на серверах (компьютерах, которые предоставляют услуги людям или другим компьютерам), потому что она стабильна и ее можно установить за короткое время. . ( Источник )
Apache: “ Apache является наиболее широко используемым программным обеспечением веб-сервера. Apache, разработанная и поддерживаемая Apache Software Foundation, представляет собой бесплатное программное обеспечение с открытым исходным кодом. Он работает на 67% всех веб-серверов в мире. Это быстро, надежно и безопасно. Его можно настроить в соответствии с потребностями различных сред с помощью расширений и модулей. Большинство хостинг-провайдеров WordPress используют Apache в качестве программного обеспечения веб-сервера. Однако WordPress может работать и на другом программном обеспечении веб-сервера». ( Источник )
Прежде чем мы начнем, вам необходимо сделать следующее:
- Запустите терминал командной строки на своем устройстве и установите соединение с облачным сервером по SSH.
- Иметь доступ к учетной записи с привилегиями sudo.
- Наконец, вам понадобится сервер с установленной CentOS 7.
SSH с помощью следующей команды:
ssh user_name@host_ip_addres
- Команда ssh («безопасная оболочка») указывает системе установить зашифрованное безопасное соединение с хост-компьютером.
- user_name представляет учетную запись, доступ к которой осуществляется на хосте.
- хост относится к машине, которая может быть компьютером или маршрутизатором, к которому осуществляется доступ. Это может быть IP-адрес (например, 102.468.2.28) или доменное имя.
Прежде чем мы приступим к установке Apache, мы проверим CentOS 7 на предмет возможных необходимых обновлений. Почему мы это делаем? Обновление — это профилактическое обслуживание, необходимое для обеспечения актуальности, стабильности и защиты компьютеров от вредоносных программ и других потенциальных угроз безопасности.
Проверьте доступные обновления CentOS 7 с помощью следующей команды:
sudo yum update
Система отобразит список доступных обновлений, включая основные обновления операционной системы. Просмотрите их, чтобы убедиться, что все в порядке. Система должна предоставить вам список пакетов для загрузки, а также необходимое место на диске.
Примечание. Это может занять несколько минут, так что подогрейте кофе и перекусите!
Необязательно:
Проверка текущей версии CentOS :
Чтобы проверить текущую версию CentOS 7, введите команду в терминал. Как видно из изображения терминала ниже, 7.9.2009x работает на веб-сервере.
Проверьте текущую версию CentOS с помощью следующей команды:
cat /etc/redhat-release
Firewalld установлен по умолчанию в некоторых дистрибутивах Linux, хотя может потребоваться установить брандмауэр самостоятельно.
Установите firewalld с помощью следующей команды:
sudo yum install firewalld
Обратите внимание, что мы закончили!
После того, как мы установили firewalld, мы включим службу и перезагрузим наш сервер. Имейте в виду, что включение firewalld приведет к запуску службы при загрузке.
Включите firewalld с помощью следующей команды:
sudo systemctl enable firewalld
После этого выполните быструю перезагрузку сервера.
Начальный брандмауэр со следующей командой:
Systemctl Start Firwalld
Systemctl Systemctl Systemctl Systemctl Systemctl. 80) с помощью следующей команды:
sudo firewall-cmd --permanent --add-service=http
Включите службу http (порт 443) firewalld с помощью следующей команды:
sudo firewall-cmd --permanent --add-service=https
Наконец, мы должны перезагрузить firewalld, чтобы изменения вступили в силу.
Перезагрузите firewalld следующей командой:
sudo firewall-cmd — перезагрузите
Наконец-то! Момент, которого мы все ждали!
Поскольку Apache доступен в программном обеспечении CentOS 7 по умолчанию, мы можем легко установить Apache с помощью команды диспетчера пакетов yum.
Установите Apache с помощью следующей команды:
sudo yum install httpd
Обратите внимание на «Завершено» внизу
Точно так же, как мы начали и проверили состояние нашего брандмауэра, нам нужно будет сделать то же самое с Apache.
Включите Apache вручную с помощью следующей команды:
sudo systemctl start httpd
Проверьте статус Apache с помощью следующей команды:
9083l http status 9 sudo system0831 Состояние уведомления «активно» и работает
Веб-сервер Apache теперь работает!
Давайте проверим нашу веб-страницу, собрав общедоступный IP-адрес.