RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 946416
Accepted
Александр
Александр
Asked:2020-02-19 03:08:38 +0000 UTC2020-02-19 03:08:38 +0000 UTC 2020-02-19 03:08:38 +0000 UTC

如何使用 GitLab CI 重启 nodejs 服务?

  • 772

要将 REST API (express.js) 上传到测试服务器,我使用 GitLab CI。这个想法是,在提交之后,来自 GIT Lab 的文件被上传到主机,安装包并启动服务器。.gitlab-ci.yml 的代码部分:

stages:
 - init
 - dev

init:
 stage: init
 cache:
  key: ${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHA}-npm-${CI_COMMIT_REF_SLUG}
  paths:
   - node_modules/
 script:
  - rm ./package-lock.json
  - npm install
 artifacts:
  expire_in: 1 day
  paths:
   - node_modules/

dev_deploy:
 stage: dev
 script:
 - ls -la
 - ssh $SSH_USERNAME_DO@$SSH_HOST_DO "cd .../.../appfolder && NODE_ENV=development node server && exit"
only:
 - dev

它不能很好地工作:

  1. 每次都安装软件包,这需要很长时间并且每次下载都不需要,是否有可能仅在正确的时间执行此操作?

  2. 完全不清楚如何在重新启动之前停止 express.js,换句话说,如何重新启动服务器?

node.js
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Suvitruf - Andrei Apanasik
    2020-02-19T03:26:02Z2020-02-19T03:26:02Z

    我可以描述我是如何为我们的开发服务器做的。

    1. 最好在某事下启动服务。我们正在使用supprvisord。它的配置文件是这样的:

      [program:node_server]
      command=node server.js -logFile 1.log > /dev/null 2>& 1&
      directory=/путь/до/директории_с_проектом
      user=www
      environment=NODE_ENV="development"
      numprocs=1
      process_name=%(program_name)s_%(process_num)02d
      autostart=true
      autorestart=true
      startretries=3
      stopsignal=TERM
      stdout_logfile=/var/log/node-server.log
      redirect_stderr=true
      

      重新启动 supprvisord 中的服务suprvisorctl restart имя_сервиса。

    2. 在 CI 中,最好从某个地方的 git 复制项目:

      stages:
      - deploy
      
      deploy:
        stage: deploy
        tags: [dev]
        script:
        # папка, куда копировать хотим, в раннере в гитлабе настраивается
        # $webroot - это тот самый /путь/до/директории_с_проектом
        - if [ -z "$webroot" ]; then echo "Need to set webroot" && exit 1; fi
        # копирум репо в папочку
        - rsync -rv ./ $webroot --exclude '.git' --exclude '.gitlab-ci.yml' --exclude '.gitignore'
        - cd $webroot
        # удаляем лок
        - test -e package-lock.json && rm package-lock.json && echo 'package-lock.json removed' || echo 'no package-lock.json'
        # ставим зависимости
        - npm install
        # ребутаем сервис в supervisor'е
        - sudo supervisorctl restart node_server:node_server_00
        - echo 'Git Gud'
        only:
        - dev
      
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5