【python】djangoをXserver にデプロイする

2022年2月15日

Linuxbrewを使ってデプロイを試みたが、途中でエラーでどうにもならなくなり、Minicondaを使用する方法に変更した。本当にメモです。

# 発生したエラー
PermissionError: [Errno 13] 許可がありません: '/etc'.

Minicondaをインストール

https://docs.conda.io/en/latest/miniconda.html#からMinicondaをダウンロードしXserverのホームディレクトリにアップロードする。

インストール

sh Miniconda3-py39_4.10.3-Linux-x86_64.sh

PATHを通す

export PATH=/home/******/miniconda3/bin:$PATH

仮想環境の構築

python のバージョンはローカルの環境にあわせたほうが良い。

conda create -n 仮想環境名 python=3.9

djangoのインストール

conda install django==3.2.11

サーバーにアップデート

FTPソフト、Git等でサーバーにフォルダごとアップロードする

index.cgiの作成

manage.pyがありディレクトリに設置する

仮想環境のパス確認

conda info -e
#!/home/...仮想環境で使用するpythonへのパス.../python     
# coding: utf-8
import sys, os
import cgitb  #cgitbでトレースバックを生成する

sys.path.insert(0, '/home/....仮想環境で使用するbinへのパス..../bin')

os.environ['DJANGO_SETTINGS_MODULE'] = 'プロジェクト名.settings'    #settingsの読み込み先を記載

from wsgiref.handlers import CGIHandler
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application() 
CGIHandler().run(application)

.htaccessの作成

ルートディレクトリ等環境にあわせて設置する。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /test/index.cgi/$1 [QSA,L]

index.cgi のパーミッション変更

chmod 755 index.cgi

静的ファイルをまとめる

python manage.py collectstatic

ルートフォルダ等に移動させる

Xserver で APIにアクセスしたときに認証情報がないとエラーが発生したとき

.htaccessに下記を追加する

RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Django,python,未分類

Posted by Next-k