| Apache2. Виртуальные хосты (несколько сайтов на одном IP) | 
Обновлено: 28.03.2024 - 18:51
Установка нескольких сайтов на веб-сервер Apache2, редирект с IP-адреса сервера на домен чтобы посетитель не зашел в корневой каталог сервера, редирект с www на "без www", доступ Apache к директории с правами 755 и закрытие доступа к PHPmyadmin.
Установка нескольких сайтов на веб-сервер Apache2.
При загрузке, Apache может выдать такое предупреждение:
[....] Stopping web server: apache2apache2: apr_sockaddr_info_get() failed for debian
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ ok waiting .
root@debian:/# /etc/init.d/apache2 start
[....] Starting web server: apache2apache2: apr_sockaddr_info_get() failed for debian
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
. ok
Сайт работать будет, но лучше исправить ошибку чтобы не мешало.
Это значит что Apache не знает свое серверное имя, укажем его командой
echo ServerName localhost | sudo tee -a /etc/apache2/conf.d/vhosts.conf или
echo ServerName localhost | sudo tee -a /etc/apache2/apache2.conf
Настраиваем виртуальные узлы (сайты) и mod_rewrite
nano /etc/apache2/sites-available/
<VirtualHost *:80>
ServerName test.ru
ServerAlias www.test.ru
DocumentRoot "/home/user/www/test.ru"
<Directory "/home/user/www/test.ru">
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
Order Allow,Deny
Allow from all
Deny from none
</Directory>
</VirtualHost>
Делаем в ../sites-enabled ссылку на /etc/apache2/sites-available/test.ru.conf:
a2ensite test.ru
включаем модуль rewrite, если он не включен:
a2enmod rewrite
Создаём сайт в каталоге /home/user/www/test.ru
и даём ему необходимые права доступа
Перезагружаем apache2:
/etc/init.d/apache2 reload
Настройка SSL HTTPS
Включаем поддержку SSL в Apache2:
a2enmod ssl
Устанавливать бесплатный SSL-сертификат от LetsEncrypt проще ихней программой certbot, доступной в репозиториях. После установки сертификатов нужно привести файл /etc/apache2/sites-available/test.ru.conf к следующему виду:
ServerName test.ru
ServerAlias www.test.ru
DocumentRoot "/home/yura/www/test.ru"
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
Order Allow,Deny
Allow from all
Deny from none
#Редирект с www на https://www.
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.test.ru [OR]
RewriteCond %{SERVER_NAME} =test.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ServerName test.ru
ServerAlias www.test.ru
DocumentRoot "/home/yura/www/test.ru"
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
Order Allow,Deny
Allow from all
Deny from none
SSLCertificateFile /etc/letsencrypt/live/test.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.ru/privkey.pem
Перезагружаем Apache2 и радуемся результату.
Редирект с IP-адреса сервера на домен
В файле /etc/apache2/sites-available/000-default.conf
нужно после
<Directory "/var/www/">и перед
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
добавить:
Redirect / https://site.com
и перезагрузить сервер:
service apache2 restart
Но есть два нюанса:
1. Если вы запускаете Apache в chroot, нужно примонтировать proc и sysfs, игаче при заходе на сайт, apache перейдёт не на /var/ww/site.com а на /var/www
mount /proc chroot/proc -t proc
mount /sys chroot/sys -t sysfs
Иначе Apache не сможет нормально перезагружаться, будет ошибка [FAIL] Restarting web server: apache2 failed.
Редирект с www.site.com на site.com
nano /var/www/site.ru/.htaccessRewriteEngine On
#RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.libreimg\.com$ [NC]
RewriteRule ^(.*)$ https:// /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=35]
Редирект на https и с www одновременно
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
Редирект на https и с www одновременно
############################################################################
#### Выбор основного зеркала (с www или без www) ####
############################################################################
# 1. Удалить www
RewriteCond %{ENV:HTTPS} on
#Если включен https
RewriteRule .* - [E=SSL:s]
#То создаем переменную ssl с текстом s
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
# Проверяем, содержит ли домен www в начале URL.
RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
# Перенаправляем удаляем www
# 2. Добавить www
#RewriteCond %{ENV:HTTPS} on
#Если включен https
#RewriteRule .* - [E=SSL:s]
#То создаем переменную ssl с текстом s
#RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
# Если нет www в начале домена
#RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
#Подставляем www и https если он включен.
############################################################################
#### Перенаправляем протокол https на http #### https://qna.habr.com/q/461989
############################################################################
#RewriteCond %{ENV:HTTPS} on
# Проверяем наличие https в URL.
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Перенаправляем протокол на http.
############################################################################
#### Перенаправляем протокол http на https ####
############################################################################
#RewriteCond %{ENV:HTTPS} !on
# Проверяем наличие https в URL.
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Перенаправляем протокол на http.
Редирект с с index.php на главную
.RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
RewriteRule ^index\.php$ https://site.ru/ [R=301,L]
Настройка DNS-записей
Доступ Apache к директории с правами 755
cd /var/www/chmod -R 755 .
chown -R www-data:www-data .
Закрытие доступа к PHPmyadmin
Зайдя на /phpmyadmin любопытный посетитель увидит вход в PHPmyadmin. Зачем ему это видеть ?Чтобы в PHPmyadmin можно было зайти по адресу сервера, в /etc/apache2/conf.d/phpmyadmin.conf включен файл настроек phpmyadmin:
Include /etc/phpmyadmin/apache.conf
Откроем это файл и изменим строку Alias /phpmyadmin /usr/share/phpmyadmin на Alias /dfadafdy7qjl0dfan5aln1lanltian /usr/share/phpmyadmin
Такой адрес сложно угадать, но чтобы вообще закрыть доступ к PHPmyadmin можно поставить знак # перед Alias.
Решения некоторых проблем
Apache2
При перезапуске Apache показывает ошибку и выключается:
/etc/init.d/apache2 restart
[....] Restarting web server: apache2httpd (pid 21825) already running
. ok
Если повторно ввести команду /etc/init.d/apache2 restart, apache2 выводит сообщение о успешном перезапуске и работает.
[ ok ] Restarting web server: apache2.
В /var/log/apache2/error.log написано:
[Sat Apr 19 18:14:19 2014] [notice] caught SIGTERM, shutting down
[Sat Apr 19 18:14:22 2014] [notice] Apache/2.2.22 (Debian) configured -- resuming normal operations
Если вы работаете в chroot, нужно добавить имя своего компьютера из файла /etc/hosts в /etc/hosts из chroot, иначе будет ошибка "Name or service not known: AH01564: unable to find IPv4 address of" в логах Apache
Возможные ошибки при запуске Apache:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
или
AH00526: Syntax error on line 84 of /etc/apache2/apache2.conf:
Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration
Решение:
source /etc/apache2/envvars
/usr/sbin/apache2 -V
Mariadb (ранее Mysql)
/etc/init.d/mariadb restart
df: Warning: cannot read table of mounted file systems: No such file or directory
1. Измените владельца папки /var/lock/apache2 на www-data:
cd /var/lock/apache2
chown www-data -R .
2. Если работаете в chroot, добавьте /etc/fstab и /etc/mtab:
/etc/mtab:
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=10240k,nr_inodes=62128,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=50896k,mode=755 0 0
/dev/disk/by-label/DOROOT / ext4 rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /run/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=101780k 0 0
/proc /home/chroot/proc proc rw,relatime 0 0
/sys /home/chroot/sys sysfs rw,relatime 0 0
udev /home/chroot/dev devtmpfs rw,relatime,size=10240k,nr_inodes=62128,mode=755 0 0
/etc/fstab
LABEL=DOROOT / ext4 errors=remount-ro 0 1
Импорт дампа большого объёма
Заходим в папку с файлом дапма и в командной строке последовательно выполняем:
mysql -p -u base_login
use bdname.sql
set names cp1251;
source bd.sql
ROOT через PhpMyadmin.
Ради безопасности возможность входит в root через PhpMyadmin убрали. Что бы решить эту проблему есть несколько решений, самый простой и безопасный создать нового пользователя с привилегиями root.
mysql -u root
CREATE USER 'test'@'localhost' IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';
FLUSH PRIVILEGES;
exit
Блокировка ботов по User Agent:
Раскрыть
SetEnvIfNoCase User-Agent "(?:Accoona|antabot|Ask Jeeves/Teoma|Baiduspider|Bigmir|China|curl/|Dolphin|Download|EltaIndexer|Email|FlashGet|GameSpy|Gigabot|grub|Gulper Web|ia_archiver|liveinternet|Meta|Mihalism|OmniExplorer|Pagebull|Scooter|Twiceler|Validator|WebAlta|Wget|WordPress|Download Wonder|dragonfly|Drip|eCatch|EasyDL|ebingbong|EirGrabber|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|Express WebPictures|Extractor|EyeNetIE|Foobot|flunky|FrontPage|Go-Ahead-Got-It|gotit|GrabNet|Grafula|Harvest|hloader|HMView|HTTrack|humanlinks|IlseBot|Image Stripper|Image Sucker|Indy Library|InfoNavibot|InfoTekies|Intelliseek|InterGET|Internet Ninja|Iria|Jakarta|JennyBot|JetCar|JOC|JustView|Jyxobot|Kenjin.Spider|Keyword.Density|larbin|LexiBot|lftp|libWebclsHTTP|likse|LinkextractorPro|LinkScan8.1a.Unix|LNSpiderguy|LinkWalker|lwp-trivial|Unknown|Magnet|Mag-Net|MarkWatch|'Mass Downloader'|Mata.Hari|Memo|Microsoft.URL|Microsoft URLControl|MIDown tool|MIIxpc|Missigua Locator|Mister PiX|moget|NAMEPROTECT|Navroad|NearSite|NetAnts|Netcraft|NetMechanic|NetSpider|Net Vampire|NetZIP|NextGenSearchBot|NG|NICErsPRO|niki-bot|NimbleCrawler|Ninja|NPbot|Octopus|Offline Explorer|Offline Navigator|Openfind|OutfoxBot|PageGrabber|cosmos|pavuk|pcBrowser|PHP version tracker|WebZIP|ProPowerBot/2.14|ProWebWalker|psbot|Pump|QueryN.Metasearch|RealDownload|Reaper|Recorder|ReGet|RepoMonkey|RMA|Siphon|SiteSnagger|SlySearch|SmartDownload|Snake|Snapbot|Snoopy|sogou|SpaceBison|SpankBot|spanner|Sqworm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|suzuran|Szukacz/1.4|tAkeOut|Teleport|Telesoft|TurnitinBot/1.5|The.Intraformant|TheNomad|TightTwatBot|Titan|True_bot|Website Quester|Webster|WebStripper|WebWhacker|WebZIP|Whacker|Widow|WISENutbot|WWWOFFLE|WWW-Collector-E|Xaldon|Xenu|Zeus|ZmEu|Zyborg|Acunetix|cosmos|URLy.Warning|Vacuum|VCI|VoidEYE|Web Image Collector|Web Sucker|WebAuto|WebBandit|Webclipping.com|WebCopier|WebEnhancer|WebFetch|WebGo IS|Web.Image.Collector|WebLeacher|WebmasterWorldForumBot|WebReaper|FHscan|Widow|Polite Nutch|AhrefsBot|MJ12bot|rogerBot|MegaIndex|bingbot|archive.org_bot|BLEXBot|LinkpadBot|spbot|Serpstatbot|.*rogerbot.*|.*exabot.*|.*mj12bot.*|.*dotbot.*|.*gigabot.*|.*ahrefsbot.*|.*sitebot.*|.*semrushbot.*|.*ia_archiver.*|.*searchmetricsbot.*|.*seokicks-robot.*|.*sistrix.*|.*lipperhey spider.*|.*ncbot.*|.*backlinkcrawler.*|.*archive.org_bot.*|.*meanpathbot.*|.*pagesinventory.*|.*aboundexbot.*|.*spbot.*|.*linkdexbot.*|.*nutch.*|.*blexbot.*|.*ezooms.*|.*scoutjet.*|.*majestic-12.*|.*majestic-seo.*|.*dsearch.*|.*blekkobo.*).*$" bad
# Deny from env=bad
# Блокировка IP-адресов AfriNIC, APNIC, LACNIC:
SetEnvIf Remote_Addr ^(?:[346-9]|1[1-35-9]|2[0-25689]|3[02-58]|4[04578]|5[1-7]|21[45])\..*$ bad
# AfriNIC:
SetEnvIf Remote_Addr ^(?:41|102|105|197)\..*$ bad
# APNIC:
SetEnvIf Remote_Addr ^(?:1|14|27|3[69]|4[239]|5[89]|6[01]|1(?:0[136]|1[0-9]|2[0-6]|33|75|8[023])|2(?:0[23]|1[0189]|2[0-3]))\..*$ bad
# LACNIC:
SetEnvIf Remote_Addr ^(?:1(?:7[79]|8[1679]|9[01])|20[01])\..*$ bad
# Запрет для бота Dolphin:
SetEnvIf Remote_Addr ^94\.127\.14[45]\..*$ bad
SetEnvIf Referer ^https?://(?:.+\.)?amazing\.ru/.*$ bad
SetEnvIf Remote_Addr ^213\.189\.197\.7$ bad
# Ограничение длины URL:
SetEnvIf Request_URI ^.{242,}$ bad
# Маска для разрешенных URL — без учета параметров запроса, ограничить которые можно с помощью модуля mod_rewrite, например:
SetEnvIf Request_URI ^/(?:[-/_0-9a-z]{0,236}(?:/|\.[a-z]{2,4}|[0-9a-z]))?$ good
Deny from env=bad
Настройка mod_security2: https://freehost.com.ua/ukr/faq/articles/kak-nastroit-modsecurity-s-apache-v-debian--ubuntu/
------------------------
Восстановление сайтов из Вебархива
Размещение по доскам объявлений России
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Компьютерные советы
| Комментарии | 


 Финансы
 Финансы 
 Планирование
 Планирование  Офисные пакеты
 Офисные пакеты  Наука и производство
 Наука и производство  Математика
 Математика  Общество
 Общество  Религии
 Религии  Образование
 Образование  Программирование
 Программирование  Сеть
 Сеть  Безопасность
 Безопасность  Администрирование
 Администрирование Игры
 Игры  Рабочий стол
 Рабочий стол  Компьютерные советы
 Компьютерные советы Другие темы
 Другие темы Добавить статью
 Добавить статью Контакты и Отказ от ответственности
 Контакты и Отказ от ответственности О нас
 О нас 
  Просмотров: 28339
 Просмотров: 28339        Комментарии:
 Комментарии:      
 Добавлен: 16 февраля 2014
 Добавлен: 16 февраля 2014