【Django】Amazon Linux 2+MySQL에서 Django를 배포하는 방법
AWS 설정
yum을 최신으로 업데이트
$ sudo yum update
Python의 최신 버전 설치
$ sudo yum -y install python37
git 설치
$ sudo yum -y install git
Git으로 올리는 장고의 프로젝트 가져오기
$ git clone https://github.com/example/hogeproject.git
프로젝트에 포함된 가상 환경 실행
$ cd hogeproject/
$ source venv/bin/activate
가상 환경에
django
설치$ sudo pip3 install django
settings.py
에 데이터베이스 정보 추가$ vim taxproject/settings.py
ALLOWED_HOSTS = ['EC2のパブリックアドレス', 'localhost']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '〈データベース名〉',
'USER': '〈ユーザー名〉',
'PASSWORD': '〈パスワード〉',
'HOST': '〈エンドポイント〉',
'PORT': '3306',
}
}
데이터베이스에 테이블을 작성하기 위해 migrate
※여기가 가장 고전했습니다.
$ python3 manage.py makemigrations
다음과 같은 오류가 발생했습니다.
Traceback (most recent call last):
File "/usr/local/lib64/python3.7/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
・
・
・
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
mysqlclient
를 설치했는지 물었으므로 먼저 설치해보십시오.$ sudo pip3 install mysqlclient
그러면 이번에는 mysql_config가 없으면 오류가 발생합니다.
왜야...
/bin/sh: mysql_config: command not found
/bin/sh: mariadb_config: command not found
/bin/sh: mysql_config: command not found
조사해 보면 아래를 설치하면 해결되는 것 같습니다.
설치 시작
#リポジトリ追加
$ sudo yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum -y install mysql-community-client
$ sudo yum -y install mysql-devel
mysql_config가 설치되었는지 확인
$ whereis mysql_config
mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz
분명히 설치된 것 같아서 이것으로 괜찮다고 생각하고 다시
$ sudo pip3 install mysqlclient
를 실행하십시오. unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
이번에는
gcc
이 없으면 화난다.gcc
설치$ sudo yum -y install gcc
이번이야말로 생각하고
$ pip3 install mysqlclient
를 실행.그러면 ...
#include "Python.h"
^~~~~~~~~~
compilation terminated.
error: command 'gcc' failed with exit status 1
또한 오류가 발생합니다.
Python.h
가 원인인 것 같기 때문에 조사해 보면 python-devel
에 들어 있는 모듈이라고 하는 것.그래서 이번에는
python-devel
를 설치합니다.$ sudo yum -y install python-devel
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
37 packages excluded due to repository priority protections
Package python-devel-2.7.18-1.amzn2.0.2.x86_64 already installed and latest version
Nothing to do
어라?
이미 설치되어 있습니다 ...
생각하면 Python2.7이므로 Python3
python-devel
설치$ sudo yum -y install python3-devel
설치가 완료되었으므로 여러 번
$ sudo pip3 install mysqlclient
실행Installing collected packages: mysqlclient
Running setup.py install for mysqlclient ... done
Successfully installed mysqlclient-2.0.2
마침내 성공했다! ! !
이제 괜찮을 것이므로 데이터베이스에 테이블을 만듭니다.
$ python3 manage.py makemigrations
$ python3 manage.py migrate
데이터베이스에 값이 포함되어 EC2 보안 그룹에 포트 추가
서버를 시작하고 EC2의 공용 IP에 액세스
$ python3 manage.py runserver 0.0.0.0:8000
표시할 수 있습니다.
조사하는데 엄청 시간이 걸렸다・・・
일단 이것으로 배포는 할 수 있었다.
나머지는 gunicorn을 넣어 항상 액세스 할 수있게하면 OK
Reference
이 문제에 관하여(【Django】Amazon Linux 2+MySQL에서 Django를 배포하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/izayoi0211/items/a783024a6903294cde6b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)