Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. Apache

Как установить, настроить и обезопасить сервер своего веб-сайта с самого начала

by
Difficulty:IntermediateLength:LongLanguages:
Sponsored Content

This sponsored post features a product relevant to our readers while meeting our editorial guidelines for being objective and educational.

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

Если вы имели или управляли веб-сайтом, то знаете, как важен качественный хостинг и хороший сервер. Сложно ориентироваться в огромном количестве компаний, предлагающих хостинг. Это пособие для среднего уровня поможет вам с этим разобраться.

Для кого оно предназначено?

Если вы не разработчик, не автор Themeforest и у вас только базовые знания по управлению серверами, этот пост не для вас. Я рекомендую вам найти простое, готовое к установке профессиональное решение.

Однако, если для вам требуется больше ресурсов, чем для обычного веб-сайта WordPress, можно рассмотреть вариант перехода с хостинга на VPS или выделенный сервер. Не бойтесь, что придётся платить $5,000 в месяц, цены намного ниже, а положительный эффект значительно выше.

Когда стоит задуматься об обновлении хостинга?

Как определить момент, что ваш хостинг становится тесным? Однозначного решения не существует. Но вы можете определиться, ответив на следующие вопросы:

  • У вашего сайта большой трафик?
  • Требуется больше надёжности и безопасности?
  • Нужен контроль с доступом к корневому серверу?
  • Вы разберётесь с сервером без посторонней помощи? Существенным недостатком будет отсутствие поддержки и вам придётся многое делать самостоятельно: устанавливать софт для веб-серверов и базы данных, обновлять и настраивать все приложения и (в основном) на Linux через интерфейс командной строки.

Что выбрать?

Предположим, вам требуется нечто большее, чем просто Shared Hosting, но что выбрать? VPS или выделенный сервер?

  • VPS (Virtual Private Server) позволяет получить гибкости, сколько вам нужно, хотя "виртуально" вы всё равно будете делить сервер с другими. Это уже лучше, чем привязанный хостинг, но не самый оптимальный вариант.
  • Dedicated server (выделенный сервер) похож на VPS, но вам не придётся ни с кем делиться ресурсами и весь компьютер будет обслуживать исключительно ваш веб-сайт.

Процесс установки и настройки практически одинаков как для VPS, так и для выделенного сервера.

Вопросы, которые мы рассмотрим

Давайте перейдём к статье. Краткое содержание:

  • Подготовка
  • Установка
  • Доступ к серверу
  • Установка Apache с Let Encrypt (SSL HTTPS), PHP7 и сервером MySQL
  • Обновление PHP
  • Установка phpMyadmin и его защита
  • Оживление сайта
  • Обновление ОС
  • Восстановление SSL
  • Поиск проблемы
  • Заключение

Подготовка

Поскольку эта статья посвящена установке и настройке уже существующего VPS/выделенного сервера, у вас имеется сервер по умолчанию. Не называя конкретных поставщиков, мой личный выбор - ovh.ie, но вы можете свободно выбирать любого. Единственное, что я рекомендую, это убедиться, что поставщик имеет сильную глобальную инфраструктуру, то есть присутствует как минимум на пяти континентах (извините, Антарктида). Чем более она развита, тем больше выгод вы будете иметь из его ресурсов и цен.

Большинство поставщиков серверов дают возможность выбора физического присутствия вашего сервера. Это важно, поскольку чем ближе он к нужной стране или региону, тем быстрее будет загружаться и работать ваш сайт.

Перед покупкой сервера также следует подумать о доставке контента CDN (content delivery network). Если на вашем веб-сайте много файлов, которые вы будете предоставлять на весь мир, CDN требуется для повышения эффективности веб-сайта. Вы всегда можете получить отдельное решение CDN, так что это не должно влиять на выбор сервера.

Установка

После покупки вы получите пустой сервер с операционной системой по умолчанию. Там не будет ни cPanel, ни панели Plesk, а только:

  • VPS’s IPv4 адрес
  • VPS’s IPv6 адрес
  • VPS имя
  • Логин/пароль

Ни ссылки, ни панели администратора: ничего! Сначала проверим, какая операционная система установлена по умолчанию, смотрите на панели управления пользователя провайдера (а не на панели управления вашего сервера). Вероятно, это будет одна из:

  • Arch Linux (64 bits)
  • Centos 6 (64 bits)
  • Centos 7 (64 bits)
  • Cpanel on CentOS 6 (64 bits)
  • Debian 7 (Wheezy) (64 bits)
  • Debian 8 (Jessie) (64 bits)
    Debian 9 (Stretch) (64 bits)
  • Docker on Ubuntu 14.04 Server
  • Docker on Ubuntu 16.04 Server
  • Drupal (64 bits)
  • Fedora 26 (64 bits)
  • Joomla! (64 bits)
  • Kubuntu 14.04 Desktop
  • LAMP 1.0 (64 bits)
  • OpenVPN on Debian 8
  • Parallels Plesk 12 on Centos 6
    Parallels Plesk 12 on Ubuntu 14.04
  • Plesk on Debian 8 (64 bits)
  • Prestashop (64 bits)
  • Ubuntu 14.04 Server
  • Ubuntu 16.04 Server
    Ubuntu 18.04 Server
  • VestaCP on Debian 8
  • Virtualmin on Debian 8
  • Wordpress (64 bits)

Да! Какой список операционных систем. Я лично пробовал выделенные жирным шрифтом. В общем, процесс настройки и инструкции одинаковы для всех, хотя могут быть некоторые синтаксические различия для команд ОС. Мой личный выбор - Ubuntu 16.04 или Ubuntu 18.04, поэтому я продемонстрирую весь процесс для них.

Если у вас по умолчанию стоит другая ОС, я рекомендую Ubuntu 16.04. Это делается из панели администратора провайдера VPS/сервера, выбрав нужную ОС из списка. Процедура займёт не более десяти минут, затем вам будет предоставлена информация о доступе к серверу.

Вы можете спросить, почему я рекомендую установить Ubuntu 16.04, если вышла версия 18.04. Для этого есть две основные причины:

  • Однажды вам потребуется обновить ОС и я хочу показать, как это делается, даже с существующими веб-сайтами.
  • Если по какой-то причине вы не сможете обновить ОС, я покажу, как обновить свой PHP до последней доступной версии в Ubuntu 16.04.

Доступ к серверу

Итак, как получить доступ к своему серверу? Это зависит от ОС и её версии.

В Windows 10, начиная с 2015 года, вы можете подключаться к серверу Secure Shell (SSH) без установки дополнительного программного обеспечения.

Для всех версий Windows есть очень простой инструмент: PuTTY. PuTTY - это клиент SSH и telnet. PuTTY программное обеспечение с открытым исходным кодом, разработанное и поддерживаемое группой добровольцев.

Для работы на Mac OS есть несколько вариантов:

  • Использование встроенного SSH-клиента в Mac OS.
  • Запуск SSH из командной строки терминала.
  • Cyberduck на Mac - это солидный, хорошо известный SSH-клиент, довольно популярный.

Я использую Windows 10 и мой личный выбор - PuTTY. Итак, откройте ваш SSH-клиент.

PuTTY

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

  • VPS’s IPv4 адрес
  • VPS’s IPv6 адрес
  • VPS имя
  • Логин/пароль

Скопируйте полученное имя VPS, вставьте его в поле Host name и нажмите Open.

puTTY login

Откроется чёрное модальное окно с приглашением “Login as:”. Введите своё имя пользователя и нажмите Enter.

Вам будет предложено ввести пароль (при вводе пароля вы не увидите сам процесс набора по соображениям безопасности), затем нажмите Enter.

Если вы всё сделали правильно, после входа в систему вы увидите экран:

login screen

Эта статья не о работе в Linux со всеми его командами, поэтому я не буду объяснять каждую из тех, что мы здесь используем. Вот список общих команд Linux, которые вы можете изучить позже. Следуя изложенным здесь инструкциям, выполните следующие задачи: установка, настройка, защита и обновление выделенного сервера.

Установите Apache с Let Encrypt (SSL HTTPS), PHP7 и MySQL сервер.

Введите clear и нажмите Enter. Это очистит экран. Чтобы проверить версию ОС, введите lsb_release –a и нажмите Enter. После выполнения всех шагов по установке, вы увидите, что у вас установлена версия Ubuntu 16.04

Сейчас у нас есть два варианта: продолжить с существующей ОС или обновить её до самой последней версии. Пока продолжим с установленной версией.

Теперь мы установим сервер Apache с PHP7 и MySQL, но сначала давайте обновим текущую систему (а не версию ОС).

Наберите sudo apt-get update и нажмите Enter.

Затем sudo apt-get upgrade и Enter.

По требованию подтвердить использование дополнительного дискового пространства для обновлений нажмите Y и Enter.

Для выполнения действия с файлом конфигурации выберите действие по умолчанию и продолжите. Введите sudo apt-get install apache2 mysql-server php и нажмите Enter. Наконец, ещё раз подтвердите использование дискового пространства с помощью Y и Enter.

MySQL Password

Введите пароль пользователя MySQL (убедитесь, что он достаточно надёжен) и повторите его на следующем шаге. Когда процесс завершится, вы станете счастливым обладателем свежего сервера Apache + сервера Mysql и версии PHP 7.

Если у вас уже есть домен вашего сервера, перейдите в свой домен. Если нет, введите в окне браузера свой VPS IPv4-адрес и увидите нечто похожее:

New Apache server

SSL

Посмотрите на поле адреса в окне браузера. Вы заметите, что ваш сайт использует протокол http, а не https. Нам нужно установить и активировать сертификат SSL, поэтому давайте воспользуемся бесплатным, автоматическим и открытым центром сертификации Let’s Encrypt Мы возьмем его из репозитория по адресу https://github.com/letsencrypt, но сначала установим приложение Git.

Снова откройте клиент командной строки, введите sudo apt-get install git и нажмите Enter.

Введите git clone https://github.com/letsencrypt/letsencrypt. С установленным Letsencrypt перейдём к папке letsencrypt, набрав cd letsencrypt / и нажмём Enter.

Затем введите ./letsencrypt-auto. До окончания процесса может пройти несколько минут, пока не появится диалоговое окно с текстом:

Здесь я замечу: если вы используете местозаполнитель домена VPS, то есть ваше имя хоста или IPv4-адрес, у вас могут возникнуть проблемы с letsencrypt. Вы можете увидеть:

Чтобы решить эту проблему, введите ваши окончательные домены.

Предполагая, что проблема решена, введите свой адрес электронной почты, а затем согласитесь с условиями letsencrypt.

В новом диалоговом окне вам будет предложено выбрать, является доступ https обязательным или необязательным (могут ли пользователи по-прежнему получать доступ к вашим ссылкам с помощью http или все ссылки должны быть перенаправлены на https). Я настоятельно рекомендую выбрать второй вариант. Если всё было сделано правильно, вы увидите новое диалоговое окно с сообщением об успехе. Нажмите Enter и перезапустите сервер Apache, набрав sudo systemctl restart apache2. Перейдя на свою страницу, вы увидите, что https активен:

we have https

Позже я покажу вам, как продлить свой сертификат, потому что сертификат letsencrypt по умолчанию действителен всего 90 дней.

Обновить PHP

В соответствии с минимальными требованиями WordPress, сегодня нам нужна версия PHP 7.2. Если вы проверите версию PHP в Ubuntu 16.04, то увидите, что это 7.0, 7.0.30 или 7.1. Для запуска проверки введите в SSH-клиент: php -v

Перед обновлением нашего PHP нам нужно проверить установленные модули PHP. Для этого введите: sudo dpkg --get-selections | grep -v deinstall | grep php

Сделайте скриншот или сохраните содержимое в текстовом файле: вам нужно будет снова установить эти модули после обновления до PHP 7.2.

Далее нам нужно обновить список пакетов. Выполните следующие команды для обновления и установки PHP 7.2 на вашем сервере:

Запустите проверку ещё раз, чтобы убедиться, что вы правильно установили PHP 7.2.

После этого нам нужно отключить старую версию и указать Apache использовать PHP 7.2. Наберите:

Теперь PHP 7.2 активно на вашем сайте. Осталось только установить все модули, которые мы проверяли перед обновлением. Проверьте список, который вы сохранили ранее и введите с соответствующими исправлениями:

Перезапустите сервер apache sudo systemctl restart apache2

Установка phpMyAdmin и его защита

Отлично! Теперь вы можете спросить: где разместить сайт и как создать базу данных? Давайте начнем с установки и обеспечения безопасности приложения phpMyadmin для лучшего управления базой данных.

Примечание: если вы делаете это, не выполнив все предыдущие шаги, сначала обновите систему: sudo apt-get update

  • Для установки phpMyAdmin наберите: apt-get install phpmyadmin php-mbstring php-gettext.
  • В качестве сервера выберите apache2.
  • Выберите yes на просьбу использовать dbconfig-common.
  • Установите пароль приложения mysql для phpMyAdmin.

Теперь, если у вас PHP 7.0, а не 7.2, включите расширения PHP mcrypt и mbstring (если у вас PHP 7.2, mcrypt больше не нужен).

sudo phpenmod mcrypt

sudo phpenmod mbstring

Перезапустите сервер apache: sudo systemctl restart apache2

Теперь у вас есть доступ к веб-интерфейсу по имени домена или IP-адресу вашего сервера по / phpmyadmin.

phpmyadmin

Защита phpMyAdmin

Любой теперь может ввести адрес phpmyadmin и попасть сюда, поэтому нам нужно его защитить. Как? Выставляя шлюз перед всем приложением. Мы сделаем это с помощью встроенных в Apache функций аутентификации и авторизации .htaccess.

Сначала нам нужно разрешить переопределение файлов .htaccess, поэтому введите: nano /etc/apache2/conf-available/phpmyadmin.conf

Поместите курсор сразу после DirectoryIndex index.php следующим образом, добавив Allowoverride All:

Нажмите CTRL + X, нажмите Y, затем Enter.

Перезапустите сервер apache: sudo systemctl restart apache2

Теперь создайте файл .htaccess, набрав: sudo nano /usr/share/phpmyadmin/.htaccess

Введите следующую информацию:

Нажмите CTRL + X, нажмите Y, затем Enter.

Создайте файл .htpasswd для аутентификации

sudo apt-get install apache2-utils

htpasswd -c /etc/phpmyadmin/.htpasswd root

Установите пароль и перезапустите сервер apache: sudo systemctl restart apache2

Теперь, если вы попытаетесь получить доступ к phpmyadmin, вы увидите окно для логина и пароля:

password for phpmyadmin

Как только вы введете логин и пароль (помните, что это не для MySQL), вы будете перенаправлены на обычную страницу входа phpMyAdmin. Введите имя пользователя и пароль MySQL и получите доступ ко всем своим базам данных.

Оживление сайта

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

Выберите любой FTP-клиент, я предпочитаю Filezilla. Используя доступ пользователя root к серверу, который вы получили в самом начале установки сервера, подключитесь к вашему серверу по FTP, используя протокол SFTP.

После входа вы будете перенаправлены в корневую папку. Здесь у вас нет ограничений по области, поэтому вы можете её покинуть и попасть в корень файловой системы сервера. Перейдите к var/www/html; это общая папка, куда вы должны загрузить все файлы вашего сайта. Чтобы ускорить процесс, вы можете загрузить один заархивированный файл и распаковать его с помощью команды SSH. Для этого давайте установим приложение unzip, набрав в нашем SSH-клиенте: apt-get install unzip. После этого введите команду unzip archive.zip, где «archive» - точное имя вашего файла.

Теперь файлы вашего сайта будут распакованы.

Обновите ОС

Я специально не обновлял ОС до размещения сайта на сервере, чтобы показать, как обновить ОС без потери данных. Конечно, всё может пойти не так, поэтому перед обновлением ОС сделаем резервную копию нашего сайта. Сначала сделаем резервную копию базы данных с помощью phpMyadmin и резервную копию всех файлов сайта. Самый простой способ - создать архив файлов и загрузить его по FTP.

Для архивации сайта установим приложение zip, набрав: apt-get install zip

После этого выполним команду: zip -r myarchive.zip myfolder, где «myfolder» - точное имя папки сайта.

Загрузите ваш zip-файл и файл базы данных - теперь мы готовы обновить ОС. Потребуется около двадцати минут. Если ваш сайт работает, и у вас есть посетители, обновите ОС в удобное время.

Для обновления ОС введите следующее:

Всё. После завершения обновления вы можете проверить версию своей ОС, набрав: lsb_release –a

Обновление SSL

Как я упоминал, срок действия сертификата letsencrypt равен 90 дней, поэтому по истечении этого периода вам нужно будет его обновить. Для этого откройте ваш SSH-клиент, войдите в систему и перейдите на: cd root / letsencrypt

  • Остановите сервер apache: sudo systemctl stop apache2.service
  • И наберите ./letsencrypt-auto certonly
  • Выберите 2
  • Введите имя вашего домена
  • Перезапустите сервер apache: sudo systemctl restart apache2

Поиск проблемы

Установка и настройка сервера - это сложная задача - всё может случиться и вам придётся потратить время и терпение на решение проблем. По моему опыту хочу обратить ваше внимание:

Ограничения для пользователя root. Когда я впервые установил веб-сайт на свой сервер, мне сообщили, что WordPress не может создать файл wp-config.php и изображения не могут отображаться. Моей первой мыслью было изменить права доступа к папке/файлам. Это было неправильно, проблема на самом деле исходит от пользователя root. Вам нужно будет сменить владельца папки html (вашей общей папки). Для этого откройте SSH-клиент, войдите в систему и введите: sudo chown -R www-data html

Вторая проблема, на решение которой у меня ушло много времени, заключалась в том, что PHP просто отображался в виде текста. Если вы сталкиваетесь с этим, наберите следующее в клиенте SSH:

Измените php7.0-fpm на вашу версию.

Заключение

Когда я впервые столкнулся с задачей настройки сервера, у меня не было подобного пособия. Мне приходилось собирать информацию по крупицам, что занимало много времени и было довольно сложно. Я очень надеюсь, что эта статья вам поможет.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.