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——发行部署的主要内容,如果未能解决你的问题,请参考以下文章