beego——发行部署

Posted yangmingxianshen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beego——发行部署相关的知识,希望对你有一定的参考价值。

开发模式

通过bee创建的项目,beego默认情况下是开发模式。

我们可以通过如下的方式改变我们的模式:

beego.RunMode = "prod"

或者我们在conf/app.conf下面设置如下:

runmode = prod

以上两种效果一样。

开发模式中

开发模式下,如果你的目录不存在views目录,那么会出现类似下面的错误提示:

2013/04/13 19:36:17 [W] [stat views: no such file or directory]

模板每次使用都会重新加载,不进行缓存。

如果服务端出错,那么就会在浏览器端显式如下类似的截图:

技术分享图片

 

 

发行部署

Go语言的应用最后编译之后是一个二进制文件,你只需要copy这个应用到服务器上,运行起来就行。

beego由于带有几个静态文件、配置文件、模板文件三个目录,所以应用部署的时候需要同时copy这三个目录到相应的部署应用之下。

$ mkdir /opt/app/beepkg
$ cp beepkg /opt/app/beepkg
$ cp -fr views /opt/app/beepkg
$ cp -fr static /opt/app/beepkg
$ cp -fr conf /opt/app/beepkg

这样在 /opt/app/beepkg 目录下面就会显示如下的目录结构:

.
├── conf
│   ├── app.conf
├── static
│   ├── css
│   ├── img
│   └── js
└── views
    └── index.tpl
├── beepkg

这样我们就已经把我们需要的应用搬到服务器了,那么接下来就可以开始部署了。

这里部署首先你需要把应用跑起来,这分为两种方式:

独立部署

独立部署即为在后端运行程序,让程序跑在后端

nohup ./beepkg &

这样你的应用就跑在了Linux系统的守护进程。

 

Supervisord 部署

Supervisord是用Python实现的一款非常实用的进程管理工具,supervisord还要求管理的程序是非daemon程序,

supervisord会帮你把它转成daemon程序,因此如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off 让 nginx 以非 daemon 方式启动。

关于更多:https://www.cnblogs.com/yangmingxianshen/p/9639846.html

 

上面只是把应用程序完全暴露在外部,我们大多数的应用会在前端部署一个nginx或者apache利用这些程序的HTTP服务器做负载均衡或者认证之类的。

Nginx部署

Go是一个独立的HTTP服务器,但是我们有些时候为了nginx可以帮我们做很多工作,

例如日志访问、cc攻击、静态服务等,nginx已经做的非常成熟,Go只要专注于业务逻辑和功能就更好,

所以通过nginx配置代理就可以实现更多应用同时部署,如下就是典型的两个应用共享80端口,通过不同的域名访问,反向代理到不同的应用。

server {
    listen       80;
    server_name  .a.com;

    charset utf-8;
    access_log  /home/a.com.access.log;

    location /(css|js|fonts|img)/ {
        access_log off;
        expires 1d;

        root "/path/to/app_a/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:8080;
    }
}

server {
    listen       80;
    server_name  .b.com;

    charset utf-8;
    access_log  /home/b.com.access.log  main;

    location /(css|js|fonts|img)/ {
        access_log off;
        expires 1d;

        root "/path/to/app_b/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:8081;
    }
}

 

Apache部署

apache 和 nginx 的实现原理一样,都是做一个反向代理,把请求向后端传递,配置如下所示:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]-host.example.com
    ServerName www.a.com
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]-host.example.com
    ServerName www.b.com
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://127.0.0.1:8081/
    ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>

 

以上是关于beego——发行部署的主要内容,如果未能解决你的问题,请参考以下文章

beego 打包部署

部署beego项目到远程服务器

Fabric1.4 beego-docker部署

Fabric1.4 beego-docker部署

beego+vue.js分离开发,结合发布,简单部署

beego+vue.js分离开发,结合发布,简单部署