Blog

  • 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 Ограничить досуп

    Не пускаем на определённый порт никого кроме перечисленных подсетей

    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 DROPCode language: Bash (bash)

    например так

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

    для ленивых есть 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

    sudo apt-get install pptpdCode language: Bash (bash)

    редактируем

    /etc/pptpd.confCode language: Bash (bash)

    ищем строки похожие на

    localip 192.168.100.4
    remoteip 192.168.100.20-51Code language: Bash (bash)

    Снимаем комментарии перед ними
    localip — ИП адрес будущего VPN сервера
    remoteip — ИПы, которые будут выдаваться клиентам

    Редактируем
    /etc/ppp/chap-secrets

    # client        server  secret                  IP addresses
    user             pptpd   pass                192.168.100.0/13Code language: Bash (bash)

    (вот тут структуру бы не нарушать пробелы и табы не путать)

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

    Дальше пробуем запустить pptpd

    sudo /etc/init.d/pptpd restartCode language: Bash (bash)

    всё запустилось, создаём VPN подключение на клиенте.
    Не забываем снять галочку на вкладке «безопасность» «требовать шифрование иначе отключаться»
    после чего я смог подключится к серверу.

    Дальше чтоб можно было использовать остальные интерфейсы сервера, я добавил

    echo 1 > /proc/sys/net/ipv4/ip_forwardCode language: Bash (bash)

    чтоб это не терялось при перезагрузке надо в

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

    Дальше iptables надо сказать чтоб работали НАТ,ом

    iptables -t nat -A POSTROUTING -s 192.168.10.0/16 -o eth0 -j MASQUERADECode language: Bash (bash)

    Это значит, что всё, что приходит с 192.168.Х.Х слать на eth0 (то что смотрит в инет)

    Проверил пинги до своего внешнего сервера (по ипу, всё было замечательно но DNS не отзывались)
    для переброски DNS имён я использовал dnsmasq

    $sudo apt-get install dnsmasqCode language: Bash (bash)

    в файле

    /etc/dnsmasq.conf:Code language: Bash (bash)

    я прописал

    listen-address=192.168.10.1Code language: Bash (bash)

    дальше

    /etc/init.d/dnsmasq restartCode language: Bash (bash)

    Теперь надо, чтоб автоматически при подключении мне выдавался правильный ДНС сервер.
    идём в /etc/ppp/options
    раскомментировал строку

    ms-dns 192.168.10.1Code language: Bash (bash)

    и вписал туда свой днс сервер.

    /etc/init.d/pptpd restartCode language: Bash (bash)

    и в бой.

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

    первое:

     iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtuCode language: Bash (bash)

    второе:

     iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 128Code language: Bash (bash)

    Мне помогло второе

    Удачи :))

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

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

    7z a -t7z archive.7z dir1

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

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