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 евро!
Есть оплата вебмани и русская поддержка!
Так же русский интерфейс сайта включается справа вверху страницы :)
Бонус скидка 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/*;
На этом всё, первоначальная настройка веб-окружения готова.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.