Статьи

Как установить, настроить и защитить свой собственный сервер веб-сайта с нуля

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

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

Однако, если для вашей задачи требуется больше ресурсов, чем для обычного веб-сайта WordPress, вам стоит подумать о переходе с хостинга на VPS или выделенный сервер. И не думайте, что вам придется платить 5000 долларов в месяц, чтобы получить какой-либо из этих вариантов — цены намного ниже, чем вы думаете, и положительное влияние намного выше.

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

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

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

  • VPS (виртуальный частный сервер) — это доступный способ получить столько гибкости, сколько вам нужно, хотя вы все равно будете делить сервер с другими с помощью «виртуализации». Это лучше, чем виртуальный хостинг, но не лучший доступный вариант.
  • Выделенный сервер почти такой же, как VPS, но вместо того, чтобы делиться аппаратными ресурсами с другими с помощью виртуализации, вы можете использовать весь компьютер исключительно для своего веб-сайта.

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

Давайте перейдем к сути этой статьи. Мы расскажем немного:

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

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

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

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

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

  • IPv4-адрес VPS
  • IPv6-адрес VPS
  • Имя VPS
  • Имя пользователя Пароль

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

  • Arch Linux (64 бита)
  • Centos 6 (64 бита)
  • Centos 7 (64 бита)
  • Cpanel на CentOS 6 (64 бита)
  • Debian 7 (Wheezy) (64 бита)
  • Debian 8 (Джесси) (64 бита)
    Debian 9 (Stretch) (64 бита)
  • Докер на сервере Ubuntu 14.04
  • Докер на сервере Ubuntu 16.04
  • Drupal (64 бита)
  • Fedora 26 (64 бита)
  • Joomla! (64 бита)
  • Kubuntu 14.04 Desktop
  • ЛАМПА 1.0 (64 бита)
  • OpenVPN в Debian 8
  • Параллели Plesk 12 на Centos 6
    Parallels Plesk 12 на Ubuntu 14.04
  • Plesk на Debian 8 (64 бита)
  • Prestashop (64 бита)
  • Ubuntu 14.04 Server
  • Ubuntu 16.04 Server
    Ubuntu 18.04 Server
  • VestaCP на Debian 8
  • Virtualmin на Debian 8
  • WordPress (64 бита)

Вот это да! Это большой список операционных систем. Я лично пробовал перечисленные жирным шрифтом. В общем, процесс настройки и инструкции одинаковы для всех, хотя могут быть некоторые синтаксические различия для команд ОС. Мой личный выбор — 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). После установки ОС вы получите по электронной почте необходимую информацию для доступа к вашему серверу:

  • IPv4-адрес VPS
  • IPv6-адрес VPS
  • Имя VPS
  • Имя пользователя Пароль

Скопируйте полученное имя VPS, вставьте его в поле « Имя хоста» и нажмите « Открыть» .

логин

Откроется черное модальное окно с приглашением «Войти как:». Введите свое имя пользователя и нажмите Enter .

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

Если вы все сделали правильно, вы должны войти в систему и увидеть экран, подобный следующему:

экран входа

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

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

1
2
3
4
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: bionic

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

Теперь мы установим сервер 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.

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

Новый сервер Apache

Посмотрите на поле адреса окна браузера. Вы заметите, что ваш сайт использует протокол 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 Пусть процесс сделает все остальное, может пройти несколько минут, пока не появится диалоговое окно с текстом:

1
No names were found in your configuration files.

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

1
An unexpected error occurred: There were too many requests of a given type :: Error finalizing order :: too many certificates already issued for: yourserver provider: see https://letsencrypt.org/docs/rate-limits/

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

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

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

у нас есть https

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

В соответствии с требованиями 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 sudo dpkg --get-selections | grep -v deinstall | grep php

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

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

1
2
3
4
5
apt-get update
apt-get install python-software-properties
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php7.2

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

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

1
2
3
a2dismod php7.0
a2enmod php7.2
service apache2 restart

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

1
apt-get install libapache2-mod-php7.2 php7.2-cgi php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-imap php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-pspell php7.2-readline php7.2-soap php7.2-xml

Перезапустите сервер apache с помощью sudo systemctl restart apache2

Отличный прогресс! Теперь вы можете спросить: где вы размещаете свой сайт и как вы создаете базы данных? Давайте начнем с установки и обеспечения безопасности приложения 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 и попасть сюда, поэтому нам нужно его защитить. Как? Добавляя дополнительный шлюз перед всем приложением. Мы сделаем это с помощью встроенных в Apache функций аутентификации и авторизации .htaccess.

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

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

1
2
DirectoryIndex index.php
Allowoverride All

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

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

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

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

1
2
3
4
AuthType Basic
AuthName «Restricted Files»
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

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

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

sudo apt-get install apache2-utils

htpasswd -c /etc/phpmyadmin/.htpasswd root

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

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

пароль для phpmyadmin

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

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

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

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

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

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

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

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

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

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

1
2
3
sudo apt update && sudo apt dist-upgrade
sudo apt install update-manager-core
do-release-upgrade

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

Как я уже упоминал, letsencrypt устанавливает срок действия сертификата в 90 дней, поэтому по истечении этого периода вам нужно будет обновить свой сертификат. Для этого откройте ваш SSH-клиент, войдите в систему и перейдите к root: 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:

1
2
3
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

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

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