Django + Mezzanine + GoogleCloudPlatform (2)

前回の続きです。

10.ローカルからGCPに既存ファイルを送る

homeディクレクトリに存在するディレクトリ名を確認しておきます。(新規でディレクトリを作成してもいいです。)

# cd /home

送信先ディレクトリ名を確認したら、実際にファイルを送ります。

$ scp -i ~/.ssh/google_compute_engine <ローカルの送信元ファイルのパス> <ssh接続時のuser名>@<接続先IP>:/home/<送信先ディレクトリ名(今回は例としてhogehoge)>

11.unzipコマンドをインストール&解凍

CentOS7には初期でunzipコマンドが無いようなので、インストールします。

# sudo yum install unzip -y

インストールが完了したら解凍します。

# unzip hogehoge.zip

12.必要なライブラリをインストール

必要なライブラリをインストールします。

# pip install --upgrade -r hogehoge/requirements.txt

もしこの段階でgunicornが入っていなければ、一緒に入れておきます。

# pip install gunicorn

13.プロジェクトのディレクトリでmakemigrations

ここまで来たら、あとは展開するだけです。

# python manage.py makemigrations

もし、makemigrationsの段階で以下のエラーが出た場合、

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

mysqlclientをインストールしてあげましょう。

# pip install mysqlclient

もう一度makemigrationsし、何もなければmigrateします。

# python manage.py migrate

14.staticファイルをコピー

staticファイルをコピーしておきます。

# python manage.py collectstatic

アクセス権限で問題が起こる可能性もあるので、権限を変更しておきます。

# cd /home
# chmod o+x <ディレクトリ名>

15.nginxのconfファイルを作成

/etc/nginx/conf.d配下に、適当なconfファイルを作成し、以下を記述します。

upstream app_server {
server 127.0.0.1:8000 fail_timeout=0;
}

server {
listen 80;
server_name <IPアドレス>;
client_max_body_size 4G;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location /static/ {
alias /home/<プロジェクトのあるディレクトリ名>/hogehoge/static/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
}
}

16.nginx再起動、gunicornで表示確認

ここまできたら、無事に表示されるか確認してみましょう。

# sudo systemctl restart nginx
# cd /home/<プロジェクトのあるディレクトリ名>/hogehoge
# gunicorn hogehoge.wsgi --bind=0.0.0.0:8000

無事に表示されれば成功です!

17.自動起動設定

今は手動起動しているので、自動起動するよう設定します。

/home/<プロジェクトのあるディレクトリ名>/hogehogeにhogehoge.shを作成し、以下を記述

#!/bin/sh
PROGNAME=`basename $0`
BASEDIR=`dirname $0`
PIDFILE=$BASEDIR/$PROGNAME.pid

start() {
echo "Starting server..."
cd $BASEDIR
gunicorn hogehoge.wsgi --bind=0.0.0.0:8000 -D
}

stop() {
echo "Stopping server..."
kill -TERM `cat $PIDFILE`
rm -f $PIDFILE
}

usage() {
echo "usage: $PROGNAME start|stop|restart"
}

if [ $# -lt 1 ]; then
usage
exit 255
fi

case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac

以上です。

コメント

現在コメントはありません

新しいコメント

*
*
*

admin

こんにちは!Bicepperです。
メインはフロントですが、Python・AWS・GCPやったりと手を広げまくってます。

筋トレ歴10年目。筋トレのこともたまーに書いたりします。

Twitter Feed