この記事の内容
前回は以前作ったTODOアプリを外部のVPSサーバーにデプロイするところまで行いました。
まだインターネット公開されていないので、今回はそのためのファイアーウォールやApacheの設定を行っていきます。
今回の対象は、全体像で見てみるとこの緑色で囲った部分です。
- ファイアーウォールのセットアップ
- ApacheとWsgiのセットアップ
- npmでフロント周りの静的ファイルを生成
ということをしていきます。
ファイアーウォールのセットアップ
ファイアーウォールの設定をしていきます。
http通信を許可します。
# firewall-cmd --permanent --zone=public --add-service=http
ファイアーウォールを再起動しておきます。
# systemctl restart firewalld
ApacheとWsgiのセットアップ
httpd.confファイルを編集して、Apacheがアプリケーションを外部に公開できるようにします。
# vim /etc/httpd/conf/httpd.conf
httpd.confを開いたら、下記をファイルの最下部に追加します。
LoadModule wsgi_module /usr/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIScriptAlias / /var/www/cgi-bin/todo/todo/wsgi.py
WSGIPythonPath /var/www/cgi-bin/todo
Alias /site_media/static/ /var/www/cgi-bin/todo/static/dist/
<Directory /var/www/cgi-bin/todo/todo>
Order deny,allow
Allow from all
</Directory>
ここでは、
- wsgiモジュールの場所をApacheに伝える
- URL(今回の場合
http://150.95.139.172)とアプリケーションのルートディレクトリをつなぐ - 静的ファイル用のURL(今回の場合
http://150.95.139.172/site_media/static/)とアプリケーション内の静的ファイルを格納しているディレクトリをつなぐ - アプリケーションのルートディレクトリ以下を公開
ということをしています。
Apacheを再起動します。
# systemctl restart httpd
念の為PostgreSQLも再起動します。
# systemctl restart postgresql
ここまでくるとブラウザからhttp://150.95.139.172/に接続できるはずです。
接続できました。まだscssをコンパイルしてcssファイルを作成するという部分ができていないので、見た目が崩れてしまっています。
npmでフロント周りの静的ファイルを生成
scssコンパイルのために、ローカル同様npmを使えるようにします。今回は簡易的にインストールしますが、実際にはnvmを使ってしっかりバージョン管理を行う必要があります。
nodejsをyumでインストールします。
# yum install -y nodejs
npmが使えるようになっています。フロントにて必要なライブラリを取得します。
# npm install
watchコマンドで静的ファイルを生成します。
# npm run watch
先程と同様にhttp://150.95.139.172/に接続してみます。
ちゃんとcssファイルが生成されているため、レイアウトが整いました。
これでようやくWebアプリケーションを本格的に開発するためのローカル・本番(VPSサーバー)の構築が整いました。
次回
次回は作成しているTODOアプリにTODOアプリとしての機能を追加し、Webサービスとして成立するようにしていきます。

![FireShot Capture 40 - example.com [localhost] I pinax-project-account - http___150.95.139.172_.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F113133%2F84b11c6b-02f8-c23f-a6aa-0518be10c67d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9cdd7759f31e827821d6008f14102595)
![FireShot Capture 41 - example.com [localhost] I pinax-project-account - http___150.95.139.172_.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F113133%2F774150e6-bb5f-6879-68a2-021c1d7653cd.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ad99d9eec9d45a52159591703fcd014d)