首先让我说我完全糊涂了。现在已经不在了,这就是我所做的:
我有两台远程服务器(Ubuntu)(开发和生产)和我的本地机器。
在本地计算机上:
在Dev Machine上 - 远程dev.mysite.com
好的,让我在那里停下来解释我理想的工作流程,如果有更好的方法,我很乐意改变。我需要在线开发我的开发网站,但我不希望它在meteor.com上托管
我希望我的问题可以帮助您洞察我的困境,在这种困境中,我只是不理解工作流程,而且文档令人困惑。我只是希望能够在我的本地计算机上运行我的站点/应用程序,提交并推送我自动部署到开发服务器的更改...但是此部署协议让我失望,数据库正在抛出我离开了。
有没有更好的方法来创建从本地到开发到生产的快速高效的工作流程?我之前没有提到生产,因为我计划使用相同的自动部署。我将我的dev分支与master和push master合并,后者将自动部署到生产服务器。我有一个单独的生产数据库,所以这也让我在泡菜中...如果我合并,我正在跨越数据库配置,或者这是严格在服务器上完成一次我不不得不担心吗?
尔加。请帮忙!谢谢。
答案 0 :(得分:1)
如果没有发布一些配置服务器的长篇小说,我可以引导您朝着正确的方向前进:
1& 2& 3.模式是在每台机器上设置post-receive
挂钩。
钩子应该:
meteor bundle
(生成.tar.gz
文件)您可以在init.d
中设置一个脚本,该脚本使用forever
来操作流星,例如。 /etc/init.d/meteor start|stop
您还可以添加所需的配置变量 - 例如MONGO_URL
启动流星的例子:
echo "$(date +'%Y-%m-%d %T,000') INFO $SERVICE_NAME started" >> $LOG_DIR/forever.log
export MONGO_URL=''
export PORT=3000
export ROOT_URL=myserver.myapp.com
export METEOR_SETTINGS="\`cat /path/to/production/settings.json\`"
export MAIL_URL=mail.myapp.com
sudo -u meteor -H -E forever -l $LOG_DIR/forever.log -o $LOG_DIR/out.log -e $LOG_DIR/err.log --minUptime 30000 --spinSleepTime 5000 -a -s start $WWW_APP_DIR/main.js
;;
4。除非你以root身份运行meteor,没有运行端口80 - 你最好让nginx坐在Meteor前面并提供静态资源 - 所以得到一个nginx配置,例如。
server {
listen 3000;
server_name localhost;
# this should include any files / directories that belong to /public
location ~ "^/(resources/|robots.txt|humans.txt|favicon.ico)" {
root /path/to/bundle/programs/client/app/;
access_log off;
expires max;
}
# this is any assets that belong in packages
location ~ "^/packages" {
root /path/to/bundle/programs/client/;
access_log off;
expires max;
}
# this is for the main css & js
location ~* "^/[a-z0-9]{40}\.(css|js)$" {
root /path/to/bundle/programs/client;
access_log off;
expires max;
}
# this is for any sockets
location /sockjs/ {
proxy_pass http://meteor;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location / {
proxy_pass http://meteor;
# dont know if this is missing some stuff
}
}