Настройка сервера PHP 7.1 + Nginx + MySQL. Часть 1

Этот цикл заметок посвящен созданию своего виртуального хостинг-сервера на базе операционной системы Linux Ubuntu 16.04 LTS и связки PHP 7.1 FPM + веб-сервера NGINX + сервера баз данных MySQL, а также настройке SSL.
В качестве хостинга предлагаем рассмотреть сервис компании «Селектел» — Vscale, на данной площадке можно арендовать надежные и быстрые VDS от 200 рублей в месяц




Обновляем пакеты сервера
apt-get update
apt-get upgrade
apt-get autoremove
apt-get clean
Устанавливаем полезные утилиты
apt-get install unzip zip mc htop rcconf
Устанавливаем русскую локаль — второй командой выбираем ru_RU.UTF-8 в качестве локали по-умолчанию
locale -a
dpkg-reconfigure locales
Настраиваем доступ к серверу по SSH (добавляем пользователя-администратора, для управления сервером, а также группу для доступа к SFTP)
adduser administrator
adduser administrator sudo
addgroup sftp
nano /etc/ssh/sshd_config
В /etc/ssh/sshd_config
  • Меняем PermitRootLogin no
  • Комментируем #Subsystem sftp /usr/lib/openssh/sftp-server
  • Добавляем в конец:
Subsystem sftp internal-sftp
Match Group sftp
	ChrootDirectory %h
	AllowTCPForwarding no
	ForceCommand internal-sftp
Настраиваем защиту подключений по SSH
cd /root
touch iptables
chmod +x iptables
nano iptables
Добавляем в iptables
#!/bin/bash

# Очистка цепочек правил
iptables -F INPUT
iptables -Z INPUT
iptables -P INPUT ACCEPT

iptables -F OUTPUT
iptables -Z OUTPUT
iptables -P OUTPUT ACCEPT

iptables -F FORWARD
iptables -Z FORWARD
iptables -P FORWARD ACCEPT

# Защита порта ssh, время блокировки - 30 секунд
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 30 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
Делаем файл исполняемым
./iptables
iptables -L
nano /etc/rc.local
В rc.local перед строчкой exit 0 добавим ссылку на iptables — /root/iptables
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/root/iptables

exit 0
Перезапускаем ssh-сервер
service ssh restart
Устанавливаем php7.1 и необходимые модули. Для начала подключим репозиторий
apt-get install python-software-properties
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get update
apt-get upgrade
При необходимости удаляем предыдущую версию
apt-get remove php7.0
Устанавливаем
apt-get install -y php7.1 php7.1-fpm
Просмотрим список доступных модулей
apt-cache search php7-*
Устанавливаем необходимые
apt-get install php7.1-mysql php7.1-curl php7.1-json php7.1-gd php7.1-zip php7.1-mbstring php7.1-xml
Указываем параметр date.timezone в /etc/php/7.1/cli/php.ini, например:
date.timezone = Europe/Moscow
nano /etc/php/7.1/cli/php.ini
Устанавливаем Imagemagick
apt-get install imagemagick
apt-get install php-imagick
Устанавливаем MySql и правим настройки безопасности
apt-get install mysql-server
mysql_secure_installation
Устанавливаем веб-сервер NGINX
apt-get install nginx
cd /etc/nginx
Чтобы не писало потом ошибку про PID
mkdir /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload
04 марта 2017, 22:18    Alexey Заметки 0    2 0

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.