๊ฐœ๋ฐœํ•œ vue-django ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ค์ œ ์šด์˜์„œ๋ฒ„์— ๋„์šฐ๋Š” ๊ณผ์ •์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค! 

 

๊ฐœ๋ฐœ์„œ๋ฒ„์—์„œ ๊ตฌ์ถ•ํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ด ์šด์˜์„œ๋ฒ„์—์„œ ์ ์šฉํ•  ๋•Œ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์žˆ์—ˆ๊ณ , 

์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์žŠ์–ด ๋ฒ„๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค ์Šคํƒ€ํŠธ..!

 

๐Ÿพ ๋‹จ๊ณ„

  1. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  2. ๋ณด์•ˆ๊ทœ์น™ ์ƒ์„ฑ
  3. DB ACL ํ—ˆ์šฉ ์š”์ฒญ
  4. ๋„์ปค ์„ค์น˜ - v23.0.3
  5. Jenkins ๋„์ปค ์„œ๋ฒ„ ๋„์šฐ๊ธฐ - v2.399
    1. Jenkins ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
    2. Jenkins ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— DooD ๊ตฌ์„ฑํ•˜๊ธฐ
  6. ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  7. ์›น ์„œ๋ฒ„ ๋„์šฐ๊ธฐ
    1. ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์›น ์„œ๋ฒ„ ๋„์šฐ๊ธฐ

 

1. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

๊ฐœ๋ฐœ์„œ๋ฒ„

ssh -i {pemํ‚ค} ubuntu@{ip}

  • OS : Ubuntu Server 20.04 LTS
  • ํƒ€์ž… : r2.c4m16 (4vCPU, 16GB)
  • ์Šคํ† ๋ฆฌ์ง€ : 300GB

์šด์˜์„œ๋ฒ„

  • OS : Ubuntu Server 20.04 LTS
  1. ssh {id}@{domain}
  2. (kinit)
  3. ssh {user}@{host}

๐Ÿ˜ƒ ์ปค๋ฒ„๋กœ์Šค์„ ์ด์šฉํ•ด ํ‹ฐ์ผ“์ด ๋ฐœ๊ธ‰๋œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์•ˆ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! 

 

2. ๋ณด์•ˆ๊ทœ์น™ ์ƒ์„ฑ

๋ณด์•ˆ ๊ทธ๋ฃน์—์„œ ํ•„์š”ํ•œ ํฌํŠธ ์—ด์–ด์ฃผ๊ธฐ

์  ํ‚จ์Šค ๊ธฐ๋ณธ ํฌํŠธ๋Š” 8080์ด์ง€๋งŒ ์žฅ๊ณ ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒน์น˜์ง€ ์•Š๊ฒŒ 7070์œผ๋กœ ๋ณ€๊ฒฝ!

  • 7070 : ์  ํ‚จ์Šค
  • 8080 : ์žฅ๊ณ 
  • 8000 : ๋ทฐ

 

3. DB ACL ํ—ˆ์šฉ

 

 

4. Docker ์„ค์น˜

  • Docker Latest : v23.0.3

๊ฐœ๋ฐœ์„œ๋ฒ„

# dependency library download  
sudo apt-get update  
sudo apt-get install -y curl apt-transport-https ca-certificates gnupg-agent software-properties-common  
  
# Docker ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์ถ”๊ฐ€  
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg  
  
# Docker Repository ๋“ฑ๋ก  
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
  
# Docker ์„ค์น˜  
sudo apt-cache policy docker-ce  
sudo apt-get update  
sudo apt-get install -y docker-ce docker-ce-cli containerd.io  
  
# docker ๊ทธ๋ฃน์— ์‚ฌ์šฉ์ž ์ถ”๊ฐ€  
sudo usermod -aG docker $USER  
  
# ๊ทธ๋ฃน ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™œ์„ฑํ™”  
sudo newgrp docker

 

์šด์˜์„œ๋ฒ„

# sudo ๊ถŒํ•œ์„ ์œ„ํ•ด ์•„๋ž˜ ๊ณ„์ •์œผ๋กœ ์ ‘์†
ssh {user}@{host}

# dependency library download  
sudo apt-get update  
sudo apt-get install -y curl apt-transport-https ca-certificates gnupg-agent software-properties-common  
  
# Docker ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์ถ”๊ฐ€  
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg  
  
# Docker Repository ๋“ฑ๋ก  
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
  
# ์˜์กด์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ
curl -O http://archive.ubuntu.com/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.5.1-1ubuntu1~20.04.2_amd64.deb
sudo dpkg -i libseccomp2_2.5.1-1ubuntu1~20.04.2_amd64.deb

# Docker ์„ค์น˜
sudo apt-cache policy docker-ce  
sudo apt-get update  
sudo apt-get install -y docker-ce docker-ce-cli containerd.io  
  
# docker ๊ทธ๋ฃน์— ์‚ฌ์šฉ์ž ์ถ”๊ฐ€  
sudo usermod -aG docker $USER

 

5. Jenkins ์„œ๋ฒ„ ๋„์šฐ๊ธฐ

Jenkins ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰

  • Jenkins ์ œ๊ณต ๊ณต์‹ ๋„์ปค ์ด๋ฏธ์ง€ ์‚ฌ์šฉ (Jenkins 2.399)
  • Jenkins ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ --privileged ์˜ต์…˜ ํ•„์š”
    • Variable Parsing ์‹œ PostgreSQL๋Š” yum์œผ๋กœ ์„ค์น˜๋˜๋ฏ€๋กœ systemctl ๋ช…๋ น์–ด ์‚ฌ์šฉ ํ•„์š”
  • ํ”„๋กœ์ ํŠธ ๋‚ด ํด๋” ์ƒ์„ฑ ํ›„ ์‹คํ–‰ํ•  ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ชจ์œผ๊ธฐ (/home/ubuntu/variable-comparison/script/<DBMS๋ช…>)
  • ์ธ์Šคํ„ด์Šค์™€ ์ปจํ…Œ์ด๋„ˆ ํด๋” ์œ„์น˜ ๋งˆ์šดํŠธํ•˜๊ธฐ (/root/script)
sudo docker run --privileged -d --name jenkins -p 7070:8080 -v /home1/{user}/variable-comparison/script:/root/script -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins

์  ํ‚จ์Šค ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ

docker exec -i jenkins bash <<< "cat /var/jenkins_home/secrets/initialAdminPassword"

 

Jenkins ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— DooD ๊ตฌ์„ฑํ•˜๊ธฐ

# jenkins ์ปจํ…Œ์ด๋„ˆ์— ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์ ‘์†
docker exec -it -u root jenkins bash

# docker ๊ทธ๋ฃน ์ƒ์„ฑ
groupadd docker
# docker ๊ทธ๋ฃน์— jenkins ์‚ฌ์šฉ์ž ์ถ”๊ฐ€
usermod -G docker -a jenkins
# ํ˜ธ์ŠคํŠธ์˜ docker ๊ทธ๋ฃน ID(998)๋กœ ์ง€์ •๋œ ๊ทธ๋ฃน๋ช…์„ docker๋กœ ๋ณ€๊ฒฝ
# docker ๊ทธ๋ฃน ID๋Š” /etc/group ํŒŒ์ผ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
groupmod -g 499 docker
# ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ˜ธ์ŠคํŠธ ์‚ฌ์šฉ์ž ์•„์ด๋””(500)๋กœ ๋ณ€๊ฒฝ
usermod -u 500 jenkins

apt-get update
apt-get -y install lsb-release apt-transport-https ca-certificates curl gnupg2 software-properties-common
apt-get -y upgrade apt-transport-https

# Docker ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์ถ”๊ฐ€
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey
apt-key add /tmp/dkey

# Docker Repository ๋“ฑ๋ก
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"

# Docker ์„ค์น˜
apt-get update
apt-get -y install docker-ce docker-ce-cli containerd.io

 

6. ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

1. ํ”„๋กœ์ ํŠธ Git clone

  • ์•ˆ๋  ๊ฒฝ์šฐ, ์‚ฌ๋‚ด ๊ฒŒ์ดํŠธ์›จ์ด ์‹ ์ฒญ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
git clone {repository url}

 

2. pyenv ์„ค์น˜ (python 3.9.10)

sudo apt update
sudo apt install -y git sqlite3 build-essential libedit-dev make

# pyenv ์„ค์น˜๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
# pyenv ๋‹ค์šด๋กœ๋“œ
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

# ~/.bashrc์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€
cat >> ~/.bashrc << 'EOF'
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
EOF

# ~/.bashrc ์ ์šฉ
source ~/.bashrc

# pyenv๋กœ python 3.9.10 ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ
#sudo apt install -y lzma
pyenv install 3.9.10
# py39๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
pyenv virtualenv 3.9.10 py39
# py39 ํ™œ์„ฑํ™”
pyenv activate py39

 

3. requirements.txt ์„ค์น˜

pip install -r requirements.txt

# setuptools๊ฐ€ ๋จผ์ € ์„ค์น˜๋˜์–ด์•ผ mysqlclient ์„ค์น˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋จ
# ์„ค์น˜ ์ˆœ์„œ๋„ ์ค‘์š”!

 

4. secret key ๋ฐœ๊ธ‰

 

5. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€

  • Redis
sudo apt-get install -y libssl-dev default-mysql-server default-mysql-client default-libmysqlclient-dev
sudo apt-get install -y python3-pip
pip3 install requests bs4 sqlalchemy pymysql mysqlclient pandas redis
  • PostgreSQL
apt-get update && apt-get -y install sudo
sudo apt-get install -y postgresql-client
sudo apt-get install -y postgresql-client-common
sudo apt install pip 
sudo apt install default-libmysqlclient-dev
pip install sqlalchemy requests bs4 psycopg2-binary mysqlclient numpy pandas
  • ์„ค์น˜๊ฐ€ ์ž˜ ์•ˆ ๋  ๊ฒฝ์šฐ
# ModuleNotFoundError: No module named '_ctypes' ์—๋Ÿฌ
sudo apt-get install libffi-dev
# ๊ฐ€์ƒํ™˜๊ฒฝ ํŒŒ์ด์ฌ ์ œ๊ฑฐ
pyenv uninstall 3.9.10
# ๊ฐ€์ƒํ™˜๊ฒฝ ํŒŒ์ด์ฌ ์žฌ์„ค์น˜
pyenv install 3.9.10
# py39๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
pyenv virtualenv 3.9.10 py39
# py39 ํ™œ์„ฑํ™”
pyenv activate py39

 

6. npm, vue, nvm ์„ค์น˜

node ๋ฒ„์ „์„ ์ž˜ ๋งž์ถฐ ์ฃผ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค! ์•ˆ ๋งž์œผ๋ฉด ๋„์›Œ์ง€์ง€๊ฐ€ ์•Š์Œ..

# npm ์„ค์น˜
sudo apt install npm

# vue-cli ์„ค์น˜
sudo npm install -g @vue/cli
vue --version #@vue/cli 5.0.8

# nvm ์„ค์น˜
sudo apt-get install build-essential libssl-dev
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc

# ์›ํ•˜๋Š” ๋ฒ„์ „ ์„ค์น˜
nvm install 16.14.2

# ์‹คํ–‰
# nvm use default 16.14.2

# ๋ฒ„์ „ ํ™•์ธ
node -v  # v16.14.2
npm -v # 8.5.0

 

7. vue.config.js ๋ณ€๊ฒฝ

publicPath: process.env.NODE_ENV === 'production' ? '/static/dist/' : 'http://{ip}:{port}',

.public('http://{ip}:{port}')

 

7. ์„œ๋ฒ„ ๋„์šฐ๊ธฐ

* ์ฃผ์˜

๋กœ์ปฌ์„ ๋„์šด ์ƒํƒœ์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ๋กœ์ปฌ ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ์„ ๋ˆ ์ƒํƒœ์—์„œ ์ง„ํ–‰ํ•ด์•ผ ์ง„์ •ํ•œ ์„œ๋ฒ„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!

 

์šด์˜์„œ๋ฒ„

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋„์šฐ๊ธฐ!

  • nohup node ./node_modules/@vue/cli-service/bin/vue-cli-service serve --port 18080 &
  • nohup python manage.py runserver {ip}:{port} --settings=main.config.settings.debug
  • 15361๋ฒˆ ํฌํŠธ, 18080๋ฒˆ ํฌํŠธ ์‚ฌ์šฉ

๋“œ๋””์–ด ๋ฉ”์ธ ํ™”๋ฉด์ด ์˜ˆ์˜๊ฒŒ ๋œฌ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค~!!

 

์ด๋ ‡๊ฒŒ ์ •์‹์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๋„์›Œ๋ณธ ๊ฒƒ์€ ์ฒ˜์Œ์ด์–ด์„œ ํ•œ ๋‹จ๊ณ„๋ฅผ ์•Œ์•„ ๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋„ˆ๋ฌด ์žฌ๋ฐŒ๊ณ  ์ด๋Ÿฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ์‚ฌํ–ˆ๋‹ค!

๊ด€๋ จ ๋‚ด์šฉ์€ ๋” ๋ฐ˜๋ณตํ•˜๊ณ , ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์€ ์Šคํ„ฐ๋””ํ•ด์„œ ์ž˜ ์ •๋ฆฌํ•ด๋‘์–ด์•ผ๊ฒ ๋‹ค :)

+ Recent posts