카테고리 없음
Ubuntu 22.04 서버에 django 프로젝트 배포
Jack Moon
2024. 3. 19. 10:07
Ubuntu 22.04 설정 및 apache2, mysql 설치는
https://moon0sool.tistory.com/270 참조하세요.
Step 1: mod_wsgi 설치
mod_wsgi는 Python 기반의 웹 어플리케이션를 Apache 웹서버 위에서 가동할 수 있도록 연결해주는 역할을 하는 Apache 모듈이다.
# apt install libapache2-mod-wsgi-py3
Step 2: libmysqlclient-dev 설치
mysqlclient는 mysql과 SQLAlchemy(Python ORM)를 연결해주는 역할을 하며 libmysqlclient-dev가 먼저 설치 되어야 설치할 수 있다. 먼저 libmysqlclient-dev 를 설치하고 mysqlclient는 가상환경 설정 후 설치 한다.
# apt install libmysqlclient-dev
Step 3: 가상환경 install
# apt install python3-venv python3-pip
# pip 설치되어 있지 않다면 pip도 설치
# apt install python3-pip
Step 4: 프로젝트 폴더 생성, 가상환경 만들기, Django 설치
프로젝트폴더: /home/django_project
사용자계정: elastic
가상환경이름: my_env
/home# mkdir django_project
/home# chown elastic.elastic django_project/
/home# su - elastic
/home$ cd django_project/
/home/django_project$ python3 -m venv my_env
/home/django_project$ source my_env/bin/activate
(my_env) /home/django_project$ pip install django
Step 5: 파일업로드
개발환경에서 만들어 놓은 파일들을 프로젝트 폴더에 업로드 한다.
ll /home/django_project
manage.py
config
templates
static
media
Step 6: Settings.py 수정
ALLOWED_HOSTS = ['***.**.***.170', '192.168.0.***']
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "DB명",
"USER": "사용자명",
"PASSWORD": "패스워드",
"HOST": "호스트주소",
"PORT": "3306",
}
}
Step 7: mysqlclient 설치
$ pip install mysqlclient
mysqlclient 설치가 안되면 에러메시지를 잘 살피고 아래 것들 설치한다.
sudo apt install libmysqlclient-dev gcc python3-dev
pip install --upgrade setuptools wheel
sudo apt install pkg-config
Step 8: migration
$ python3 manage.py makemigrations
$ python3 manage.py migrate
Step 9: 테스트서버로 테스트
$ python3 manage.py runserver 192.168.0.16:8000
# 방화벽오픈
$ sudo ufw allow 8000
Step 10: 아파치 conf 파일 설정
$ sudo nano /etc/apache2/sites-available/django.conf
<VirtualHost *:80>
ServerAdmin jack.moon@********
ServerName 192.168.0.16
ServerAlias ***.**.***.170
DocumentRoot /home/django_project/
ErrorLog ${APACHE_LOG_DIR}/django_project_error.log
CustomLog ${APACHE_LOG_DIR}/django_project_access.log combined
Alias /static /home/django_project/static
<Directory /home/django_project/static>
Require all granted
</Directory>
Alias /media /home/django_project/media
<Directory /home/django_project/media>
Require all granted
</Directory>
<Directory /home/django_project/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess django_app python-path=/home/django_project python-home=/home/django_project/my_env
WSGIProcessGroup django_app
WSGIScriptAlias / /home/django_project/config/wsgi.py
</VirtualHost>
Step 11: 해당 conf 파일 활성화, 아파치 재실행
$ sudo a2ensite django.conf
$ sudo systemctl restart apache2