前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux 部署golang 项目(直接部署和基于nginx部署)

linux 部署golang 项目(直接部署和基于nginx部署)

作者头像
地球流浪猫
发布2018-08-02 15:28:12
4.3K0
发布2018-08-02 15:28:12
举报
文章被收录于专栏:流浪猫的golang

直接部署:

linux 上安装golang 项目的方式按照官网的 https://golang.org/doc/install#install 的方式,安装go运行环境到/usr/local/go/bin 下。

设置GOPATH

发现如果按照官方给的安装方法只指定GOROOT的路径,于是自己新建一个目录gopath 作为GOPATH 的目录,并且设置环境变量(export GOPATH=/newhome/go/gopath)。在gopath下新建3个文件夹(模仿windows GOPATH的方式,也是go语言的工作环境目录)分别为 src、pkg、bin目录。

go语言的工作空间其实就是一个文件目录,目录中必须包含src、pkg、bin三个目录。

其中src目录用于存放go源代码,pkg目录用于package对象,bin目录用于存放可执行对象。

GOPATH目录指明了你go代码的工作空间的位置,不能与GOROOT目录相同,而且GO代码必须位于工作空间内。

添加go代码库

src的源码代码可以go get github.com/** 的方式获取,也可以从复制别的地方项目到src目录下。于是乎,我就把我windows的下面的src所有文件夹复制到linux下面,免去重新下载的时间。

部署自己项目

上传自己的项目到src目录下与github.com,golang.org等其他目录平级

如下图所示:

goonlinemusic就是我的项目 然后进入我项目执行go build main.go 会编译一个linux 可执行程序。

最后执行 ./main 就行了。

如果想让项目在后台执行:执行 nohup ./main & ,这样就可以程序在后台运行了。

基于nginx部署:

    在使用nginx 部署时,首先要明白nginx 反向代理的原理。下面简要提一下就是。访问一个链接,例如127.0.0.1:8000

nginx部署在服务器对8000 进行监听。nginx 收到访问请求后把请求交给192.168.0.1:8001进行处理(go程序在对另一台ip为192.168.0.1的机器8001 端口监听)。

突然觉着这是不是很蛋疼,go能直接部署在服务器提供web服务吗?为什么还要搞个nginx 。因为内网代理和负载均衡。

具体去百度或者上知乎搜一下,他们讲的比我好。

进入 nginx的conf的目录,打开nginx.conf 

添加下面的文件到nginx.conf 即可,最后重启nginx 服务。

关键的一点:web的资源文件的请求由nginx 来完成,不需要后台服务器进行处理。

代码语言:javascript
复制
server {
    listen       8000;
    server_name  localhost;
    
    charset utf-8;
    access_log  /newhome/go/nginxlog/access.log;
    #如果是css,js|fonts|png|svg|html|txt 资源文件 nginx 直接处理,不提交到后台让go处理。
    # nginx 会在root 对应的目录下 去找这些资源文件
    location ~ \.(css|js|fonts|png|svg|html|txt)$ {
        access_log on;
        expires 1d;


        root /newhome/go/gowork/goonlinemusic/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:8001;
    }	}

参考连接https://beego.me/docs/deploy/nginx.md

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年03月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 直接部署:
  • 基于nginx部署:
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档