このサイトは一般的なCMSワードプレスではなく、mezzanineというものを使用しています。このサイト立ち上げる(デプロイ)するのにかなり苦労したので(まるまる一か月!!)、サイトのコンセプトとは離れますが、備忘録的にやり方を整理しておきます。いつかまた逢う日に備えて。--一つだけ確実なことは英語できなかったら絶対できてなかった。。
mezzanine-project xxxxxx .最後のドットを忘るべからず。これがあればネストされない。このためにどれだけ苦労したか。。。テーマをインストールするには
$ cd xxxxxx $ python manage.py createdb $ python manage.py runserve $ python manage.py collecttemplatesここまでやってからテーマをフォルダに突っ込み、install_appに追加(参考) すべてvirtualenv環境で。djangoのconfが共通で使用されるのを防ぐ。
FABRIC = {xxxxxxの部分を記入。ssh_key_passの設定がみそ。これに気が付くの3日はかかったかな(汗)実際の置く場所はここ C:\cygwin64\home\user\.ssh
"DEPLOY_TOOL": "rsync", # Deploy with "git", "hg", or "rsync"
"SSH_USER": "xxxxxx", # VPS SSH username
"SSH_PASS": "xxxxx", # SSH password (consider key-based authentication)
"SSH_KEY_PATH": "~/.ssh/xxxxxxxx.pem",
"HOSTS": ["xxxxxxxxxxx"], # The IP address of your VPS
"DOMAINS": ["eng-image-learning.com"], # Will be used as ALLOWED_HOSTS in production
"REQUIREMENTS_PATH": "requirements.txt", # Project's pip requirements
"PROJECT_NAME": "xxxxxxxx", # Unique identifier for project
"GUNICORN_PORT": 8000, # Port gunicorn will listen on
"LOCALE": "en_US.UTF-8", # Should end with ".UTF-8"
"DB_PASS": "xxxxxxxxxxxx", # サーバー側のDBパスワード プロジェクト名がユーザー名になっている pgadmin4を使ってアクセスするときに使用
"ADMIN_PASS": "xxxxxxxxxxxx", # ユーザー名:adminとこのPWで管理画面にアクセスできる
"SECRET_KEY": SECRET_KEY,
"NEVERCACHE_KEY": NEVERCACHE_KEY,
}
/cygdrive/c/Users/user/Desktop....
のように書き換えておく。fabricで書き換えるのはこの部分だけ(多分)。1のプロジェクト作成でドットをしていなければ、フォルダがプロジェクト名でネストされ、manage.pyやrequirements.txtの位置関係がおかしくなる。エラーが出るたび、envを何度も手直ししたが、結局ドットを入れることですべて解決した。これはdeployコマンドを動かすときも勝手にフォルダを推測して動くため、create()部分がうまくいったところで失敗することになる。 kill -HUPで終了すればすべてOK. かと思いきや502エラーで表示されない。これはnginxがwww-dataでキックされていたのだが、gunicornはssh_userであったため、両者でスターターが一致せずエラーが出ることを突き止めた。nginxのconfファイルのwww-dataをssh_userで書き換えてなんとか表示成功。もはや感動ではなく、感慨深いものがあった。何度もあきらめたり、クラウドワークスに仕事を依頼したりまでしたが、何とかギリギリで踏みとどまった。そして最後にwebのすべてを手に入れた。python manage.py dumpdata --exclude admin --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 4 > db4.jsonこれで開発のDBがjson形式でdumpされる。これをサーバー側に投げるわけだが、簡単にサーバーにアクセスできる方法をがあった。cyberduck。
sudo mkdir -p /var/www/letsencrypt
sudo chown (ssh_user):(ssh_user) /var/www/letsencrypt
nginxのsite-enableのファイルを書き加える
location ^~ /.well-known/acme-challenge/ {
allow all;
root /var/www/letsencrypt/;
default_type "text/plain";
try_files $uri =404;
}
更新の設定
$sudo crontab -e
00 09 1 * * /usr/bin/certbot renew -q --renew-hook "/bin/systemctl reload nginx"
これですべてOK。オウンドメディアを獲得。ようやくスタートが切れました。