aldeed / deploymeteor Goto Github PK
View Code? Open in Web Editor NEWThe deploymeteor script makes it as easy as possible to deploy a meteor app to a standard Amazon EC2 server running the latest Amazon Linux AMI.
The deploymeteor script makes it as easy as possible to deploy a meteor app to a standard Amazon EC2 server running the latest Amazon Linux AMI.
It would be a very helpful feature if one could specify define settings, which can be accessed as the Meteor.settings object from the server code after deployment.
One possible API would be to run a command like the following to specify the settings for an environment:
deploymeteor development settings ~/local/path/to/deployment_settings.json
This is a feature request.
How about adding support for attaching a predefined number of meteor instance-clones to a Load Balancer like one of these:
Great job with deploymeteor -- thanks for doing this!
I have deployed 3 Meteor apps to a single server to do some testing. The first one is over port 80 (default), and the other two are over 50000 and 60000. (The last 2 are the same app deployed twice, just fyi.)
WebSockets seem to fail over the first one (port 80), however they work on 50000 and 60000.
I have checked my security settings on AWS and they seem to be ok. Thanks for your help.
In the new Meteor release, the server folder, in which fibers need to be re-installed, is in $BUNDLE_DIR/programs/server (note the intermediate programs folder). This needs to be updated in the deploymeteor.sh script.
Hi,
Thank you for your great and convenient package which made my life a lot easier deploying my meteor app to my EC2 instance. I would like to ask you one question. Is there any way to define an environment file or set environment settings in any other way for each environment?
Any help would be greatly appreciated! :)
Mike
This is of course not a bug, but as an ec2 noob it confuses me that there is no output after install/startup telling me at what url the app is running. When starting meteor locally you allways get: App running at: http://localhost:3000/.
It would be nice to have the same thing happening after deploying to EC2, since it is not obvious where the app is running.
After deploying using this script I would assume the app would be available at the ec2 Public IP when I choose the default root Url when running the script (like http://my-ec2-public-ip). When i visit this url the site is blank and no errors anywhere. This makes it hard using this script when you are not a web-server expert.
Hi @aldeed, I followed all your instructions.
The git push
completed successfully with no errors.
I SSHed into the server and checked the app directory, everything checked out.
I even went into the git folder and re-ran post-receive
but even after multiple attempts, I get
An error has occurred: {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect"}
on the browser.
Installed mongodb on the same server. mongo url points to mongodb://localhost:27017/mydb
Sorry to trouble you with such trivial issues, but I am a little lost here. Any help is appreciated.
sudo -H curl https://raw.github.com/aldeed/deploymeteor/master/install | sh
curl isn't downloading the install script for me (0 bytes), I manually downloaded it and ran it fine
I haven't quite gotten deploymeteor to do it's thing yet. In trying to make sure everything is up to date, I ran deploymeteor prepserver, and got the following--The server is missing some shared object, but is this my config error, or a bug? This is the instance type: amzn-ami-0.9.7-beta.x86_64-ebs (ami-0af30663)
I'm locally running OS X 10.9.1.
Preparing server...
Pseudo-terminal will not be allocated because stdin is not a terminal.
Installing prerequisites...
Installing Node...
Installing or updating Forever...
Installing or updating Meteor...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4223 0 4223 0 0 21735 0 --:--:-- --:--:-- --:--:-- 60328
module.js:356
Module._extensions[extension](this, filename);
Installing or updating Meteorite...
Installing or updating http-proxy...
Installing PhantomJS...
^
Error: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/ec2-user/.meteor/tools/09b63f1ed5/lib/node_modules/fibers/bin/linux-x64-v8-3.14/fibers.node)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/ec2-user/.meteor/tools/09b63f1ed5/lib/node_modules/fibers/fibers.js:17:18)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
Copying nodeproxy.js to the server...
Done!
Script fails for the following reason
Pseudo-terminal will not be allocated because stdin is not a terminal.
Any ideas?
I've managed to get meteor apps up and running, but so far no luck with apps using meteorite. Are meteorite apps supported at all?
If they are I will look more closely at what may cause my errors and add a more descriptive question.
Thanks!
Any plans to support other hosts in the futur? :)
After prepping and deploying with commands (all successful seemingly) I ran the git push master command which returned this error:
remote: /home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/dev_bundle/lib/node_modules/fibers/future.js:206
remote: throw(ex);
remote: ^
remote: Error: EACCES, open '/home/ubuntu/.meteorsession'
remote: at Object.Future.wait (/home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/dev_bundle/lib/node_modules/fibers/future.js:326:15)
remote: at Object.wrapper [as readFile] (/home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/tools/files.js:1124:24)
remote: at readSessionData (/home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/tools/auth.js:134:27)
remote: at Object.exports.getSessionId (/home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/tools/auth.js:1027:32)
remote: at /home/ubuntu/.meteor/packages/meteor-tool/.1.0.41.yumiah++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/tools/stats.js:66:23
remote: - - - - -
remote: Meteor bundle command failed!
Some further info from earlier in the logs:
remote: Copying updated project files on the EC2 server...
remote: Creating node bundle on the EC2 server...
remote: /usr/bin/env: node: No such file or directory
remote: Installing and using correct NodeJS version...
remote: hooks/post-receive: 31: hooks/post-receive: nvm: not found
remote: Bundling...
remote: This command has been deprecated in favor of 'meteor build', which allows you
remote: to build for multiple platforms and outputs a directory instead of a single
remote: tarball. See 'meteor help build'for more information.
After running prepserver and during setup of application we see that /usr/bin/env: node: No such file or directory. When we look in env node is pointing to ~/.nvm/v0.10.26/bin/node which does not exist, nvm does not exist. We are running on an EC2 linix server.
Please give us an approach to resolve.
Rick
Thank you for updating the deployment script to support settings files and the new meteor versions >=6.5.0.
When I run
cd ~/path/to/my/repo
deploymeteor development
I get the following after some successful text inputs:
...
Enter the SMTP URL for e-mail sending by this app.
Format: smtp://<username>:<password>@<ip or hostname>:<port>
Default (press ENTER):
E-mail URL:
/usr/local/bin/deploymeteor: line 345: syntax error: unexpected end of file
However, I cannot find any syntax error in the deploymeteor script.
Do you have any clue what important part I am missing here? :)
Any help would be greatly appreciated!
Cheers,
Mike
How do I make sure HTTP (port 80) is enabled ? And if not, I do I enable it ?
Hi,
I followed the steps for the setup. See below
I looks like after the first push node is not available anymore
On the server
$ /usr/bin/node --version
-bash: /usr/bin/node: No such file or directory
Setup steps on the client:
prepserver
Pseudo-terminal will not be allocated because stdin is not a terminal.
Installing prerequisites...
Installing Node and NPM...
Installing or updating NVM...
Installing or updating Forever...
Installing or updating Meteor...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Downloading Meteor distribution
100 4223 0 4223 0 0 5947 0 --:--:-- --:--:-- --:--:-- 5956
######################################################################## 100.0%
Meteor 0.8.1.2 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.
This may prompt for your password.
To get started fast:
$ meteor create ~/my_cool_app
$ cd ~/my_cool_app
$ meteor
Or see the docs at:
docs.meteor.com
Installing or updating Meteorite...
Installing or updating http-proxy...
./node_modules/.bin not found in PATH. Adding it to PATH.
./node_modules/.bin not found in ~/.bashrc. Adding it in ~/.bashrc.
Copying nodeproxy.js to the server...
Done!
Then I called
deploymeteor test
Output:
Setting up git deployment for the test environment of aws-sample
Pseudo-terminal will not be allocated because stdin is not a terminal.
Creating directories...
Setting up the bare git repository on the EC2 server...
Updating hostname mapping for nodeproxy...
Starting or restarting nodeproxy...
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: /home/ec2-user/nodeproxy/nodeproxy.js
Creating the post-receive script and sending it to the EC2 server...
Creating the restart script and sending it to the EC2 server...
usage: chmod [-fhv] [-R [-H | -L | -P]] [-a | +a | =a [i][# [ n]]] mode|entry file ...
chmod [-fhv] [-R [-H | -L | -P]] [-E | -C | -N | -i | -I] file ...
Pseudo-terminal will not be allocated because stdin is not a terminal.
Defining this environment as a local git remote...
Done! Enter the following command now and whenever you have committed changes you want to deploy to the test environment:
After that I pushed to test
$ git push test master
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (14/14), 1.56 KiB | 0 bytes/s, done.
Total 14 (delta 2), reused 0 (delta 0)
remote: Copying updated project files on the EC2 server...
remote: Creating node bundle on the EC2 server...
remote:
remote: Done installing smart packages
remote: Extracting node bundle on the EC2 server...
remote: Reinstalling fibers in the node bundle on the EC2 server...
remote: Installing and using correct NodeJS version...
remote: Starting or restarting the test environment of aws-sample on the EC2 server...
Afterwards the application is not running.
Did I miss something?
Thanks in advance and for creating deploymeteor :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.