GCPで自分のホームページをつくろう回
なぜ?
自分でWebサーバーを立ち上げてWebサイトを作って運用することでインターネット、Webに関する基礎知識が得られる
必要なもの
ノートPC
クレジットカード
GCPを使うためにどうしても必要
必要な知識
英語
端末 | ターミナル | Terminal
シェル | shell
git
GitHub
vim
AWSではなくGCPを使う理由
AWSが無料なのは最初の一年間のみ
GCPは特定の使い方ならずっと無料
https://cloud.google.com/free/docs/gcp-free-tier?hl=ja
手順
Googleのアカウントに二段階認証を設定する
これをやっておかないともしアカウントが乗っ取られたらGCP破産する
ドメイン名を決めて取得する
yuiseki.net みたいなやつ
ドメイン名はとても重要なのでよく考えて決めたほうがいい
ドメイン名は一度決めたら変えられない
変えてもいいけど他のサイトからのリンクなどが全部リンク切れになる
長く使うほど他のサイトからたくさんリンクされてGoogleで上位に表示される
長く使い続ける覚悟が必要
ドメイン名は維持費がかかる
HTTPSしか使えないドメイン名があるので要注意
Let's EncryptでSSL証明書を作る際にHTTPで接続してドメインの疎通確認をする必要があるのでLet's Encryptが使えない予感
ドメイン名の料金に加えて、SSL証明書の料金や維持・更新コストも考慮する必要がある!!!!
この記事ではLet's Encrypt以外の方法は説明しないので自力で調べられる人だけHTTPS縛りのドメインにチャレンジしてください
.tk/.ml/.ga/.cf/.gq なら無料.iconで取得可能らしい
これらのgTLDは専用のドメインレジストラで購入する必要がある
基本的に英語になると覚悟して下さい
将来的に結局管理がだるいことになる予感がするのであまりオススメしない
ドメイン名は様々な設定をするためにこまめに管理作業をする必要がある
使いやすいサービスで買ったほうがいい
一番オススメなのはGoogle Domains
https://domains.google/intl/ja_jp/
GCPで無料でサーバーをつくろう回を参考にしてサーバーをつくる
VMへログイン後の作業
Ubuntuのパッケージの更新
sudo apt update
sudo apt upgrade -y
ningx Webサーバーをインストールする
sudo apt install nginx
nginxが起動したことを確認する
sudo systemctl status nginx
「 http://外部IP 」をブラウザで開いて以下が表示されることを確認する
注意点:ブラウザによって表示されない場合があり、chromeで開くことを推奨
httpsだと表示されないので注意
https://gyazo.com/b8ad83e05a7ee5ea058c20c50d14d11d
https://gyazo.com/cda9fbb2277816e8d88adba745a4b3ef
IPアドレスとドメイン名を結びつける
GCPのVMの「外部IP」をAレコードもしくはCNAMEとしてDNSに登録する
Aレコードは、あるドメイン名とIPアドレスを結びつけるもの
CNAMEは、あるドメイン名を別のドメイン名と結びつけるもの
その別のドメイン名がIPアドレスであってもまあよかったりする
選べる場合はAレコードにするべき
https://support.google.com/domains/answer/9211383?hl=ja
ドメイン名でnginxのwelcomeが表示されることを確認する
しばらく時間が掛かる
その後
gitを覚えてWebサイトを作ってGitHubにpushする
詳細はgitを見て下さい
VMにSSHして、githubからcloneする
cd ~
git clone https://github.com/yuiseki/yuiseki-net
nginxの設定をvimで書き変える
sudo vim /etc/nginx/sites-available/defaultでvimを起動してnginxの設定を書き換える
:set numberで行番号表示
41行目のroot /var/www/htmlを、root /home/yuiseki/yuiseki-netに書き換える
sudo systemctl restart nginxで再起動する
GCP上でRailsを動かす
SSLに対応する場合→できてない
ToDo
http://yuiseki.net/ を https://yuiseki.net/ でアクセスできるようにする
http://sajiki.yuiseki.net/ のHTMLをhoge以外にする
Let's EncryptでSSLに対応する
http:// ではじまるURLは、通信の内容が暗号化されていないので盗聴可能
ネットワークハッキング入門
https:// ではじまるURLは、通信の内容が暗号化されている
SSLによる暗号化を実現するためには、SSL証明書というものが必要
無料でSSL証明書を発行してくれる神サービスがLet's Encrypt
certbotをインストール
sudo apt install certbot
Let's Encryptの証明書を得る
certbot certonly --nginx -d yuiseki.net
わからない点
certbot certonly --nginx -d yuiseki.netを打ち込んでも、The following error was encountered:Errno 13 Permission denied: '/var/log/letsencrypt'Either run as root, or set --config-dir, --work-dir, and --logs-dir to writeable paths. と出る
原因:
解決法:sudo certbot certonly --nginx -d yuiseki.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Could not choose appropriate plugin: The requested nginx plugin does not appear to be installed The requested nginx plugin does not appear to be installed
解決法:
sudo add-apt-repository -r ppa:certbot/certbot
sudo apt-get update
sudo apt install python3-certbot-nginx
E: Package 'python-certbot-nginx' has no installation candidate
E: The repository 'http://ppa.launchpad.net/certbot/certbot/ubuntu focal Release' does not have a Release file.
定期的に証明書を更新するように設定
sudo systemctl status certbot.timer
nginxでhttpでリクエストが来たらhttpsにリダイレクトするように設定
#あとで書く
サブドメインを設定する
crisis.yuiseki.net みたいなやつ
#あとで書く