前提
- 拥有一台云服务器(这里演示是阿里云)
- 已安装Nginx服务
部署
配置nginx
- nginx代理配置
server { listen 80; server_name demo.com; # 线上域名 charset utf-8; root /data/gocode/src/myproject; # 项目目录 #error_page 404 /404.html; #error_page 502 /502.html; location /(css|js|fonts|img)/ { access_log off; expires 1d; root "/data/gocode/src/myproject/static"; try_files $uri @backend; } location / { try_files /_not_exists_ @backend; } location @backend { proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:10010; # Go项目启动端口改成10010 } }
使用nohup
- 首先编写一个beego.sh脚本,将其放在/usr/local/sbin目录下
vim /usr/local/sbin/beego.sh #! /bin/bash cd /data/gocode/src/myproject && bee run # /data/gocode 是GOPATH路径 # /data/gocode/src/myproject 是项目路径 # bee run 启动
- 使用nohup运行脚本
mkdir /var/log/beego # 创建日志目录 chmod 755 /usr/local/sbin/beego.sh # beego.sh赋值可执行权限 # 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) nohup /usr/local/sbin/beego.sh > /var/log/beego/beego.log 2>&1 & # 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到/var/log/beego/beego.log中
- 关闭后台运行
ps -ef | grep bee # 查询beego.sh和bee运行进程 root 8218 7880 0 Jul01 pts/0 00:00:00 /bin/bash /usr/local/sbin/beego.sh root 8224 8218 0 Jul01 pts/0 00:00:00 bee run root 10964 7880 0 10:05 pts/0 00:00:00 grep --color bee lsof -i :10010 # 查询项目端口 \COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME myproject 8278 root 3u IPv6 71490 0t0 TCP *:rxapi (LISTEN) kill -9 8218 8224 8278
使用screen部署
- 开启screen会话
cd /data/gocode/src/myproject # 进入项目目录 screen # 在该项目目录开启一个会话 bee run # 运行项目
- 退出会话
ctrl + A 再按 d # ctrl键 + A(大写字母) 再按 d(小写字母)
- 恢复会话
screen -ls # 查看会话列表 There is a screen on: 7464.pts-3.one (Detached) 1 Socket in /var/run/screen/S-root. screen -rD 7464 # 恢复会话
- 删除会话
# 如是Detached状态使用 screen -X -S 7464 quit # 如是Dead状态使用 screen -wipe 7464