概要
前回(さくらVPS、お名前ドメインでデプロイ)のつづき。
Apache 環境で Sqlite じゃなくて MySQL を使うようにする。ぼくが MySQL 使うことにしたのは、 Sqlite は同時アクセスに弱いってどっかで読んだからだ。テスト環境用設定では Sqlite が読まれて、本番環境用では MySQL が読まれるようにする。
だけど本番でも manage.py は使うんだよな。 createsuperuser
したり loaddata
したりね。そういうときは「manage.py を使いつつ本番用設定を使いたい」ってなるはずだ。そのために --settings
オプションが用意されているよ。
MySQL 準備
provision.sh を編集していく。
MySQL 本体
provision.sh で以下のように書いてたところを……
# よくわかってないけど yum 先輩のアップみたいなもんを行う。
yum makecache fast
yum update -y
#
# MySQL の設定を書く予定。
#
こうする。 MySQL は下のコマンドにも関わってくるから yum
のすぐ下に書く。
# よくわかってないけど yum 先輩のアップみたいなもんを行う。
yum makecache fast
yum update -y
# MySQL をインストール。
touch /etc/yum.repos.d/MariaDB.repo
chmod 777 /etc/yum.repos.d/MariaDB.repo
cat << __EOF__ > /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
__EOF__
yum install -y MariaDB-server MariaDB-client
systemctl start mysqld
# とりあえず root:password でログインできるように。
mysqladmin -u root password 'password'
# MySQL 初期設定。文字コードとか Django が使うデータベース。
mysql -u root -ppassword << __EOF__
SET character_set_database=utf8;
SET character_set_server=utf8;
CREATE DATABASE app;
__EOF__
ともなう変更
同じく provision.sh でこう書いてたところを……
# migrate を行う。
# manage.py だとテスト環境の DB 設定を使ってしまうので、あとで本番用設定を使うようオプションをつける予定。
# まだ MySQL がないからあとでね。
python /vagrant/manage.py migrate
こうする。
# migrate を行う。
# manage.py はテスト環境の DB 設定を使うので、本番用設定を使うようオプションをつける。
python /vagrant/manage.py migrate --settings=config.settings.for_production
テスト環境用の設定で migrate したら MySQL じゃなくて Sqlite に書き込んじゃうからね。
冒頭にも書いたけれど、以降 manage.py を使いつつも本番用 DB をいじってほしいときは --settings=config.settings.for_production
をつけないとダメ。
ファイアウォールの設定変更(任意)
# ファイアウォールの設定。
systemctl restart firewalld
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
# 外部から DB を覗いてみたいならこれを書く。
firewall-cmd --add-service=mysql --zone=public --permanent
systemctl restart firewalld
Django が MySQL を使う設定
今回必要なライブラリを用意しとく
pymysql
が増える。
$ cat << __EOF__ > requirements.txt
Django==2.1.8
mod-wsgi==4.6.5
PyMySQL==0.9.3
pytz==2019.1
__EOF__
設定追加
config/settings/for_production.py で以下のように書いてたところを……
#
# ここに MySQL の設定を書く予定。
#
こうする。
import pymysql
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'app' ,
'USER' : 'root' ,
'PASSWORD' : 'password' ,
'HOST' : 'localhost' ,
'PORT' : '3306' ,
}
}
pymysql.install_as_MySQLdb()
設定を適用
provision.sh を更新したので読み込みなおす。
$ vagrant provision
次回予告
ちなみに前回作った VPS の本番環境に反映するときは、変更ファイルを同じ手順でアップロードして provision.sh を実行すればよい。
$ sudo bash /vagrant/provision.sh
次はベーシック認証とかそのへんかな。
# おつかれやんした git commit。
$ git add --all
$ git commit -m "本番環境に MySQL 追加"