Установка и настройка веб-сервера (Linux+Nginx+MySQL+PHP)

Установка и настройка веб-сервера (Linux+Nginx+MySQL+PHP)
Основное отличие LEMP от LAMP заключается в замене веб-сервера Apache на веб-сервер Nginx (произносится как «Engine X,» сокращение дает букву «Е» в LAMP).


CentOS
Перед началом установки вам нужно обновить вашу систему.
yum update

Установка Nginx:
yum update
yum install nginx

Для того, чтобы запустить сервер выполните команду:
/etc/init.d/nginx start

Чтобы добавить nginx в список сервисов, стартующих при запуске оперциаонной системы, выполните следующий цикл команд:
chkconfig --add nginx
chkconfig nginx on

По-умолчанию, при установке 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/init.d/nginx restart

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

Создайте скрипт для автозапуска php_cgi при запуске системы:
vi /etc/init.d/php_cgi

#!/bin/sh

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = «no» ] && exit 0

spawnfcgi="/usr/bin/spawn-fcgi"
php_cgi="/usr/bin/php-cgi"
prog=$(basename $php_cgi)
server_ip=127.0.0.1
server_port=9000
server_user=nginx
server_group=nginx
server_childs=5
pidfile="/var/run/php_cgi.pid"

[ -f /etc/sysconfig/phpfastcgi ] &&. /etc/sysconfig/phpfastcgi

start() {
[ -x $php_cgi ] || exit 1
[ -x $spawnfcgi ] || exit 2
echo -n $«Starting $prog: „
daemon $spawnfcgi -a $ -p $ -u $ -g $ -P $ -C $ -f $
retval=$?
echo
return $retval
}

stop() {
echo -n $“Stopping $prog: „
killproc -p $ $prog -QUIT
retval=$?
echo
[ -f $ ] && /bin/rm -f $
return $retval
}

restart(){
stop
sleep 2
start
}

rh_status(){
status -p $ $prog
}

case “$1» in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
rh_status;;
*)
echo $«Usage: $0 {start|stop|restart|status}»
exit 3
esac
Сделайте скрипт исполняемым:
chmod a+x /etc/init.d/php_cgi

Запустите php_cgi:
service php_cgi start

Проверьте его работоспособность:
netstat -tlnp | grep :9000

Теперь отредактируйте конфигурационный файл nginx и запишите в нем настройка для php_cgi:

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
Проверьте правильность настройки nginx командой:
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

Запустите nginx:
service nginx start

СУБД MySQL является популярнейшей СУБД с открытым кодом.
Установить MYSQL можно командой:
yum install mysql-server php-mysql

Запуск демона MYSQL производится командой:
/etc/rc.d/init.d/mysqld start

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

Чтобы подключиться к MySQL от пользователя root выполните команду:
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, перезапустите службу php_cgi:
/etc/init.d/php_cgi restart


Debian 5 (Lenny)
Перед началом установки необходимо обновить репозитории и установленные программы:
apt-get update
apt-get upgrade

Есть несколько жизнеспособных и популярных способов для установки стека LEMP:
  • Первый вариант устанавливает пакеты с программным обеспечением из репозитория Debian содержащего стабильные версии веб-сервера и дополнительного программного обеспечения.
  • При втором случае, пакеты устанавливаются из репозитория проекта Debian Backports. Backports пакеты более актуальны, чем их стабильные аналоги, предоставляемые стандартным репозиторием Debian.
  • Последний вариант требует загрузки исходных кодов Nginx и компиляции программного обеспечения вручную. Данный способ установки позволяет запускать самые последние версии программного обеспечения.
  • Все варианты совместимы, но в большинстве случаев мы рекомендуем использовать пакеты из проекта Debian или Backports если ваши потребности требуют версия новее, чем предоставленная в репозитории Debian.
Одна из причин по которой Вам необходимо воспользоваться вариантом сборки из исходников — установка дополнительных модулей во время компиляции и получение функций, добавленных в более поздних версиях.
Установка Nginx из пакета Debian
Если Вы выбрали первый вариант установки — из репозитория Debian, Вам необходимо ввести в консоль следующую команду:
apt-get install nginx

Результатом выполнения команды будет установленный веб-сервер Nginx последней стабильной версии.
Установка Nginx из портированых на Debian пакетов
Между предыдущим вариантом установки и текщим разница незначительна. Необходимо отредактировать файл /etc/apt/sources.list добавив туда следующую строку:
Редактируем файл: /etc/apt/sources.list
deb http://backports.debian.org/debian-backports lenny-backports main

После этого необходимо отредактировать файл /etc/apt/preferences, добавив в него строки:
Редактируем файл: /etc/apt/preferences
Package: nginx
Pin: release a=lenny-backports
Pin-Priority: 999

Теперь необходимо выполнить обновление репозитория и установку Nginx. Для этого выполните следующие команды:
apt-get update
apt-get install nginx

Выполните первый запуск Nginx командой:
/etc/init.d/nginx start

Компиляция Nginx из исходных кодов
Если вы хотите собрать и установить Nginx из исходных кодов, введите следующие команды, чтобы установить необходимые компоненты:
apt-get install libpcre3-dev build-essential libssl-dev sudo

Перейдите на страницу загрузки Nginx и скопируйте ссылку на последнюю стабильную (либо необходимую Вам) версию Nginx. Для загрузки Nginx по сети выполните следующие команды:
cd /opt/
wget http://nginx.org/download/nginx-1.1.1.tar.gz
tar -zxvf nginx-1.1.1.tar.gz
cd /opt/nginx-1.1.1/

Подготовьте Nginx для компиляции введя команду:
./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-http_ssl_module

После завершения команды ./configure, Вы увидите информацию о расположении связанных с Nginx файлов.
nginx path prefix: "/opt/nginx"
nginx binary file: "/opt/nginx/sbin/nginx"
nginx configuration prefix: "/opt/nginx/conf"
nginx configuration file: "/opt/nginx/conf/nginx.conf"
nginx pid file: "/opt/nginx/logs/nginx.pid"
nginx error log file: "/opt/nginx/logs/error.log"
nginx http access log file: "/opt/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"

Следующие команды выполнят компиляцию и установку Nginx:
make
make install

Создайте в системе пользователя для запуска процессов Nginx. Для этого введите следующую команду:
adduser --system --no-create-home --disabled-login --disabled-password --group nginx

Следующим шагом будет установка и настройка init script который поможет нам запускать и останавливать Nginx. Для этого выполним следующие команды:
wget http://lib.clodo.ru/public/web-servers/nginx/init-deb.sh
mv init-deb.sh /etc/init.d/nginx
chmod +x /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults

Для первого запуска Nginx выполните команду:
/etc/init.d/nginx start

Независимо от используемого метода установки Nginx, вам нужно настроить веб-сервер указав виртуальные хосты. Рассмотрим пример конфигурации виртуального хоста Nginx:
server {
    listen   80;
    server_name www.2me.be 2me.be;
    access_log /srv/www/2me.be/logs/access.log;
    error_log /srv/www/2me.be/logs/error.log;

    location / {
        root   /srv/www/2me.be/public_html;
        index  index.html index.htm;
    }
}

Необходимо создать указанные в конфигурации каталоги. Для этого выполним следующие команды:
mkdir -p /srv/www/2me.be/public_html
mkdir -p /srv/www/2me.be/logs

Если для установки Nginx вы использовали пакеты из репозитория Debian, создайте конфигурационный файл /etc/nginx/sites-available/2me.be содержащий указанную выше конфигурацию Nginx, а затем введите следующую команду для активации новой конфигурации и перезапуска веб-сервера:
ln -s /etc/nginx/sites-available/2me.be /etc/nginx/sites-enabled
/etc/init.d/nginx restart

Для того что бы отключить конфигурацию, выполните команды:
rm /etc/nginx/sites-enabled/2me.be
/etc/init.d/nginx restart

При деактивации конфигурации, конфигурационный файл сохраняется и Вы можете в любой момент снова активировать необходимую конфигурацию веб-сервера.
Если Nginx устанавливался из исходных кодов, есть несколько вариантов настройки. Вы можете добавлять конфигурации виртуальных хостов непосредственно в секцию http файла /opt/nginx/conf/nginx.conf или /etc/nginx/nginx.conf, при этом затрудняется управление виртуальными хостами. Либо, Вы можете перенести управление виртуальными хостами создав различные конфигурационные файлы nginx.conf в предварительно созданных директориях sites-available/ и sites-enabled/.
Редактируем файл: /nginx/conf/nginx.conf
http {
# [...]

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

# [...]       
}

Сделанное изменение включает расположение директории sites-enabled.
В некоторых случаях, имеет смысл создавать и указывать в конфигурации файл с именем /opt/nginx-sites.conf:
Редактируем файл: /opt/nginx/conf/nginx.conf
http {
# [...]

include /opt/nginx-sites.conf;

# [...]       
}

После этого необходимо создать файл конфигурации виртуального хоста по примеру указанному выше (2me.be)
После того как вы настроили конфигурационные файлы Nginx, перезапустите веб-сервер для активации новой конфигурации, выполнив следующую команду:
/etc/init.d/nginx restart

Перед перезапуском убедитесь, что каталоги на которые ведут ссылки в вашей конфигурации существуют.

Установка и настройка PHP с FastCGI
Для развертывания приложений PHP, вам установить связку PHP-FastCGI, позволяющее Nginx правильно обрабатывать и обслуживать страницы, содержащие PHP код. Для начала процесса установки, необходимо выполнить команду:
apt-get install php5-cli php5-cgi build-essential wget psmisc

Посетите сайт проекта spawn-fcgi и найдите ссылку для скачивания последней версии FastCGI. После этого выполните следующие команды:
cd /opt
wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
tar -zxvf spawn-fcgi-1.6.3.tar.gz
cd spawn-fcgi-1.6.3.tar.gz
./configure --prefix=/opt/spawn-fcgi
make
make install
ln -s /opt/spawn-fcgi/bin/spawn-fcgi /usr/bin/spawn-fcgi

Выполните следующую последовательность команд для загрузки скрипта оболочки для PHP-FastCGI, содержащий сценарий для контроля процесса первого старта:
cd /opt/
wget https://library.linode.com/lemp-guides/reference/php-fastcgi-deb
mv /opt/php-fastcgi-deb /usr/bin/php-fastcgi
chmod +x /usr/bin/php-fastcgi
wget https://library.linode.com/lemp-guides/reference/init-php-fastcgi-deb
mv /opt/init-php-fastcgi-deb /etc/init.d/php-fastcgi
chmod +x /etc/init.d/php-fastcgi
/etc/init.d/php-fastcgi start
update-rc.d php-fastcgi defaults

Необходимо изменить файл конфигурации виртуального хоста Nginx по примеру указанному ниже:
server {
    listen   80;
    server_name www.2me.be 2me.be;
    access_log /srv/www/2me.be/logs/access.log;
    error_log /srv/www/2me.be/logs/error.log;

    location / {
        root   /srv/www/2me.be/public_html;
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /srv/www/2me.be/public_html$fastcgi_script_name;
    }
}

Такая конфигурация гарантирует, что все ресурсы, имеющие расширение .php, будут обработаны с помощью FastCGI. Когда вы завершили изменения в конфигурации, убедитесь, что виртуальный хост включен и выполните следующую команду, чтобы перезапустить веб-сервер:
/etc/init.d/nginx restart


Установка MySQL
Первым шагом является установка MySQL-сервера с поддержкой PHP, для этого необходимо выполнить следующую команду:
apt-get install mysql-server php5-mysql

Во время установки вам будет предложено ввести пароль. Введенный пароль вы сможете изменить позже.
MySQL сервер готов для настройки и запуска. В данный момент, нет необходимости изменять конфигурационный файл MySQL, можно лишь добавить, что распологается он здесь /etc/my.cnf.
После установки MySQL, рекомендуется использовать mysql_secure_installation, эта программа поможет вам настроить безопасность в MySQL. Во время работы mysql_secure_installation, вам будет представлена возможность изменить пароль MySQL для root пользователя (по умолчанию он не установлен), удалить анонимные учетные записи пользователей и удалить тестовые базы данных. На все предложения запущенной программы рекомендуется, чтобы вы ответили «да» на все предложенные параметры. Если вам будет предложено перезагрузить таблицы привилегий, выберите «да». Выполните следующую команду, чтобы запустить программу:
mysql_secure_installation

Далее, мы создадим базу данных и предоставим пользователям разрешений на использование баз данных. Для этого необходимо войти в MySQL:
mysql -u root -p

После того как вы введете пароль root пользователя MySQL, вы сможете начать взаимодействие с MySQL сервером.
Для создания базы данных и предоставления пользователям привилегий, введите следующую команду. Обратите внимание, двоеточие (;) в конце линии означает завершение вводы команды. Команда должна выглядеть следующим образом:
create database test;
grant all on test.* to ’user’ identified by ’12345’;

В приведенном выше примере, test это имя базы данных, user — имя пользователя c паролем 12345. Обратите внимание, что база данных имен пользователей и паролей используются только подключения к базе данных. Использование этой базы не обязательно.
Мы завершили настройку MySQL и теперь вы можете передать учетные данные базы данных пользователям. Для выхода из администрирования MySQL введите следующую команду:
quit

Для того, чтобы PHP смогут получить доступ к MySQL, необходимо перезапустить PHP следующей командой:
/etc/init.d/php-fastcgi restart
comments powered by Disqus

0 комментариев

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