絶望プログラマー(AWSで自分のサイトを作って公開する)

絶望プログラマー

こんにちは。
今日は珍しく技術的なことを書こうと思います。

日々、会社で部下に煙たがられている可哀想なおじさんですが、私にもスキルというものがあり、それなりにプログラミングが出来ます。エッヘン。

日本では管理職は管理だけやっていれば良いということではなく、殆どがプレイングマネージャーだと言われています。
かく言う私もそれに近い状態であり、コードを書く量は減りましたがゼロにはなりません。
かつ、皆がやりたくない本番データに触れるなど責任重大業務をやらされる日々で老体に鞭を打って生活しております。

昔から本番データというものはデータベース(DB)に格納されており、セキュリティを強化して運用することが常識となっております。
今ではそのDBをクラウドに上げて管理するのが一般的です。
自社ビル内にサーバー設定して管理するという会社もありますが、地震や台風などの災害を意識してクラウドに上げる企業が増えています。

私の会社も数年前よりAWS上に本番DBを上げて管理するようになりました。
そうなると私の仕事も必然的にAWSを覚えることが必須となり、今に至ります。
今日はそのAWSについて触れようと思います。

いやぁ、今まで能書きばかり書いてきましたが、やっと技術者っぽいことを語れるのではないでしょうか。

目次

  1. 自分のWEBサイトを公開してみた
  2. 1.AWSアカウント作成
  3. 2.ルートアカウントの使用をやめる(セキュリティ強化)
  4. 3.EC2を作成する
  5. 4.Apache
  6. 5.PHP
  7. 6.MariaDB
  8. 7.phpMyAdmin
  9. 8.WordPress
  10. 9.ドメイン取得

すべて表示

自分のWEBサイトを公開してみた

というわけで
お題は自分のWEBサイトをAWS上で公開するです。

レンタルサーバーなどの初心者向けサービスに一切手を借りず、一からAWS上に自分の城を築くのです。まさに技術者っぽいですよね。
サイト構築にはWordPressを利用します。

まずは百聞は一見にしかずということで、実際に私がやってみたので以下にリンクを貼ります。
内容としてはこのNoteの記事をそのまま移行しました。

喘息プログラマー | IT業界サバイバルライフ

いかがでしょうか。
テイストはちょっと異なりますが、だいたい移行できたんじゃないかと思います。

なんでこんなことをやったかというと、ずばり「勉強」です。
当然AWSの利用は有償なのですが、自腹切ってまで自分でやってみるということが、昔からやり続けている私の勉強方法です。
まあ、貧乏性なんでしょうね、金をかけると元を取ってやるという力が働くのです。

ご存じの通りIT業界は日進月歩であり、食うか食われるかの弱肉強食の世界です。喘息というハンデを持ち、さらには年齢という重荷が載ってきている今、人に任せているだけではいつか食われてしまうわけで、自分でやってみて最低限の知識を付けていかないと枕を高くして寝ることはできないのです。

まったくもう、私はIT業界は楽だと思って飛び込んだんですけどね。
まさかこの歳まで勉強するとは思いませんでしたよ。

そんなわけで今日は技術的な話です。
何らかのオチを期待している方々、すみません、今回は本当にガチであります。

あと、細かい説明はしません。
なんとなくの流れが分かっていただければと思います。
詳細はググってもらえれば私の説明よりも分かりやすいサイトがわんさか出てきますので、読みやすいサイトを参考にしてもらえれば幸いです。


なお、これから説明するやり方は自分でAWS上にサーバーを立てることになるため、自由にいじることが可能です。その点はレンタルサーバーなどの間借りサービスとは異なります。よってもちろん広告が付きません。
自由にソフトウェアを入れることもできまし、Googleアナリティクスなどのマーケティングツールを導入することもできます。

ただ、自由な代わりにすべて自己責任です。セキュリティ対策はもちろんのこと、サーバー障害が起きたら自分で直さなければなりません。

よって、ガチの人向けですね。
もし興味があるけど不安であればコメントなりXでDM頂ければ出来る範囲でアドバイスさせて頂きます。
https://x.com/takeno883

ではいってみましょう。

1.AWSアカウント作成

まずは箱が無いことには始まりません。
AWS アカウント 作成
でググってください。トップに出てきたAWS公式サイトをクリックすればアカウント新規作成画面に飛ぶでしょう。必要なものはメールアドレスとクレジットカード。
最初は無料枠で利用することができるので、やってみて難しければ止めれば良いだけです。
ただ、無料枠のサービスには制限があります。
今回のお題を実現する為には有償枠のサービス利用が必要になりまして、ガチの人向けですのでそこはお気を付け下さい。

2.ルートアカウントの使用をやめる(セキュリティ強化)

AWSアカウントを新規作成すると、ルートユーザーでAWSコンソールにサインインすることになります。このルートユーザーは何でもできる最高権限であり、もっとも慎重に扱わなければならないアカウントになります。
万が一忘れたり、誰かに取られたりしたら終わったと思ってください。
よって、ルートアカウントでサインインした後に、IAMに入って管理者となるユーザーを作ってください。例えば私ならgeorgeとか。
そしてそのユーザーにAdministratorAccessポリシーを付けてください。
その後はルートアカウントを封印して、上記管理者のアカウントを使うようにします。
ルートアカウントの再登場は緊急事態のときになります。

3.EC2を作成する

普段使う管理者アカウントの作成ができたら次はサーバーの作成です。Windowsではなく、Amazon LinuxというOSを使います。
Linuxなんて触ったこともないという方にはちょっとハードルが高いと思います。ごめんなさい、このお題をこなすにはもう少し勉強が必要です。

AWSではサーバーと言ったら大体がEC2のことを指します。EC2、RDS、S3が三種の神器みたいなもんです。非常に重要なので覚えておいてください。
EC2作成時に聞かれるインスタンスタイプとは処理能力のことで、PCでいうスペックのようなものです。
私はt3.nanoにしました。CPUが2個(vCPU)で、月に6ドルくらいで安いことが選んだ理由です。最初はこのレベルで十分だと思います。

EC2ができたら、そのEC2(Linux)に接続するための手段を選びます。
まぁ、以下のどちらかでしょうね。
・認証鍵を作ってテラタームなどで接続する
・AWSのセッションマネージャーサービスを利用する

私は後者を選びました。認証鍵って無くすリスクあるので。難易度としては前者の方が簡単です。

4.Apache

昔からあるWEBサーバーです。これがないと話になりません。自分で作るWEBサイトを動かすための土台となります。
以下のような感じでWEBサイトは基礎の上に様々な要素が積み重なって動きます。家が建つ時と一緒ですね。

自分のサイト

WordPress with DB

Apache / PHP

Amazon Linux

EC2

AWS

Apacheは、Linuxに接続してコマンドを叩いてインストールします。ちょっと前からエンジンエックスの方が速いとよく聞くのでそっちでもよろしいかと。
インストールしたら設定ファイルを書き換えます。
この時、viというLinux標準のエディタを使うことになるかと思いますが、これには忘れられない思い出があります。
このエディタね、操作方法にクセがあるんですよ。触ってみれば分かります。きっとびっくりしますよ(ニヤリ)

あーそうそう、ここからはマウスを使いません。
黒い画面に白い文字でキーボード叩いて、映画に出てくるハッカーになった気分になるかもしれませんね。
私が抱いていたプログラマーのイメージはまさにこれでしたので、Linuxは早い段階で独学で触っていました。無料で手に入りましたからね。

余談ですが、Mac OSはBSD系Unixをベースに開発されています。LinuxはUnixをベースにリーナスさんが開発したOSです。
Macで黒い画面(ターミナル)を立ち上げて、キーボードをカチャカチャ叩いてコマンド入力している人がいたら、けっこうコアな技術者です。

5.PHP

WordPressを動かすために必要です。Apacheと同様にLinuxにインストールします。
私は間違えてVer.7を入れてしまって、えらい目に遭いました。
PHPのバージョンが古いとWordPressのプラグインが動かなかったりするので、新しいVer.8を入れると良いでしょう。
これにももちろん設定がありまして、
PHP チューニング
でググればすぐに出てきます。

6.MariaDB

データベースです。単純にインストールするだけです。
たとえWordPressが壊れても、これさえ守ればサイトを復旧できます。生命線ですね。くれぐれもパスワードの管理にお気を付け下さい。

7.phpMyAdmin

6のデータベースを参照編集できるツールです。インストールします。
WEB上で操作できるので便利ですが、パスワード取られたら地獄です。

8.WordPress

インストールして、6のデータベースと連携させます。設定ファイルをいじる必要があり、ここでハマるときがあります。スペルチェック必須です。
しょうもないミスで休日を無駄にする可能性ありです。

最初のサンプルブログ画面が出れば富士の五合目を超えたも同然です。
長かったですね、おめでとうございます。
初心者の方はきっと涙が出てきたんじゃないでしょうか。
あとはWordPressログインURLを叩いて、管理画面で自分のサイトをドレスアップするだけです。

9.ドメイン取得

サイトが完成してもドメイン(インターネット上の住所)がないとIPアドレスでアクセスすることになるので、サイトタイトルなどからワードを決めてドメインを取りましょう。
DNSの知識に加えて、AWSのRoute53の設定が必要になります。
ちなみに私の場合は、サイトタイトルが「喘息プログラマー」でドメインが「zensoku-pg.com」です。年間14$で先払いでした。

※この時にAWSのElactic IPを使って固定IPを取得したのですが、この後の9の設定でいらなくなりました。
ドメインが取得できるサービスはあちこちにありますが、せっかくなのでAWSのサービスを使って取得してみましょう。一元管理することによって効率的です。

10.SSLの設定

いわゆる https というやつです。詳細は端折りますが、要は自分のサイトにセキュリティ的に安全だよという証明書を付けるのです。
具体的にはAWSの中で証明書を作成して自分のサイトに紐付けます。
この時に私はロードバランサーを使ったやり方をチョイスしたのですが、作業の中で一番混乱しました。

ただ、一昔前はhttpsのサイトを構築するとなるとドメイン取得からDNSの設定、証明書の購入など複雑な連携をしなければならなかったので、それがAWSの世界でまとめてできるようになったことは非常に大きな進歩だと思います。
こうやって技術はどんどん簡単になっていくので、エンジニアにはより差別化が求められるわけです。誰でも出来ることが出来てもスキルにはならないですからね。いやはや、ほんと厳しい業界ですよ。

11.テイクオフ

やりましたね。
さぁ、飛び立ちましょう。世界に自分のサイトを公開するのです。

ブラウザで自分のサイトのURL(取得したドメイン)を叩いてみてください。
表示されればあなたは正真正銘のWEBサイト管理者です。
すべて自分で運用するのです。
なんかかっこよくないですか。
Googleアナリティクスも設定しちゃいましょうよ。

さぁ、ガンガン更新していってください!

総括

というわけで、駆け足で説明しましたがいかがだったでしょうか。
AWSを使って自分だけでWEBサイトを立ち上げるにはこんなにも行程をこなす必要があるということが分かって頂けたかと思います。
ここから更にPHPを使って、自前のソリューションサービスを開発したり、ECサイトを作ったりとWEBアプリケーション開発の世界が広がっていきます。
規模が大きくなればAWSにも手を入れて、例えばEC2の台数を複数にして冗長化したり、データベース部分をRDSに切り離して管理したり、データバックアップをS3にコピーしたりと無限大に広がっていきます。

技術者はこういったものを常に追いかける必要があり、止まったらおしまいです。プログラムだけやっていれば良い時代はとっくに終わりました。

正直、私は付いていくだけで精一杯です。
もうヘロヘロです。
まぁ、この世に楽な仕事なんて無いんでしょうね。

そんなわけで長文となりましたがこの辺で。
ここまで読んでくださってありがとうございました。
チャオ~

タイトルとURLをコピーしました