千夜一夜

人生は短い、それはまるでたった1日のように

てがろぐCGIをAWSのEC2(とS3)で設置できた

本ページはプロモーションを含んでいます。

AWSのEC2で「てがろぐCGIを設置しました。

てがろぐ セットアップ(設置)方法 - にししふぁくとりー

大まかな手順と参考にしたリンクをまとめます。(EC2インスタンスとS3バケットの立ち上げ手順は省略しました。)

コマンドの実行環境はMacです。

 

EC2のインスタンスを立て、SSHで接続

有料レンタルサーバーを借りる予定でしたが、勉強を兼ねてAWSのアカウントを作り無料枠を利用しました。

EC2インスタンス内にPerlApacheを導入

Perlのインストール

CGIの実行に必要なPerlが入っていなかったので、インストールしました。

sudo yum -y install perl perl-CGI

AWSインスタンス作成後にやった事 | AC-5

Apacheのインストール

続いて、EC2インスタンス内にwebサーバApacheをインストール。

sudo yum -y install httpd

図解で解説!! 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へのコピーに使用したコマンドは、ファイルとフォルダそれぞれ以下の通りです。

例: my-bucket バケット内のファイルをローカルの out ディレクトリにダウンロード

$ aws s3 cp s3://my-bucket/sample.txt out

例: my-bucket バケット内の全てのファイルを再帰的にローカルの out ディレクトリにダウンロード

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

Linuxで自宅サーバー構築(ApacheでのCGI設定)

CGIプログラムが動かずにソースが表示される - やってみようよ!

 

swapファイルの競合で編集できない場合

設定ファイルをvimで開こうとしたときバックアップと競合してエラーが出ることがあります。コマンドで一律削除することで解消しました。

sudo find . -name '.*.swp'|xargs sudo rm

Vim – SWAPファイル(.swp)の復元と不要ファイルの削除方法 | Howpon[ハウポン]

 

Apacheの再起動

設定ファイルの更新後は、Apacheを再起動すると変更が反映されます。

sudo httpd -k restart

Apache | Apacheの起動と停止(サービスとコンソールアプリケーション)

 

ここまでの手順を実行後、CGIファイルをブラウザで開くとてがろぐのページが表示されました。