2 部署

Go常用部署方式有四种 nohup, supervisor, systemddocker

2.1 Nohup

nohup是在linux系统上运行程序的一种方式。这种方式比较简单,通过一个命令行,就可以快速启动程序

  1. nohup ./micro &
  • nohup加在一个命令的最前面,表示不挂断的运行命令
  • & 加在一个命令的最后面,表示这个命令放在后台执行

2.1.1 常用指令

  • 查看进程 jobs
  1. ~ jobs
  2. [1] + running nohup ./micro

“+”代表最近的一个任务(当前任务),“-”代表之前的任务。 只有在当前命令行中使用 nohup和& 时,jobs命令才能将它显示出来。如果将他们写到 .sh 脚本中,然后执行脚本,是显示不出来的

  • 关闭进程
    • 通过jobs命令查看jobnum,然后执行 kill %jobnum
    • 通过ps命令查看进程号PID,然后执行 kill %PID
  • 进程切换到前台
    • fg指令 将程序从后台中调至前台继续运行
  1. ~ fg %1
  2. [1] + 9037 running nohup ./micro
  • ctrl+z 指令 将程序从前台调至后台继续运行
  1. ~ fg %1
  2. [1] + 9037 running nohup ./micro
  3. ^Z
  4. [1] + 9037 suspended nohup ./micro

nohup只能实现程序在后台运行,作用比较弱。不能对程序的panic做监控报警和自动拉起。一般在生产环境上,我们并不会使用 nohup ,我们会使用更

2.2 Supervisor

2.2.1 安装supervisor

  1. yum install python-setuptools
  2. easy_install supervisor

2.2.2 测试是否安装成功

  1. 测试是否安装成功
  2. echo_supervisord_conf

2.2.3 配置supervisor配置

  1. [program:micro]
  2. directory=/home/micro/
  3. command=/home/micro/micro
  4. process_name=%(program_name)s
  5. user=www
  6. numprocs=1
  7. autostart=true
  8. startsecs=3
  9. startretries=3
  10. autorestart=true
  11. exitcodes=0,2
  12. stopsignal=TERM
  13. stopwaitsecs=10
  14. serverurl=AUTO
  15. stdout_logfile=/home/micro/supervisorlogs/%(program_name)s_stdout.log
  16. stdout_logfile_maxbytes=50MB
  17. stdout_logfile_backups=10
  18. stdout_capture_maxbytes=0
  19. stdout_events_enabled=true
  20. stderr_logfile=/home/micro/supervisorlogs/%(program_name)s_stderr.log
  21. stderr_logfile_maxbytes=50MB
  22. stderr_logfile_backups=10
  23. stderr_capture_maxbytes=0
  24. stderr_events_enabled=false

2.2.4 执行supervisor指令

  1. supervisorctl update
  2. supervisorctl start micro