如何在Linux生产环境中部署Meteor应用程序?
我有简单的meteorjs应用程序,我想部署在自己的server.How我可以做到这一点。 我尝试使用https://github.com/arunoda/meteor-up-legacy ,但我得到一些错误如下:
npm ERR! Linux 4.4.0-96-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "mup" npm ERR! node v4.2.6 npm ERR! npm v3.5.2 npm ERR! file sh npm ERR! code ELIFECYCLE npm ERR! errno ENOENT npm ERR! syscall spawn npm ERR! mup@1.3.3 postinstall: `opencollective postinstall` npm ERR! spawn ENOENT npm ERR! npm ERR! Failed at the mup@1.3.3 postinstall script 'opencollective postinstall'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the mup package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! opencollective postinstall npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs mup npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls mup npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/ambu/mymeteorprojects/dummy/npm-debug.log npm ERR! code 1
由于我是新手,对这些错误的含义并不了解。
在开始使用可以为你做所有事情的mup之前,最好先了解一下通常如何将应用程序部署到生产环境。
赤脚走过如下:
让我们假设你的应用程序叫做todos
,它存在于/home/meteor-doge/todos
进入该目录:
cd /home/meteor-doge/todos/
构build可部署的应用程序:
meteor build ../ --directory
在父目录中,您现在将find一个捆绑目录:
cd ../ ls -ltr --> bundle
npm安装如果适用:
cd bundle/program/server && npm install
将软件包目录复制到生产主机。
cp -R bundle /where/ever/necessary/
在生产主机中,设置所需的环境variables:
export MONGO_URL=mongodb://hostIP:port/dbName export ROOT_URL=https://localhost export PORT=3000
启动应用程序:
/usr/bin/node /home/prod-server/path/to/bundle/main.js
如果一切顺利,您的应用程序将在您的生产服务器上运行,并可通过以下方式访问: http://<prod-ip>:3000
您需要有可用的下面的东西来安装Meteor应用程序在远程服务器上,而不使用mup
软件包。
-
NODE JS 4.8.4
安装。 -
MONGO DB 3.2/3.4
安装。 -
NGINX/APACHE
安装并运行。 -
PM2
安装。
我正在使用CentOS 7安装Meteor 1.5.0
步骤1:
要创build特定于生产的可展开tarball,请运行以下命令。
meteor build --server-only .
注意 :这将在您的项目文件夹中创build一个
project_name.tar.gz
文件。 这是一个tar文件,它被构build,缩小,压缩以供生产使用,读代码也不方便用户,所以不容易破解meteor代码。
第2步:
您需要安装特定版本的节点js,这与您的meteor版本兼容[在我的情况下,meteor1.5与节点4.8.4]
要知道安装节点js的过程,请点击这里
第3步:
你现在需要服务器上的mongo db,
- 运行命令
sudo vi /etc/yum.repos.d/mongodb-org.repo
粘贴到该文件
[mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
按照如下顺序运行命令;
-
yum repolist
-
sudo yum install mongodb-org
-
service mongod start / service mongod stop
-
mongo
确保你创build了
database_name
,user
,password
。
现在使用下面的命令为shell导出variables。
-
export MONGO_URL="mongodb://username:password@127.0.0.1:27017/domain_name"
-
export ROOT_URL="http://localhost/"
-
export PORT=3000
步骤4:
现在,由于安装了Node和npm,您可以使用命令npm install pm2 -g
轻松安装pm2
第5步:
将project_name.tar.gz
复制到您的服务器位置,运行命令tar -xzf project_name.tar.gz
。
一个bundle
目录是为你创build的。 去bundle/programs/server
并执行命令npm install --production
。 回到bundle/
目录,使用命令pm2 start -name "UID" main.js
运行pm2 start -name "UID" main.js
。 这会告诉你下面的东西。
[root@server ~]# cd /home/xyz/public_html/bundle/ [root@server bundle]# pm2 start --name "UID" main.js [PM2] Starting /home/xyz/public_html/bundle/main.js in fork_mode (1 instance) [PM2] Done. ┌──────┬──────┬────────┬───┬─────┬──────────┐ │ Name │ mode │ status │ ↺ │ cpu │ memory │ ├──────┼──────┼────────┼───┼─────┼──────────┤ │ UID │ fork │ online │ 0 │ 0% │ 4.0 KB │ └──────┴──────┴────────┴───┴─────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app
您可以使用命令pm2 show 0
来确认您的网站是否启动,因为0是进程运行的索引。
你可以随时使用命令pm2 delete 0
或pm2 delete all
的closures站点closurespm2处理的所有进程。
如果你想监视网站的性能,你可以运行命令pm2 monit
。
注意 :
pm2 start ...
命令将只在bundle/
文件夹内运行,因为它查找main.js
文件。
而已!!! 应用程序在https://<hostip or name>:3000
我努力实现了上述所有function,并使网站能够在远程服务器上运行。