nginx на Ubuntu – просто!

Задача: построить сервер по технологии front-end back-end (поправьте если я это не так понял)

то есть чтоб nginx занимался работой с посетителями, а апач работал по запросам nginx и отдавал nginx’y хтмл по lo
тем самым не расходуя системных ресурсов зря.
и так у меня есть чистая инсталяция ubuntu-server 8.04

В инете много информации по nginx, но как заставить его работать в паре с apache2 я почему-то не встречал.

Как Апач устанавливать рассказывать не буду, как mysql тоже гугл легко подскажет.

Лишь немного проясню суть.

Качаем nginx
Берём свежую версию тут
http://technokracy.net/nginx/
на момент написания статьи

wget http://technokracy.net/nginx/nginx_0.6.13~grrr-1_i386.deb

Устанавливаем

dpkg -i nginx_*

Также потребуется модуль к Апачу, которого нет в дефолтной поставке

apt-get install libapache2-mod-rpaf

Модуль для трансляции ip адресов, чтоб апач видел не локальные обращения nginx, а ип адреса пользователей.

Теперь сайты, что обслуживает Apache вешаем на локальный интерфейс и на порт например 8080 у меня несколько сайтов на сервере и я их расположил по порядку на 8081 8082 и т.п.

итого в /etc/apache2/ports.conf

Listen 127.0.0.1:8080
Listen 127.0.0.1:8081
Listen 127.0.0.1:8082

в каталоге /etc/apache2/sites-enabled находятся файлы с конфигурациями сайтов.

привожу пример одного из них

ServerAdmin mail@gmail.com
ServerName mysite.net
DocumentRoot /var/www/site1
ServerAlias mysite.net
ErrorLog /var/log/apache2/site1-error.log
CustomLog /var/log/apache2/site1-access.log common
LogLevel error

/etc/nginx/nginx.conf
я не менял ничего
а вот /etc/nginx/sites-enabled
я сделал такой конфиг

server {
listen 80;
server_name mysite.net;

access_log /var/log/nginx/site1-nginx.access.log;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 40m;
client_body_buffer_size 256k;

proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;

proxy_buffer_size 64k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#Static files location
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|html|flv|mp3)$ {
root /var/www/site1; }

}

проверяем конфиг на корректность

# nginx -t
ну и если всё замечательно то

/etc/init.d/nginx start

ну и можно попробовать зайти на http://mysite.net

Дальше отснеффирил заголовки от своего web сервера

HTTP/1.1 200 OK
Server: nginx/0.5.32
Date: Mon, 29 Sep 2008 15:35:42 GMT
Content-Type: text/html
Connection: close
Last-Modified: Mon, 29 Sep 2008 13:53:07 GMT
ETag: “8146-ddb6-458092fd0b6c0”
Accept-Ranges: bytes
Content-Length: 56758

значит всё работает.

чтоб nginx стартовал автоматически я добавил в /etc/rc.local
строчку перед exit 0

/usr/local/bin/nginx

хотя можно было через rc-update (когда писал ман, почему пришла такая идея 🙂 )

Отправил будущий сервер в ребут для проверки, как он поднялся, так всё заработало.

Если есть замечания прошу отписывать 🙂

iptables Ограничить досуп

Не пускаем на определённый порт никого кроме перечисленных подсетей
[cc lang=”bash”]iptables -A INPUT -s 10.0.0.0/10 -p tcp -m tcp –dport 411 -j ACCEPT
iptables -A INPUT -s 89.105.128.0/22 -p tcp -m tcp –dport 411 -j ACCEPT
iptables -A INPUT -p tcp –dport 411 -j DROP[/cc]
например так

ну а как в автозагрузку добавить идём в гугл 🙂

для ленивых есть ip клькулятор для расчёта масок и сетей
http://ipcalc.dewil.ru/

Миграция с joomla на joostina

Есть сайт на joomla 1.0.9 хотел перевести его на Joostina
обновил с 1.0.9 до 1.0.15
1 сделал полный бэкап
2 установил компонент joo-joo 0.3b(искать тут http://joomlaforum.ru/index.php/topic,23378.0.html)
3 выключил сайт
4 залил файлы жустины поверх файлов joomla
5 зашёл в админку компоненты – joo-joo поочерёдно сделал все шаги
6 сменил тему админки на joostina
7 включил сайт

пока всё работает на ура.

ubuntu vpn server

Настройка VPN Сервера на базе Ubuntu 8.04

ставим pptpd
[cc lang=”bash”]sudo apt-get install pptpd[/cc]
редактируем
[cc lang=”bash”]/etc/pptpd.conf[/cc]
ищем строки похожие на
[cc lang=”bash”]localip 192.168.100.4
remoteip 192.168.100.20-51[/cc]
Снимаем комментарии перед ними
localip – ИП адрес будущего VPN сервера
remoteip – ИПы, которые будут выдаваться клиентам

Редактируем
/etc/ppp/chap-secrets
[cc lang=”bash”]# client server secret IP addresses
user pptpd pass 192.168.100.0/13[/cc]
(вот тут структуру бы не нарушать пробелы и табы не путать)

user – логин
pass – его пароль
192.168.10.0/13 – диапазон ИП с которого он будет присоединяться

Дальше пробуем запустить pptpd
[cc lang=”bash”]sudo /etc/init.d/pptpd restart[/cc]
всё запустилось, создаём VPN подключение на клиенте.
Не забываем снять галочку на вкладке “безопасность” “требовать шифрование иначе отключаться”
после чего я смог подключится к серверу.

Дальше чтоб можно было использовать остальные интерфейсы сервера, я добавил
[cc lang=”bash”]echo 1 > /proc/sys/net/ipv4/ip_forward[/cc]
чтоб это не терялось при перезагрузке надо в

/etc/sysctl.conf раскомментировать net.ipv4.ip_forward = 1

Дальше iptables надо сказать чтоб работали НАТ,ом
[cc lang=”bash”]iptables -t nat -A POSTROUTING -s 192.168.10.0/16 -o eth0 -j MASQUERADE[/cc]
Это значит, что всё, что приходит с 192.168.Х.Х слать на eth0 (то что смотрит в инет)

Проверил пинги до своего внешнего сервера (по ипу, всё было замечательно но DNS не отзывались)
для переброски DNS имён я использовал dnsmasq
[cc lang=”bash”]$sudo apt-get install dnsmasq[/cc]
в файле
[cc lang=”bash”]/etc/dnsmasq.conf:[/cc]
я прописал
[cc lang=”bash”]listen-address=192.168.10.1[/cc]
дальше
[cc lang=”bash”]/etc/init.d/dnsmasq restart[/cc]
Теперь надо, чтоб автоматически при подключении мне выдавался правильный ДНС сервер.
идём в /etc/ppp/options
раскомментировал строку
[cc lang=”bash”]ms-dns 192.168.10.1[/cc]
и вписал туда свой днс сервер.

[cc lang=”bash”]/etc/init.d/pptpd restart[/cc]
и в бой.

PS
проявилась одна проблема, что некоторые сайты не желали открываться например mail.ru
один добрый дядька rtzra посоветовал 2 пути решения, одо из которых должно было помочь

первое:
[cc lang=”bash”] iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu[/cc]
второе:
[cc lang=”bash”] iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 128[/cc]
Мне помогло второе

Удачи :))

Как созать архив в консоли 7z (для тех кто не читает маны)

Вот чудо команда архивирования

7z a -t7z archive.7z dir1

Упакует dir1 в archive.7z тип архива будет 7z

ну а распаковывать 7z x archive.7z