AWS+Django 기반 웹사이트 제작 4 (Apache-Django 설치 및 연동)
- Apache 설치
- MySQL 설치
- Django 설치
- Apache Django 연동
Apache를 활용한 웹서버에 Django를 연동하여 운영
Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 "프레임워크"일 뿐이다.
Apache 설치
# ssh –i .ssh/ysy-key ubuntu@172.16.1.26
Bastion Host에서 ssh –i .ssh/ysy-key ubuntu@172.16.1.26 입력으로 Django 서버에 원격접속
# sudo passwd root
# su -
# hostnamectl set-hostname django-server
# hostnamectl
# apt update && sudo apt upgrade -y
hostname 변경 후 OS 업데이트
이 단계에서 Could-not-open-lock-file 에러가 발생, 해결
#apt install apache2 libapache2-mod-wsgi-py3
#systemctl start apache2
#systemctl enable apache2
#systemctl status apache2
apache와 mod_wsgi 모듈 설치
MySQL 설치
# apt install mysql-server libmysqlclient-dev
# systemctl start mysql
# systemctl enable mysql
# systemctl status mysql
MySQL 설치
# mysql -u root
mysql> CREATE DATABASE django_db;
mysql> CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'Pa$$word';
mysql> GRANT ALL ON django_db.* TO 'django_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT
MySQL prompt에 접속하여 데이터베이스를 만들고 사용자에게 모든 권한을 부여
Django 설치
(1) PIP 설치
우분투22.04에는 기본적으로 파이썬이 설치 되어있다
# apt install python3-venv python3-pip
# python3 -V
# pip3 --version
pip와 venv를 설치하고 버전 확인
(2) Python 가상환경 생성 및 장고 설치
# mkdir /var/www/ysy_project
# cd /var/www/ysy_project
# python3 -m venv ysy_env
# source ysy_env/bin/activate
디렉토리를 만들고 이동 후 가상 파이썬 환경을 만들어준뒤 실행
(ysy_env) # pip install django
(ysy_env) # pip install mysqlclient
가상환경 안에서 django와 mysqlclient 설치
asgiref, django, sqlparse, mysqlclient가 설치된다
(3) Django Project 생성
(ysy_env) # django-admin startproject config .
(ysy_env) # vi config/settings.py
ysy_project 디렉토리에 장고 프로젝트를 생성하고 settings.py 수정
29 ALLOWED_HOSTS = ['*']
76 DATABASES = {
77 'default': {
78 'ENGINE': 'django.db.backends.mysql',
79 'NAME': 'django_db',
80 'USER': 'django_user',
81 'PASSWORD': 'Pa$$word',
82 'HOST': '127.0.0.1',
83 'PORT' : '3306',
84 }
85 }
122 import os
123
124 STATIC_URL='/static/'
125 STATIC_ROOT=os.path.join(BASE_DIR, 'static/')
126
127 MEDIA_URL='/media/'
128 MEDIA_ROOT=os.path.join(BASE_DIR, 'media/')
ALLOWED_HOSTS, DATABASE 수정
122~128 라인 추가
(ysy_env) # ./manage.py makemigrations
(ysy_env) # ./manage.py migrate
초기 데이터베이스 스키마를 MySQL 데이터베이스로 마이그레이션
(ysy_env) # ./manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: admin@your-domain.com
Password:
Password (again):
Superuser created successfully.
관리자 계정 생성
(ysy_env) # ./manage.py collectstatic
130 static files copied to '/var/www/ysy_project/static'.
(ysy_env) # deactivate
프로젝트 정적 파일들을 static 디렉토리에 모으고 가상환경 종료
Apache Django 연동
# vi /etc/apache2/sites-available/django.conf
<VirtualHost *:80>
ServerAdmin admin@ysy-itsy-bitsy.com
ServerName ysy-itsy-bitsy.com
ServerAlias www.ysy-itsy-bitsy.com
DocumentRoot /var/www/ysy_project/
ErrorLog ${APACHE_LOG_DIR}/ysy-itsy-bitsy.com_error.log
CustomLog ${APACHE_LOG_DIR}/ysy-itsy-bitsy.com_access.log combined
Alias /static /var/www/ysy_project/static
<Directory /var/www/ysy_project/static>
Require all granted
</Directory>
Alias /media /var/www/ysy_project/media
<Directory /var/www/ysy_project/media>
Require all granted
</Directory>
<Directory /var/www/ysy_project/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess config python-path=/var/www/ysy_project python-home=/var/www/ysy_project/ysy_env
WSGIProcessGroup config
WSGIScriptAlias / /var/www/ysy_project/config/wsgi.py
</VirtualHost>
conf파일을 편집
# a2ensite django.conf
# systemctl restart apache2
Django virtual host 사용하고 아파치 웹 서버 재시작
https://www.ysy-itsy-bitsy.com/ 접속