16 сен


В данном цикле статей я постараюсь осветить все этапы настройки web сервера на основе Ubuntu Server 14.04 x64.
Рассмотрим установку apache, nginx, php, mysql, ftp, ssl, подключение cloudflare и почты для домена от yandex.

Настройка WEB сервера. Эпизод 1. Web окружение

Первая часть посвящена настройке web окружения. Мы проведём установку и настройку связки apache + nginx, установим php и mysql.

Предисловие
Настройка будет происходить чистой версии операционной системы(ОС) без предустановленных панелей и прочего софта.
Сам процесс установки ОС рассматривать не будем, так как зачастую хостинг-провайдеры самостоятельно устанавливают ОС из уже имеющихся образов-шаблонов.

Рекомендую взять в аренду сервер от rootwelt
Бонус скидка 50% на первый платёж: 50OFF
Качество и быстродействие сервера очень приятно удивят, тем более самый минимальный сервер стоит 5 евро, а с бонус-скидкой на первый платёж даже 2,5 евро!
Есть оплата вебмани и русская поддержка!
Так же русский интерфейс сайта включается справа вверху страницы :)


Нам потребуется подключиться к серверу по SSH, для этого подходит программа putty, скачать какую можно на сайте автора: PuTTY Download Page
Все указанные команды необходимо выполнять от имени пользователя root.

Для установки программного обеспечения, необходимого для работы web сервера, необходимо для начала обновить списки пакетов:
apt-get update; apt-get -y upgrade; apt-get -y dist-upgrade; apt-get -y autoremove

после приступить непосредственно к установке:
apt-get install zip unzip p7zip-full mc apache2 php5 mysql-server php5-mysql php5-mcrypt php5-gd php5-curl php5-xcache pure-ftpd openssl curl rsnapshot subversion git htop

В процессе установки будет выведена форма задания пароля пользователя root для mysql, придумываем пароль и запоминаем его.
Для создания паролей можно применить любой генератор паролей, пароль желательно создавать 32-64 символа с применением больших и маленьких букв, цифр и спецзнаков(!#;%:?*_+-).

Подключаем репозиторий nginx и устанавливаем его:
echo 'deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list.d/nginx.list
echo 'deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list.d/nginx.list
wget http://nginx.org/keys/nginx_signing.key; apt-key add nginx_signing.key
apt-get update; apt-get install nginx


Настроим параметры работы с разделом подкачки и дисковой системой, а так же синхронизируем время на сервере:
echo 'vm.swappiness = 5' >> /etc/sysctl.conf
echo 'fs.file-max = 4000000' >> /etc/sysctl.conf
echo 'vm.vfs_cache_pressure = 1000' >> /etc/sysctl.conf
sysctl -p
ntpdate time.nist.gov
dpkg-reconfigure tzdata


Теперь можно приступать к настойке виртуальных хостов.
Для этого в директории апача существует 2 папки:
sites-available - тут находятся конфиги виртуальных хостов
sites-enabled - тут находятся симплинки на конфиги из папки sites-available, таким образом просто включить/отключить тот или иной сайт

Создадим структуру директорий, например все наши сайты будут размещаться в директории: /home/www-data/
в ней будут папки с названием домена сайта, в которой будут папки поддоменов.
Например структура получится такая:
/home/www-data
---- /example.com
---- ---- /www - тут будет размещаться сайт
---- ---- /logs - тут будут размещаться логи апача и нжинкса
---- ---- /phpmyadmin - тут будет размещаться поддомен phpmyadmin


mkdir -p /home/www-data/example.com
mkdir -p /home/www-data/example.com/www
mkdir -p /home/www-data/example.com/logs
mkdir -p /home/www-data/example.com/phpmyadmin


Создадим конфиг сайта в apache:
mcedit /etc/apache2/sites-available/0010.example.com.conf

с содержимым:
<VirtualHost *:81>
        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin admin@example.com
        DocumentRoot /home/www-data/example.com/www
        ErrorLog /home/www-data/example.com/logs/apache.error.log
        <Directory />
                Options FollowSymLinks
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>
        ServerSignature Off
</VirtualHost>

<VirtualHost *:81>
        ServerName phpmyadmin.example.com
        ServerAdmin admin@example.com
        DocumentRoot /home/www-data/example.com/phpmyadmin
        <Directory />
                Options FollowSymLinks
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>
        ServerSignature Off
</VirtualHost>

Подключим конфиг сайта в рабочий каталог:
ln -s /etc/apache2/sites-available/0010.example.com.conf /etc/apache2/sites-enabled/


Создаём конфиг сайта в nginx:
mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled
mcedit /etc/nginx/sites-available/0010.example.com.conf


server {
        listen 80;
        server_name example.com;
        set $home /home/www-data/example.com/www/;
        location ~* \.(jpg|jpeg|gif|png|bmp|ico|css|js|swf|flv|zip|tgz|tar|gz|rar|bz2|txt|rtf|doc|xls|docx|xlsx|pdf|ppt|woff|wav)$ {
                root $home;
                index index.php;
                access_log off;
                expires 7d;
        }
        location ~ /\.ht {
                deny all;
        }
        location / {
                root $home;
                include         /etc/nginx/proxy.conf;
                access_log     /home/www-data/example.com/logs/nginx.access.log main;
                error_log       /home/www-data/example.com/logs/nginx.error.log error;
        }
}

server {
        listen 80;
        server_name phpmyadmin.example.com;
        set $home /home/www-data/example.com/phpmyadmin/;
        location ~* \.(jpg|jpeg|gif|png|bmp|ico|css|js|swf|flv|zip|tgz|tar|gz|rar|bz2|txt|rtf|doc|xls|docx|xlsx|pdf|ppt|woff|wav)$ {
                root $home;
                index index.php;
                access_log off;
                expires 7d;
        }
        location ~ /\.ht {
                deny all;
        }
        location / {
                root $home;
                include         /etc/nginx/proxy.conf;
        }
}


Создадим файл настроек nginx для сайтов:
mcedit /etc/nginx/proxy.conf

                proxy_pass                      http://127.0.0.1:81/;
                proxy_redirect                  off;
                proxy_set_header                Host            $host;
                proxy_set_header                X-Real-IP       $remote_addr;
                proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size            30m;
                client_body_buffer_size         128k;
                proxy_connect_timeout           60;
                proxy_send_timeout              90;
                proxy_read_timeout              90;
                proxy_set_header                Connection close;
                proxy_pass_header               Content-Type;
                proxy_pass_header               Content-Disposition;
                proxy_pass_header               Content-Length;
                proxy_buffer_size               4k;
                proxy_buffers                   4       32k;
                proxy_busy_buffers_size         64k;
                proxy_temp_file_write_size      64k;

Подключим конфиг сайта в рабочий каталог:
ln -s /etc/nginx/sites-available/0010.example.com.conf /etc/nginx/sites-enabled/


Подправим конфиг nginx что бы он брал настройки сайтов из нужной папки:
mcedit /etc/nginx/nginx.conf

Первым делом установим кол-во рабочих процессов, по количеству доступных ядер:
worker_processes 4;

и после строки:
include /etc/nginx/conf.d/*.conf;

добавим:
include /etc/nginx/sites-enabled/*;


На этом всё, первоначальная настройка веб-окружения готова.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.