Облачный сервер Tencent перенесен на Vultr

Node.js сервер Git Nginx

Первый адрес:Облачный сервер Tencent перешел на Vultr-fengxianqi

написать впереди

Почему хороший конец должен мигрировать? Потому что ты уже закончил. . . Несколько дней назад Tencent Cloud прислала мне сообщение о том, что срок действия моего студенческого статуса истек, что заставило меня остыть. Тогда срок действия облачного сервера истекает в последние несколько дней, и купон на 64 юаня больше нельзя будет получить, а дни на 1 юань в месяц уже никогда не вернутся. Но минимальная плата за размещение в размере 65 юаней в месяц действительно кажется немного дорогой, поэтому я решил найти более доступный сервер или vps (извините, Tencent Cloud...). Но я должен сказать, что я хотел бы поблагодарить Tencent Cloud за его поддержку в течение последних двух лет Я использовал сервер за 1 юань в месяц (сейчас это 10 юаней в месяц) более 2 лет, и у меня есть Усвоил много знаний связанных с Linux.Многие вещи дают студентам такие доступные возможности.Это действительно добросовестно и искренне благодарно.

Цель

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

  • купить новый сервер
  • установить ускорение bbr
  • Настроить и включить брандмауэр
  • Построить ЛНМП
  • Настройка и миграция сервера Git
  • Миграция блога typecho
  • Среда службы узла сборки

купить новый сервер

Существует множество вариантов серверов, таких как Tencent Cloud, Alibaba Cloud, Baidu Cloud, Meituan Cloud и Meicheng Cloud в Китае.Alibaba Cloud — единственный в Китае, но все они дороже. За рубежом рекомендуются:

  • Vultr1 ядро, 1G памяти, 1T трафика, $5/месяц, (есть еще пакет $2,50, но его нельзя купить в наличии), новички регистрируются и используют Paypal для пополнения $10 и получают $25, что действительно хорошо по рукам. . .
  • BandwagonHost (каменщик VPS)1 ядро, 512 МБ памяти, 500 ГБ трафика, 19,9 долл. США в год, разумная цена, нет в наличии, когда я захочу купить. . .
  • DigitalOceanТа же цена, что и vultr. Для большего сравнения см.Знай почти

Наконец, я выбрал Vultr, Tokyo Machine Room, Centos7, скорость может посетить мой блог, пожалуйста, посмотрите конкретный процесс покупки:vultr китайский сайтПодпишитесь на один перед покупкойPayPalАккаунт, привяжите банковскую карту, чтобы пополнить 10 долларов, и вы можете получить скидку 25 долларов (в некоторых банках требуются кредитные карты, в некоторых нет, в итоге я использовал дебетовую карту China Construction Bank).

установить ускорение bbr

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

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh 
chmod +x bbr.sh  # 我用的时候需要改一下权限
./bbr.sh 

После завершения установки скрипт предложит перезапустить VPS, введите y и нажмите Enter для перезагрузки. После завершения перезапуска войдите в VPS, убедитесь, что последнее ядро ​​успешно установлено и TCP BBR включен, и введите следующие команды:

uname -r 

Я вывожу здесь: 4.17.0-1.el7.elrepo.x86_64

sysctl net.ipv4.tcp_available_congestion_control 

Обычно возвращаемое значение: net.ipv4.tcp_available_congestion_control = reno cube bbr

sysctl net.ipv4.tcp_congestion_control 

Возвращаемое значение: net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc 

Возвращаемое значение: net.core.default_qdisc = fq

lsmod | grep bbr 

Возвращаемое значение модуля tcp_bbr означает, что bbr запущен.

Настроить и включить брандмауэр

Vultr vps на самом деле необходимо изменить в двух местах, что эквивалентно двухуровневой защите: во-первых, это группа политик брандмауэра консоли официального сайта Vultr, которая по умолчанию блокирует любой доступ. Второй — это брандмауэр, установленный по умолчанию в системе. Вам нужно настроить эти два места, чтобы открыть порт, чтобы можно было получить доступ к вашему веб-сайту. Здесь я открою предоставление веб-сервисов через порт 80 и удаленный доступ по ssh через порт 22.

Группа политики брандмауэра для открытия портов 22 и 80

微信图片_20180618093326.png
Нажмите «Добавить группу брандмауэра», вам нужно дать описание, просто добавьте правила 80 и 22 под меткой IPv4.
微信图片_20180618092751.png
Модули IPV6 можно сначала игнорировать, а затем привязывать текущие vps в Linked Instances.
微信图片_20180618093410.png
На данный момент vps открыл порт 80, также требуется порт 22 (удаленный вход в оболочку).

Брандмауэр открывает порт 80

Войдите в vps удаленно и проверьте версию брандмауэра.

firewall-cmd --version
# 0.4.4.4

Проверьте состояние брандмауэра брандмауэра. Совет работает.

firewall-cmd --state
# running

Добавьте разрешение на порт 80 в брандмауэре. Срочный успех.

firewall-cmd --zone=public --add-port=80/tcp --permanent
# success

Значение команды: --zone #область --add-port=80/tcp #Добавить порт в формате: порт/протокол связи –permanent #Постоянный эффект, недействителен после перезапуска без этого параметра Перезапустите брандмауэр и откройте здесь порт 80.

systemctl restart  firewalld

В приложении: другие команды брандмауэра:

  • Запуск: # systemctl запустить firewalld
  • Перезапуск: # systemctl перезапустить firewalld
  • Проверьте статус: # systemctl status firewalld или firewall-cmd –state
  • Стоп: # systemctl отключить firewalld
  • Отключить: # systemctl остановить firewalld

Построить ЛНМП

LNMP — это Linux, Nginx, MySQL (MariaDB), PHP. Поскольку источником yum для Centos7 по умолчанию является MariaDB, я выбрал здесь MariaDB.

Установите Nginx

yum install nginx -y

Запустить после установки

systemctl start nginx

Затем вы можете напрямую получить к нему доступ через ip, и появится страница приветствия Nginx, указывающая, что Nginx был успешно установлен (сначала вам нужно открыть брандмауэр спереди).

Проверьте версию Nginx:

nginx -v
# nginx version: nginx/1.12.2

Установите php7 и соответствующие расширения

Версия php по умолчанию в Centos7 относительно низкая, и ее необходимо обновить до php7 для лучшей игры. Проверьте установленные пакеты php

yum list installed | grep php

Измените источник оборотов

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Если вы хотите удалить установленный выше пакет, переустановите его

rpm -qa | grep webstatic
rpm -e  上面搜索到的包即可

Установите php7 и соответствующие расширения

yum install php70w php70w-fpm php70w-mysql -y

Запустите службу php-fpm

systemctl start php-fpm

Порт прослушивания конфигурации по умолчанию для php-fpm — 9000. Теперь вам нужно изменить конфигурацию, чтобы перенаправить запрос, проанализированный php, на 127.0.0.0:9000 для обработки. Измените конфигурацию nginx:vi /etc/nginx/nginx.conf

server {
  listen       80;
  root   /usr/share/nginx/html;
  server_name  localhost;

  #charset koi8-r;
  #access_log  /var/log/nginx/log/host.access.log  main;

  location / {
      index  index.html index.htm;
  }

  #error_page  404              /404.html;

  # redirect server error pages to the static page /50x.html
  #
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   /usr/share/nginx/html;
  }

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index   index.php;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
  }
}

В основном добавьте следующееlocation ~ \.php$часть. После модификации перезапустите nginx:systemctl restart nginx.

Установить MariaDB

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

cat <<EOF | sudo tee -a /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.1 CentOS repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

ням установить

yum install MariaDB-server MariaDB-client -y

Запустите mariadb и настройте его на автоматический запуск.

systemctl start mariadb.service
systemctl enable mariadb.service

Конфигурация безопасности

/usr/bin/mysql_secure_installation

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

  • Enter current password for root (enter for none): Just press the Enter button
  • Set root password? [Y/n]: Y
  • New password: your-MariaDB-root-password
  • Re-enter new password: your-MariaDB-root-password
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]: Y
  • Reload privilege tables now? [Y/n]: Y

На данный момент ЛНМП построен.

Настройка и миграция сервера Git

1. Установите последнюю версию Git

Версия исходного репозитория yum — 1.8.3.1.Чтобы установить последнюю версию git, вам необходимо ее скомпилировать и установить.

  1. Просмотрите информацию git о исходном репозитории yum.
yum info git
  1. Установка библиотеки зависимостей
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install  gcc perl-ExtUtils-MakeMaker
  1. Удалить более раннюю версию Git
yum remove git
  1. Чтобы загрузить новую версию исходного пакета Git, вы можете найти ссылку для скачивания в официальном репозитории git (щелкните правой кнопкой мыши логотип tar.gz соответствующей версии и скопируйте ссылку):GitHub.com/git/git/теплый…Например, моя последняя версия 2.17.1.
wget https://github.com/git/git/archive/v2.17.1.tar.gz
  1. Распаковать в указанный каталог
tar -xzvf v2.17.1.tar.gz -C ~/app/
  1. Установить Гит
cd git-2.17.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install
  1. добавить в переменную окружения
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc # 实时生效
  1. Посмотреть номер версии
git --version
# git version 2.17.1

Во-вторых, создайте сервер Git.

  1. Создайте пользователя git для запуска службы git
sudo adduser git

Здесь вы можете установить пароль пользователя для git,passwd git, когда пользователь не клонирует склад через ssh, он может ввести пароль.

  1. Выберите каталог в качестве репозитория git, например: /srv/git, в //srv/gitСоздайте репозиторий sample.git в каталоге
sudo git init --bare sample.git
  1. Сменить аутера на git
sudo chown -R git:git sample.git
  1. Из соображений безопасности отключите вход в оболочку пользователя git.
vi /etc/passwd

будет похоже наgit:x:1001:1001:,,,:/home/git:/bin/bashизменить наgit:x:1001:1001:,,,:/home/git:/usr/local/git/bin/git-shell. Здесь, чтобы обратить внимание на / usr / local / git - это ранее установленный путь git, / usr / local / git / bin / git-shell Этот файл, пожалуйста, настройте его в соответствии с вашим собственным установленным каталогом. пройти черезsu gitЧтобы проверить, успешно ли это сделано, следующее приглашение указывает, что конфигурация выполнена успешно:

# su git
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
  1. Репозиторий клонов клиента Сервер git настроен, и вы можете клонировать свой собственный склад на свой компьютер по следующему адресу:git@yourIp:/srv/git/sample.git,Такие как:
git clone git@202.186.11.10:/srv/git/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

Примечание. Если клиентid_rsa.pubскопировать на сервер/home/git/.ssh/authorized_keys, вам будет предложено ввести пароль при клонировании.

Перенести репозиторий git

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

  1. Резервное копирование исходного репозитория в качестве зеркала
git clone --bare git://192.168.10.XX/git_repo/project_name.git
  1. Инициализировать репозиторий с тем же именем на новом сервере
git init --bare project_name.git
  1. Загрузите код на новый адрес сервера локально с помощью зеркального нажатия
cd project_name.git
git push --mirror git@192.168.20.XX/path/to/path/new_project_name.git
  1. Удалите исходный код локальной рабочей области и снова клонируйте код.
git clone git@192.168.20.XX/path/to/path/new_project_name.git

Миграция блога typecho

  1. резервная база данных
mysqldump -h host -u root -p dbname >dbname_backup.sql

На самом деле, я никогда не использовал вышеуказанную команду, я экспортировал ее прямо в phpMyAdmin. . . В любом случае, вы можете получить резервную копию .sql библиотеки typecho любым способом. . 2. Восстановите базу данных на новом сервере Сначала отправьте резервную копию файла backup.sql на сервер и войдите в mysql.

mysql -uroot -p

Выполните следующие команды соответственно, чтобы создать базу данных для хранения typecho, использовать базу данных и выполнить восстановление.

create database typecho;
use typecho;
source ~/backup.sql

Проверить успешность импорта, если в таблице есть описание успеха.

show tables;
  1. Скопируйте файлы каталога typecho на новый сервер. Вы можете скопировать файлы в соответствующий каталог сервера с помощью таких инструментов, как FileZilla, Вот команда для синхронизации файлов под Linux:rsync, вы можете искать использование самостоятельно.
rsync -azcuP --chmod=ugo=rwX ./typecho/  "192.168.0.10:/srv/typecho"

Эта команда означает, что локальный/typechoВсе файлы в этом каталоге отправляются на сервер 192.168.0.10./srv/typechoПод содержанием. Примечание: После копирования необходимо изменить способ подключения к базе данных в config.inc.php (если пароль базы данных изменился) 4. Настройте сайт nginx Создайте новый файл конфигурации nginx,vi /etc/nginx/conf.d/typecho.conf, заполните следующее содержимое, обратите внимание, что содержание примечаний зависит от вашей ситуации

server {
    listen       80;
    server_name fengxianqi.com www.fengxianqi.com; # 域名,需要提前解析到服务器

    location / {
        root   /srv/typecho; # typecho目录文件所在目录
        index  index.html index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        root           /srv/typecho; # typecho目录文件所在目录
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

:wqСохраните и выйдите. Если вы добавите новый веб-сайт в будущем, вам нужно будет только/etc/nginx/conf.dПросто создайте новый файл a.conf и перезапустите nginx, чтобы получить доступ к веб-сайту.

systemctl restart nginx

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

После долгих поисков я не знаком с php, а позже узнал, что расширение mysql php не включено,vi /etc/php.ini, в конце файла добавить

extension=mysqli.d

Затем перезапустите php```systemctl, перезапустите php-fpm``. `

Среда службы узла сборки

  1. Установите последнюю версию узла Найдите ссылку на последнюю версию на официальном сайте https://nodejs.org/en/download/, скачайте и разархивируйте.
wget http://nodejs.org/dist/v0.10.24/node-v8.11.3.tar.gz
tar zxvf node-v8.11.3.tar.gz
  1. Скомпилируйте и установите
cd node-v8.11.3
./configure --prefix=/usr/local/node/8.11.3
make
make install
  1. Настройте Node_Home, введите переменную среды редактирования профиля,vi /etc/profileУстановите переменную среды nodejs вexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROLДобавьте в начало строки следующее:
#set for nodejs
export NODE_HOME=/usr/local/node/8.11.3
export PATH=$NODE_HOME/bin:$PATH

:wq сохранить и выйти, скомпилировать /etc/profile, чтобы конфигурация вступила в силу

source /etc/profile

node -vПодтвердите успех.

  1. Установите модуль pm2, чтобы программа узла продолжала работать. Чтобы выйти из сервера, служба узла все еще может работать в фоновом режиме.Его необходимо поддерживать модулями, такими как навсегда или pm2.Я использовал навсегда раньше, но позже обнаружил, что pm2 более полезен и поддерживает подсветку, так что это время, когда я использую pm2 и устанавливаю pm2
npm install -g pm2

После установки pm2 следующий каталог будет создан автоматически.

  • $HOME/.pm2 will contain all PM2 related files
  • $HOME/.pm2/logs will contain all applications logs
  • $HOME/.pm2/pids will contain all applications pids
  • $HOME/.pm2/pm2.log PM2 logs
  • $HOME/.pm2/pm2.pid PM2 pid
  • $HOME/.pm2/rpc.sock Socket file for remote commands
  • $HOME/.pm2/pub.sock Socket file for publishable events
  • $HOME/.pm2/conf.js PM2 Configuration

общие команды pm2

pm2 start app.js              # 启动app.js应用程序
pm2 start app.js -i 4         # cluster mode 模式启动4个app.js的应用实例     # 4个应用程序会自动进行负载均衡
pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
pm2 start app.js --watch      # 当文件变化时自动重启应用
pm2 start script.sh           # 启动 bash 脚本
pm2 list                      # 列表 PM2 启动的所有的应用程序
pm2 monit                     # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name]           # 显示应用程序的所有信息
pm2 logs                      # 显示所有应用程序的日志
pm2 logs [app-name]           # 显示指定应用程序的日志
pm2 flush
pm2 stop all                  # 停止所有的应用程序
pm2 stop 0                    # 停止 id为 0的指定应用程序
pm2 restart all               # 重启所有应用
pm2 reload all                # 重启 cluster mode下的所有应用
pm2 gracefulReload all        # Graceful reload all apps in cluster mode
pm2 delete all                # 关闭并删除所有应用
pm2 delete 0                  # 删除指定应用 id 0
pm2 scale api 10              # 把名字叫api的应用扩展到10个实例
pm2 reset [app-name]          # 重置重启数量
pm2 startup                   # 创建开机自启动命令
pm2 save                      # 保存当前应用列表
pm2 resurrect                 # 重新加载保存的应用列表
pm2 update                    # Save processes, kill PM2 and restore processes
pm2 generate                  # Generate a sample json configuration file
pm2 deploy app.json prod setup    # Setup "prod" remote server
pm2 deploy app.json prod          # Update "prod" remote server
pm2 deploy app.json prod revert 2 # Revert "prod" remote server by 2
pm2 module:generate [name]    # Generate sample module with name [name]
pm2 install pm2-logrotate     # Install module (here a log rotation system)
pm2 uninstall pm2-logrotate   # Uninstall module
pm2 publish                   # Increment version, git push and npm publish
  1. Веб-сайт, созданный с помощью прокси-узла nginx Я делал заметки об этом раньше, пожалуйста, обратитесь непосредственно к:Разверните сервер Nodejs и привяжите доменное имя

напиши в конце

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

Некоторые справочные ссылки:Vultr китайский сайт VULTR VPS Установка BBR Centos 7 Установите последнюю версию git How to Install MariaDB 10.1 on CentOS 7 Веб-сайт VULTR VPS недоступен в операционной системе Centos 7.3. Учебник по включению брандмауэра и добавлению группы безопасности в облачный хост Vultr руководство по установке узла