νλμ EC2 Instanceμ λ κ°μ Server λ₯Ό μ¬λ¦¬λ κ°λ¨ν λ°©μ
80
λ² ν¬νΈ - Vue.js frontend serve
8000
λ² ν¬νΈ - Django backend serve
1. EC2 instance λ§λ€κΈ°
μνλ Amazon Machine Image (AMI) μ ννκΈ°
λλ Ubuntu 16.04
λ‘ νλ€
2. PEM key λ§λ€κΈ°
κΈ°μ‘΄μ μμ±ν PEM key
κ° μλ€λ©΄, Instance μμ± ν PEM keyλ₯Ό μμ±ν μ§ λ¬Όμ΄λ³΄λλ° κ·Έ λ μμ±νλ©΄ λλ€
PEM Key
λ μμ ν κ³³μ 보κ΄ν΄μΌ νλ€!
νλΌμ΄λΉ ν€λ₯Ό μμ ν μ¬λμ λꡬλ instanceμ μ°κ²°ν μ μμΌλ―λ‘ λ³΄μλ μμΉμ νλΌμ΄λΉ ν€λ₯Ό μ μ₯ν΄ λμ΄μΌ νλ€!
3. EC2μ μ μνκΈ°
3-1. PEM key λ₯Ό μ μ₯ν κ²½λ‘λ‘ μ΄λ
cd ~/[PEM Key μ μ₯ν κ²½λ‘]
3-2. μ κ·Ό κΆν λ³κ²½νκΈ°
sudo chmod 400 [PEM Key μ΄λ¦]
chmod
λ νμΌμ μ κ·Ό κΆνμ λ³κ²½νλ λͺ
λ Ήμ΄
400
μ νμΌ μμ μμ μ½κΈ° κΆν λΆμ¬
3-3. ssh
λͺ
λ ΉμΌλ‘ EC2μ μ μνκΈ°
AWS consoleμ EC2 Instance λͺ©λ‘μμ μ μνλ €λ instanceλ₯Ό μ ννκ³ μ°κ²° (Connect)
μ λλ₯΄λ©΄ μ°κ²° λ°©λ²μ΄ μ νμλ modal μ°½μ΄ λ¬λ€
κ·Έ μ€μ ssh -i
λ‘ μμνλ λͺ
λ Ήμ΄λ₯Ό 볡μ¬νλ€
PEM Keyκ° μ μ₯λμ΄ μλ κ³³μμ ν΄λΉ λͺ
λ Ήμ΄λ₯Ό μ€ννλ€
μ¬κΈ°κΉμ§ νλ©΄ Ubuntu Bashλ‘ μ μν μνκ° λλ€!
4. EC2μ λ°°ν¬μ νμν νμΌλ€μ μ€μΉνλ€
4-1. nvm μ€μΉ
sudo apt update # update νκΈ°
sudo apt install -y build-essentail libssl-dev
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
μ€μ§μ μΌλ‘ λ
Έλλ λμ€μ apt update
λ .bashrc
μμ νκ³ μ μ©νλ€μμ νλ²μ μ€μΉν μμ
4-2. python 3.7 μ€μΉ
sudo apt install software-properties-common # μ°λΆν¬ 16.04 μμ add-apt-repository λͺ
λ Ήμ΄λ₯Ό μ¬μ©νκΈ° μν΄ μ€μΉ
sudo add-apt-repository ppa:deadsnakes/ppa # νμ΄μ¬ 3.7μ μ€μΉνκΈ° μν ν¨ν€μ§ μ μ₯μ μ
λ ₯
sudo apt update
sudo apt upgrade # update & upgrade νκΈ°
sudo apt install -y python3.7 # -y μλΆμ΄λ©΄ μμ€ λ
Έ λ¬Όμ΄λ΄
python3.7 --version # μμ§ python --version νλ©΄ μ λμ΄
sudo apt-get install python3-pip # pip μλ€κ³ ν΄μ μ€μΉ!!!!!
python3.7 -m pip install pip # python3.7 μ¬μ©νλ pip μ€μΉ
pip3.7 --version # pip3.7 λ‘ μ
λ ₯νλ €λ λΆνΈ
4-3. .bashrc
μ alias μ€μ νκΈ°
$ sudo vim ~/.bashrc # λͺ¨λ vim λͺ
λ Ήμ΄λ sudo λ₯Ό μ¬μ©νλ€
# λλ¬Έμ G (shift + g) λλ₯΄λ©΄ 맨 μλλ‘ μ΄λ
# κ·Έλ¦¬κ³ i λλ₯΄λ©΄ Insert modeλ‘ μ νλλ€
μλμ alias
μ
λ ₯νκΈ°
alias python="python3.7"
alias pip="pip3.7"
esc
+ :wq
+ enter
λ‘ μ μ₯νκ³ λμ€κΈ°
source
λͺ
λ Ήμ΄λ‘ μμ λ κ° λ°λ‘ μ μ©νκΈ°
4-4. node & npm μ€μΉ
nvm install 12.15.0
node -v
npm -v
4-5. nginx μ€μΉ
sudo apt install -y nginx
nginx
λ‘ λΉλλ νμΌ μλΉν μμ
5. 보μκ·Έλ£Ή μ€μ νκΈ°
: AWS consoleμμ EC2 instanceμ λν 보μκ·Έλ£Ήμ μ€μ νλ€
5-2. 보μκ·Έλ£Ή λ§λ€κΈ°
80
ν¬νΈμ 8000
ν¬νΈλ₯Ό νμ©ν 보μκ·Έλ£Ήμ΄κΈ° λλ¬Έμ
보μκ·Έλ£Ή μ΄λ¦μ 80-8000 μΌλ‘ μ€μ νκ³ ,
μ€λͺ
μλ "Allow 80-8000" μ΄λΌκ³ μ μλ€
5-2. Inbound κ·μΉ μ€μ
80
ν¬νΈμ 8000
ν¬νΈμ λν Inbound κ·μΉμ μΆκ°νλ€
6. nginx μν νμΈ
sudo service nginx status
Active: active (running)
μ΄λΌκ³ λ¨λ κ² νμΈνκΈ°
AWS Consoleμ Instance λͺ©λ‘μμ instance λλ₯΄λ©΄ λμ€λ μ£Όμλ₯Ό 볡μ¬ν΄μ Browserμμ μ€νμν€λ©΄ μλμ κ°μ νλ©΄μ΄ λμμΌ ν¨
7. λ°°ν¬ν νλ‘μ νΈ Clone νκΈ°
7-1. clone
git clone [νλ‘μ νΈ web URL]
7-2 Frontend μ νμν ν¨ν€μ§ μ€μΉ & build
cd frontend
npm install
npm run build
8. μλΉ μ€λΉνκΈ°
8-1. nginx.conf
μμ
cd /etc/nginx
ls # nginx.conf κ° μλ κ²μ νμΈ
sudo vi nginx.conf
include /etc/nginx/sites-enabled/*.conf;
μ enabledλ₯Ό availableλ‘ μμ
μμ ν: include /etc/nginx/sites-available/*.conf;
μ μ₯ ν λΉ μ Έλμ€κΈ°
8-2. sites-available
μμ
cd sites-available
ls # defaultκ° μλ κ²μ νμΈ
sudo vi default
μ£Όμμ μ μΈνκ³ μ λΆ μ§μ΄ ν, μλμ λ΄μ©μ μΆκ°νκΈ°
server {
listen 80;
location / {
root /home/ubuntu/[νλ‘μ νΈλͺ
]/frontend/build;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
:wq
λ‘ μ μ₯ ν λΉ μ Έλκ°κΈ°
8-3. nginx μ¬ μμνκΈ°
sudo service nginx restart
μ¬μ΄νΈ URLλ‘ μ μνλ©΄ Frontend μλΉ λλ κ² νμΈ κ°λ₯
9. MySQL μ€μ
9-1. μ€μΉ
sudo apt update && sudo apt upgrade # apt ν¨ν€μ§ μΈμ€ν¨λ¬ κ°±μ
sudo apt install mysql-server
sudo apt install libmysqlclient-dev
sudo apt install python3.7-dev
9-2. root κ³μ μ€μ
sudo mysql_secure_installation
μ
λ ₯ ν λΉλ°λ²νΈ μ€μ νκΈ°
9-3. root κ³μ μΌλ‘ μ μ ν΄λ³΄κΈ°
sudo mysql -u root -p
μ
λ ₯ ν μ€μ ν λΉλ°λ²νΈ μ
λ ₯
9-4. database λ§λ€κΈ°
mysql> create database [databaseλͺ
];
10 . .env
file μ€μ
νμν λ΄μ© μ
λ ₯ν λΉ μ Έλκ°κΈ°
11. backend κ°μ νκ²½ μ€μ
11-1. pipenv μ€μΉ
cd ~/[νλ‘μ νΈλͺ
]/backend
pip install pipenv --three
11-2. κ°μνκ²½ μ€ννκΈ°
11-3. νμν ν¨ν€μ§ μ€μΉνκΈ°
pipenv install -r requirements.txt
pipenv install mysql-client
12. gunicorn μ€μ νκΈ°
12-1. gunicorn μ€μΉ
pipenv install gunicorn
12-2. gunicorn
web server gateway interface
gunicorn django_server.wsgi:application -b 0.0.0.0:8000 --daemon
--daemon
λΆμ΄λ©΄ Backgroundμμ μ€νλ¨
12-3. μ μ€νλκ³ μλμ§ νμΈ
12-4. nginx μ¬μ€ν
sudo service nginx restart
λ°°ν¬ λμ~
+
μ¬λ°°ν¬
νμ¬ λ°©μμΌλ‘λ μ¬λ°°ν¬ μ μ λ§μ λ§ λΉν¨μ¨μ μ΄λ€! μλν ν μμ !!!! μ΄λ κ² κ·Έλ₯ λͺ»λ¬!!!!!!!!
backend μμ μ
lsof -i TCP:8000
sudo kill -9 pidλ²νΈ
git pull origin master
cd backend
pipenv shell
gunicorn django_server.wsgi:application -b 0.0.0.0:8000 --daemon
sudo service nginx restart
frontend μμ μ
git pull origin master
cd frontend
npm run build
sudo service nginx restart