Собственный хостинг: ispconfig3 apache2-nginx на debian (8часть)
Как ни странно, мануал по подключению ispconfig3 и бэк фронт технологии в интернете имеется, но он настолько кривой, что в реальной жизни их использовать просто технически не возможно. Поскольку у вас отвалятся webmail phpmyadmin и будут серьезные проблемы с сайтами c www и без них. Особенно с теми сайтами у кого есть www. Буржуйский форум также разводит руками. Посему пришлось брать все в свои руки и писать все самому.
Мало того, появилась еще одна статья по этому поводу, но в ней решение другим способом.
Для начала заменим все 80 порты на 82, по хорошему пройдите поменяйте руками все внимательно.
Обратите внимание что в 8080 и т. д. не должно появиться ничего вроде 8280 =-O
sed -ie 's/:80>/:82>/g' /etc/apache2/sites-available/*.vhost
sed -ie 's/:80>/:82>/g' /etc/apache2/sites-available/defaultВ моем случае еще пришлось поправить следующий файл /etc/apache2/ports.cong
Рекомендую все же пройти по всем каталогам и проверить точность выставленных настроек руками.
Проверяем все настройки смотрим чтоб все везде было ровно.
Перезапускаем:
/etc/init.d/apache2 restart
Добавляем 82 порт на внешку, дабы мы могли запускать сайты и с apache и с nginx — это очень удобно при разработке сайтов и отладке сервера. Порт не индексируется поисковыми системами.
Проверяем:
netstat -tunap | grep apache2
tcp6 0 0 :::8080 :::* LISTEN 3044/apache2 tcp6 0 0 :::8081 :::* LISTEN 3044/apache2 tcp6 0 0 :::82 :::* LISTEN 3044/apache2 tcp6 0 0 :::443 :::* LISTEN 3044/apache2
Теперь проверяем http://ваш_сайт.ru:82 должен появиться сайт.
Переходим к настройки шаблонов ispconfig3, для этого отредактируем пару файлов и изменим в них 80 порт на 82.
Заходим в настройки:
cd /usr/local/ispconfig/server/
Создаем кастомизацию:
cp conf/apache_ispconfig.conf.master conf-custom/
cp conf/vhost.conf.master conf-custom/
vim /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.masterНаходим строку и заменяем ее на вот такую. Я бы конечно поспорил с таким топорным способом. Но работает:-[
NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"}
Заменяем на:
NameVirtualHost {tmpl_var name="ip_address«}:82
vim /usr/local/ispconfig/server/conf-custom/vhost.conf.master<VirtualHost {tmpl_var name=’ip_address’}:{tmpl_var name=’port’}>
Меняем:
<VirtualHost {tmpl_var name=’ip_address’}:82>
Внимательно внесите изменения в данном случае после :82
«>» тоже нужна, иначе у вас VirtualHost не будет закрыт.
Далее добавляем еще libapache2-mod-rpaf иначе в логах апача будут только 127.0.0.1
apt-get install libapache2-mod-rpaf
Добавляем директивы в апач:
echo RPAFsethostname On >> /etc/apache2/apache2.conf
echo RPAFproxy_ips127.0.0.1 ВАШ_АЙПИ >> /etc/apache2/apache2.conf
Установка NGINX
apt-get install nginx
Удаляем дефолтный конфиг:
rm /etc/nginx/sites-available/default
Вписываем свой конфиг:
vim /etc/nginx/sites-available/default
server { listen 80 default; server_name _; server_name_in_redirect off; resolver127.0.0.1 ; access_log /var/log/ispconfig/httpd/$host/access.log; location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ { # пусть до файлов по умолчанию root /var/www/$host/web; # если в $host содержится ввв то он его удаляет в противном случае пусть будет /var/www/www.site.ru #----------------------------------- if ($host ~* ^(www\.)(.+)) { set $HBW $2; root /var/www/$HBW/web; } #----------------------------------- access_log off; expires 30d; } #------------------------------------ #ml htm пришлось вынести в отдельный локейшен site.ru/content.html может вообще не существовать, и если с site.ru/content все сработает правильно то html внесен в отдельный локейшен явно указывается им путь, при 404 приходится отправлять его на index.php в таком случае если файла локально нет мы уходим в движок сайта и спрашиваем у него страницу с таким адресом. location ~* ^.+\.(htm|html)$ { # данная директива при отсутствие файла try_files $uri /index.php; # пусть до файлов по умолчанию root /var/www/$host/web; # если в $host содержится ввв то он его удаляет в противном случае пусть будет /var/www/www.site.ru if ($host ~* ^(www\.)(.+)) { set $HBW $2; root /var/www/$HBW/web; } ################################################### access_log off; expires 30d; } ##------------------------------------ location / { #if (!-e $request_filename){ # rewrite ^/(.+) /index.php/$1 break; # } ################################################### # пусть до файлов по умолчанию root /var/www/$host/web; # если в $host содержится ввв то он его удаляет if ($host ~* ^(www\.)(.+)) { set $HBW $2; root /var/www/$HBW/web; } ################################################### index index.html index.htm index.php; access_log off; proxy_pass http://$host:82; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #server { # server_name petr.klondikegame.ru; # access_log /var/log/ispconfig/httpd/$host/access.log; # # location / { # root /var/www/klondikegame.ru/web/petr; # index index.php index.html; # } #} #################################################### # Настройки для phpmyadmin location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; proxy_pass http://$host:82; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } #Конец phpmyadmin ##################################################### # Настройки для WEBMAIL location /webmail { root /var/www/; index index.php index.html index.htm; location ~ ^/webmail/(.+\.php)$ { try_files $uri =404; root /war/www/webmail; proxy_pass http://127.0.0.1 :82; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host127.0.0.1 :82/webmail; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* ^/webmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /var/www/webmail/webmail; } } location /WebMail { rewrite ^/* $host:82/webmail last; } #Конец webmail ##################################################### #---------------AWSTATS location ^~ /awstats-icon { alias /usr/share/awstats/icon/; access_log off; } location ^~ /awstatscss { alias /usr/share/doc/awstats/examples/css/; access_log off; } location ^~ /awstatsclasses { alias /usr/share/doc/awstats/examples/classes/; access_log off; } #---------------AVSTATS-END } # Закрывает server !!!
Еще один из вариант, исправить хост на локалхост.
proxy_pass http://$127.0.0.1:82;
Обратите внимание, данный конфиг написан мной и имеет отличия от всех других предложенных в мануалах по ISPConfig. Поскольку тут решена проблема с сайтами c www и без www. Стандартный вариант их просто обрезать. Также решает проблему с /phpmyadmin, корректная работа webmail awstats Также отдельно решена проблема сайтов с mod_rewrite html на конце ссылки.
Ну и последний штрих делаем символическую ссылку с roundcube
ln -s /var/www/apps/roundcube /var/www/apps/webmail
Также еще рекомендуют добавить RPAFenable On в apace2.conf, но не проверял.
Собственно, все должно заработать.
О совсем забыл
/etc/init.d/nginx restart
Оставить комментарий