代码改变世界

golang项目部署

  youxin  阅读(233)  评论(0编辑  收藏  举报

独立部署

Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,并且将代码编译成能够在 Linux amd64 服务器上运行的程序。

对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。

编译

编译可以通过以下命令或编写 makefile 来操作。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/bluebell

 

下面假设我们将本地编译好的 bluebell 二进制文件、配置文件和静态文件等上传到服务器的/data/app/bluebell目录下。

补充一点,如果嫌弃编译后的二进制文件太大,可以在编译的时候加上-ldflags "-s -w"参数去掉符号表和调试信息,一般能减小20%的大小。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./bin/bluebell

 

如果还是嫌大的话可以继续使用 upx 工具对二进制可执行文件进行压缩。

我们编译好 bluebell 项目后,相关必要文件的目录结构如下:

复制代码
复制代码
├── bin
│   └── bluebell
├── conf
│   └── config.yaml
├── static
│   └── static
│       ├── css
│       │   └── app.0afe9dae.css
│       ├── favicon.ico
│       ├── img
│       │   ├── avatar.7b0a9835.png
│       │   ├── iconfont.cdbe38a0.svg
│       │   ├── logo.da56125f.png
│       │   └── search.8e85063d.png
│       └── js
│           ├── app.9f3efa6d.js
│           ├── app.9f3efa6d.js.map
│           ├── chunk-vendors.57f9e9d6.js
│           └── chunk-vendors.57f9e9d6.js.map
└── templates
    └── index.html
复制代码
复制代码

 

nohup

nohup 用于在系统后台不挂断地运行命令,不挂断指的是退出执行命令的终端也不会影响程序的运行。

我们可以使用 nohup 命令来运行应用程序,使其作为后台守护进程运行。由于在主流的 Linux 发行版中都会默认安装 nohup 命令工具,我们可以直接输入以下命令来启动我们的项目:

sudo nohup ./bluebell conf/config.yaml > nohup_bluebell.log 2>&1 &

 

其中:

  • ./bluebell conf/config.yaml是我们应用程序的启动命令
  • nohup ... &表示在后台不挂断的执行上述应用程序的启动命令
  • > nohup_bluebell.log表示将命令的标准输出重定向到 nohup_bluebell.log 文件
  • 2>&1表示将标准错误输出也重定向到标准输出中,结合上一条就是把执行命令的输出都定向到 nohup_bluebell.log 文件

上面的命令执行后会返回进程 id

[1] 6338

 

当然我们也可以通过以下命令查看 bluebell 相关活动进程:

ps -ef | grep bluebell

 

输出:

root      6338  4048  0 08:43 pts/0    00:00:00 ./bin/bluebell conf/config.yaml
root      6376  4048  0 08:43 pts/0    00:00:00 grep --color=auto bluebell

此时就可以打开浏览器输入http://服务器公网ip:端口查看应用程序的展示效果了。

 

supervisor

Supervisor 是业界流行的一个通用的进程管理程序,它能将一个普通的命令行进程变为后台守护进程,并监控该进程的运行状态,当该进程异常退出时能将其自动重启。

首先使用 yum 来安装 supervisor:

如果你还没有安装过 EPEL,可以通过运行下面的命令来完成安装,如果已安装则跳过此步骤:

sudo yum install epel-release

 

安装 supervisor

sudo yum install supervisor

 

Supervisor 的配置文件为:/etc/supervisord.conf ,Supervisor 所管理的应用的配置文件放在 /etc/supervisord.d/ 目录中,这个目录可以在 supervisord.conf 中的include配置。

[include]
files = /etc/supervisord.d/*.conf

 

启动supervisor服务:

sudo supervisord -c /etc/supervisord.conf

 

我们在/etc/supervisord.d目录下创建一个名为bluebell.conf的配置文件,具体内容如下。

复制代码
复制代码
[program:bluebell]  ;程序名称
user=root  ;执行程序的用户
command=/data/app/bluebell/bin/bluebell /data/app/bluebell/conf/config.yaml  ;执行的命令
directory=/data/app/bluebell/ ;命令执行的目录
stopsignal=TERM  ;重启时发送的信号
autostart=true  
autorestart=true  ;是否自动重启
stdout_logfile=/var/log/bluebell-stdout.log  ;标准输出日志位置
stderr_logfile=/var/log/bluebell-stderr.log  ;标准错误日志位置
复制代码
复制代码

 

创建好配置文件之后,重启supervisor服务

sudo supervisorctl update # 更新配置文件并重启相关的程序

 

查看bluebell的运行状态:

sudo supervisorctl status bluebell

 

输出:

bluebell                         RUNNING   pid 10918, uptime 0:05:46

 

参考;

https://www.cnblogs.com/binHome/p/13700891.html

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-04-12 MFC DDX_Control 与 DDX_Text
2019-04-12 MFC Dialog使用
2019-04-12 C++ MFC万能的类向导
2019-04-12 MFC 对话框不显示,返回-1 原因
2016-04-12 java hashcode
2015-04-12 ip相关
2013-04-12 Bootstrap介绍
点击右上角即可分享
微信分享提示