如何将meteor应用程序部署到我自己的服务器?
如何将meteor应用程序部署到我自己的服务器?
风味1:开发和部署服务器是一样的;
味道2:开发服务器是一个(也许我的本地主机)和部署服务器是另一个(也许在云中的VPS);
味道3:我想做一个“meteor主机”的域名,就像“meteor.com”一样。 可能吗? 怎么样?
更新 :
我正在运行Ubuntu,我不想“分散”应用程序。 谢谢。
meteor文件目前说:
“你需要提供Node.js 0.8和一个MongoDB服务器,然后你可以通过调用节点来运行应用程序,指定要监听的应用程序的HTTP端口,以及MongoDB端点。
因此,在安装Node.js的几种方法中,我按照最好的build议来启动并运行它,这基本上是在官方的Node.JS网站上直接解压缩最新的版本,已经为Linux编译(64位,在我的情况):
# Does NOT need to be root user: # create directory mkdir -p ~/.nodes && cd ~/.nodes # download latest Node.js distribution curl -O http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz # unpack it tar -xzf node-v0.10.13-linux-x64.tar.gz # discard it rm node-v0.10.13-linux-x64.tar.gz # rename unpacked folder mv node-v0.10.13-linux-x64 0.10.13 # create symlink ln -s 0.10.13 current # add path to PATH export PATH="~/.nodes/current/bin:$PATH" # check node --version npm --version
而要安装MongoDB ,我只需按照其官方网站文档部分提供的MongoDB手册中的说明操作即可:
# Needs to be root user (apply "sudo" if not at root shell) apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list apt-get update apt-get install mongodb-10gen
服务器已准备好运行Meteor应用程序! 对于部署,主要的“问题”是“ 捆绑 ”操作发生的地方。 我们需要从应用程序源文件树中运行meteor bundle
命令。 例如:
cd ~/leaderboard meteor bundle leaderboard.tar.gz
如果部署将发生在另一台服务器( 风格2 )中,则需要使用sftp
, ftp
或任何其他文件传输方法将tar.gz文件包上传到它。 一旦文件在那里,我们将遵循Meteor文档和神奇地包含在捆绑树根目录下的README文件:
# unpack the bundle tar -xvzf leaderboard.tar.gz # discard tar.gz file rm leaderboard.tar.gz # rebuild native packages pushd bundle/programs/server/node_modules rm -r fibers npm install fibers@1.0.1 popd # setup environment variables export MONGO_URL='mongodb://localhost' export ROOT_URL='http://example.com' export PORT=3000 # start the server node main.js
如果部署将位于相同的服务器( flavor 1 )中,则tar.gz文件包已经存在,我们不需要重新编译本地软件包。 (只是跳上面的相应部分。)
凉! 通过这些步骤,我已经将“排行榜”示例部署到我的自定义服务器上 ,而不是“meteor.com”…(只有学习和重视他们的服务!)
我仍然必须使它运行在端口80( 我打算使用NginX的这个 ),坚持环境variables,启动Node.JS从terminal分离,等等…我知道这个设置在一个“几乎裸”的。 ..只是基地,第一步,基本的基石。
该应用程序已被“手动”部署,没有利用所有的meteor deploy
命令魔术function…我见过人们发布了他们的“ meteor.sh ”和“ meteoric.sh ”,我沿着同样的道路…创build一个脚本来模拟“单一命令部署”function…意识到在不久的将来,所有这些东西都将成为先驱meteor探索者的一部分,因为它将成长为一个完整的银河系! 而这些问题大部分将是过去的一个古老的东西。
无论如何,我很高兴看到部署的应用程序运行在有史以来最便宜的VPS上的速度有多快,在几个截然不同的浏览器中具有惊人的低延迟和几乎即时的同步更新。 太棒了!
谢谢!!!
试试Meteor也是
有了这个,你可以部署到任何Ubuntu服务器。 这在内部使用meteor build
命令。 并被许多用于部署生产应用程序。
我创build了Meteor,允许开发者部署生产品质的Meteor应用程序,直到Galaxy来临。
我会推荐一个单独的部署服务器的味道二。 分离问题导致您的代码更稳定的环境,更容易debugging。
要做到这一点,有一个很棒的Meteoric bash脚本可以帮助你部署到Amazon的EC2或你自己的服务器上。
至于如何推出自己的meteor.com,我build议你把它分解成自己的StackOverflow问题,因为它没有关系。 另外,我不能回答:)
我前几天完成了。 我将我的Meteor应用程序部署到DigitalOcean上的我自己的服务器上。 我使用Meteor Up工具来pipe理服务器上的部署和Nginx服务。
这是非常简单的使用。 你应该用命令安装meteor:
npm install -g mup
然后创build部署configuration文件夹并转到创build的目录。 然后运行meteor init
命令。 它会创build两个configuration文件。 我们对mup.json
文件有兴趣。 它具有部署过程的configuration。 看起来像这样:
{ // Server authentication info "servers": [ { "host": "hostname", "username": "root", "password": "password", // or pem file (ssh based authentication) //"pem": "~/.ssh/id_rsa", // Also, for non-standard ssh port use this //"sshOptions": { "port" : 49154 }, // server specific environment variables "env": {} } ], // Install MongoDB on the server. Does not destroy the local MongoDB on future setups "setupMongo": true, // WARNING: Node.js is required! Only skip if you already have Node.js installed on server. "setupNode": true, // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number. "nodeVersion": "0.10.36", // Install PhantomJS on the server "setupPhantom": true, // Show a progress bar during the upload of the bundle to the server. // Might cause an error in some rare cases if set to true, for instance in Shippable CI "enableUploadProgressBar": true, // Application name (no spaces). "appName": "meteor", // Location of app (local directory). This can reference '~' as the users home directory. // ie, "app": "~/Meteor/my-app", // This is the same as the line below. "app": "/Users/arunoda/Meteor/my-app", // Configure environment // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary "env": { "PORT": 80, "ROOT_URL": "http://myapp.com", "MONGO_URL": "mongodb://arunoda:fd8dsjsfh7@hanso.mongohq.com:10023/MyApp", "MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:adj87sjhd7s@smtp.mailgun.org:587/" }, // Meteor Up checks if the app comes online just after the deployment. // Before mup checks that, it will wait for the number of seconds configured below. "deployCheckWaitTime": 15 }
填充所有数据字段后,您可以使用命令mup setup
来启动设置过程。 它会设置你的服务器。
成功设置后,您可以部署您的应用程序。 只需在控制台中键入mup deploy
。
另一种方法是在自己的服务器上开发。 我刚创build了一个Digital Ocean box,然后连接了我的Cloud9 IDE帐户。
现在,我可以在Cloud IDE中的机器上正确开发,部署非常简单 – 只需复制文件即可。
我创build了一个教程,显示我的设置如何工作。
以下是在CentOS 7 VPS上运行Meteor的说明 。 它应该适用于其他Linux环境。
我有很多麻烦,所以我决定写我自己的部署脚本 。 我还添加了额外的信息如何设置nginx或mongodb。 希望能帮助到你!
在储存库中查看/sh
文件夹
meteor-deploy.sh
function是什么:
- select环境(
./meteor-deploy.sh
用于登台,././meteor-deploy.sh prod
用于生产) - 构build和捆绑meteor应用程序的生产版本
- 将包复制到服务器
- SSH到服务器
- 做一个mongodump备份数据库
- 停止运行的应用程序
- 解压缩包
- 覆盖应用程序文件
- 重新安装应用程序节点程序包依赖关系
- 启动应用程序(永远使用)
testing以下服务器configuration:
- Ubuntu 14.04.4 LTS
- meteor – 版本1.3.2.4
- 节点 – 版本v0.10.41
- npm – 版本3.10.3