서버 구성 및 배포
포트 및 보안 그룹
서버 포트는 특정 애플리케이션과의 통신을 위한 엔드포인트 역할을 합니다.
IP 주소 --> 컴퓨터
포트 --> 애플리케이션 A
포트 --> 애플리케이션 B
포트 --> 애플리케이션 C
주요 포트:
- 22: SSH
- 3306: MySQL
- 6379: Redis
- 80: HTTP 기본 포트
- 443: HTTPS
원격 서버 접속
XShell 또는 다른 SSH 클라이언트를 사용하여 서버에 접속합니다.
코드 동기화 (Git)
git init
git remote add origin https://github.com/xxx.git
git add .
git commit -m "프로젝트 초기화"
git branch -M main
git push -u origin main
Python 3.9.5 설치
1. GCC 설치:
yum install gcc -y
2. Python 의존성 패키지 설치:
yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel -y
yum install ncurses ncurses-devel -y
yum install readline readline-devel -y
yum install openssl openssl-devel -y
yum install xz lzma xz-devel -y
yum install sqlite sqlite-devel -y
yum install gdbm gdbm-devel -y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y
3. Python 소스 코드 다운로드 및 설치:
yum install wget -y
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar -xvf Python-3.9.5.tgz
cd Python-3.9.5
./configure
make all
make install
4. 설치 확인 및 pip 설정:
python3 --version
pip3.9 config set global.index-url https://pypi.douban.com/simple/
가상 환경 설정
1. virtualenv 설치:
pip3.9 install virtualenv
2. 가상 환경 생성:
mkdir /envs
virtualenv /envs/nb --python=python3.9
3. 패키지 설치:
source /envs/nb/bin/activate
pip install flask pymysql dbutils
# 또는 requirements.txt 사용
pip install -r requirements.txt
uWSGI 설정
1. uWSGI 설치:
source /envs/nb/bin/activate
pip install uwsgi
2. 구성 파일 생성 (nb_uwsgi.ini):
[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/www/day28/
wsgi-file = app.py
callable = app
processes = 1
virtualenv = /envs/nb/
3. 실행 및 관리:
uwsgi --ini nb_uwsgi.ini
# 백그라운드 실행: uwsgi --ini nb_uwsgi.ini &
# 프로세스 확인: ps -ef|grep nb_uwsgi
# 종료: kill -9 [PID]
Nginx 구성
1. Nginx 설치:
yum install nginx -y
2. 구성 파일 수정 (/etc/nginx/nginx.conf):
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream flask {
server 127.0.0.1:8001;
}
server {
listen 80;
location /static {
alias /root/data/www/day28/static;
}
location / {
uwsgi_pass flask;
include uwsgi_params;
}
}
}
3. 서비스 관리:
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
Shell 스크립트
재시작 스크립트 (reboot.sh):
#!/bin/bash
echo "-------------------- uWSGI 프로세스 --------------------"
ps -ef | grep nb_uwsgi.ini | grep -v grep
sleep 0.5
echo "-------------------- 종료 진행 --------------------"
ps -ef | grep nb_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9
sleep 0.5
/envs/nb/bin/uwsgi --ini nb_uwsgi.ini &
echo "-------------------- 시작 완료 --------------------"
ps -ef | grep nb_uwsgi.ini | grep -v grep
실행 권한 부여:
chmod 755 reboot.sh
./reboot.sh
MySQL 데이터베이스 설정
1. MariaDB 설치:
yum install mariadb-server mariadb -y
2. 서비스 관리:
systemctl start mariadb
systemctl enable mariadb
3. 데이터베이스 및 사용자 설정:
mysql -u root -p
CREATE DATABASE day28db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 's5'@'%' IDENTIFIED BY 'qwe123..';
GRANT ALL PRIVILEGES ON day28db.* TO 's5'@'%';
FLUSH PRIVILEGES;
Redis 설치 및 구성
1. Redis 설치:
yum install redis -y
2. 구성 파일 수정 (/etc/redis.conf):
bind 0.0.0.0
requirepass qwe123..
3. 서비스 관리:
systemctl start redis
systemctl enable redis
4. Python Redis 클라이언트 설치:
pip install redis