Настройка VPS

09.05.2017 10:08

Если Ваш проект развивается, то когда-нибудь придёт время переезда с шаред хостинга на vps. Особенно это актуально в свете того, что VPS, уже давно сравнялись по цене с шаред хостингом.

Почему VPS лучше shared хостинга

  1. В вашей собственности сервер целиком, Вы можете делать с ним всё что угодно, никто не отключит Вам сайт за исчерпание лимитов CPU.
  2. Можете ставить любой софт, а не тот, что предлагает хостер.
  3. На одной VPS можно разместить много веб-сайтов.
  4. В расчёте цена/производительность VPS в разы дешевле шареда.

Создаём vps сервер

На примере digitalocean, кликаем "Create droplet"

создание VPS

Выбираем только 64 битный дистрибутив. Если Вы плохо/не знакомы с линюксами, выбираем последнюю ubuntu LTS:

Выбор дистрибутива для vps

Выбираем датацентр, а так же ставим галочку "privat networking". Она может пригодиться.

Выбор датацентра для VPS

Выбор датацентра очень важный шаг. Для digitalocean есть специальный сайт: http://speedtest-ams2.digitalocean.com/ с которого можно протестировать скорость соединения до Вашего компьютера. В общем случае правило простое: чем ближе датацентр к Вам, тем быстрее скорость.

Называем как-нибудь сервер и жмём "Создать":

Создание VPS

Затем ждём письмо с логином и паролем. А пока оно не пришло, скачиваем putty, если же Вы живёте на windows10, говорят там есть нативный ssh клиент, как в линюксах.

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

ssh доступ к vps

При первом подключении, Вас попросят сменить дефолтный пароль.

Первым делом обновляем систему:

apt update
apt upgrade

Ставим mysql server:

apt install mysql-server

Нас попросят создать пароль для пользователя root. Запишите его куда-нибудь.

Создание пароля для mysql

Ставим ftp сервер:

apt install vsftpd

Не ставьте proftpd. В репозиториях лежит очень древняя и насквозь дырявая версия. Через неё Вас обязательно взломают. Теоретически, ftp лучше вовсе не использовать, но это уже для более продвинутых одминов.

По-умолчанию, в vsftpd запись файлов отключена. Открываем конфиг:

nano /etc/vsftpd.conf

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

# Uncomment this to enable any form of FTP write command.
#write_enable=YES

Удаляем комментарий:

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Сохраняемся(ctrl+o) и перезапускаем ftp сервер:

service vsftpd restart

Но под рутом нас не пустят, нужно создать нового пользователя:

adduser anyuser

Вводим 2 раза пароль. Запускаем любимый фтп клиент(mc/ Total Comander/ что-нить ещё) и пробуем соединиться с нашим сервером:

Подключени к VPS по FTP

Если подключились, то всё ок, можем двигаться дальше.

Настраиваем web сервер

apt install nginx php7.0-fpm php7.0 php7.0-mysql php7.0-curl php7.0-gd php7.0-mbstring php7.0-cli php7.0-mcrypt php7.0-zip

Создаём папки под веб-сайт и phpmyadmin:

mkdir /var/www/domain_name
mkdir /var/www/phpmyadmin

Вместо domain_name - подставьте Ваш домен. Открываем дефолтный конфиг:

nano /etc/nginx/sites-available/default

удаляем всё, и переписываем его:

# your web-site
server {
  listen 80;
  server_name domain_name;
  root /var/www/domain_name;
  index index.html index.htm index.php;
        
  proxy_read_timeout 20;
  proxy_send_timeout 20;
        
  location ~ /. {
    deny all;
  }

  location ~* /(?:uploads|files)/.*.php$ {
    deny all;
  }

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
  }
}

# phpmyadmin
server {
  listen 8888;
        
  root /var/www/phpmyadmin;
        
  index index.html index.htm index.php;
        
  proxy_read_timeout 20;
  proxy_send_timeout 20;
        
  location ~ /. {
    deny all;
  }

  location ~* /(?:uploads|files)/.*.php$ {
    deny all;
  }

  location / {
    try_files $uri $uri/ /index.php?$args;
    auth_basic  "closed access";
    auth_basic_user_file /etc/nginx/htpasswd.txt;
  }

  location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
  }
}

Мы добавили 2 разных виртуальных сервера. Сервер для phpmyadmin будет защищён http авторизацией. Но для этого ещё нужно добавить файл с паролем. Сгенерируйте файл с помощью какого-нибудь сервиса, например: http://www.htaccesstools.com/htpasswd-generator/ и скопипастьте в файл:

nano /etc/nginx/htpasswd.txt

Сохраняемся(Ctrl+o) и перезапускаем nginx:

service nginx restart

Устанавливаем phpmyadmin

cd /var/www
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.zip
unzip phpMyAdmin-4.7.0-all-languages.zip
cp phpMyAdmin-4.7.0-all-languages/* phpmyadmin/ -R
rm -rf phpMyAdmin-4.7.0-all-languages
chown www-data phpmyadmin -R
chgrp www-data phpmyadmin -R
chmod 760 phpmyadmin -R

Затем заходим на наш пхпадмин, по адресу ip_сервера:8888. И если всё ок, нас должны попросить ввести хттп пароль и только потом загрузится форма авторизации phpmyadmin.

На этом всё, наша VPS полностью готова. Осталось перенести Ваш сайт в папку /var/www/domain_name и импортировать базу через phpmyadmin.



Асинхронный rss виджет для wordpress

Как-то я уже писал про добавление rss ленты из fluxbb в wordpress. В тот раз я использовал дефолтный виджет. И когда сайт переехал на https, он, внезапно, перестал работать.

Отключайте ssh авторизацию по паролю

Всегда, абсолютно всегда отключайте ssh авторизацию по паролю. Даже если Вы используете сильный пароль.


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