EC2マイクロインスタンスでlighthttpdからCGIスクリプトを提供するにはどうすればよいですか?たとえば、Python CGI?
まあ、それは半日かかりましたが、lighttpdサーバーを使用して、無料のAmazon AWS EC2マイクロインスタンスでPython cgiを実行しています。仲間の初心者がすべてのステップを1か所にまとめるのに役立つと思います。以下の簡単な手順で準備を整えれば、セットアップに15分しかかかりません。
これを読んでいる経験豊富なユーザーに対する私の質問は、私がやったことにセキュリティ上の欠陥はありますか?(ファイルおよびディレクトリの許可を参照してください。)
ステップ1:EC2インスタンスを起動して、sshを実行します。
[明らかに、Amazon EC2にサインアップして、キーペアを* .pemファイルに保存する必要があります。Amazonがそれを行う方法を教えてくれるので、これについては触れません。]
AWSアカウントにサインインし、EC2インスタンスを開始します。Webにはこれを行うためのチュートリアルがあります。Amazonが提示するデフォルトのインスタンスサイズは「小さい」ことに注意してください。これは「マイクロ」ではないため、費用がかかります。必ず手動で「マイクロ」を選択してください。(マイクロインスタンスは最初の1年間のみ無料です...)
実行中のインスタンスのパブリックDNSコードを見つけます。これを行うには、ダッシュボードの上部ペインでインスタンスをクリックすると、最終的に下部ペインに「パブリックDNS」フィールドが表示されます。(少し調整する必要があるかもしれません。)パブリックDNSは次のようになります。
ec2-174-129-110-23.compute-1.amazonaws.com
Unixコンソールプログラムを起動します。(Max OS Xでは、ターミナルと呼ばれ、アプリケーション->ユーティリティフォルダーにあります。)
AWSキーペアを含む* .pemファイルがあるデスクトップシステムのディレクトリにcdします。
次のようなコマンドを使用してEC2インスタンスにsshします。
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
だから、私にとってこれは:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
EC2インスタンスがあなたを許可します。
ステップ2:EC2インスタンスにlighttpdをダウンロードします。
lighttpdをインストールするには、EC2インスタンスでrootアクセスが必要です。問題は、Amazonでrootとしてサインインできないことです。(少なくとも単純ではありません。)しかし、回避策があります。次のコマンドを入力します。
sudo /bin/bash
システムのプロンプト文字が$から#に変わります。このプロセス全体の最後のステップまで「sudo」を終了しません。
lighttpdアプリケーション(バージョン1.4.28-1.3.amzn1の場合)をインストールします。
yum install lighttpd
lighttpdのFastCGIライブラリをインストールします(必要ではありませんが、なぜ必要ないのですか?):
yum install lighttpd-fastcgi
サーバーが機能していることをテストします。
/etc/init.d/lighttpd start
ステップ3:外の世界にあなたのサーバーを見せる。
デスクトップのブラウザからサーバーにアクセスしようとすると、失敗します。理由:デフォルトでは、Amazon AWSはEC2インスタンスへのポートを開きません。そのため、ポートを手動で開く必要があります。
デスクトップのブラウザーでEC2ダッシュボードに移動します。左ペインの[セキュリティグループ]をクリックします。右上のペインに1つ以上のセキュリティグループが表示されます。インスタンスを起動したときにEC2インスタンスに割り当てられたものを選択します。
「許可された接続」というテーブルが右下のペインに表示されます。ポップアップメニューを使用すると、接続方法として「HTTP」を選択できます。
テーブルのその行の他の値は、tcp、80、80、0.0.0.0 / 0である必要があります。
ブラウザのデスクトップからEC2インスタンスのサーバーにアクセスします。以前にSSHで使用したパブリックDNSアドレスを使用します。lighttpdの汎用Webページが表示されます。あなたがそうしなければ、私はそのような初心者なので私はあなたを助けることができません。:-(
ステップ4:CGIを提供するためにlighttpdを構成します。
コンソールプログラムに戻り、lighttpdの構成ディレクトリに移動します。
cd /etc/lighttpd
CGIを有効にするには、<modules.conf>ファイルの1行のコメントを解除します。(Fast CGIを有効にできたかもしれませんが、赤ちゃんの手順が最適です!)次のように「ed」エディターでこれを行うことができます。
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
CGIプログラムが存在するディレクトリを作成します。(/etc/lighttpd/lighttpd.confファイルは、これがどこにあるかを決定します。)デフォルトの場所にディレクトリを作成するため、設定ファイルを編集する必要はありません。
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
もうすぐ!もちろん、テストCGIプログラムをcgi-binディレクトリに配置する必要があります。以下がその1つです。
cd cgi-bin
ed
a
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body>Hello, pyworld.</body></html>"
.
w hellopyworld.py
q
chmod 655 hellopyworld.py
lighttpdサーバーを再起動します。
/etc/init.d/lighttpd restart
CGIプログラムをテストします。デスクトップのブラウザで、次のURLにアクセスして、EC2インスタンスのパブリックDNSアドレスを置き換えます。
http://<<Public DNS>>/cgi-bin/hellopyworld.py
私にとって、これは:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
ステップ5:それだけです!片付けて、ありがとう!
前述の「sudo / bin / bash」コマンドを終了するには、次のように入力します。
exit
謝辞:感謝の山:
wiki.vpslink.com/Install_and_Configure_lighttpd
www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html
aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html
頑張って、アミゴス!この「質問」の非伝統的な性質をおizeび申し上げますが、Stackoverflowから多くの助けを得て、何かを返すことに熱心でした。