【Django】Amazon Linux 2+MySQL에서 Django를 배포하는 방법

5610 단어 장고myAWS
AWS에 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

좋은 웹페이지 즐겨찾기