[개인 웹사이트 만들기]

AWS+Django 기반 웹사이트 제작 4 (Apache-Django 설치 및 연동)

UtakerS 2024. 3. 19. 14:28
반응형
  • 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/ 접속

반응형