23C. Git์ผ๋ก Elastic Beanstalk Node.js ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌํ๊ธฐ
23C. Git์ผ๋ก Elastic Beanstalk Node.js ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌํ๊ธฐ ๊ด๋ จ
๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ธ Git์ผ๋ก Elastic Beanstalk Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ Elastic Beanstalk ํ๊ฒฝ์ ๋ฐฐํฌํด๋ณด๊ฒ ์ต๋๋ค.
Git์ ์ค์นํ์ง ์์๋ค๋ฉด Git์ ์ค์นํฉ๋๋ค. Windows์ Mac OS X์์๋ ์๋ ์ฃผ์์์ ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํ๋ฉด ๋ฉ๋๋ค. ์ค์น ๋ฐฉ๋ฒ์ ํน๋ณํ ๊ฒ์ด ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค.
- Windows: http://msysgit.github.com
- Mac OS X: http://sourceforge.net/projects/git-osx-installer
sudo yum install git
sudo apt-get install git
์ด์ Elastic Beanstalk ๋ช
๋ นํ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค. ๊ตฌ๊ธ์์ AWS Elastic Beanstalk Command Line Tool์ ๊ฒ์ํ๊ฑฐ๋ https://aws.amazon.com/code/6752709412171743์ ์ ์ํ์ฌ Download ๋ฒํผ์ ํด๋ฆญํ๋ฉด AWS-ElasticBeanstalk-CLI-2.6.3.zip
๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค(์ด ์ฑ
์์ ์ค๋ช
ํ ๋ฒ์ ๋ณด๋ค ๋์ ์ ์์ต๋๋ค).
.AWS-ElasticBeanstalk-CLI-2.6.3.zip
ํ์ผ์ ์ฌ์ฉ์ ํ ๋๋ ํฐ๋ฆฌ(์: /home/pyrasis
)์ ๋ฐ๊ณ ์์ถ์ ํด์ ํฉ๋๋ค(Windows์ Mac OS X์์๋ ํ์๊ธฐ์ Finder์์ zip ํ์ผ ์์ถ์ ํด์ ํฉ๋๋ค).
wget https://s3.amazonaws.com/elasticbeanstalk/cli/AWS-ElasticBeanstalk-CLI-2.6.3.zip
unzip AWS-ElasticBeanstalk-CLI-2.6.3.zip
unzip ์ค์น
unzip ๋ช ๋ น์ด ์๋ค๋ฉด ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ ์ค์นํฉ๋๋ค.
# CentOS
sudo yum install unzip
# Ubuntu
sudo apt-get install unzip
Elastic Beanstalk ๋ช ๋ นํ ๋๊ตฌ๋ฅผ ์คํํ๋ ค๋ฉด Python์ด ํ์ํฉ๋๋ค. Windows์๋ Python์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์์ง ์์ผ๋ฏ๋ก http://www.python.org/downloads์์ Python 2.7.x ๋ฒ์ ์ ๋ฐ๊ณ ์ค์นํฉ๋๋ค. ์ค์น ๋ฐฉ๋ฒ์ ํน๋ณํ ๊ฒ์ด ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค. Linux์ Mac OS X์๋ Python์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์์ต๋๋ค.
Linux์์ Elastic Beanstalk ๋ช ๋ นํ ๋๊ตฌ์ Python ๋ฒ์
Elastic Beanstalk ๋ช ๋ นํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Python 2.7 ๋ฒ์ ์ด์ ํ์ํฉ๋๋ค. ์ผ๋ถ CentOS์ Amazon Linux๋ Python 2.6 ๋ฒ์ ์ด ์ค์น๋์ด ์์ต๋๋ค. Elastic Beanstalk ๋ช ๋ นํ ๋๊ตฌ๋ 2.6 ๋ฒ์ ์์๋ ์ฌ์ฉํ ์ ์์ผ๋ก 2.7 ๋ฒ์ ์ ์ค์นํฉ๋๋ค(์ด ์ฑ ์์๋ 2.7 ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค. 3.0 ๋ฒ์ ์ด์์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค).
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar vxzf Python-2.7.6.tgz
cd Python-2.7.6
./configure
sudo make; sudo make install
์ด์ Windows์์๋ Git Bash๋ฅผ ์คํํฉ๋๋ค (Git Bash์์๋ Unix/Linux ๋ฐฉ์์ ๋ช ๋ น์ ์คํํ ์ ์์ผ๋ฏ๋ก ์ง๊ธ๋ถํฐ ๋์ค๋ ๋ช ๋ น์ Mac OS X, Linux, Windows์์ ๋ชจ๋ ๋์ผํฉ๋๋ค). Mac OS X๋ ํฐ๋ฏธ๋์ ์คํํ๊ณ , Linux์์๋ ํฐ๋ฏธ๋์์ ๊ทธ๋๋ก ์งํํฉ๋๋ค.
Elastic Beanstalk ๋ช
๋ นํ ๋๊ตฌ๋ฅผ ์คํํ๋ ค๋ฉด boto/boto
๊ฐ ํ์ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํ์ฌ boto๋ฅผ ์ค์นํฉ๋๋ค.
- Windows Git Bash์์๋
sudo
๋ฅผ ์ ์ธํ๊ณpython setup.py install
๋ง ์ ๋ ฅํฉ๋๋ค. - CentOS, Amazon Linux์์ Python 2.7 ์์ค๋ฅผ ์ปดํ์ผํ์ฌ ์ค์นํ๋ค๋ฉด
sudo python2.7 setup.py install
์ ์ ๋ ฅํฉ๋๋ค.
git clone https://github.com/boto/boto.git
cd boto
sudo python setup.py install
cd ..
์ ํ๋ฆฌ์ผ์ด์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , Git ์ ์ฅ์๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
mkdir exampleapp
cd exampleapp
git init
๋ฐฉ๊ธ ์์ฑํ Git ์ ์ฅ์์ aws.push
๋ช
๋ น์ ์ค์นํฉ๋๋ค. AWSDevTools-RepositorySetup.sh
๋ Windows์ Git Bash์์ ๊ทธ๋๋ก ์ค์นํ ์ ์์ต๋๋ค.
../AWS-ElasticBeanstalk-CLI-2.6.2/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh
Git์ AWS ์ก์ธ์ค ํค์ ์ํฌ๋ฆฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค. ์ก์ธ์ค ํค์ ์ํฌ๋ฆฟ ํค๊ฐ ์๋ค๋ฉด '9์ฅ API์ ํด ์ฌ์ฉ์ ์ํ ์ก์ธ์ค ํค ์์ฑํ๊ธฐ'๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค.
- AWS Access Key: ์ก์ธ์ค ํค๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- AWS Secret Key: ์ํฌ๋ฆฟ ํค๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- AWS Region: Tokyo ๋ฆฌ์ ์ธ ap-northeast-1์ ์ ๋ ฅํฉ๋๋ค. ๋ฆฌ์ ์ฝ์นญ ๋ชฉ๋ก์ '2.1 ๋ฆฌ์ , ์ง์ญ'์ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค.
- AWS Elastic Beanstalk Application: Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ์์์ ๋ง๋ exampleapp๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- AWS Elastic Beanstalk Environment: Elastic Beanstalk ํ๊ฒฝ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ์์์ ๋ง๋ exampleapp-env๋ฅผ ์ ๋ ฅํฉ๋๋ค.
git aws.config
#
# AWS Access Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
# AWS Secret Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# AWS Region [default to us-east-1]: ap-northeast-1
# AWS Elastic Beanstalk Application: exampleapp
# AWS Elastic Beanstalk Environment: exampleapp-env
์ด์ ๊ฐ๋จํ ์น ํ์ด์ง๋ฅผ ์์ฑํ ์ฐจ๋ก์
๋๋ค. ๋ฉ๋ชจ์ฅ์ด๋ ๊ธฐํ ํ
์คํธ ํธ์ง๊ธฐ๋ฅผ ์ด๊ณ ์๋์ ๊ฐ์ด ์์ฑํ ๋ค app.js
๋ก ์ ์ฅํฉ๋๋ค.
app.js
var express = require('express')
, http = require('http')
, app = express();
app.get(['/', '/index.html'], function (req, res){
res.send('Hello Elastic Beanstalk - Git');
});
http.createServer(app).listen(process.env.PORT || 3000);
Node.js npm ํจํค์ง ์ฌ์ฉ์ ์ํด ์๋์ ๊ฐ์ด ์์ฑํ ๋ค package.json
๋ก ์ ์ฅํฉ๋๋ค.
package.json
{
"name": "hello",
"description": "Hello Elastic Beanstalk",
"version": "0.0.1",
"dependencies": {
"express": "4.4.x"
}
}
Git ์ ์ฅ์์ app.js
, package.json
ํ์ผ์ ์ปค๋ฐํฉ๋๋ค.
git add app.js
git add package.json
git commit -m "Hello Elastic Beanstalk"
์ด์ Elastic Beanstalk์ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ค๋ฅผ aws.push
๋ช
๋ น์ผ๋ก ์ฌ๋ฆฝ๋๋ค.
git aws.push
Elastic Beanstalk ํ๊ฒฝ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์๋ฃ
์ด์ฒ๋ผ Git์ผ๋ก Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.