Apache2. Виртуальные хосты (несколько сайтов на одном IP) |
Автор: admin Просмотров: 28068 Комментарии:
Добавлен: 16 февраля 2014
Обновлено: 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 сайты
Категория: Компьютерные советы
Комментарии |