apache lynx gnome ss a2ensite apache2

Алгоритм настройки

  1. Установка
  2. Разрешение доступа к каталогу с файлами сайта на уровне службы
  3. Добавление Virtual Host
  4. Создание каталога и файлов сайта
    1. Настройка доступа к файлу на уровне файловой системы
  5. Настройка firewalld и selinux
  6. Запуск службы веб-сервера и добавление её в автозапуск

Настройка

Установка

apt install apache2 -y

Публикация своего сайта 1. Просто сайт

  1. Создать каталог и файл нашего сайта.
cd /var/www/
mkdir site1
echo "<h1> hello! </h1>" > site1/index.html
  1. Создайте файл конфигурации виртуального хоста в каталоге: /etc/apache2/sites-available/
cd /etc/apache2/sites-available/
 
# Скопируем стандартный файл:
 
# Обязательно используйте расширение .conf!!!
cp 000-default.conf mySites.conf
  1. Теперь изменим его настройку, внеся следующие параметры:
<VirtualHost *:80> # Сайт будет работать на стандартном порту HTTP
                   #для всех адресов: `*:80`
                   
        ServerName vm.local   # Название сайта domain-name
 
        DocumentRoot /var/www/site1 # расположение каталога сайта
        
        #остальное не трогать 
</VirtualHost>
  1. Для того что б применить настройки необходимо добавить новый конфиг в каталог sites-enabled и перезагрузить службу: (Копировать файл не нужно!)
# Команда создаст символическую ссылку на наш файл конфигурации
# в каталоге sites-enabled
# За счет такого подхода мы можем удалять ссылки из sites-enabled
# если он нам не нужен, а оригинальный конфиг использовать 
# снова, когда он нам понадобится 
a2ensite mySites.conf
 
# После выполнения a2ensite он сам вам сообщит что нужно 
# перезагрузить службу
systemctl reload apache2
  1. Создать доменное имя для сайта
    1. Через DNS
    2. Или, делаем для теста на на самом сервере поправим файл /etc/hosts:
172.16.9.130    vm.local

Проверить сайт -> Проверка файлов Если был изменен /etc/hosts производить проверку нужно !!! Не удаленно !!!

Публикация своего сайта 2. Не стандартный порт

a2ensite ss

  1. Создайте еще один сайт в файле: www.conf, со следующими параметрами:

    1. Адрес порта: 8080

    2. Имя сайта: www.vm.local

      1. Сразу добавьте запись в hosts
    3. Каталог сайта должен располагаться по пути: /var/www/www

      1. Создайте index.html и допишите туда некоторое сообщение
  2. Добавьте порт 8080 в список прослушиваемых:

    1. В файл /etc/apache2/ports.conf допишите строку: Listen 8080
  3. Сделайте сайт активным (a2ensite)

    1. Перезагрузите службу
  4. Выполните команду: ss -ntulp

    1. Найдите порт 8080
  5. Откройте сайт: lynx http://www.vm.local:8080

Изменения каталог хранения сайтов

Изначально все файлы хранятся в /var/www

В конфигурационном файле апача, /etc/apache2/apache2.conf дописать:

<Directory /data/sites/>
 
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
 
</Directory>

Перенаправление запросов

lynx

  1. Зачастую необходимо произвести перенаправление запроса с одного порта на другой порт, а может и другой сервер.
  2. Предположим, что наш сайт www.vm.local:8080 больше не используется, и вместо него мы подняли просто vm.local , но многие по старой памяти еще заходят на него. Попробуем перенаправить запросы с этого сайта на сайт: vm.local на стандартном порту:
    1. Откройте файл с VirtualHost сайта www.vm.local
    2. Закомментируйте строку с параметром: DocumentRoot
    3. Добавьте команду о перенаправлении на vm.local:
# DocumentRoot /var/www/www
Redirect permanent / http://vm.local # / - страрое местонахождение
  1. Перенаправление с 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>
  1. Перезагрузите службу
service apache2 restart
  1. Откройте снова сайт: lynx http://www.vm.local:8080
    1. Вы должны получить вывод сайта 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

Алгоритм настройки

  1. Включить модуль ssl в службе веб-сервера

  2. Создать VirtualHost описывающий сайт по HTTPS, отличия от VirtualHost для HTTP:

    1. Порт 443
    2. Включение SSL
    3. Пути до сертификата и закрытого ключа
  3. Положить сертификат и ключ, по путям указанным в VirtualHost

  4. Создать

Включение модуля 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 браузер

lynx

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>