apache lynx gnome ss a2ensite apache2
Алгоритм настройки
- Установка
- Разрешение доступа к каталогу с файлами сайта на уровне службы
- Добавление Virtual Host
- Создание каталога и файлов сайта
- Настройка доступа к файлу на уровне файловой системы
- Настройка firewalld и selinux
- Запуск службы веб-сервера и добавление её в автозапуск
Настройка
Установка
apt install apache2 -yПубликация своего сайта 1. Просто сайт
- Создать каталог и файл нашего сайта.
cd /var/www/
mkdir site1
echo "<h1> hello! </h1>" > site1/index.html- Создайте файл конфигурации виртуального хоста в каталоге: /etc/apache2/sites-available/
cd /etc/apache2/sites-available/
# Скопируем стандартный файл:
# Обязательно используйте расширение .conf!!!
cp 000-default.conf mySites.conf- Теперь изменим его настройку, внеся следующие параметры:
<VirtualHost *:80> # Сайт будет работать на стандартном порту HTTP
#для всех адресов: `*:80`
ServerName vm.local # Название сайта domain-name
DocumentRoot /var/www/site1 # расположение каталога сайта
#остальное не трогать
</VirtualHost>- Для того что б применить настройки необходимо добавить новый конфиг в каталог sites-enabled и перезагрузить службу: (Копировать файл не нужно!)
# Команда создаст символическую ссылку на наш файл конфигурации
# в каталоге sites-enabled
# За счет такого подхода мы можем удалять ссылки из sites-enabled
# если он нам не нужен, а оригинальный конфиг использовать
# снова, когда он нам понадобится
a2ensite mySites.conf
# После выполнения a2ensite он сам вам сообщит что нужно
# перезагрузить службу
systemctl reload apache2- Создать доменное имя для сайта
- Через DNS
- Или, делаем для теста на на самом сервере поправим файл /etc/hosts:
172.16.9.130 vm.local
Проверить сайт -> Проверка файлов Если был изменен /etc/hosts производить проверку нужно !!! Не удаленно !!!
Публикация своего сайта 2. Не стандартный порт
-
Создайте еще один сайт в файле:
www.conf, со следующими параметрами:-
Адрес порта: 8080
-
Имя сайта:
www.vm.local- Сразу добавьте запись в hosts
-
Каталог сайта должен располагаться по пути: /var/www/www
- Создайте
index.htmlи допишите туда некоторое сообщение
- Создайте
-
-
Добавьте порт 8080 в список прослушиваемых:
- В файл /etc/apache2/ports.conf допишите строку: Listen 8080
-
Сделайте сайт активным (a2ensite)
- Перезагрузите службу
-
Выполните команду: ss -ntulp
- Найдите порт 8080
-
Откройте сайт:
lynx http://www.vm.local:8080
Изменения каталог хранения сайтов
Изначально все файлы хранятся в /var/www
В конфигурационном файле апача, /etc/apache2/apache2.conf дописать:
<Directory /data/sites/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>Перенаправление запросов
- Зачастую необходимо произвести перенаправление запроса с одного порта на другой порт, а может и другой сервер.
- Предположим, что наш сайт
www.vm.local:8080больше не используется, и вместо него мы подняли простоvm.local, но многие по старой памяти еще заходят на него. Попробуем перенаправить запросы с этого сайта на сайт:vm.localна стандартном порту:- Откройте файл с VirtualHost сайта
www.vm.local - Закомментируйте строку с параметром:
DocumentRoot - Добавьте команду о перенаправлении на
vm.local:
- Откройте файл с VirtualHost сайта
# DocumentRoot /var/www/www
Redirect permanent / http://vm.local # / - страрое местонахождение- Перенаправление с http на https
# Блок для перенаправления с http на https
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent / https://mysite.example.com/
</VirtualHost>
# Основной сайт
<VirtualHost _default_:443>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>- Перезагрузите службу
service apache2 restart- Откройте снова сайт:
lynx http://www.vm.local:8080- Вы должны получить вывод сайта
vm.local
- Вы должны получить вывод сайта
Конфигурация
Сайт пытается вывести Index.html, если не может выводит main.html Если обратиться к /whoami то выводит whoami.html Если файлов нету вывести 404.html
<VirtualHost *:80>
ServerName www.dmz.ws.kz
DocumentRoot /var/www/site/
DirectoryIndex index.html main.html
ErrorDocument 404 /404.html
<Directory "/var/www/site/whoami">
DirectoryIndex whoami.html
</Directory>
</VirtualHost>Настройка HTTPS
Алгоритм настройки
-
Включить модуль ssl в службе веб-сервера
-
Создать VirtualHost описывающий сайт по HTTPS, отличия от VirtualHost для HTTP:
- Порт 443
- Включение SSL
- Пути до сертификата и закрытого ключа
-
Положить сертификат и ключ, по путям указанным в VirtualHost
-
Создать
Включение модуля mod_ssl
a2enmod ssl
systemctl reload apache2Указание порта и сертификатов
<VirtualHost *:443>
DocumentRoot /var/www/html/magento
ServerName secure.itmanx.com
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/secure.itmanx.com/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/secure.itmanx.com/server.key
</VirtualHost>-
*:443- указываем порт HTTPS -
SSLEngine on- включаем ssl на порту -
SSLCertificateFileиSSLCertificateKeyFile- пути к сертификату и закрытому ключу
Запретить доступ с определенного ip
--> vi /etc/apache2/apache2.conf
===================================
<Directory /var/www/>
...
AllowOverride ALL # Меняем на ALL
...
</Directory>
===================================
--> vi /var/www/site/admin/.htaccess
===================================
<RequireALL>
Require all granted
Require not ip 10.22.10.0/24
Require not ip 2001:db8:a2:10::0/64
<RequireALL>
===================================
# <RequireALL> группа
# Require all granted - че делать с отсальными
# Require not ip - запретить ip. Require ip - же разрешить
# Также можно в /etc/apache2/sites-enabled/
--> vi /etc/apache2/sites-enabled/site.conf
===================================
...
<Location /admin> # Или <directory> или <LocationMatch>
<RequireALL>
Require all granted
Require not ip 10.22.10.0/24
Require not ip 2001:db8:a2:10::0/64
<RequireALL>
</Location>
...
===================================proxy
a2enmod proxy
a2enmod proxy_http
--> vi /etc/apache2/sites-enabled/site.conf
===================================
...
ServerName proxy.remote
<Location />
ProxyPass http://test.proxy.remote:8080/
</Location>
<Location /healthz>
ProxyPass http://test.proxy.remote:8080/healthz/
</Location>
...
===================================apache2 аутенфикация по сертификатам
Сервер
# vi site .conf
SSLCACertificateFile /ca/ca.crt # с кем проверять
SSLVerifyClient require # делать проверку клиентский сертификатов
SSLVerifyDepth 10 # уровень доверенности (проверяет насколько глубокго был подписан сертификат) Клиент
# Преобразовать в pksc12 формат
openssl pkcs12 -export -out MyClientCert1.pfx -inkey MyClientCert1.key -in MyClientCert1.crt
# в графике
в браузере добавить сертификат устройства Проверка сайта
Консольный WEB браузер
apt install lynx -yПри выполнении команды откроется что-то типо редактора. Снизу подсказка к управлению
lynx http://172.16.9.130
Apache2 Debian Default Page: It works (p1 of 2)
Debian Logo Apache2 Debian Default Page
It works!
# И еще много строкГрафический WEB браузер
gnome Для этого нужно установить графическую оболочку например GNOME, далее проверка происходит в браузере.
Конфигурационные файлы
vi /etc/apache2/sites-enabled/000-default.conf
# * - указывает на то что данный хост предназначен для
# соединений на всех адресах
# :80 - номер порта, на котором нужно ожидать запросы для этого сайта
<VirtualHost *:80>
# Доменное имя сайта
# В случае с сайтом по умолчанию этот параметр не используется
# ServerName www.example.com
# Почтовый адрес администратора сайта, который будет включен
# в сообщения об ошибках отправляемых клиентам
ServerAdmin webmaster@localhost
# Путь до каталога с файлами сайта
DocumentRoot /var/www/html
# Определение степени подробности логов
# Подробнее: https://httpd.apache.org/docs/2.4/mod/core.html#loglevel
LogLevel info
# Путь до каталога содержащего информацию об ошибках
ErrorLog ${APACHE_LOG_DIR}/error.log
# Путь до каталога хранящего информацию об запросах к сайту
CustomLog ${APACHE_LOG_DIR}/access.log combined
# / - это старое место
# http://vm.local - новое место
# permanent - означает постоянная, если убрать будет временная
# Redirect - перенаправление
Redirect permanent / http://vm.local
# ErrotDocument <код ошибки> <действие отностительно DocumentRoot>
ErrorDocument 404 /404.html
# DirectoryIndex <file1> <file2> ...
# Будет пытаться подать file1, иначе file2 и т.д.
DirectoryIndex index.html main.html
# При обращении к /whoami вывести whoami.html из /var/www/site/whoami/
<Directory "/var/www/site/whoami">
DirectoryIndex whoami.html
</Directory>
</VirtualHost>