• Автор:

    Flesha
  • Добавлено:

    сен 22, 2014
  • Комментариев:

    1
  • Просмотров:

    1355

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

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

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

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

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

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

Нам потребуется подключиться к серверу по 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/*;


На этом всё, первоначальная настройка веб-окружения готова.

Автор: MSW (0-web.ru)
Вернуться

Комментарии:


  1. osv → 16 октября 2014 03:57
    Да почаще бы таких статей, было бы не плохо разобраться в этих серверах и т.п.
    А то лично для меня например это тёмный лес. Кроме обычного виртуального хостинга ничем не умею больше пользоваться sad
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.