「Webアプリを作りたい!!でもサーバとか何もわかんない!!あと難しいことはやりたくない!!」という状態から、とりあえずデータベースを用いた動的な?Webアプリを公開できる小さい環境を作ったのでよければ参考にしてください。
個々のサービスや技術について詳細は書かないので、あくまで全体感を掴むのに役立てていただけるとうれしいです。
まだこの環境でWebアプリを公開したわけではないので絶対ちゃんと運用できるとは言えませんが、よろしくお願いします。
概要
早速全体像をば。
まずさくらVPSというレンタルサーバにUbuntuというOSを乗っけて、そこにMySQLでデータベース、Node.js+expressでWebサーバをつくりました。
ざっくり下の図のとおりです。本当は厳密な記法とかがあるんでしょうが、イメージです。
調べると大体APサーバがどうとかミドルウェアがとか出てきますが難しいのは嫌だったので無視しました。多分なくてもWebアプリを作って公開することはできると思います。
初心者なので「サーバ」という言葉のイメージが難しかったですが、イメージ的には今回はさくらVPSという物理的なサーバの上に、MySQLサーバ、Webサーバという仮想的なサーバを立てた感じだと思います。まぁさくらVPSも読んで字の如く仮想サーバなんですが。あくまでイメージの話です。
では各要素について見ていきましょう。
さくらVPS
詳しいことは知りませんが、ある程度自由度がありそうで安かったので選びました。
とりあえず一番安いメモリ512MBのSSD25GBにしてます。
これはVPSですがレンタルサーバっていうのもあるみたいです。でもそっちは制約が多いらしく、MySQLとかNode.js使うならVPSみたいな感じだったのでVPSにしました。
最初はbubble.ioというノーコードサービスを使っていたのですが、アプリを公開するのに最低月4500円ほど飛んでいくっぽくてやめました。無料版を3日ほど触りましたが、開発速度はバケモン速かったです。なんせ環境構築いらずでノーコードなので初心者には最高です。でも高いです。
クラウドサービスっていうのも考えましたが何ができるかよくわかんなかったのと、料金体系が複雑だったちょっと高かったりしたのでやめました。
契約するときにOSも選べるのですが、以前から名前を知っていたUbuntuにしました。多分結構一般的なOSで、情報もある程度ネットに転がってるんでUbuntuでいいと思います。
ファイルの転送
プログラムやhtmlなどはローカルで作りたいので、
ローカルとさくらVPSとの通信が必要になります。
調べた感じ通信方式はsshとftpがあります。そして補助的なツールとしてgithubがあるという感じです。
今回は難しいことをしたくなかったのでftpを使いました。gitとかgithub使い慣れてる人はsshでgithub使うのがいいのかな?
MySQL
データベースは知名度的にこれ一択でした。
ので他との比較は全くしてないです。
今回はメモリ512MBの雑魚環境なので、MySQLサーバを起動しようとするだけでメモリがオーバーフローしました。
なんでSwap領域を設定して半ば無理やりMySQLを動かしてます。普通にもっとメモリに余裕を持たせた方がいいと思います。
調べ物をするときはバージョンや乗ってるOSによる違いが少し多いのでご注意ください。
OSの上にMySQLサーバを立てて、それにクライアントとしてログインする形式です。ライブラリやフレームワークのイメージでいたので少し理解に手間取りました。
Node.js
javascriptの実行環境です。今回はWebサーバもやらせました。
一般的にはWebサーバにはNginxやApacheというのを使うらしいです。
しかしどちらにせよNodo.jsは必須っぽいんで、システムを肥大化させたくなかったのでNode.jsにWebサーバもやらせました。
Node.jsをWebサーバにする場合、expressというフレームワークが一般的なようなので使いました。
まとめ
とりあえず自分はこうしたよってやつなので、詳しくは調べてみてください。