環境
- TeraTermを使用してエックスサーバーに接続
- minicondaをエックスサーバー上にインストール済
- python3.9
1.プロジェクトを作成する
ローカル環境でサイトを作成する
プロジェクト名 | Config |
アプリ名 | app |
2.エックスサーバー内に仮想環境を作成する
TeraTermを使用し、エックスサーバー内に入る。
minicondaで仮想環境を作成し、必要なモジュールをインストールする。
3.必要なファイルを作成する
.htaccess の作成
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django/condig/index.cgi/$1 [QSA,L]
index.cgiの作成
#!/home/*ユーザー名*/miniconda3/envs/env/bin/python3.9 #Pythonのパス
# -*- coding: utf-8 -*-
import sys, os
sys.path.insert(0, '/home/*ユーザー名*/miniconda3/envs/env/bin') #仮想環境までのパス
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings' #プロジェクトのsettingsまでのパス
from wsgiref.handlers import CGIHandler
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
CGIHandler().run(application)
minicondaでは「envs」というディレクトリ内に仮想環境が作成される。
今回は「env」という仮想環境を作成し、使用している。
4.プロジェクトをサーバーにアップロードする
作成したプロジェクトをZipに圧縮し、
エックスサーバーのファイルマネージャーにアップロードして展開する。
今回はサブドメインの中に作成した「django」というフォルダ内に展開した。
5.index.cgiのパーミッションを変更する
index.cgiのパーミッションを「755」に変更する。
6.プロジェクトファイルの内容を修正する
settings.pyの修正
下記リストの内容を修正する
- DEBUG
- ALLOWED_HOSTS
- STATIC_ROOT (無い場合は追加)
- MEDIA_ROOT (無い場合は追加)
DEBUG = False
ALLOWED_HOSTS = ['sub.domain.com']
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = BASE_DIR / 'media'
※1セキュリティ
セキュリティ上、settingsの中身やAPIキー等知られたくない情報は
別ファイルを作成しそこからインポートすると良い。
※2MySQLを使用する場合
エックスサーバーのサーバーパネルからDBを新規作成
①データベース -> MySQL設定 -> MySQL追加
データベース名:好きな名前
文字コード:UTF-8
②データベース -> MySQL設定 -> MySQL一覧
①で作成したデータベースのアクセス権所有ユーザを追加する。
※MySQLユーザ追加で事前に新規ユーザを追加しておくと良い○
<settings.py>DATABASEの修正
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '*データベースの名前*',
'USER': '*ユーザー名*',
'PASSWORD': '*パスワード*',
'HOST': '*IPアドレス*',
'PORT': '*ポート番号*',
'OPTIONS': {
'charset': 'utf8mb4',
}
}
}
サーバーパネルのMySQL設定に下記画像のような表があるので情報を持ってくる。
データベースの文字コードを変換する
①phpmyadminにログインする
エックスサーバーのサーバーパネルから「phpmyadmin」をクリックし、ログインする。
②SQLから文字コードを変更する
自分の作成したデータベース名を選択
SQLタブを選択し、下記コマンドを入力(データベースの文字コードをすべて[utf8mb4]に変更する。)
※db_nameは自分が作成したデータベースの名前
ALTER DATABASE db_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
7.TeraTermを起動する
TeraTermを起動し、エックスサーバーのサーバーに接続する。
サーバーにアップロードしたプログラムの「manage.py」が置いてある階層に移動する。
cd *移動したいディレクトリのパス*
自分が今いるディレクトリ情報を取得する場合↓
pwd
ディレクトリの移動が終わったら仮想環境に入っておく。
minicondaの場合
conda activate *仮想環境名*
8.cssを集める
python manage.py collectstatic
9.マイグレーションする
manage.pyのある作業ディレクトリまで移動する。
python manage.py makemigrations
python manage.py migrate
migrateした後にもう一度phomyadminを開き、テーブルの「照合順序」を確認してみる。
10.スーパーユーザーを作成する
python manage.py createsuperuser
ユーザー名 (leave blank to use '***'): *好きなユーザー名*
メールアドレス: *アドレス*
Password: *好きなパスワード(表示されない)*
Password (again):*好きなパスワード(表示されない)*
Superuser created successfully.
11.サイトにアクセスしてみる
アプリのurls.pyで’/index/’でurlを作成しているため
今回の場合のリンクは
https://sub.domain.com/django/config/index/
となる。
+α プログラムを定期実行させる
エックスサーバーのサーバーパネル内にあるCron設定から
プログラムを定期実行するスケジュールを組める。
仮想環境でDjangoを実行している場合コマンドには
仮想環境のPythonまでのパス(index.cgiの一番上に書いたのと同じ)
+
半角スペース
+
プログラムまでのパス
を記載する。
/home/*仮想環境までのパス*/python*バージョン* / /home/*プログラムまでのパス*/program.py
あとは時間や曜日を設定すればOK
曜日:日曜始まりで 0~6で設定