Как установить nginx на Ubuntu\Debian + WordPress

01.06.2009, рубрики: how-to | Теги: | 8 комментариев »

В Ubuntu, как и в Debian благодаря всемогущему репозитарию установка множества программ, в том числе серьезных серверных пакетов сводиться к необходимости напечатать одну строчку типа sudo apt-get install …. и подождать пару минут и программа у вас на компьютере.

В принципе, с сервером nginx ситуация точно такая же, и к тому же мейнтейнеры ревниво следят, что-бы версия программы была всегда свежей.

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

По началу, эта статья задумывалась как небольшое руководство по установке сервера, но судя из новомодных тенденций, многие крупные сайты рунета, да и зарубежные, работают под управлением ngnix, и такой маленький сервер, так прекрастно справляется со своими обязанностями. По этому я решил более детально остановиться на изучении этого сервера и его возможностей.
Из-за практического отсутствия доументации на английском языке, я переведу и опубликую эту статью на английский язык. Как в прочем и многие другие.

Инструкция по установке из исходных кодов

Качаем сервер с сайта его создателя, последнюю версию:

  1. cd ~/user
  2. mkdir server
  3. cd server
  4. wget http://sysoev.ru/nginx/nginx-0.7.59.tar.gz

Распаковываем архив:

  1. tar xvf nginx-0.7.59
  2. cd nginx-0.7.59

Теперь, если у вас установлено все необходимое по дефолту, начинаем компиляцию, если нет, то ставим необходимое:

  1. sudo aptitude install build-essential
  1. sudo aptitude install linux-headers-`uname -r`

Выполняем configure:

  1. ./configure

Все пройдет нормально, но в конце мы увидим вот такую ошибку:

  1. ./configure: error: the HTTP rewrite module requires the PCRE library.
  2. You can either disable the module by using --without-http_rewrite_module
  3. option, or install the PCRE library into the system, or build the PCRE library
  4. statically from the source with nginx by using --with-pcre=
  5. <path> option.

Плюс внимательно всмотритесь в поля помеченные * , скорее всего еще много чего не хватает.
Исправляем это командой:

  1. sudo aptitude install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev

Это все необходимые нам библиотеки.
Делаем:

  1. make clean
  2. ./configure --with-http_ssl_module
  3. make
  4. make install

После этих нехитрых действий, сервер установлен в систему.

Если вас не устраивают стандартные пути, то при сборке вы можете указать удобные вам, включив соответсвующие ключи.

  1. --prefix=<путь>

— задаёт каталог, в котором будут находиться файлы сервера. Этот же каталог будет использоваться для всех относительных путей, задаваемых ./configure (кроме путей к исходным текстам библиотек) и в конфигурационном файле nginx.conf. По умолчанию — каталог /usr/local/nginx.

  1. --sbin-path=<путь>

— задаёт имя исполняемого файла nginx. Это имя используется только на стадии установки. По умолчанию файл называется prefix/sbin/nginx.

  1. --conf-path=<путь>

— задаёт имя конфигурационного файла nginx.conf. При желании nginx можно всегда запустить с другим конфигурационным файлом, указав его в параметре командной строки -c <файл>. По умолчанию файл называется prefix/conf/nginx.conf.

  1. --pid-path=<путь>

— задаёт имя файла nginx.pid, в котором будет хранится номер главного процесса. После установки имя файла можно всегда поменять в конфигурационном файле nginx.conf с помощью директивы pid. По умолчанию имя файла — prefix/logs/nginx.pid.

  1. --error-log-path=<путь>

— задаёт имя основного файла ошибок, предупреждений и диагностики. После установки имя файла можно всегда поменять в конфигурационном файле nginx.conf с помощью директивы error_log. По умолчанию имя файла — prefix/logs/error.log.

  1. --http-log-path=<путь>

— задаёт имя основного файла регистрации запросов http сервера. После установки имя файла можно всегда поменять в конфигурационном файле nginx.conf с помощью директивы access_log. По умолчанию имя файла — prefix/logs/access.log.

Как управлять сервером?

Запускается сервер командой:

  1. sudo /usr/local/nginx/sbin/nginx

Проверим его наличие в процессах:

  1. ps -ef | grep nginx
  2. root     14999     1  0 16:44 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  3. nobody   15000 14999  0 16:44 ?        00:00:00 nginx: worker process
  4. booch    15084 29644  0 16:45 pts/0    00:00:00 grep nginx

Отлично. Теперь нужно открыть браузер и ввести уже знакомое http://localhost/
Если вы увидите приветствие, то все хорошо.

Завершить работу сервера можно, послав master-процессу сигнал QUIT:

  1. kill -QUIT <PID>

Обновление сервера на лету.
Для обновления сервера нужно записать на место старого исполняемого файла новый. Затем нужно послать сигнал USR2 главному процессу — он переименует свой файл с номером процесса в файл с суффиксом .oldbin, например, /usr/local/nginx/logs/nginx.pid.oldbin, после чего запустит новый исполняемый файл, а тот в свою очередь — свои рабочие процессы:

  1. kill -USR2 <PID>
  1.  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
  2. 33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sb
  3. 33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
  4. 33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
  5. 36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sb
  6. 36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
  7. 36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

Для применения новой конфигурации, в случае, если вы например обновили конфигурационный файл, необходимо послать серверу сигнал HUP:

  1. kill -HUP <PID>

QUIT - плавное завершение
TERM, INT – быстрое завершение
HUP – изменение конфигурации, обновление изменившейся временной зоны, запуск новых рабочих процессов с новой конфигурацией, плавное завершение старых рабочих процессов
USR1 – переоткрытие лог-файлов
USR2 – обновление исполняемого файла
WINCH – плавное завершение рабочих процессов

Где его искать?

Выше это уже было указано, но тем не менее и эта инфа не повредит. Так как в своей сборке я не менял стандартных путей, то расположение такое. Заметьте, что при установки с репозитариев, пути будут другие.

/usr/local/nginx/html – папка где лежит Web-страничка с приветствием, которую вы видели при тестировании ngnix, туда же можно положить и ваш сайт. Это будет не совсем правильно, если это ваш сервер.

/usr/local/nginx/conf/nginx.conf – тут лежит главный конфигурационный файл nginx.conf, в него же и следуют записывать все директивы.

Сервер

Если вы решили завести сервер на nginx, причем который смотрит в Сеть. И там крутиться ваш личный сайт или еще чего. То надо подумать о том, что-бы правильно организовать структуру вашего сайта или сайтов и настроить группы и их права доступа, квоты.

Начнем с создания группы www:

  1. sudo groupadd www

Создаем пользователя www:

  1. sudo useradd www -g www

Добавляем пользователя www в группу www:

  1. sudo usermod -a -G www www

Проверяем файл /etc/passwd/ на наличие одинаковых PID:

  1. sudo cat /etc/passwd | grep 1001
  2. motion:x:112:1001::/home/motion:/bin/false
  3. www:x:1001:1002::/home/www:/bin/sh

Измените PID на любой, понравившийся вам, так же не забудьте потом изменить PID в /etc/group
для группы www.

Создайте пароль для пользователя:

  1. sudo passwd www
  2. Введите новый пароль UNIX:
  3. Повторите новый пароль UNIX:
  4. passwd: пароль успешно обновлён

Теперь будем создавать структуру будущего сайта.
Скорее всего это так:

  1. sudo mkdir /home/www/
  1. sudo mkdir -p /home/www/linuxspace.org/{log, private, public, backups, archives}

Получаем готовую платформу для будущего сайта.
Как вы видите, все папки пренадлежат пользователю www.
И для всех папок переназначены права 644, (rw+r+r) и для public 744 (rwx+r+r):

  1. ls -la
  2. итого 28
  3. drw-r--r-- 2 www www 4096 2009-06-22 19:35 archives
  4. drw-r--r-- 2 www www 4096 2009-06-22 19:36 log
  5. -rw-r--r-- 1 www www    5 2009-06-22 19:39 nginx.pid
  6. drw-r--r-- 2 www www 4096 2009-06-22 19:36 private
  7. drwxr--r-- 5 www www 4096 2009-06-22 19:37 public

и теперь редактируем файл /usr/local/nginx/conf/nginx.conf
в котором можем указать все, что необходимо для работы вашего сервера.
Вот, что указал я:

  1. #пользователь
  2. user  www;
  3.  
  4. #колличество дочерних процессов
  5. worker_processes  2;
  6.  
  7. #адрес pid-файла
  8. pid     /home/www/linuxspace.org/nginx.pid;
  9.  
  10. #не забываем, что nginx работает по модели "неблокируемые сокеты или конечный автомат"
  11. #но в UNIX непривилегированные процессы не могут использовать порты меньше 1024
  12. events
  13. {
  14.     worker_connections  1024;
  15. }
  16.  
  17. http
  18. {
  19.     include       mime.types;
  20.     default_type  application/octet-stream;
  21.  
  22.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  23.     #                  '$status $body_bytes_sent "$http_referer" '
  24.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  25.  
  26.     sendfile        on;
  27.     tcp_nopush     on;
  28.  
  29.     #keepalive_timeout  0;
  30.     keepalive_timeout  65;
  31.  
  32.     #архивация и ее параметры
  33.     gzip on;
  34.     gzip_min_length  1100;
  35.     gzip_buffers     4 8k;
  36.     gzip_types       text/plain;
  37.     gzip_comp_level 3;
  38.     gzip_proxied any;
  39.  
  40.     #настройки виртуального хоста
  41. server {
  42.         #слуашемый порт
  43.         listen       *:90;
  44.  
  45.         #имя сервера
  46.         server_name  localhost;
  47.  
  48.         #кодировка
  49.         charset utf-8;
  50.  
  51.         #расположения основной (публичной) дирректории
  52.     root /home/www/linuxspace.org/public;
  53.  
  54.         #LOGS (логи)
  55.     #------------------------------------------------------------------
  56.         access_log  /home/www/linuxspace.org/log/localhost.access.log;
  57.         error_log /home/www/linuxspace.org/log/error.log;
  58.         access_log  /home/www/linuxspace.org/log/access.log;
  59.         #------------------------------------------------------------------
  60.  
  61.         #форматы index-файлов
  62.         location / {
  63.             root   /home/www/linuxspace.org/public;
  64.             index  index.html index.htm index.php;
  65.         }
  66.  
  67.         error_page  404              /404.html;
  68.  
  69.         # redirect server error pages to the static page /50x.html
  70.         #
  71.         error_page   500 502 503 504  /50x.html;
  72.         location = /50x.html {
  73.             root   html;
  74.         }
  75.  
  76.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  77.         #
  78.         #location ~ \.php$ {
  79.         #    proxy_pass   http://127.0.0.1;
  80.         #}
  81.  
  82.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  83.         #
  84.         #location ~ \.php$ {
  85.         #    root           html;
  86.         #    fastcgi_pass   127.0.0.1:9000;
  87.         #    fastcgi_index  index.php;
  88.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  89.         #    include        fastcgi_params;
  90.         #}
  91.  
  92.         # deny access to .htaccess files, if Apache's document root
  93.         # concurs with nginx's one
  94.         #
  95.         #location ~ /\.ht {
  96.         #    deny  all;
  97.         #}
  98.        }
  99.  
  100.     # another virtual host using mix of IP-, name-, and port-based configuration
  101.     #
  102.     #server {
  103.     #    listen       8000;
  104.     #    listen       somename:8080;
  105.     #    server_name  somename  alias  another.alias;
  106.  
  107.     #    location / {
  108.     #        root   html;
  109.     #        index  index.html index.htm;
  110.     #    }
  111.     #}
  112.  
  113.     # HTTPS server
  114.     #
  115.     #server {
  116.     #    listen       443;
  117.     #    server_name  localhost;
  118.  
  119.     #    ssl                  on;
  120.     #    ssl_certificate      cert.pem;
  121.     #    ssl_certificate_key  cert.key;
  122.  
  123.     #    ssl_session_timeout  5m;
  124.  
  125.     #    ssl_protocols  SSLv2 SSLv3 TLSv1;
  126.     #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  127.     #    ssl_prefer_server_ciphers   on;
  128.  
  129.     #    location / {
  130.     #        root   html;
  131.     #        index  index.html index.htm;
  132.     #    }
  133.     #}
  134. }

Не советую выдирать из файла примеры, в конечном счете они могут вам пригодиться. Или сделайте backup файла, на всякий случай.

Сам файлик может валяться где угодно. Но если директория отличная от дефолтной, при запуске nginx это необходимо учесть с помощью ключа -c
Например:

  1. /usr/local/nginx/sbin/nginx -c /home/user/nginx.conf

Давайте посмотрим на работу сервера.
Запустите его и посмотрите на него в списке процессов. Это должно выглядеть так:

  1. ps -ef | grep nginx
  2. root      7146     1  0 02:19 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  3. www     7147  7146  0 02:19 ?      00:00:00 nginx: worker process
  4. www     7148  7146  0 02:19 ?      00:00:00 nginx: worker process

Все отлично! Главный процесс запущен от рута, остальные два процесса, как мы и указали в файле, пренадлежат пользователю www и являются не привегилированными.

Теперь, когда мы имеем некое предстовление о том, как установить сервер, найти все его конфигурационные и исполняемые файлы, а так же как его запустить и остановить, неплохо было бы задаться вопросом типа: «Эээ ХТМЛ это конечно круто, но как на счет че нить по серьезней типа связки с PHP и популярными CMS ??»

Установка WordPress на Nginx

Давайте рассмотрим реализацию сервера и принцип его работы. В таком случае, нам станет понятно, как правильно организовать свой сервер.

nginx работает по схеме неблокируемых сокетов или так называемый конечный автомат, что это означает, то что, сервер на каждой итерации бесконечного цикла выбирает из всех сокетов тот, который готов для работы с данными (отправка\прием) с помощью вызова select(). После того, как сокет выбран, сервер отправляет на него данные или читает их, но не ждет подтверждения, а переходит в начальное состояние ожидания события на другом сокете или же обрабатывает следующий, в котором событие произошло во время обработки предыдущего. Таким образом nginx затрачивает на порядок меньше ресурсов ОС, таких как память и процессорное время, но есть одно но, nginx не может генерировать динамический контент внутри себя, т.к. это приведет к блокировкам внутри него. Решение есть и давно: nginx может проксировать запросы (генерирование контента) на любой другой Web-server: Apache или FastCGI.

Сейчас большинство крупных сайтов используют связку nginx + Apache, называется она фронтэнд-бэкенд (frontend & backend)

Как работает такая связка?
Пусть nginx будет в качестве основного сервера и Apache в качестве сервера для генерации динамического контента:

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

how-to как реализовать такую связку, будет опубликованно в следующих статьях.

Как поднять что-нибудь солидное? Например wordpress.
Для начала, необходимо установить в систему все необходимые компоненты.

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

  1. 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

В данном случае, я ограничелся пачкой пакетов и установленным с репов PHP с уже говотовой поддержкой FastCGI, а не ставил из исходников. Что тоже хороший вариант.

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

  1. sudo aptitude install mysql-server mysql-client libmysqlclient15-dev

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

Для этого нам необходимо выдрать его из другого Web-сервера lighttpd, обратите внимание на версию, так как если вы скачаете последнюю версию сервера, сейчас это 1.4.23, затем соберете его, сделаете make, а потом попробуете перебросить spawn-cgi в /usr/bin/ у вас ничего не получиться, почему, ответ написан на сайте создателей, и выглядит так:

Important changes
* Fix workaround for incorrect path info/scriptname if fastcgi prefix is ”/” (fixes #729)
* Finally removed spawn-fcgi
* Fix bug with FastCGI request id overflow under high load; just use always id 1 as we don’t use multiplexing. (thx jgray)
* Workaround broken operating systems: check for trailing ’/’ in filenames (fixes #1989)

По этому, качаем версию 1.4.19 или раньше.

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

Распаковываем:

  1. tar jxvf lighttpd-1.4.19.tar.bz2
  1. cd lighttpd-1.4.19
  1. sudo ./configure

Тут при сборке, программа сообщит вам об ошибке:

  1. configure: error: pcre-config not found, install the pcre-devel package or build with --without-pcre

Вывод, надо доставить пару пакетов:

  1. sudo aptitude install libpcre3-dev libbz2-dev
  1. sudo ./configure

Теперь все должно пройти без ошибок:

  1. sudo make

Перебрасываем spawn-cgi в /usr/bin/:

  1. sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi

Создаем скрипт запуска:

  1. sudo nano /usr/bin/php-fastcgi

Пишем в него одну строчку:

  1. #!/bin/sh
  2. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/bin/php5-cgi

Что означает эта строчка?
/usr/bin/spawn-fcgi -a 127.0.0.1 – команда запуска
-p 9000 – на порт 9000
-u www -g www – юзер www, группа www
-f /usr/bin/php5-cgi – путь к вашему пакету php5-cgi

если он вам по каким-то причинам не известен, поможет команда which. При установке из репов, путь именно такой.

Создаем скрипт запуска FastCGI:

  1. sudo nano /etc/init.d/init-fastcgi

В него вставляем следующее

  1. #!/bin/bash
  2. PHP_SCRIPT=/usr/bin/php-fastcgi
  3. RETVAL=0
  4. case "$1" in
  5. start)
  6. $PHP_SCRIPT
  7. RETVAL=$?
  8. ;;
  9. stop)
  10. killall -9 php5-cgi
  11. RETVAL=$?
  12. ;;
  13. restart)
  14. killall -9 php5-cgi
  15. $PHP_SCRIPT
  16. RETVAL=$?
  17. ;;
  18. *)
  19. echo "Usage: php-fastcgi {start|stop|restart}"
  20. exit 1
  21. ;;
  22. esac
  23. exit $RETVAL

Делаем скрипты исполняемыми:

  1. sudo chmod +x /usr/bin/php-fastcgi
  1. sudo chmod +x /etc/init.d/init-fastcgi

Запускаем скрипт:

  1. /etc/init.d/init-fastcgi start

spawn-fcgi.c.197: child spawned successfully: PID: 32477 – подтверждение успешного запуска.

Смотрим таблицу процессов:

  1. ps -ef | grep cgi
  2. www      32573     1  2 04:04 ?        00:00:00 /usr/bin/php5-cgi
  3. www      32575 32573  0 04:04 ?        00:00:00 /usr/bin/php5-cgi
  4. www      32576 32573  0 04:04 ?        00:00:00 /usr/bin/php5-cgi
  5. www      32577 32573  0 04:04 ?        00:00:00 /usr/bin/php5-cgi
  6. www      32578 32573  0 04:04 ?        00:00:00 /usr/bin/php5-cgi
  7. www      32579 32573  0 04:04 ?        00:00:00 /usr/bin/php5-cgi

А для того, чтобы всё работало после перезагрузки набираем:

  1. sudo update-rc.d init-fastcgi defaults

Вам нужно быть уверенным, что запущен сервер nginx и PHP в режиме CGI
Теперь что-бы nginx корректно работал с PHP необходимо заново отредактировать файл /usr/local/nginx/conf/nginx.conf настроив nginx на работу с PHP а не html.

Вот как он должен выглядеть в минимальной своей конфигурации:

  1. user  www;
  2. worker_processes  2;
  3.  
  4. pid     /home/www/linuxspace.org/nginx.pid;
  5.  
  6. events
  7. {
  8.     worker_connections  1024;
  9. }
  10.  
  11. http
  12. {
  13.     include       mime.types;
  14.     default_type  application/octet-stream;
  15.  
  16.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  17.     #                  '$status $body_bytes_sent "$http_referer" '
  18.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  19.  
  20.     sendfile        on;
  21.     tcp_nopush     on;
  22.  
  23.     #keepalive_timeout  0;
  24.     keepalive_timeout  65;
  25.  
  26.     gzip on;
  27.     gzip_min_length  1100;
  28.     gzip_buffers     4 8k;
  29.     gzip_types       text/plain;
  30.     gzip_comp_level 3;
  31.     gzip_proxied any;
  32.  
  33. server {
  34.         listen       80;
  35.         server_name  localhost;
  36.  
  37.         charset utf-8;
  38.     root /home/www/linuxspace.org/public;
  39.  
  40.         #LOGS
  41.     #------------------------------------------------------------------
  42.         access_log  /home/www/linuxspace.org/log/localhost.access.log;
  43.         error_log /home/www/linuxspace.org/log/error.log;
  44.         access_log  /home/www/linuxspace.org/log/access.log;
  45.         #------------------------------------------------------------------
  46.  
  47.         location / {
  48.             root   /home/www/linuxspace.org/public;
  49.             index  index.html index.htm index.php;
  50.         }
  51.  
  52.         error_page  404              /404.html;
  53.  
  54.         # redirect server error pages to the static page /50x.html
  55.         #
  56.         error_page   500 502 503 504  /50x.html;
  57.         location = /50x.html {
  58.             root   html;
  59.         }
  60.  
  61.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  62.         #
  63.         # location ~\.php$ {
  64.         #   proxy_pass   http://127.0.0.1;
  65.         #                   }
  66.  
  67.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  68.         #
  69.         location ~ \.php$ {
  70.             fastcgi_pass   127.0.0.1:9000;
  71.             fastcgi_index  index.php;
  72.             fastcgi_param  SCRIPT_FILENAME  /home/www/linuxspace.org/public/$fastcgi_script_name;
  73.             include        fastcgi_params;
  74.         }
  75.  
  76.         # deny access to .htaccess files, if Apache's document root
  77.         # concurs with nginx's one
  78.         #
  79.         #location ~ /\.ht {
  80.         #    deny  all;
  81.         #}
  82.        }
  83.  
  84.     # another virtual host using mix of IP-, name-, and port-based configuration
  85.     #
  86.     #server {
  87.     #    listen       8000;
  88.     #    listen       somename:8080;
  89.     #    server_name  somename  alias  another.alias;
  90.  
  91.     #    location / {
  92.     #        root   html;
  93.     #        index  index.html index.htm;
  94.     #    }
  95.     #}
  96.  
  97.     # HTTPS server
  98.     #
  99.     #server {
  100.     #    listen       443;
  101.     #    server_name  localhost;
  102.  
  103.     #    ssl                  on;
  104.     #    ssl_certificate      cert.pem;
  105.     #    ssl_certificate_key  cert.key;
  106.  
  107.     #    ssl_session_timeout  5m;
  108.  
  109.     #    ssl_protocols  SSLv2 SSLv3 TLSv1;
  110.     #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  111.     #    ssl_prefer_server_ciphers   on;
  112.  
  113.     #    location / {
  114.     #        root   html;
  115.     #        index  index.html index.htm;
  116.     #    }
  117.     #}
  118.  
  119. }

Далее закидываем wordpress в нашу корневую папку:

  1. wget http://ru.wordpress.org/wordpress-2.8-ru_RU.zip
  1. unzip wordpress-2.8-ru_RU.zip
  1. cd wordpress
  1. mv * /home/www/linuxspace.org/public/

И вводим в броузере http://localhost/

Вы должны будете увидеть окно приветсвия WordPress.

Настройка MySQL. Создание базы данных.

Теперь, все что вам осталось, это создать базу данных для блога.
Помним, что MySQL уже установленна в систему.
Для начала необходимо запустить сервер:

  1. sudo /etc/init.d/mysql start

Далее сменить рутовский пароль и провести кое какую настройку.
Выполняем ниже написанную команду, внимательно читаем все опции:

  1. sudo /usr/bin/mysql_secure_installation

Далее выполняем устновку административных таблиц:

  1. sudo /usr/bin/mysql_install_db

Теперь пришло время создавать таблицу для блога.
Выполняем вход в MySQL:

  1. mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.
  4. Your MySQL connection id is 68
  5. Server version: 5.0.75-0ubuntu10.2 (Ubuntu)
  6.  
  7. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  8.  
  9. mysql>

Eсли вы увидели что-то похожее, то вход выполнен.
Далее создаем таблицу:

  1. mysql> CREATE DATABASE `wordpress` CHARACTER SET utf8 COLLATE utf8_general_ci;

Синтаксис оператора CREATE DATABASE

CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET charset] [COLLATE collation];

db_name – Имя, которое будет присвоено создаваемой базе данных.

IF NOT EXISTS – Если не указать этот параметр, то при попытке создания базы данных с уже существующим именем, возникнет ошибка выполнения команды.

CHARACTER SET, COLLATE – Используется для задания стандартной кодировки таблицы и порядка сортировки.

Если при создании таблицы эти параметры не указываются, то кодировка и порядок сортировки вновь создаваемой таблицы берутся из значений, указанных для всей базы данных. Если задан параметр CHARACTER SET, но не задан параметр COLLATE, то используется стандартный порядок сортировки. Если задан параметр COLLATE, но не задан CHARACTER SET, то кодировку определяет первая часть имени порядка сортировки в COLLATE.

Для того, чтобы посмотреть настройки уже существующей базы данных необходимо выполнить оператор SHOW CREATE DATABASE

  1. mysql> SHOW CREATE DATABASE `wordpress`;

Вот инфа о базе, которую только-что создал я:

  1. mysql> SHOW CREATE DATABASE `wordpress`;
  2. +----------+----------------------------------------------------------------+
  3. | Database | Create Database                                                |
  4. +----------+----------------------------------------------------------------+
  5. | my_db    | CREATE DATABASE `my_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
  6. +----------+----------------------------------------------------------------+
  7. 1 row in set (0.00 sec)

Завершите работу с mysql выполнив:

  1. mysql>QUIT

Теперь, осталось в поле «имя БД» в процессе установки wordpress указать имя созданной вами базы и в полях логин\пароль указать имя пользователя и пароль рута для MySQL.

За сим все! Статья и так получилась огромной :-) Наверное и половина не дочитает ее до конца. :-) Надеюсь кому-нибудь будет полезно.


8 комментариев на запись “Как установить nginx на Ubuntu\Debian + WordPress”

  1. 1 Jay сказала в 20:01, 09.07.2009:

    Спасибо большое, очень помогла ваша заметка!

  2. 2 dan1005 сказала в 8:12, 04.09.2009:

    Автору – глубокий респект!
    Одна маленькая закавыка: параметры fastcgi создают один воркер, а чтобы было пять, как в примере, нужно написать php-fastcgi:

    /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi

  3. 3 d сказала в 18:13, 11.04.2010:

    почему бы не использовать php-fpm?

  4. 4 admin сказала в 22:14, 11.04.2010:

    Хорошая альтернатива, если у вас есть примеры реализации, будем рады, опубликуйте, народу будет полезно.

  5. 5 CyberMax сказала в 0:35, 15.04.2010:

    А при такой конфигурации ЧПУ в WordPress будут работать? По моему для этого надо ещё rewrite в настройках nginx прописать.

  6. 6 admin сказала в 9:36, 15.04.2010:

    ЧПУ будут работать без всяких конфигураций)) Достаточно просто настроить ссылки в нутри админки WordPress.

  7. 7 Klim сказала в 14:19, 02.06.2011:

    Простите, а phpmyadmin в этой связке можно добавить?

  8. 8 admin сказала в 21:48, 02.06.2011:

    не уверен, ну думаю да. скорее всего.


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

  • Доступные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

  • *