Amazon Linux2がリリース版になってから、Djangoアプリをデプロイしたので、
その時の備忘録φ(..)メモメモ
特に、python3のインストールがつらかった。。
各種バージョンは以下の感じ
$ cat /etc/system-release Amazon Linux 2 $ httpd -v Server version: Apache/2.4.33 () Server built: Jun 15 2018 20:38:53 $ python3 -V Python 3.7.0rc1 $ pip3 -V pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)
インストール
## enable python3 for Amazon Linux2 $ sudo amazon-linux-extras enable python3 ## instal httpd and python3 $ sudo yum install -y httpd-devel python3-devel gcc gcc-c++
aws-extrasリポジトリに、python3.6.2があるが、python3-develがない。。
やむなくaws-coreのpython3.7.0.rc1のpython3-develをインストール。。
仮想環境(Virtualenv)の作成
### setup virtual env $ cd /var/www/cgi-bin/sample_app/ $ sudo pip3 install virtualenv $ virtualenv -p python3.7 virtualenv # create virtual env $ . virtualenv/sampleApp/bin/activate # activate ### setup libraries $ pip3 install -r require/require.txt
Djangoのwsgi.pyの設定
それぞれのパスは以下の感じ。
- Django Projectのパス:/var/www/cgi-bin/sample_app/
- virtualenvのパス: /var/www/cgi-bin/sample_app/virtualenv/
- Django Projectのwsgi.pyのパス:/var/www/cgi-bin/sample_app/wsgi.py
- Django Projectのstaticディレクトリのパス:/var/www/cgi-bin/sample_app/sample_app/static/
各種パスに応じて、wsgi.pyを変更する
変更前
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sample_app.settings") application = get_wsgi_application()
変更後
import os import site import sys # ---------------------------------- # django projectのパス PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # virtualenvのパッケージパス site.addsitedir(os.path.join(PROJECT_ROOT, 'virtualenv', 'lib', 'python3.7', 'site-packages')) # django projectのパス site.addsitedir(os.path.join(PROJECT_ROOT)) # ---------------------------------- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sample_app.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Apache(conf)
Apacheの設定として、Django用のconfファイルを作成する。 * /etc/httpd/conf.d/wsgi_django.conf
※ いろいろやったけどうまくいかないので、python
自体とpip mod_wsgi
は全体共通に。。
# install mod_wsgi using pip $ sudo pip3 install mod_wsgi # find mod_wsgi.so $ find /usr/local/lib64/python3.7 -type f -name "mod_wsgi*.so" # => /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so # create $ sudo vim /etc/httpd/conf.d/wsgi_django.conf
# describe found .so path LoadModule wsgi_module /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so Alias /static /var/www/cgi-bin/sample_app/sample_app/static <Directory /var/www/cgi-bin/sample_app/sample_app/static> Require all granted </Directory> WSGIScriptAlias / /var/www/cgi-bin/sample_app/sample_app/wsgi.py <Directory /var/www/cgi-bin/cryptocurrency_web> Require all granted </Directory>
# apache を再起動 $ sudo systemctl restart httpd
参考になる書籍

- 作者: 関根裕紀,新井正貴
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2019/07/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る

- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2018/06/09
- メディア: 単行本
- この商品を含むブログを見る

- 作者: 横瀬明仁
- 出版社/メーカー: NextPublishing Authors Press
- 発売日: 2018/08/26
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る

- 作者: 横瀬明仁
- 発売日: 2018/12/08
- メディア: Kindle版
- この商品を含むブログを見る
参考にしたサイト様
- Django - Apache mod_wsgi virtualhost デプロイ
- ApacheのインストールからDjangoのデプロイまで - 忘れないようにメモっとく
- Django を Apache と mod_wsgi とともに使うには? | Django documentation | Django
- 静的ファイルのデプロイ | Django documentation | Django
- 静的ファイル (画像、JavaScript、CSS など) の管理 | Django documentation | Django
- Amazon Linux 2でPython3を有効にする - 蛇ノ目の記
- Amazon Linux2にvenv/Anacondaで隔離されたPython3環境を構築 | Developers.IO
- Amazon Linux のバージョンを確認する方法