Предисловие

Этот мануал сделан на основе двух:

Мануал от DigitalOcean на английском и в нем слишком много ненужных описаний для рядового арбитражника, которому просто нужно сделать дроплет и на него повесить свой домен.

Проблема мануала от Moneycrafter’a в том, что его мануал сделан не до конца, потому как настройки порта сделаны не полностью (сайт открывается только в виде site.com:8080). В этом мануале этой проблемы нет. Так же информация больше основана на мануале от DO, просто добавлены некоторые фишки от Moneycrafter’a (за что ему большое спасибо).

Убраны все проверки на работоспособность, которые попросту ненужны и захламляют папки ненужными файлами.

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

Мини-FAQ по чтению этого мануала

Жирным шрифтом:

  1. Выделены те символы, которые нужно заменить на другие в коде файлов (к примеру номер порта 80 на 8080).
  2. Выделены части в консольных командах, которые стоит заменить на индивидуальные свои (к примеру sudo a2ensite test.io).
  3.  Описание команд или предостережения, которые не стоит пропускать.
  4. Помощь при работе с консолью (если не было до этого опыта).

Так же маленькое FAQ по работе с консолью:

Описание к командам читать не обязательно, если в них нет ничего с жирным шрифтом.

! Сами же команды выделены таким образом в мануале, которые можете просто копировать и вставлять в консоль поочередно и нажимать ENTER. (Вставлять в Bitvise SSH Client можно правой кнопкой, работа с ним описана далее).

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

Для сохранения файлов после изменения в встроенном редакторе нужно нажимать CTRL+X, далее y и нажимать Enter.

Предварительная установка Droplet’a от хостинга DigitalOcean

Регистрируемся в DigitalOcean (реф.). Думаю, никаких проблем на данном этапе у вас возникнуть не должно. Регистрируясь по ссылке на вашем балансе будут бесплатные 10$. При минимальном пакете и одном дроплете этого хватит на 2 месяца работы.

Выбирайте Пункт Droplets в выпадающем списке справа сверху Create, для создания нового дроплета.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Выбирайте дистрибутив, с которым будем работать. Не особо большая разница, какой именно вы выберете, но если что я работаю с Ubuntu 16.04.4 x32:

Как начать лить в бурже (настройка VDS на DigitalOcean)

Если вы новичок и у вас маленькие объемы — то первого и самого дешевого тарифа вам хватит 100%:

Как начать лить в бурже (настройка VDS на DigitalOcean)

Следующий выбор. В каком датацентре будет находится наш Droplet. Под Азию берите Сингапур (тут выбора особого то и нет), под Европу и Россию — Германию (или Амстердам и Лондон). Вы можете прикинуть все расстояния на карте Google.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Оставшиеся настройки. Их можно не трогать, они нам не нужны. Если умеете пользоваться SSH keys — то можете их настроить. Я не буду их затрагивать, потому что для меня это не имеет смысла. Можете только изменить название hostname, для удобства (никаким образом это ничего не изменит) и всё.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Первичная настройка дроплета для работы

После создания дроплета на e-mail придут первичные настройки для входа в ваш установленный droplet.

  • Нам нужны из email данные, а именно: IPlogin и password.
  • Логин будет и должен быть по стандарту root.

А теперь вы должны выбрать — работать через консоль в браузере (не советую) или использовать какой-нибудь софт. Я рекомендую использовать Bitvise SSH Client (установка с офф.сайта, программа бесплатна)Меня всё в нем устраивает, так как в нем есть собственный FTP клиент, который очень удобен.

Для того, чтобы зайти в консоль в браузере, зайдите в панели Droplets сверху, далее в ваш новосозданный droplet и нажмите на Console, как на скрине, что выделено желтым маркером:

Как начать лить в бурже (настройка VDS на DigitalOcean)

При вводе логина и пароля может возникнуть несколько проблем для новичков:

Пароль, выданный на e-mail возможно придется вводить ДВА РАЗА или более (не помню к сожалению, сколько именно, давно не работал оттуда). Будет казаться, что от вас запрашивают новый пароль, но это — старый, необходимый для вашего логина.

Примерные данные, как всё должно выглядеть при логине в ваш дроплет через программу Bitvise SSH Client:

Как начать лить в бурже (настройка VDS на DigitalOcean)

Нажимайте логин и следуйте инструкциям. Принимайте сертификат и продолжайте работу. При первом логине может запросить ввести новый, удобный для Вас пароль и повторить его.

Некоторые фишки: для вставки текста (кода) необходимо нажимать правую кнопку мыши. Будет вставлен код в то место, где на данный момент находится курсор.

Если подключиться не удается — то возможно IP сервера забанен в стране. В России могут быть с этим проблемы из-за недавних историй с Telegram, поэтому стоит купить зарубежный прокси и настроить его работу здесь (подойдут SOCKS4, SOCKS5, HTTP):

Как начать лить в бурже (настройка VDS на DigitalOcean)

Предварительная установка и настройка VDS

Итак, вы залогинились в вашу систему. Сделаем несколько предварительных настроек для упрощения нашей работы.

Установка вашего часового пояса, для упрощения работы:

dpkg-reconfigure tzdata

После этого установим синхронизацию времени с серваками в интернете:

apt-get install ntp

Создаем нового пользователя для работы. Под рутом работать, конечно, удобно, но не стоит по причинам той же безопасности. Наше имя novichok, но я советую вам использовать своё, для вашего же удобства:

adduser novichok

Система предложит ввести нам пароль для нового пользователя. Вводим.

Затем следует добавить нового пользователя в группу sudo (чтобы выполнять какие-либо действия с root правами):

gpasswd -a novichok sudo

Теперь необходимо изменить стандартный порт при следующем логине к дроплету:

nano /etc/ssh/sshd_config

Открывается файл с помощью встроенного редактора.

Ищем там строчку с текстом:

PermitRootLogin yes

И меняем на:

PermitRootLogin no

Далее ищем строку:

Port 22

Меняем на любой в диапазоне между 1025 и 65536:

Port 4567

Перезагружаем сервер командой:

reboot

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

Как начать лить в бурже (настройка VDS на DigitalOcean)

Настройка файла подкачки

Поочередно вводим команды, которые написаны ниже.
Мы впервые используем команду sudo, поэтому возможно у вас запросит пароль от root пользователя. Будьте готовы.

sudo fallocate -l 2G /swapfile

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

Проверить работу можно командой:

swapon -s

После перезагрузки эти изменения могут пропасть, поэтому используем код для прописки в автозагрузку:

sudo nano /etc/fstab

В файле добавим следующую строку:

/swapfile none swap sw 0 0

Шаг 1 — Установка Apache и PHP-FPM

Обновите репозиторий apt:

sudo apt-get update

Затем установите необходимые пакеты:

sudo apt-get install apache2 libapache2-mod-fastcgi php-fpm

Шаг 2 — Настройка Apache и PHP-FPM

На этом шаге мы изменим номер порта Apache до 8080 и настроим его для работы с PHP-FPM с помощью модуля mod_fastcgi. Отредактируйте файл конфигурации Apache и измените номер порта Apache.

sudo nano /etc/apache2/ports.conf

Находим строку:

Listen 80

И заменяем на:

Listen 8080

Чтобы выйти из редактора, сохранив файл, нужно нажать CTRL+X, нажать и Enter. Всё, файл сохранен.

Редактируем файл виртуального хоста Apache по умолчанию. Директива настроена на обслуживание сайтов только на 80-ом порту, а нам нужен 8080.

  • sudo nano /etc/apache2/sites-available/000-default.conf

Находим линию с текстом:

<VirtualHost *:80>

И заменяем на:

<VirtualHost *:8080>

Сохраняем файл и перезагружаем Apache:

sudo systemctl reload apache2

Проверяем Apache на прослушку порта 8080:

sudo netstat -tlpn

Примерный вид выведенного сообщения в консоли, который нам покажется:

Шаг 3 — Настройка Apache для использования mod_fastcgi

mod_action по умолчанию отключен, включаем его:

sudo a2enmod actions

Директивы конфигурации передаются запросы на .php файлы в сокет PHP-FPM UNIX:

sudo nano /etc/apache2/mods-enabled/fastcgi.conf

Добавьте следующие строки внутри <IfModule mod_fastcgi.c> . . . </IfModule>блока, ниже существующих элементов в этом блоке (строка с «-pass-header Autorization» должна быть на одной строке с прошлой, не удается вставить правильно из-за ограничений строки в ВК):

AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.0-fpm.sock-pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>

Сохраняем файл.

Выполним тест конфигурации:

sudo apachectl -t

Главное для нас сейчас увидеть Syntax OK. Если вы увидите «Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message.» то ничего страшного, это никак не повлияет на нас.

А теперь перезагрузим Apache.

sudo systemctl reload apache2

Шаг 4 — Создание виртуальных хостов для Apache

Создаем корневые каталоги. test.io заменяем на свой привязанный домен. Если домен у нас один, то вводим:

sudo mkdir -v /var/www/test.io

Если домена два (или если их больше, то вводим по аналогии с кодом ниже):

sudo mkdir -v /var/www/{test.io,foobar.net}

Создаем конфигурацию для домена (не забудьте изменить данные на свои):

sudo nano /etc/apache2/sites-available/test.io.conf

Копируем туда и не забываем изменить всё, что нужно:

<VirtualHost *:8080>
ServerName test.io
ServerAlias www.test.io
DocumentRoot /var/www/test.io
<Directory /var/www/test.io>
AllowOverride All
</Directory>
</VirtualHost>

Создаем конфигурацию для второго домена (если он есть). Также не забудьте изменить данные на свои:

sudo nano /etc/apache2/sites-available/foobar.net.conf

Вставляем в код текст ниже, не забывая изменить как нужно под себя:

<VirtualHost *:8080>
ServerName foobar.net
ServerAlias www.foobar.net
DocumentRoot /var/www/foobar.net
<Directory /var/www/foobar.net>
AllowOverride All
</Directory>
</VirtualHost>

Если доменов больше — повторяем по аналогии

Включим сайты с помощью команд a2ensite:

sudo a2ensite test.io

По аналогии второй или другие:

sudo a2ensite foobar.net

Проверим Apache на наличие ошибок:

sudo apachectl -t

Если вывелось Syntax OK, то всё сделано, как нужно

sudo systemctl reload apache2

Шаг 5 — Установка Nginx

Устанавливаем nginx.

sudo apt-get install nginx

Удаляем символическую ссылку виртуального хоста по умолчанию:

sudo rm /etc/nginx/sites-enabled/default

Шаг 5.1 — Настройка Nginx

Создаем виртуальные хосты для Nginx (для одного домена):

sudo mkdir -v /usr/share/nginx/test.io

Для двух доменов и более (по аналогии через запятую):

sudo mkdir -v /usr/share/nginx/{test.io,foobar.net}

Создаем серверный блок для основного виртуального хоста. ВАЖНО. Строка listen 80 default_server; может быть только в одном из файлов. Больше нигде, иначе будет ошибка.

sudo nano /etc/nginx/sites-available/test.io

Копируем код ниже, не забывая изменить данные доменов на свои:

server {
listen 80 default_server;
root /usr/share/nginx/test.io;
index index.php index.html index.htm;
server_name example.com www.test.io;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}

Сохраните и закройте файл.

Создаем файл для виртуального хоста для второго домена (по аналогии для следующих):

sudo nano /etc/nginx/sites-available/foobar.net

Вставляемый код должен выглядеть так (не забудьте его изменить под ваш домен):

server {
root /usr/share/nginx/foobar.net;
index index.php index.html index.htm;
server_name foobar.net www.foobar.net;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}

Сохраните и закройте файл.

Включите сайт, создав символическую ссылку на sites-enabledкаталог:

sudo ln -s /etc/nginx/sites-available/test.io /etc/nginx/sites-enabled/test.io

По аналогии, если есть ещё домен (второй и т.д.):

sudo ln -s /etc/nginx/sites-available/foobar.net /etc/nginx/sites-enabled/foobar.net

Проведите проверку конфигурации Nginx:

sudo nginx -t

Если отображается OK, то перезагружаем Nginx:

sudo systemctl reload nginx

Шаг 6 — Установка и настройка mod_rpaf

Установка модуля mod_rpaf, необходимого для Apache.

Устанавливаем пакеты, необходимые для сборки модуля:

sudo apt-get install unzip build-essential apache2-dev

Загружаем последнюю версию стабильной версии от GitHub:

wget https://github.com/gnif/mod_rpaf/archive/stable.zip

Извлеките его:

unzip

Перейдем в рабочий каталог с этим файлом:

cd mod_rpaf-stable

Скомпилируем модуль:

make

Инсталим модуль:

sudo make install

Создаем файл в mods-availableкаталоге, который загружает модуль rpaf:

sudo nano /etc/apache2/mods-available/rpaf.load

Добавьте в файл следующую строку:

LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so

Создайте еще один файл в этом каталоге. Это будет содержать директивы конфигурации:

sudo nano /etc/apache2/mods-available/rpaf.conf

Добавьте следующий блок кода, убедившись, что вы добавили IP-адрес своего дроплета:

<IfModule mod_rpaf.c>
RPAF_Enable On
RPAF_Header X-Real-Ip
RPAF_ProxyIPs VASH_IP_SERVERA
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
</IfModule>

Сохраните файл.

Включите модуль:

sudo a2enmod rpaf

Теперь выполните проверку конфигурации:

sudo apachectl -t

Перезагрузите Apache:

sudo systemctl reload apache2

Шаг 7 — Настройка сайтов HTTPS (необязательно)

Создаем каталог для сертификатов SSL:

sudo mkdir /etc/nginx/ssl

В этой статье используются самоподписанные SSL-сертификаты, сроком на 10 лет. Не забудьте заменить данные на свои домен(ы):

sudo openssl req -x509 -sha256 -newkey rsa:2048 -keyout /etc/nginx/ssl/test.io-key.pem -out /etc/nginx/ssl/test.io-cert.pem -days 3650 -nodes

Будет предложено указать данные идентификации сертификата, каждый раз при создании сертификата, примерный вид ответов:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean IncOrganizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:test.io
Email Address []:

Если существует второй или следующие домены, то по аналогии:

sudo openssl req -x509 -sha256 -newkey rsa:2048 -keyout /etc/nginx/ssl/foobar.net-key.pem -out /etc/nginx/ssl/foobar.net-cert.pem -days 3650 -nodes

Так же по аналогии и второй домен:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean IncOrganizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:foobar.net
Email Address []:

Шаг 8 — Настройка Nginx для виртуальных хостов Apache

Cоздайте новый файл виртуального хоста Nginx:

sudo nano /etc/nginx/sites-available/apache

А теперь ВНИМАТЕЛЬНО. Если вы создавали SSL для своих доменов, то используйте следующий код, вставляя и изменяя его, где нужно, на свои данные (выделены жирным шрифтом, домены и IP).

Если домен один, то добавляйте только данные для одного домена:

server {

listen 80;
listen 443 ssl;
server_name test.io www.test.io;
root /var/www/test.io;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}

ssl on;
ssl_certificate /etc/nginx/ssl/test.io-cert.pem;
ssl_certificate_key /etc/nginx/ssl/test.io-key.pem;

location ~ \.php$ {
proxy_pass http://VASH_IP_SERVERA:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\. {
deny all;
}
}

server {

listen 80;
listen 443 ssl;

server_name foobar.net www.foobar.net;
root /var/www/foobar.net;
index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php;
}

ssl on;
ssl_certificate /etc/nginx/ssl/foobar.net-cert.pem;
ssl_certificate_key /etc/nginx/ssl/foobar.net-key.pem;

location ~ \.php$ {
proxy_pass http://VASH_IP_SERVERA:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\. {
deny all;
}
}

Если вы НЕ ИСПОЛЬЗОВАЛИ SSL ДЛЯ СВОИХ ДОМЕНОВ, то используйте следующий код. Не забудьте изменить также все выделенные жирным шрифтом данные на свои:

server {

listen 80;
server_name test.io www.test.io;
root /var/www/test.io;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://VASH_IP_SERVERA:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\. {
deny all;
}
}

server {
listen 80;
server_name foobar.net www.foobar.net;
root /var/www/foobar.net;
index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://VASH_IP_SERVERA:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\. {
deny all;
}
}

Сохраним файл и включим этот новый виртуальный хост, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/apache

Проведем тест конфигурации:

sudo nginx -t

Если отображается OK, тогда перезагружаем Nginx:

sudo systemctl reload nginx

Шаг 9 — Блокировка прямого доступа к Apache

Поскольку Apache прослушивает порт 8080на общедоступном IP-адресе, он доступен всем. Его можно заблокировать, выполнив следующую команду IPtables в вашем наборе правил брандмауэра. НЕ ЗАБУДЬТЕ ЗАМЕНИТЬ IP НА СВОЙ:

sudo iptables -I INPUT -p tcp —dport 8080 ! -s VASH_IP_SERVERA -j REJECT —reject-with tcp-reset

Шаг 10 — Открытие доступа к загрузке файлов в директориях по FTP

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

sudo chown novichok:sudo /var/www/test.io

Аналогично и для других доменов, у которых свои созданные папки:

sudo chown novichok:sudo /var/www/foobar.net

Шаг 11 — Заливка лендов на FTP

Заходим на необходимый нам лендинг, например в ПП под бурж Adcombo(реф.) и скачиваем

Как начать лить в бурже (настройка VDS на DigitalOcean)

В левой части экрана FTP в Bitvise (Local files) открываем папку с нашим скачанным и распакованным лендингом.

В правой части (Remote files) набираем путь /var/www и далее необходимую доменную папку. А теперь всё переносим туда

Как начать лить в бурже (настройка VDS на DigitalOcean)

Если всё верно было настроено до, то тогда будет показываться uploaded при загрузке.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Работа завершена:

Как начать лить в бурже (настройка VDS на DigitalOcean)

Как редактировать без излишней возни код в загруженных файлах? Скачать свежую версию Notepad++ и установить.

В Bitvise, в FTP окне правой кнопкой нажать на нужном файле и выбрать Edit with…

Как начать лить в бурже (настройка VDS на DigitalOcean)

И далее указываем путь до exe-файла установленного Notepad++ и нажимаем ОК.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Если установим галочку снизу — то Notepad++ будет использоваться всегда, по умолчанию. Нажимаем ОК.

Как начать лить в бурже (настройка VDS на DigitalOcean)

Теперь при редактировании и сохранении в удобном редакторе Notepad++ всё будет автоматически перезаписываться на дроплете.

Вопрос — Хочу добавить ещё один домен (или более) на дроплет, что нужно делать?

Выполнять следующие шаги по порядку:

Шаг 4
Шаг 5.1
Шаг 7
 (необязателен, если не нужен SSL)
Шаг 8
Шаг 10
И, если необходимо Шаг 11

Не забудьте подписаться на Арбитраж от Гика, будет ещё много вкусностей!

Источник статьи