GrabDuck

Установка Joomla на Nginx в Debian и Ubuntu / Unix-way / IT бубен - шаманим вместе, ...

:

В статье показано как установить и запустить CMS Joomla 1.7 на Debian Squeeze и Ubuntu 11.10. Устанавливать будем на Nginx (LEMP = Linux + Nginx + MySQL + PHP) который требует меньше ресурсов, чем Apache и обеспечивает более быструю отдачу страниц, особенно статических файлов.

В статье используется сайт www.example.com с корневым каталогом /var/www/www.example.com/web. У вас уже должен быть установлен Nginx, если это не так обратитесь к статье Как установить Nginx + PHP5 (и PHP-FPM) + MySQL.

Заходим под root:

sudo su

Установка APC

APC нужен для кэширования и оптимизации промежуточного кода PHP, аналогично работают Eaccelerator и XCache. Данный софт поможет ускорить работу.

apt-get install php-apc

Если используется PHP-FPM как демон FastCGI. Перезагрузите его:

/etc/init.d/php5-fpm restart

Если используется spawn-fcgi как демон FastCGI. Нужно убить текущий процесс (работает на порту 9000) и создать новый:

netstat -tap

В выводе ищем похожую строчку:

tcp        0      0 localhost.localdom:9000 *:*                     LISTEN      1542/php5-cgi

1542 это PID процесса. Теперь можно его убить:

kill -9 1542

Далее создаем новый:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Установка Joomla

Сделаем каталог для сайта:

mkdir -p /var/www/www.example.com/web

Установим unzip чтобы распаковывать архивы:

apt-get install unzip

Скачиваем Joomla с www.joomla.org/download.html и помещаем в корневую директорию /var/www/www.example.com/web:

cd /tmp
mkdir joomla
cd joomla
wget http://joomlacode.org/gf/download/frsrelease/16024/69674/Joomla_1.7.3-Stable-Full_Package.zip
unzip Joomla_1.7.3-Stable-Full_Package.zip
rm -f Joomla_1.7.3-Stable-Full_Package.zip
mv * /var/www/www.example.com/web/

Корень и файлы в нем желательно сделать доступными для записи демону Nginx, который работает от пользователя www-data и группы www-data:

chown -R www-data:www-data /var/www/www.example.com/web

Если еще не создали базу и пользователей MySQL для Joomla, это можно сделать следующим образом (в примере — база данных называется joomla, а пользователь joomla_admin с паролем joomla_admin_password):

mysqladmin -u root -p create joomla
mysql -u root -p
GRANT ALL PRIVILEGES ON joomla.* TO 'joomla_admin'@'localhost' IDENTIFIED BY 'joomla_admin_password';
GRANT ALL PRIVILEGES ON joomla.* TO 'joomla_admin'@'localhost.localdomain' IDENTIFIED BY 'joomla_admin_password';
FLUSH PRIVILEGES;
quit;

Далее создадим виртуальный хост для nginx в /etc/nginx/sites-available/:

nano /etc/nginx/sites-available/www.example.com.vhost
server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://www.example.com$request_uri permanent;
       }

       index index.php index.html index.htm default.html default.htm;

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }

       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       # deny running scripts inside writable directories
       location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
                return 403;
                error_page 403 /403_error.html;
       }

       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }

       location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
       }

       # caching of files
       location ~* \.(ico|pdf|flv)$ {
                expires 1y;
       }

       location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
                expires 14d;
       }

       location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }
}

Активируем, создав символическую ссылку в /etc/nginx/sites-enabled/:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com.vhost www.example.com.vhost

Перезагрузим nginx:

/etc/init.d/nginx reload

Все, теперь можно перейти в браузере www.example.com/installation для установки Joomla. Это не должно вызвать каких то трудностей.

После установки сайт будет доступен по адресу www.example.com, а также панель администратора http://www.example.com/administrator.

Далее заходим в Global Configuration, включаем Search Engine Friendly URLs и Use URL rewriting:

Внутреннее кэширование и GZIP сжатие включается в админпанели CMS Joomla. Так что нет никакой необходимости править виртуальный хост.