• Страница 1 из 1
  • 1
Модератор форума: Dimitro, LightInDarkness  
Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » Установка NGNIX и модулей на примере UBUNTU
Установка NGNIX и модулей на примере UBUNTU
INFERNOS

Подготовка и установка необходимых пакетов

Устанавливаем необходимые пакеты (Build Essentials)
Code
sudo aptitude install build-essential

Устанавливаем PHP c клиентом.без Apache
Code
sudo aptitude install php5-common php5-dev php5-mysql php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-cgi php5-mcrypt php5-curl php5-gd php5-mhash php5-pspell php5-snmp php5-sqlite libmagick9-dev php5-client

Устанавливаем MySQL сервер
Code
sudo aptitude install mysql-server mysql-client libmysqlclient15-dev


Установка и настройка самого сервера Nginx


Code
sudo aptitude install nginx


Эта строка установит сам сервер и основные зависимости. После этого вам остаётся только запустить его и проверить, всё ли работает.
Code
sudo /etc/init.d/nginx start


Затем наберите в браузере IP (или URL) вашего сервера и насладитесь простым, но очень значимым для нас приветственным экраном Nginx.

По умолчанию после установки сервера вышеописанным способам дефолтный хост ведёт в папку на сервере /var/www/nginx-default. Мы это сможем легко поменять уже через несколько минут.

Помните, что контролируется Nginx тремя командами:
Code
sudo /etc/init.d/nginx start


Code
sudo /etc/init.d/nginx stop


Code
sudo /etc/init.d/nginx restart


Однако последнюю (рестарт) использовать не рекомендую, это не Apache. Получите больше головной боли. Поэтому для перезапуска сервера сначала останавливаем его, а потом запускаем. Если не запускается – значит отлаживаем конфигурацию – обычно он довольно понятно говорит, где ошибка.

Также важной частью является первоначальная настройка сервера, откройте файл /etc/nginx/nginx.conf и вставьте в него всё, что находится здесь:

Code
user www-data www-data;
    worker_processes  2;

error_log /var/log/nginx/error.log;
    pid /var/run/nginx.pid;

events {
    worker_connections 1024;
    }

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

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

sendfile on;
    #tcp_nopush on;

#keepalive_timeout 0;
    keepalive_timeout 3;
    tcp_nodelay off;

gzip on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml
    application/xml+rss text/javascript;

include /etc/nginx/sites-enabled/*;

}


Таким образом мы сразу настроили сжатие сервером данных, выключили некоторые функции и включили некоторые важные. Потом вы сможете настроить его под свои нужды более точно, но пока нам нужна лишь работающая конфигурация.

А сейчас создадим грамотный лэйаут для наших будущих сайтов. В принципе – абсолютно не важно, где будет лежать ваш сайт, но более-менее стандартным является размещение сайтов в каталоге /home/user/public_html, где user – это пользователь системы с необходимыми правами. (как создать юзера и назначить права почитайте по ссылкам в начале мануала, если вы этого ещё не сделали)

Если же юзер только один (а зачастую это только вы), то можно сделать просто
Code
sudo mkdir /home/public_html


Code
sudo mkdir -p /home/public_html/mydomain.com/{public,private,log,backup}


Таким образом мы создали структуру папок для нашего будущего сайта mydomain.com. Файлы, доступные из Сети будут лежать в папке /public, логи в папке /log, остальное понятно.

Создаём виртуальный хост – файл, который будет указывать домену, где лежит наш сайт.
Code
sudo nano /etc/nginx/sites-available/mydomain.com


Затем вставляем в него следующий текст конфига, естественно, заменяя структуру папок и название домена на ваши.

Внимание! Этот конфиг учитывает некоторые особенности ЦМС Drupal, например, файловую структуру, крон и прочее

Code
server {
    listen          80;
    server_name     mydomain.com www.mydomain.com;

access_log /home/public_html/mydomain.com/log/access.log;
    error_log /home/public_html/mydomain.com/log/error.log;

root /home/public_html/mydomain.com/public;

charset utf-8;

location = / { rewrite . /index.php last; }
    location / { rewrite ^(.*)$ /index.php?q=$1 last; }
    location = /index.php {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /home/public_html/mydomain.com/public$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    }
    # To retrieve this script periodically use: curl -sH “Host: my.host.tld” http://localhost/cron.php
    location = /cron.php {
    allow 127.0.0.1;
    deny all;
    fastcgi_pass 127.0.0.1:8521;
    include /etc/nginx/fastcgi_params;
    }
    # Static content
    location = /robots.txt { if (-f $document_root/sites/default/robots.txt) { rewrite . /sites/default/robots.txt$
    location ~ ^(/sites/all)?/(modules|themes)/.*.(css|js|png|gif|jpg)$ { break; }
    location /misc/ { break; }
    location /sites/all/modules/fckeditor { break; }
    location /files/ { break; } # Depending on Drupal configuration (Administer -> File system)

# Imagecache (http://drupal.org/project/imagecache)
    location /files/imagecache/ {
    if (-f $request_filename) { break; }
    rewrite ^(.*)$ /index.php?q=$1 last;
    }

# **** Comment out this location after installing/updating Drupal ****
    # location ~ ^/(install|update).php$ {
    # allow 172.22.11.2;
    # deny all;
    # fastcgi_pass 127.0.0.1:8521;
    # include /etc/nginx/fastcgi_params;
    # }
    # ********************************************************************

# hide protected files
    location ~* .(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(.php)?|xtmpl)$|^(code-style.pl|Entri$
    deny all;
    }

# hide backup_migrate files
    location ~* ^/files/backup_migrate {
    deny all;
    }

}


И активизируем сайт:

Code
sudo ln -s /etc/nginx/sites-available/mydomain.com /etc/nginx/sites-enabled/mydomain.com


А сейчас внимание! В конфиг включены правила для создания чистых ссылок (clean urls) для системы Drupal, если вы используете WordPress или другие системы, вам необходимо поискать на сайтах поддержки правила создания чистых ссылок для nginx. Это займёт лишних 5 минут, особенно если ваша система популярная. Впрочем, она может работать и с моим конфигом

Помните, файл .htaccess под Nginx не работает! Все директивы вставляются в конфигурацию сервера или виртуального хоста!

Таким образом, спорная часть это
Code
if (!-e $request_filename) {
    rewrite ^/(.*)$ /index.php?q=$1 last;
    }

Остальные части конфига необходимы!

В конфиге мы попросили Nginx слушать FastCGI на 9000 порту, поэтому – если у вас стоит файрвол, не забудьте открыть этому порту доступ (как и порту 3306 для MySQL)

Запуск PHP как FastCGI процесса


Я не профессиональный администратор, поэтому ищите в Гугле подробные объяснения тому, что мы сейчас будем делать.

Дело в том, что нам необходимо заставить наш сервер работать с PHP, чего он по умолчанию делать вовсе не обязан (в настоящее время в Nginx анонсирована только тестовая поддержка Perl). Поэтому для взаимодействия сервера с языком программирования мы используем специальный протокол, или интерфейс – FastCGI. Это своеобразный мостик для обеспечения взаимопонимания между Nginx и PHP. И сейчас мы будем “учить” их работать вместе.

Мы уже устанавливали php5-cgi, если вы помните, теперь нам нужно каким-то образом запускать FastCGI процесс. Есть несколько способов сделать это. Мы будем использовать специальную программку spawn-fcgi, которая до недавнего времени шла в комплекте с другим сервером – Lighttpd. Сейчас она идёт как отдельный проект и расположена по адресу http://redmine.lighttpd.net/projects/spawn-fcgi

Мы же используем старый проверенный вариант “выдирания” её из Lighttpd. Это даст мне уверенность в том, что это точно будет работать у вас. Чуть позже я изменю эту часть статьи, но только когда сам всё сделаю на практике.

Итак
Code
mkdir ~/sources


Code
cd ~/sources



Code
wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2



Code
tar jxvf lighttpd-1.4.19.tar.bz2


Не знаю, необходимы или нет эти зависимости, но установочный скрипт ругается, поэтому давайте лучше их установим:
sudo aptitude install libpcre3-dev libbz2-dev

Далее – скомпилируем Lighttpd, но не будем его устанавливать, нам нужна только одна программка. Поэтому делаем следующее:

Code
cd lighttpd-1.4.19


Code
./configure


Code
make


Потом идём пить кофе, потому что на экране будет много всего, производящего впечатление на девушек Безобразие на экране будет длиться минуты 3-4.

Затем берём исходники spawn-fcgi, и кладём их в то место, где им и полагается быть:

Code
sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi


Далее, если это программа, то нам нужен скрипт, чтобы запускать её:

Code
sudo nano /usr/bin/php-fastcgi


Затем копируем в скрипт следующие строки:

Code
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi


А теперь внимание! В Интернете, насколько мне известно, вы можете найти другие варианты синтаксиса этой строки, где www-data присутствует только один раз. Настоятельно рекомендую вам воспользоваться именно моим вариантом, так как это позволит вам в будущем избежать неприятностей и ошибки PHP – No input file specified. Отличие моего варианта от распространённого в том, что мы указываем не только пользователя, но и группу. Если они у вас отличаются, то просто замените на ваши данные. Самое интересное, что на одном сервере у меня сработало только с юзером, а на другом – нет. Поэтому будьте внимательны!

Строка, которую мы ввели, означает, что каждый раз, когда скрипт будет вызываться, процесс fcgi будет запущен на порту 9000 для пользователя www-data в группе www-data (это дефолтные пользователь и группа, устанавливаемые при первоначальной настройке системы).

Нам осталось только разобраться, как запускать этот скрипт при запуске FastCGI.
Code
sudo nano /etc/init.d/init-fastcgi


Получаем пустой экран, и вставляем в него:

Code
#!/bin/bash
    PHP_SCRIPT=/usr/bin/php-fastcgi
    RETVAL=0
    case «$1″ in
    start)
    $PHP_SCRIPT
    RETVAL=$?
    ;;
    stop)
    killall -9 php5-cgi
    RETVAL=$?
    ;;
    restart)
    killall -9 php5-cgi
    $PHP_SCRIPT
    RETVAL=$?
    ;;
    *)
    echo «Usage: php-fastcgi {start|stop|restart}»
    exit 1
    ;;
    esac
    exit $RETVAL


Опять же внимание! В Сети вы найдёте слегка изменённый вариант скрипта управления запуском FastCGI, где будет killall -9 php, вместо killall -9 php5-cgi. В моём случае работал только последний вариант, то есть в скрипт надо вставлять точное название процесса, который мы запускаем. Честно говоря, я вообще удивляюсь, как у людей работает без этого. Но мы же делаем всё правильно, не так ли!

Дальше – у нас ничего не будет работать, пока мы не сделаем два предущие скрипта исполняемыми. Для этого вводим следующее:
Code
sudo chmod 755 /usr/bin/php-fastcgi


Code
sudo chmod 755 /etc/init.d/init-fastcgi


Ну что ж, сейчас можно смело запускать наш FastCGI:
Code
sudo /etc/init.d/init-fastcgi start


Вы должны получить что-то вроде информации о том, что spawn-fcgi успешно запустился как процесс.

А для того, чтобы всё работало после перезагрузки набираем:
Code
sudo update-rc.d init-fastcgi defaults


И, я надеюсь, вы не забыли запустить Nginx С этого момента вам придётся постоянно помнить, что сейчас вам нужно запускать и сервер и FastCGI.

В принципе, это всё!
Тестирование, отладка. Установка XCache.

Так, давайте проверим, работает ли PHP как fast-cgi процесс:
Code
ps ax | grep php


Если появился список запущенных процессов, значит всё ОК.

А чтобы проверить, подключён ли PHP к Nginx, создайте файл info.php в веб-директории вашего домена mydomain.com, вставьте туда:
Code
< ? echo phpinfo(); ?>


А затем запустите его из браузера. Получите исчерпывающую информацию о том, как работает ваш PHP, какие модули загружены.

А сейчас давайте ускорим исполнение PHP скриптов путём кэширования бинарного кода. Вы можете установить любой акселератор, но я выбираю XCache.

Установка XCache:

Code
sudo aptitude php5-xcache

Особенностью этого акселератора является то, что его надо вручную подключать к php.ini, и там же конфигурировать под свои нужды.

Открываем:
Code
sudo nano /etc/php5/cgi/php.ini


Проматываем этот длиннющий файл до самого конца, попутно настраивая его под себя. Например, вы можете изменить значение memory_limit на большее (хотя бы до 64MB, особенно если работаете с Drupal). Для прокрутки используете Ctrl+V.

В конце файла вставляем:
Code
[xcache-common]
    extension = xcache.so
    [xcache.admin]
    xcache.admin.user = «mOo»
    ; xcache.admin.pass = md5($your_password)
    xcache.admin.pass = «»
    [xcache]
    ; ini only settings, all the values here is default unless explained
    ; select low level shm/allocator scheme implemenation
    xcache.shm_scheme =        »mmap»
    ; to disable: xcache.size=0
    ; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
    xcache.size  =                64M
    ; set to cpu count (cat /proc/cpuinfo |grep -c processor)
    xcache.count =                 4
    ; just a hash hints, you can always store count(items) > slots
    xcache.slots =                8K
    ; ttl of the cache item, 0=forever
    xcache.ttl   =                 0
    ; interval of gc scanning expired items, 0=no scan, other values is in seconds
    xcache.gc_interval =           0
    ; same as aboves but for variable cache
    xcache.var_size  =            64M
    xcache.var_count =             1
    xcache.var_slots =            8K
    ; default ttl
    xcache.var_ttl   =             0
    xcache.var_maxttl   =          0
    xcache.var_gc_interval =     300
    xcache.test =                Off
    ; N/A for /dev/zero
    xcache.readonly_protection = Off
    ; for *nix, xcache.mmap_path is a file path, not directory.
    ; Use something like «/tmp/xcache» if you want to turn on ReadonlyProtection
    ; 2 group of php won’t share the same /tmp/xcache
    ; for win32, xcache.mmap_path=anonymous map name, not file path
    xcache.mmap_path =    »/dev/zero»
    ; leave it blank(disabled) or «/tmp/phpcore/»
    ; make sure it’s writable by php (without checking open_basedir)
    xcache.coredump_directory =   «»
    ; per request settings
    xcache.cacher =               On
    xcache.stat   =               On
    xcache.optimizer =            On
    [xcache.coverager]
    ; per request settings
    ; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
    xcache.coverager =          Off
    ; ini only settings
    ; make sure it’s readable (care open_basedir) by coverage viewer script
    ; requires xcache.coverager=On
    xcache.coveragedump_directory = «»


Обратите внимание на строку, где надо указать количество ядер в вашем процессоре. У меня их 4. Там же написано как это узнать, если не уверены.

Также здесь вы можете установить логин и пароль для управления скриптом. Если с логином всё понятно, то пароль должен быть зашифрован с помощью md5. Чтобы правильно установить пароль, создайте в веб-директории файл test.php, и поместите в него следующую строку:
Code
< ?php echo md5(«вашпароль»); ?>


Запустив его, вы получите ваш пароль в зашифрованном виде, его то и надо вставлять в php.ini. Не вставляйте в php.ini “человеческий пароль”!

Чтобы получить доступ к веб-интерфейсу XCache, нам придётся скачать исходники отсюда и достать из них папку xcache/admin/ (всю папку), затем загрузить её в веб-директорию, и зайти в неё со своим логином и паролем, установленным в php.ini.

Затем можете наслаждаться тем, как будет летать ваш сервер после установки акселератора.

Примечания:
1.
Вместо
Code
sudo aptitude install

можно использовать
Code
sudo apt-get install

2.
если Вы root в системе то все команды пишутся без sudo

Источник:собрано с просторов интернета и дополнено мной
Присяжный - краб.
Сообщение # 1 отредактировано Infe[R]noS - Воскресенье, 19.06.2011, 14:57
Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » Установка NGNIX и модулей на примере UBUNTU
  • Страница 1 из 1
  • 1
Поиск: