はじめに
完全にゼロからホームページを作ってみた。 ここでいうゼロからとは、vercelやherokuなどのPaaSを使わないことを指す。
作ったホームページ(このウェブサイト自身)
http://soramameen.com/
背景・動機
インターン中の勉強会でnginxという単語が出てきた。その時に全く分からずに、webサーバーのソフトウェアということがわかった。そして、webサーバーとwebアプリのサーバーサイドのサーバーとごっちゃになっていた。さらに、kubernatesやkamalも出てきて、便利だが、そもそも何が大変なんだ?状態だった。
そんな感じで、インフラがボロボロすぎたので、自分で全部やろうと決めた。
構築の流れ
1. Railsアプリケーションの作成
ローカルでrailsアプリを作った。 派手なものが作りたいのではなかったため、homeのviewに自己紹介を書いたもの。
2. サーバー選定
そもそも、サーバーとは何か知らなかったので調べた。サーバーとは、パソコンであるらしい。
最初、使わないパソコンをサーバーとして運用しようとしたが、自宅のLAN?を使うようで、そこから色々なりそうなので、セキュリティ的にやめておいた。
じゃあ何を使えばいいのか調べた結果、VPSというサービスがあった。VPSとは、その会社が持つlinuxサーバーを借りることができるサービスだ。
性能なんていらないので一番安いらしい、vultr.comというサービスを利用した。
3. デプロイの仕組み理解
じゃあどうやって始めるか。
linuxサーバーがアプリケーションをpullして、環境を作り、起動する。それをイーサネット上のIPアドレスとfowardingしてそのサーバーに接続するようにするという流れっぽい。
4. 環境構築とDocker
今回起動が必要なものは、railsのアプリケーション、nginx, postgresQL(今後のため)。
これらを別々に立ち上げる必要があり、非常に面倒くさい。
ここでdockerが誕生する。docker imageという設計図から具体化する方式をとっており、再現性高く管理できる。そして、docker composeというので複数のdockerコンテナを一度に操作できる。これらの神さを体感。docker composeをさらに複数扱う、kubernetesという概念や、さらにそれらを複数扱ったりもするらしいが今回必要ない。コンテナ技術、kubernetesなども今後学んでいきたい。非常に面白そうだ。
それぞれのDockerfileはAIに書いてもらった。一番大事な部分っぽいが分からなすぎて今回は断念。
5. デプロイフロー
デプロイの流れは、
- ローカルで編集してgithubにpush
- VPSでgit pull
- docker build
- docker composeで立ち上げる
これらがデプロイの流れである。これでデプロイってなんだ?が解消された。dockerの部分が少しブラックボックス感あるが、次はDockerfile内も理解しよう。
6. ドメイン取得
お名前.comでとった。テンション上がるね。.devとかもよかったが今回は、soramameen.comで私のサイト感を出した。
感想
webアプリについて特にインフラについて知ることができた。今後もこのサイトで色々遊んでみたいと思う。