안녕하세요!
오랜만에 포스팅하게 되었습니다!
다름이 아니라 이번에 원격으로 리눅스 환경에서 아파치로 웹 서비스를 해보게 되었는데
연동하는 과정을 포스팅해보려고 합니다.
개발 환경 및 서버 환경
개발 환경
Language: python 3.6.9
IDE: pycharm community
서버 환경
IP address: 로컬 혹은 호스팅 주소
OS: linux (Ubuntu 18.04.5 LTS)
CPU: 2.0GHZ
Memory: 4096MB
HardDisk: 100GB
WebServer: Apache
DataBase: MariaDB
Use: MobaXterm
Linux(Ubuntu)에 Django 설치하기
sudo apt-get update
sudo apt-get upgrade
먼저 리눅스 패키지 정보를 업데이트, 업그레이드합니다.
아직 리눅스에는 python이 없습니다.
따라서 파이썬을 설치해주셔야 합니다.
apt-get install python3
shell에 다음과 같이 apt-get install python3 해주시면 리눅스에 파이썬이 설치가 됩니다.
설치하실 때 Permission Denied가 뜨시면 앞에 sudo를 붙이셔서
sudo apt-get install python3
관리자 권한으로 설치해주시면 됩니다.
다음으로 Django 프로젝트를 설치하기 위해서 디렉터리를 만듭니다.
그리고 디렉토리 안으로 이동합니다.
mkdir Homepage
cd Homepage
저는 기존에 만들었던 github에서 소스를 끌어와서 쓰려고 합니다.
git clone 코드
해주시면 Homepage 위치 바로 아래에 프로젝트가 만들어집니다.
프로젝트가 생성되면 이제는 가상 환경 설정을 해야 합니다.
저는 가상 환경을 프로젝트 안쪽에 두기 때문에
cd sports_homepage_update
안쪽으로 이동한 후에 디렉터리와 가상 환경을 설치하겠습니다.
먼저 뒤에 있을 아파치 연동을 위해 디렉터리를 먼저 설치하겠습니다.
mkdir site
mkdir auth
cd site
mkdir logs public #로그 파일 폴더, 정적 파일 폴더
이제 그러면 site 디렉토리 안에 logs, public 디렉터리가 있는 것을 tree -d 명령어로 확인할 수 있습니다.
앞에서 파이썬을 설치했기 때문에 파이썬 명령어를 사용하실 수 있습니다.
python3 --version
파이썬이 정상적으로 설치되었는지 확인하기 위해서 버전을 확인한 후 가상 환경을 만듭니다.
python3 -m venv myvenv
가상환경 생성 명령을 통해 myvenv라는 가상 환경이 생성되었습니다.
ls -l 명령으로 생성된 것을 확인합니다.
가상 환경이 만들어졌으니 이제 가상 환경을 켜주어야 합니다.
source myvenv/bin/activate
가상환경이 있는 위치에서 다음과 같은 명령어로 가상환경을 켜줍니다.
다음과 같이 사용자 이름 옆에 (myvenv)라는 문자가 보인다면 가상 환경이 켜진 상태입니다.
이제 Django 사용을 위한 라이브러리를 설치해주어야 합니다.
라이브러리를 설치하는 명령어는 파이썬에서 pip인데 바로 쓰지 못합니다.
pip 패키지를 설치해주어야 합니다.
apt-get install python3-pip
pip를 사용하기 위해 다음과 같은 명령어로 패키지를 설치합니다.
설치가 완료되고 나면 pip를 통해 라이브러리를 설치할 수 있습니다.
pip3 --version
다음 명령어로 pip3 --version을 확인합니다.
처음 설치하시는 분께서는
pip install django
freeze > requirements.txt 해놓으신 분께서는
pip install -r requirements.txt
로 라이브러리를 설치해주시면 됩니다.
라이브러리가 설치가 되었으면 서버가 동작하는지 확인합니다.
편집기(vi, nano, vim)로 settings.py을 열어
파일에서 ALLOWED_HOSTS = ['ip주소']
부분에 현재 리눅스의 ip 주소를 적어주세요
저는 테스트하기 위해 모든 호스트를 허용했습니다.
실제 서비스하실 때는 리눅스 IP주소를 적고 DEBUG=False로 돌리시고 하셔야 합니다.
다시 manage.py 파일이 있는 위치로 가셔서 서버 동작을 확인합니다.
python3 manage.py runserver 0.0.0.0:8000
0.0.0.0은 아무 곳에서나 이 서버에 접근 가능하다는 뜻이고 8000은 포트번호입니다.
포트번호는 사용자가 지정해줄 수 있습니다.
다음과 같이 서버가 동작하는지 확인하고 url에 ip주소:8000을 적어 넣어 확인합니다.
다음과 같은 로켓이 뜨거나 본인 소스코드의 메인화면이 뜬다면 성공입니다.
WSGI(Web Server Gateway Interface)으로 Apache2와 연동하기
Apache와 Django를 연동시키기 위해 apache2와 mod_wsgi라는 것을 설치해주셔야 합니다.
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi-py3
apache2를 설치해준 후에 아파치를 실행시킵니다.
sudo service apache2 restart
이제 리눅스 IP주소에 접속하면
다음과 같은 리눅스 DEFAULT 홈페이지가 뜨게 됩니다.
아파치의 기본 포트 번호는 80입니다.
다음으로 리눅스의 DEFAULT 홈페이지를 Django와 연결시켜주기 위해 conf 파일을 수정해주어야 합니다.
cd /etc/apache2/sites-available
sudo vi 000-default.conf
sites-available 폴더에 절대 경로로 접근하여 000-default.conf 파일을 관리자 권한으로 수정해야 합니다.
이제 안에 ServerAdmin, DocumentRoot, ErrorLog, CustomLog를 남겨두시고 주석처리되어 있는 부분은 지웁니다.
그리고 다음과 같이 채워 넣어주세요.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog /home/lease/Homepage/sports_homepage_update/site/logs/error.log
CustomLog /home/lease/Homepage/sports_homepage_update/site/logs/access.log combined
alias /static /home/lease/Homepage/sports_homepage_update/site/public/static
alias /media /home/lease/Homepage/sports_homepage_update/site/public/media
<Directory /home/lease/Homepage/sports_homepage_update/site/public/static/>
Require all granted
</Directory>
<Directory /home/lease/Homepage/sports_homepage_update/site/public/media/>
Require all granted
</Directory>
<Directory /home/lease/Homepage/sports_homepage_update/homepageProject/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess homepageProject python-path=/home/lease/Homepage/sports_homepage_update python-home=/home/lease/Homepage/sports_homepage_update/myvenv
WSGIProcessGroup homepageProject
WSGIScriptAlias / /home/lease/Homepage/sports_homepage_update/homepageProject/wsgi.py
</VirtualHost>
위에 코드를 잠시 살펴보면
VirtualHost *:80 은 디폴트 포트번호이고 사용자가 바꿀 수 있습니다.
ErrorLog와 CustomLog에선 아까 만들어주었던 logs 디렉터리의 경로
alias Directory 부분은 Static, Media 파일들의 경로 등록
Django 프로젝트 경로 등록
WSGI 데몬 왼쪽은 파이썬 경로, 오른쪽은 가상 환경 경로
wsgi.py 경로
WSGI데몬
Windows가 아닌 다른 플랫폼에서 mod_wsgi를 실행하는 데 권장되는 모드입니다. 필요한 데몬 프로세스 그룹을 만들고 이를 실행할 Django 인스턴스를 위임하려면 적절한 ``WSG DaemonProcess》와 《WSGIP ProcessGroup》 지침을 추가해야 한다.
https://docs.djangoproject.com/ko/3.1/howto/deployment/wsgi/modwsgi/
데몬에 대한 설명은 Django ducument에서 확인할 수 있습니다.
이제 수정된 파일을 저장하고 아파치를 재실행합니다.
sudo service apache2 restart
재시작을 했을 때 에러 메시지가 뜬다면 conf 파일의 내용에서 뭔가 오류가 발생한 것입니다.
대부분 경로에서 문제가 생길 텐데 찾아서 수정해주시면 됩니다.
위의 아파치 설정을 마치고 다시 리눅스 IP주소로 접속하면 아파치 default 페이지가 장고 페이지로 바뀐 것을 확인할 수 있습니다.
아직 settings.py에서 정적 파일을 설정하지 않았기 때문에 아마 빈 화면이나 HTML만 보이실 것입니다.
다음 시간에는 정적 파일을 적용해보도록 하겠습니다.
고생하셨습니다!!
'Framework > Django' 카테고리의 다른 글
[Django] 리눅스(우분투)에 장고와 아파치 설치 및 연동하기-(3)(MariaDB 연동) (1) | 2021.06.30 |
---|---|
[Django] 리눅스(우분투)에 장고와 아파치 설치 및 연동하기-(2)(정적 파일, 에러 확인) (0) | 2021.06.30 |
[Django] Form과 ModelForm에 대해 알아보고 form.save(), form.save(commit=False) 차이점 알아보기 (0) | 2021.03.24 |
[django] request.GET/request.GET.get MultiValueDictKeyError 해결 (0) | 2021.03.18 |
[Django] Select option 선택한 옵션으로 이동하고 선택한 값 GET으로 받기, 월별 데이터 출력하기 (2) | 2021.03.17 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!