Собственный хостинг: 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
apache2-nginx на debian

Добавляем 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_ips 127.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;
        resolver  127.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 Host 127.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 


Оставить комментарий