카테고리 없음

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