Стандартный web-сервер в Ubuntu и Debian - это стек программ LAMP - Linux, Apache, MySQL и PHP. Один из недостатков этой платформы - высокие требования к ресурсам, а в частности - большое потребление оперативной памяти.
Решить эту проблему можно заменив Apache на быстрый и маленький nginx. В результате получится LEMP - Linux, nginx (Engine X), MySQL и PHP.

Приступим к установке:
Обновляем кеш пакетов:

sudo apt-get update
sudo apt-get install dialog bsdutils

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

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql 

При установке MySQL попросит ввести пароль пользователя root (хотя его можно задать и позднее). После установки инициализируем MySQL:

sudo mysql_install_db

И затем завершим установку выполнив скрипт:

sudo /usr/bin/mysql_secure_installation

Скрипт запросит текущий пароль пользователя MySQL root.
Затем предложит его изменить и задаст несколько вопросов:

Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

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

sudo apt-get install nginx

И запускаем его:

sudo service nginx start

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

sudo apt-get install php5-fpm

Конфигурируем php. Для этого редактируем php.ini:

 sudo nano /etc/php5/fpm/php.ini

Находим cgi.fix_pathinfo=1, и меняем 1 на 0:

cgi.fix_pathinfo=0

Это нужно для повышения безопасности.

Затем нужно отредактировать файл /etc/php5/fpm/pool.d/www.conf:

 sudo nano /etc/php5/fpm/pool.d/www.conf

В нем находим строку listen = 127.0.0.1:9000, и меняем 127.0.0.1:9000 на /var/run/php5-fpm.sock.

listen = /var/run/php5-fpm.sock

Затем перезапускам php-fpm:

sudo service php5-fpm restart

Теперь надо сконфигурировать nginx. Открываем файл с сайтом-по-умолчанию:

sudo nano /etc/nginx/sites-available/default

Приводим его к такому виду:

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/;

       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;
       }

        
 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }

}

Также можно добавить (но можно и не добавлять) директивы:

       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;
       }

Проверяем работоспособность. Кладем в папку сайта проверочный файл /var/www/info.php такого содержания:

<?php
phpinfo();
?>

Перезапускаем nginx и смотрим что получилось.

sudo service nginx restart

При заходе на http://_IP_address/info.php мы должны увидеть информацию о текущей версии PHP.

Все. Теперь можно устанавливать joomla и радоваться!

Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/ubuntu-nginx-joomla-lemp.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1