Установка и настройка веб сервера Nginx
Рассмотрим установку веб сервера Nginx, ssl, и настройку сайтов.
Обновим все пакеты:
1 |
apt-get update |
1 |
apt-get upgrade |
Удалим кэш пакетов и ненужные пакеты:
1 |
apt-get clean |
1 |
apt-get autoclean |
1 |
apt-get autoremove |
Установим часовой пояс.
1 |
dpkg-reconfigure tzdata |
Установим NTP.
1 |
apt-get install ntp |
Установим Openssh сервер (если он не установлен).
1 |
apt-get install openssh-server |
Устанавливаем веб сервер Nginx.
1 |
apt-get install nginx |
Устанавливаем Mysql сервер.
1 |
apt-get install mysql-server |
Настраиваем безопасность Mysql.
1 |
mysql_secure_installation |
Устанавливаем PHP.
1 |
apt-get install php5-fpm php5-mysql |
Устанавливаем значения firewall.
1 |
ufw allow OpenSSH |
1 |
ufw allow 80/tcp |
1 |
ufw limit OpenSSH |
1 |
ufw enable |
Установка веб сервера завершена.
Перейдем к настройке.
Открываем файл /etc/php5/fpm/php.ini и меняем значение cgi.fix_pathinfo=1 на 0
Должно получиться так:
1 |
cgi.fix_pathinfo=0 |
Далее открываем файл /etc/php5/fpm/pool.d/www.conf и добавляем в него строку:
1 |
listen = /var/run/php5-fpm.sock |
Перезапускаем PHP.
1 |
service php5-fpm restart |
Настроим первый сайт на 80-м порту.
Создадим папку с сайтами (если не хотим использовать папку /var/www).
1 |
mkdir /hosting |
Рассмотрим пример установки CMS WordPress.
Скачиваем последнюю версию WordPress.
1 |
wget http://wordpress.org/latest.tar.gz |
Распаковываем.
1 |
tar -xzvf latest.tar.gz |
Теперь создадим пользователя в БД Mysql для нового сайта.
Подключаемся к Mysql.
1 |
mysql -u root -p |
Создаем БД с именем wordpress.
1 |
CREATE DATABASE wordpress; |
Создаем пользователя wordpressuser.
1 |
CREATE USER wordpressuser@localhost; |
Устанавливаем пароль созданному пользователю.
1 |
SET PASSWORD FOR wordpressuser@localhost= PASSWORD("password"); |
Устанавливаем права пользователю на администрирование созданной ранее БД.
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY 'password'; |
Перезагружаем привилегии Mysql.
1 |
FLUSH PRIVILEGES; |
Выходим из консоли Mysql.
1 |
exit |
Теперь подготовим CMS WordPress для работы с БД.
Копируем конфиг WordPress.
1 |
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php |
Открываем файл /wordpress/wp-config.php и редактируем следующие поля:
1 2 3 4 5 6 7 8 9 |
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); |
Создаем папку с сайтом.
1 |
mkdir /hosting/wordpress |
Копируем сайт.
1 |
cp -r ~/wordpress/* /hosting/wordpress |
Назначаем права на каталог с сайтами веб серверу.
1 |
chown -R www-data /hosting/ |
Создаем A запись в DNS с именем сайта (в моем примере — wordpress.test.com).
Перейдем к настройке конфигов сайта.
Удаляем дефолтные конфиги.
1 |
rm -f /etc/nginx/sites-available/* |
1 |
rm -f /etc/nginx/sites-enabled/* |
Создаем конфиг для нового сайта.
1 |
touch /etc/nginx/sites-available/wordpress |
Открываем созданный файл и приводим к виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
server { listen 80; root /hosting/wordpress; index index.php index.html index.htm; server_name wordpress.test.com; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } |
В данном конфиге:
Директива listen 80; указывает на каком порту работает сайт
Директива root указывает корневую директорию сайта
Директива index указывает индексные файлы сайта
Директива server_name указывает dns имя сайта
Секция :
1 2 3 |
location / { try_files $uri $uri/ /index.php?q=$uri&$args; } |
используется для перманентных ссылок в wordpress
Директива error_page указывает на расположение страниц с ошибками
Директива location ~ \.php$ указывает расположение php5-fpm
Сохраняем конфиг.
Включаем сайт командой.
1 |
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress |
Перезапускаем Nginx.
1 |
service nginx restart |
Готово! Теперь сайт доступен по адресу — http://wordpress.test.com
Перейдем к настройке SSL.
Создадим папку для SSL сертификатов в каталоге Nginx.
1 |
mkdir /etc/nginx/ssl |
Теперь создадим SSL сертификат командой.
1 |
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt |
Далее вводим данные по нашему сертификату.
Теперь настроим сайт с WordPress на использование SSL.
Открываем конфиг /etc/nginx/sites-available/wordpress
И приводим к виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
server { listen 80; server_name wordpress.test.com; location / { rewrite ^(.*)$ https://wordpress.test.com$1 permanent; } listen 443 ssl; root /hosting/wordpress; index index.php index.html index.htm; server_name wordpress.test.com; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } |
В данном конфиге:
Директива rewrite описывает правило перенаправления с http на https
Директива listen 443 ssl; указывает что сайт работает по протоколу ssl на 443 порту
Директивы ssl_certificate и ssl_certificate_key указывают путь к файлам сертификата.
Открываем порт на firewall.
1 |
ufw allow 443/tcp |
Перезагружаем конфиги Nginx.
1 |
service nginx reload |
Теперь при открытии url http://wordpress.test.com будет срабатывать перенаправление на https://wordpress.test.com
На этом настройка SSL завершена.
Удачной установки! =)
Добавить комментарий