Разверните koa2 (https) с помощью pm2+nginx

Node.js HTTPS Nginx PM2
Разверните koa2 (https) с помощью pm2+nginx

В свободное время я переписываю свой блог, я использовал блог, сгенерированный hexo ранее, и запускал его на странице git. Это переписывание является предпочтительным фреймворком koa2.
Сегодня давайте напишем о развертывании веб-сайта koa2 и настройке https.
Общая структура текущего веб-сайта: Приложение koa2 работает в1113порт, затем обратный прокси nginx на443(https), а nginx будет80(http) перенаправление портов на443(https) порт.

конфигурация pm2

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

pm2 — это менеджер процессов для приложений Node с балансировкой нагрузки. Используя pm2, процесс нашего приложения node всегда работает в фоновом режиме. Кроме того, pm2 также имеет очень мощную функцию развертывания, которая может напрямую развертывать веб-сайты в Интернете с локального компьютера. Ниже я объясню конкретную операцию.

  1. Программное обеспечение для установки сервера
    На стороне сервера необходимо установить git, node, pm2, nginx и т.д.
    После их установки вам необходимо сгенерировать ключ ssh на сервере, а затем добавить сгенерированный ключ паба в ключи развертывания в настройках в соответствующем репозитории git.

  2. Установить программное обеспечение локально
    Есть git, node, pm2 и т. д., которые необходимо установить локально.

  3. конфигурация развертывания pm2
    использоватьpm2 ecosystemСоздайте файл примера конфигурации, а затем откройте созданный файл конфигурации конфигурации. Ниже приведен созданный файл примера конфигурации.

    module.exports = {
     /**
      * Application configuration section
      * http://pm2.keymetrics.io/docs/usage/application-declaration/
      */
     apps: [
    
         // First application
         {
             name: 'API',
             script: 'app.js',
             env: {
                 COMMON_VARIABLE: 'true'
             },
             env_production: {
                 NODE_ENV: 'production'
             }
         },
    
         // Second application
         {
             name: 'WEB',
             script: 'web.js'
         }
     ],
    
     /**
      * Deployment section
      * http://pm2.keymetrics.io/docs/usage/deployment/
      */
     deploy: {
         production: {
             user: 'node',
             host: '212.83.163.1',
             ref: 'origin/master',
             repo: 'git@github.com:repo.git',
             path: '/var/www/production',
             'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production'
         },
         dev: {
             user: 'node',
             host: '212.83.163.1',
             ref: 'origin/master',
             repo: 'git@github.com:repo.git',
             path: '/var/www/development',
             'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env dev',
             env: {
                 NODE_ENV: 'dev'
             }
         }
     }
    };
    

    В приложениях можно настроить несколько приложений, а развертывание — это конфигурация, используемая для настройки различных сред.После настройки с примерами вы можете внести соответствующие изменения в соответствии с вашей реальной ситуацией.
    Получив файл конфигурации, выполнитеpm2 deploy ecosystem.config.js production setupкоманда для инициализации настроек, после завершения операции запуститьpm2 deploy ecosystem.config.js productionЭту команду можно использовать для обновления и развертывания приложений в будущем. (Для удобства эти две команды можно настроить так, чтобы скрипты в package.json).
    После выполнения команды, если не произошло несчастного случая, появится слово Success, указывающее на успешное развертывание. В это время введите соответствующий IP-адрес сервера и номер порта, который вы установили в браузере, чтобы открыть развернутый вами веб-сайт. Так же на сервер можно пройтиpm2 listПросмотр запущенных приложений.

конфигурация nginx

  1. настроить http
    После установки nginx на сервер откройте/etc/nginx/sites-enabledКаталог (каталог файла конфигурации по умолчанию), создайте новый файл конфигурации в этом каталоге, напримерblog.conf, а затем вы можете открыть файл конфигурации для настройки и обратно проксировать уже запущенную службу узла на порт 80. Моя конфигурация выглядит следующим образом:

    server {
         listen 80;
         server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
         access_log /var/www/log/blog-access.log;
         error_log  /var/www/log/blog-error.log;
    
         location / {
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header Host $http_host;
                 proxy_set_header X-NginX-Proxy true;
                 proxy_pass http://127.0.0.1:1113/;
                 proxy_redirect off;
         }
    }
    

    proxy_pass соответствует порту, на котором работает служба узла. После записи файла сохраните и выйдите, а затем перезапустите службу nginx,service nginx restart, после успешного повторного обслуживания (если есть ошибка, вы можете открыть журнал nginx, чтобы просмотреть соответствующую ошибку), вы можете открыть соответствующее доменное имя для доступа к веб-сайту.

  2. настроить https
    Для настройки https сначала нужно приобрести https-сертификат, который я купил бесплатно на Alibaba CloudСертификат, откройте веб-сайт и нажмите «Купить сертификат», затем выберите «Бесплатный DV SSL», затем нажмите «Купить сейчас». После покупки сертификата откройте консоль сертификатов, чтобы заполнить информацию.
    Загрузите два файла сертификата и загрузите их на сервер в соответствии с инструкциями. затем откройтеblog.confсделать https конфигурация. Моя конфигурация выглядит следующим образом:

    server {
         listen 443;
         server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
         access_log /var/www/log/blog-access.log;
         error_log  /var/www/log/blog-error.log;
         ssl on;
         ssl_certificate   /etc/nginx/cert/214259593710649.pem;
         ssl_certificate_key /etc/nginx/cert/214259593710649.key;
         ssl_session_timeout 5m;
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
         ssl_prefer_server_ciphers on;
    
         location / {
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header Host $http_host;
                 proxy_set_header X-NginX-Proxy true;
                 proxy_pass http://127.0.0.1:1113/;
                 proxy_redirect off;
         }
    }
    

    ssl_certificateа такжеssl_certificate_keyэто расположение файла, который был только что загружен. После завершения настройки сохраните файл конфигурации, выйдите и перезапустите службу nginx. затем откройтеxxx.comдля доступа к веб-сайту.
    После настройки https необходимо перевести службу http, соответствующую порту 80, на https, и добавить следующую конфигурацию:

    server {
         listen 80;
         server_name www.zhaofinger.com;
         rewrite ^/(.*) https://$server_name$1 permanent;    #跳转到Https
    }
    

Здесь можно использовать pm2 + nginx для настройки службы https.

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

Если в статье есть ошибки, поправьте меня.