Сейчас 126 заметки.

Установка и настройка веб-сервера LEMP на Arch Linux

Материал из ЗАметки

Это руководство предоставляет пошаговую инструкцию по установке полнофункционального стека LEMP на Arch Linux. Вы получите инструкции по установке Nginx, MySQL и PHP.

Инструкции которые содержатся в этом руководстве протестированы на платформе http://Clodo.ru

Это руководство предполагает, что вы вошли в систему как суперпользователь root.


Перед установкой web-сервера nginx, убедитесь в том, что ваша система использует последние версии репозиториев, выполнив команду:

pacman -Sy

Установка nginx выполняется командой:

pacman -S nginx

Регулярно обновляйте вашу систему командой “pacman -Su”, чтобы использовать последние версии ПО и исправления безопасности. При обновлении системы внимательно изучайте вывод pacman и следите за новостями в Arch Linux Community, чтобы избежать нежелательных сторонних эффектов или конфликтов с пакетами, которые вы собрали сами.

Настройка виртуальных хостов (virtual hosts) в Nginx

По-умолчанию, при установке Nginx, основной файл конфигурации расположен по следующему пути:

/etc/nginx/conf/nginx.conf

Есть несколько вариантов настройки Nginx. Независимо от выбранного подхода к конфигурации, все настройки, касающиеся виртуальных хостов, собраны в блоке конфигурации сервера, заключенных в блок http в файле nginx.conf.

Пример настройки сервера:

server {
listen 80;
server_name www.yoursite.com yoursite.com;
access_log /srv/http/yoursite.com/logs/access.log;
error_log /srv/http/yoursite.com/logs/error.log;

location / {
root /srv/http/yoursite.com/public;
index index.html index.htm;
}
}


Создайте директории, указанные в конфигурации сервера:

mkdir -p /srv/http/example.com/public
mkdir -p /srv/http/example.com/logs

Добавлять множество блоков server в секцию http может быть затруднительным для чтения и правки. Вы можете использовать систему настройки, как в Debian-based системах. Создайте папки sites-available и sites-enabled и добавьте строку добавления этих папок в nginx.conf:

http { # [...]

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

# [...]
}

В директории sites-available нужно сохранить файлы с описанием параметров виртуальных хостов, и создать символическую ссылку на файл в папке sites-enabled.

Чтобы изменения вступили в силу, вам нужно перезапустить nginx. Перед перезапуском, рекомендуется выполнить проверку конфигурации. Это можно сделать командой “nginx -t”. Перезапустить сервер можно командой:

/etc/rc.d/nginx restart

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

/etc/rc.conf


Подключение PHP средствами FastCGI

Если ваша web-страница содержит PHP-код, вам нужно установить FastCGI для обработки PHP. Следующая последовательность команд выполнит установку пакетов, необходимых для обработки PHP-кода.

pacman -S sudo base-devel php-cgi spawn-fcgi
cd /opt
wget http://aur.archlinux.org/packages/spawn-fcgi-php/spawn-fcgi-php.tar.gz
tar -zxvf spawn-fcgi-php.tar.gz
cd /opt/spawn-fcgi-php
makepkg --asroot
pacman -U spawn-fcgi-php*.pkg.*

Поскольку вы собираете этот пакет из исходников, следует время от времени проверять страницы этого пакета в AUR (Arch User Repository) на наличие обновлений.

Чтобы запустить PHP FastCGI выполните команду:

/etc/rc.d/spawn-fcgi-php start

В стандартной конфигурации, spawn-fcgi-php порождает четыре дочерних процесса php-cgi. Протестируйте данную конфигурацию с обычной нагрузкой. Количество дочерних процессов можно, изменив в файле /etc/conf.d/spawn-fcgi-php.conf значение переменной PHP_FCGI_CHILDREN. Добавьте демон spawn-fcgi-php в массив DAEMONS=() в файле /etc/rc.conf, чтобы он стартовал при загрузке.

Приведем в пример следующую конфигурацию Nginx.

server {
server_name www.yoursite.com yoursite.com;
access_log /srv/http/yoursite.com/logs/access.log;
error_log /srv/http/yoursite.com/logs/error.log;
root /srv/http/yoursite.com/public_html;

location / {
index index.html index.htm index.php;
}

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/http/example.com/public_html$fastcgi_script_name;
}
}

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

Чтобы избежать этой проблемы, включите в конфигурацию директиву try_files. Данное действие требует нахождения Nginx и php-fcgi на одном сервере.

location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/http/yourite.com/public_html$fastcgi_script_name;
}

Хорошим тоном является защита директорий, используемых приложениями для загрузки файлов. Следующая конфигурация является примером такой настройки:

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
if ($uri !~ "^/images/") {
fastcgi_pass 127.0.0.1:9000;
}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/http/example.com/public_html$fastcgi_script_name;
}

После окончания процесса настройки web-сервера, проверьте правильность настройки:

nginx -t

пример успешного результата:

nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

Для того, чтобы настройки вступили в силу, перезапустите web-сервер:

/etc/rc.d/nginx restart

Настройка PHP окончена. Теперь PHP код будет обрабатываться должным образом.


Установка и настройка СУБД MYSQL

СУБД MySQL является популярнейшей СУБД с открытым кодом.

Установить MYSQL можно командой:

pacman -S mysql

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

/etc/rc.d/mysqld start

Добавьте MySQL в список демонов при загрузке системы, добавив mysql в массив “DAEMONS = ()” в файле /etc/rc.conf.

Для настройки MySQL выполните команду:

mysql_secure_installation

Следуйте инструкции по установке.

Чтобы получить доступ к оболочке MySQL, воспользуйтесь командой:

mysql -u root -p

Введите пароль от пользователя root. Теперь вы можете создать новых пользователей для работы с MySQL. Пример создания новый БД и пользователя для работы с ней.

CREATE DATABASE userdatabase;
CREATE USER 'user' IDENTIFIED BY 'i4j89UJd';
GRANT ALL PRIVILEGES ON userdatabse.* TO 'user';
exit;

Теперь можно передать данные пользователя user приложению, для использования БД userdatabase. Также, для того, чтобы PHP функции могли обратиться к MySQL, перезапустите службу spawn-fcgi-php:

/etc/rc.d/spawn-fcgi-php restart

Настройка LEMP завершена.