Стандартный 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 и радоваться!
Discussion