本文介绍了【Golang】教你简单部署GO语言服务端相关内容,对大家解决问题具有一定的参考价值,需要的朋友们一起学习吧!
众所周知,go语言是可以直接将代码编译为二进制可执行文件的,因此服务器上不需要准备go的环境,仅服务端的部署也非常的简单,对比java真的是太便捷了。下面我就来简单分享一下,怎么实现部署。
内容预警 编译设置linux服务器启动程序1.修改可执行文件权限2.运行文件前台运行:后台执行不挂断的执行查看当前后台运行关闭当前后台运行的命令查看端口情况 检查运行状态重新部署1.重新编译2.暂停线上程序 3.将新的可执行文件替换线上服务器的文件4.重新执行文件 一些还可能得上的命令 编译设置首先,你需要一个个人的服务器,这个默认都有了哈,然后在项目本地运行无误后,打开终端,输入go env 查看你的go的环境设置。
在编译之前,我们需要设置两个个值
set GOARCH=amd64 set GOOS=linux
也就是上图圈起来的两个,GOOS的值设置的是编译的文件是什么系统下的可执行文件,一般服务器都是linux的,不一样则按需修改,set命令设置一下。
完成后在goland项目中打开终端,或者在终端进入项目文件夹进行编译命令:
go build xx.go
(其实直接 go build也可以,一般来讲项目上只会留一个main的执行文件) 编译完成后,就会在文件夹下生成一个linux可执行文件(呐,如果GOOS设置为windows则是windows下可执行文件)
linux服务器启动程序我们拿到可执行文件后,可以通过xftp将文件放到linux服务器上,建议自己建一个专门放项目的文件夹,然后打开xshell链接服务器,进入放可执行文件的文件夹(注意:如果你的程序有一些需要加载的静态文件,配置文件,那么我建议把整个项目文件也放到服务器的项目文件夹里一份,不然会找不到)
1.修改可执行文件权限 chmod 777 文件名 2.运行文件运行文件前我们先了解一些命令
前台运行: 直接 ./文件名 eg: ./main 后台执行 &命令,加在最后面 eg: ./mian & 不挂断的执行 bohup命令 eg: nohup ./main & 查看当前后台运行 jobs命令 查看当前终端后台运行的任务 ps命令 查看当前的所有进程 eg: ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 关闭当前后台运行的命令 kill命令:结束进程 通过ps命令查看进程号PID,然后执行 kill %PID kill -9 pid 强制关闭 查看端口情况 netstat -anp |grep 端口号知道上面的命令后我们就可以启动我们的程序了
> 号是linux里的重定向符号 >start.log 表示将程序输出内容(也就是下面命令的1)写入start.log文件 2>&1 表示把标准错误重定向为和标准输出一样 也就是把2的内容输入到1,而因为1的内容已经重定向到start.log 所以命令结果就是 错误和标准输出都会写到>start.log 文件
检查运行状态10164 程序运行的pid,我们可以通过上面的命令查看运行情况
PID:进程的身份证号码TTY:进程关联的终端STAT:进程当前状态TIME:进程运行的时间COMMAND:当前进程执行的是哪个程序发现程序平稳运行,我们可以检查一下端口情况
确认没有问题后,打开服务器控制台,将程序端口(示例是8080)设置为防火墙开放端口就OK了!
重新部署那如果想更新线上的程序的话,只需要再次走几步就可以
1.重新编译再次go build 新的文件就会覆本地旧的文件,
2.暂停线上程序我们可以通过ps -ef|grep main命令(mian是你的控制性文件名),找到程序运行进程的pid 找到后kill掉它 kill -9 10164 然后再次查看端口号,看看是否kill掉了它,如果出现图上的
[1]+ Killed nohup ./main > start.log 2>&1则是还没有完全干掉它,我们稍等一会,再看一下就好了
3.将新的可执行文件替换线上服务器的文件这一步直接在xftp上完成就可以,覆盖文件后记得再次修改文件权限
4.重新执行文件替换文件完成后,再次进行之前执行的操作就完成了!
一些还可能得上的命令 (1)fg命令 功能:将后台中的命令调至前台继续运行 如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。 (2)Ctrl + z 命令 功能:将一个正在前台执行的命令放到后台,并且处于暂停状态 (3)bg命令 功能:将一个在后台暂停的命令,变成在后台继续执行 如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。Stat状态解释:
X 死掉的进程< 高优先级N 低优先级L 有些页被锁进内存s 包含子进程+ 位于后台的进程组;l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)该文章版权属于昰阳摘录自:https://blog.csdn.net/qq_45725675/article/details/125235204
这篇关于【Golang】教你简单部署GO语言服务端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!