💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
> ### 线上环境部署 * 线上服务器不需要安装Go的开发环境, 也不用将源码上传上去 * 只需要找一台和线上服务器相同的操作系统, 安装GO环境, 上传源码, 生成可执行文件, 将生成的可执行文件放到线上服务器(避免线上服务器出现漏洞时, 被人盗窃源码, 找出漏洞, 进一步遭受攻击) * 将本地可执行文件上传到线上服务器时, 如果用到相对路径, 那线上服务器放可执行文件的文件, 要和本地生成可执行文件的位置相同 > ### 准备工作 * 说明: 用supervisor 来管理不同服务间的单个或多个实例, 用nginx负载均衡到多个实例 * 定义三个服务, 端口为9001~9003, 将生成的可执行文件放到线上服务器(名称http-login1, http-login2, http-login3) ~~~ package main import ( "net/http" "fmt" ) func login(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello World")) } func main() { http.HandleFunc("/login", login) if err := http.ListenAndServe(":9001", nil); err != nil { fmt.Println(err) } } ~~~ > 安装 supervisor 进程管理工具 * supervisord:运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。 * supervisorctl:是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。 ~~~ [root@VM_0_17_centos gopath]# yum install supervisor [root@VM_0_17_centos gopath]# systemctl start supervisord.service [root@VM_0_17_centos gopath]# vim /etc/supervisord.conf //systemctl restart supervisord.service (修改完配置没生效的话重启下) //找到 ;[program:theprogramname]栏目, 在下一个栏目前添加 //相关配置说明可以看最下方的相关阅读 [program:golang-http-login1] command=/var/local/gopath/src/http-login1 autostart=true autorestart=true startsecs=10 ;stdout_logfile=/usr/local/runtime.log ; 配置日记(点Name的时候可以看到对应终端输出) ; directory=/var/local/gopath/src ;在这个目录下运行(程序引入静态文件时) [program:golang-http-login2] command=/var/local/gopath/src/http-login2 autostart=true autorestart=true startsecs=10 [program:golang-http-login3] command=/var/local/gopath/src/http-login3 autostart=true autorestart=true startsecs=10 [root@VM_0_17_centos gopath]# supervisorctl update golang-http: stopped golang-http: removed process group golang-http-login1: added process group golang-http-login2: added process group golang-http-login3: added process group #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。 //supervisorctl update #启动进程 //supervisorctl start golang-http-login1 #重启进程 //supervisorctl restart golang-http-login1 #停止进程 //supervisorctl stop golang-http-login1 #启动全部进程 //supervisorctl start all #设置开机启动 //systemctl enable supervisord.service ~~~ > ### 查看服务状态 ~~~ [root@VM_0_17_centos gopath]# supervisorctl status golang-http-login1 RUNNING pid 15112, uptime 0:01:03 golang-http-login2 RUNNING pid 15113, uptime 0:01:03 golang-http-login3 RUNNING pid 15114, uptime 0:01:03 [root@VM_0_17_centos src]# netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2897/sshd tcp6 0 0 :::9001 :::* LISTEN 15112/http-login1 tcp6 0 0 :::9002 :::* LISTEN 15113/http-login2 tcp6 0 0 :::9003 :::* LISTEN 15114/http-login3 ~~~ > ### 访问服务 ![](https://img.kancloud.cn/55/08/55087a4bc9642753368f307cc5258cdc_675x480.png) > ### 图形界面(修改inet\_http\_server模块) ![](https://img.kancloud.cn/a7/90/a7908b4ae430391726d5e756e9086751_618x88.png) ![](https://img.kancloud.cn/c0/b0/c0b049c4b43745fbb552ec6c9488c182_1307x310.png) > ### nginx负载均衡 ~~~ upstream golang-http-login { server 123.207.79.96:9001; server 123.207.79.96:9002; server 123.207.79.96:9003; } server { listen 9000; location / { proxy_pass http://golang-http-login; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ~~~ > ### 相关阅读 * [supervisor的安装与简单介绍](https://www.cnblogs.com/Dicky-Zhang/p/6171954.html)