72日目 割烹芸人の実装3
ということで、いったんβ版完了。予定通りなんとかなりました。
ということで、とりあえず公開していきましょう。
これまでは単純に静的ファイルを配信していただけですが、今回は動的に配信するためにいくつかやることがあります。
ちなみに、本番環境に移すことをデプロイと言います。
ということで、ちゃっちゃとやっていきます。まずは必要な言語やアプリケーションインストールしていきます。
CentoOSにはデフォルトではPython 2だけが入っているので新しいDjangoを使うためにpython3をインストールします。
インストールはソースファイルからビルドする方法か、yumでのインストールがあるみたいですが、yumは最新版がない場合もあるのでソースからの方がよさそうですね。自分がいれようとしている3.8も現時点ではないようなのでソースファイルから頑張ってみます。
下準備として外部のパッケージをインストール
sudo yum install zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libuuid-devel xz-devel
足りないものがあればあとでインストールしなおしてまたビルドすればいいとのこと。
今回はpython3.8.0をインストールします。
curl -O https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar xf Python-3.8.0.tgz
cd Python-3.8.0
./configure
make
sudo make altinstall
インストールが終わったらパスを追加してpythonコマンドを使えるようにします。
sudo visudo
#以下を書き換え
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
↓
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
Python3.8と打ち込んでpythonのバージョンが出ればOKです。これでPythonが使えるようになりました。
作った。Djangoアプリケーションファイルの転送を行います。Gitでバージョン管理しているリモートリポジトリからクローンします。
事前に、作ったDjangoアプリケーションをGitHubなどのホスティングサイトにPushしておきます。
自分はBitbucketに非公開リポジトリを作ってます。
git cloneコマンドでサーバーにファイルをコピーします。
そこまで終わったらDjangoのインストールと設定ですね。
sudo pip3.8 install -r requirements.txt
事前にrequirements.txtを作っておいてそれをpipでまとめてインストールします。
次にSQLiteを最新版にします。コマンドを使おうとすると最新版じゃないと怒られるので……
sudo wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
tar xvfz sqlite-autoconf-3310100.tar.gz
cd sqlite-autoconf-3310100
./configure --prefix=/usr/local
make
sudo make install
sudo find /usr/ -name sqlite3
cd
sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
export LD_LIBRARY_PATH="/usr/local/lib"
sudo echo "/usr/local/lib" >> /etc/ld.so.conf.d/sqlite.conf
sudo ldconfig
これで多分大丈夫。/usr/local/libを追加するのがミソなよう。
終わったら作ったアプリのsettings.pyを開いて
ALLOWED_HOSTS = ["(ドメイン or IPアドレス)"]
にしておきます。DEBUG もFalseにしておきます。
静的ファイルを配信できるようにNginx用に設定をします。
STATIC_URL = '/static/' # これは元からあります。
STATIC_ROOT = '/usr/share/nginx/html/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = '/usr/share/nginx/html/media'
フォルダも作ります。
sudo mkdir /usr/share/nginx/html/media
sudo mkdir /usr/share/nginx/html/static
あとはstaticファイルを集めてそこに転送します。
sudo python3.8 manage.py collectstatic
開発環境で記事などを作っていた場合はメディアファイルもコピーしておきます。メディアフォルダに入って
sudo cp * /usr/share/nginx/html/media
そうしたらあとはmigrateと、createsuperuser でスーパーユーザーを作成しておきます。
python3.8 manage.py migrate
python3.8 manage.py createsuperuser
それが終わったらNginxの設定です。ちょっと前のファイルを編集
location /static {
alias /usr/share/nginx/html/static;
}
location /media {
alias /usr/share/nginx/html/media;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
最後にGunicornインストールして起動します。
Gunicornをインストールします。
sudo pip3.8 install gunicorn
プロジェクトフォルダに入って、
sudo gunicorn --bind 127.0.0.1:8000 project.wsgi:application
myblogはプロジェクト名です。各自のプロジェクト名にしてください。
でドメインにアクセス。
いえーい、できました。
はい、とりあえずこれでβ版リリースです。
あとは他の機能を追加してもう少し便利にしていきましょう。




