大まかな手順と参考にしたリンクをまとめます。(EC2インスタンスとS3バケットの立ち上げ手順は省略しました。)
コマンドの実行環境はMacです。
- EC2のインスタンスを立て、SSHで接続
- EC2インスタンス内にPerlとApacheを導入
- S3のバケットを作成し、必要ファイルを格納
- S3バケット内の資源をEC2のディレクトリにコピー
- tegalog.cgiの1行目を編集
- パーミッションの設定
- Apacheの設定ファイルを編集
- Apacheの再起動
EC2のインスタンスを立て、SSHで接続
有料レンタルサーバーを借りる予定でしたが、勉強を兼ねてAWSのアカウントを作り無料枠を利用しました。
EC2インスタンス内にPerlとApacheを導入
Perlのインストール
CGIの実行に必要なPerlが入っていなかったので、インストールしました。
Apacheのインストール
続いて、EC2インスタンス内にwebサーバApacheをインストール。
図解で解説!! Apache、Tomcatってなんなの? - Qiita
Amazon EC2(Linux)でWebサーバ構築(Apache利用) - Qiita
Apacheを起動
sudo httpd -k start
Apache | Apacheの起動と停止(サービスとコンソールアプリケーション)
起動コマンドの実行後に「パブリック IPv4 DNS」のオープンアドレスにアクセスしたところ、「It works!」が表示されました。
S3のバケットを作成し、必要ファイルを格納
sambaでのファイル共有も検討したものの、S3にファイルを配置してEC2にコピーする方法を取ることにしました。GUIでアップロードできて便利。
EC2にSambaを構築してWindowsからファイル共有してみた – ナレコムAWSレシピ | AIに強い情報サイト
バケットの作成時は、リージョンをEC2と合わせることで接続が無料となります。(別リージョンでバケットを作成した後に知ったので、削除してやり直しました。)
EC2からS3へアクセスする4つのルートとコスト - NRIネットコムBlog
S3バケット内の資源をEC2のディレクトリにコピー
後述のApache設定ファイルで「DocumentRoot」として記載してあったディレクトリ"/var/www/html"にてがろぐのファイルとフォルダを配置しました。
S3からEC2へのコピーに使用したコマンドは、ファイルとフォルダそれぞれ以下の通りです。
syncコマンドで同期することも可能ですが、変更が上書きされるリスクも考えてコピーでの配置にしました。
tegalog.cgiの1行目を編集
公式サイトの記載に沿って一度はそのまま実行。結果的に、上の工程でインストールしたperlの格納場所に合わせて書き換えました。
#! /usr/bin/env perl
↓
#! /usr/bin/perl
nano vim /Mac ターミナルの基本的な使い方・操作方法(2)エディタ
パーミッションの設定
公式サイトのパーミッション設定表に出ていた値を順に試した結果、最終的に「一般の場合」カッコ内の値を設定しました。
パーミッションの変更は、chmodコマンドで数字を指定するのが楽でした。
Macターミナルコマンド「chmod」の使い方 | D-Box
Apacheの設定ファイルを編集
設定ファイルhttpd.confを取得
「httpd.conf 場所」で検索して確認。
候補のうち"/etc/httpd/conf/"で見つかりました。
Apacheの設定ファイル httpd.confの場所 - Qiita
httpd.confを編集
配置したディレクトリの指定箇所で、以下の太字箇所を追記しています。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Options ExecCGI #cgiファイルの実行文
AddHandler cgi-script .cgi #cgi拡張子をcgiファイルとして読ませる
AddHandler text/css .css #css拡張子をcssファイルとして読ませる
AddHandler image/jpg .jpg #jpg拡張子をjpgファイルとして読ませる
Require all granted
</Directory>
CGIの実行文と拡張子.cgiの指定だけだとCSSと画像の読み込みで500エラーが出てしまったので、cssファイルとjpgの指定も入れる必要がありました。
Apache Tutorial: CGI による動的コンテンツ - Apache HTTP サーバ バージョン 2.2
CGIプログラムが動かずにソースが表示される - やってみようよ!
swapファイルの競合で編集できない場合
設定ファイルをvimで開こうとしたときバックアップと競合してエラーが出ることがあります。コマンドで一律削除することで解消しました。
sudo find . -name '.*.swp'|xargs sudo rm
Vim – SWAPファイル(.swp)の復元と不要ファイルの削除方法 | Howpon[ハウポン]
Apacheの再起動
設定ファイルの更新後は、Apacheを再起動すると変更が反映されます。
sudo httpd -k restart
Apache | Apacheの起動と停止(サービスとコンソールアプリケーション)
ここまでの手順を実行後、CGIファイルをブラウザで開くとてがろぐのページが表示されました。