
Ubuntu日本語フォーラム

ログインしていません。
自分用に、serverを構築しようと思い、VirtualBox上にUbuntu10.04serverをインストールしました。
GUI操作ができるよう、desktopを追加インストールして、その後自分のIPアドレスにブラウザからアクセスしてみると、
/var/wwwのindex.htmlが表示されました。
ここで質問なのですが、このindex.htmlは編集できないのでしょうか?
パーミッションでロックされています。
いろいろと文献を検索しましたが、見つからなかったので以下もお願いします。
1.DocumentRootを変更したい場合は、どのファイルを変更すればよいのですか?
いろいろなファイルの中にDocumentRootの記述がありますが、これは統一するべきなのでしょうか。
2.また、/home/username/public_htmlを作成し、その中にindex.htmlを作成しましたが、http://localhost/~username/でアクセス出来ません。
3.CGIも使えるようにしたいのですが、どこを変更していいかわかりません。
以上の3つ、全て検索したところある程度は出ましたが、
なぜそこを編集するのか、それによってどうなるかがよくわからず、ややこしくなるのでやめました。
ですので、「そのファイルのその部分はこういう意味があるからこうする」のように理由含めて知りたいのです。
長くなりましたが、どなたかご教授願います。
オフライン
/var/wwwのindex.htmlが表示されました。
ここで質問なのですが、このindex.htmlは編集できないのでしょうか?
パーミッションでロックされています。
$ sudo gedit /var/www/index.html
とすれば編集出来ますよ。
1.DocumentRootを変更したい場合は、どのファイルを変更すればよいのですか?
いろいろなファイルの中にDocumentRootの記述がありますが、これは統一するべきなのでしょうか。
DocumentRoot を変更するには、/etc/apache2/sites-available/default を編集すれば良いのですが、これはデフォルトの雛形ファイルなので、出来れば直接編集せずに、コピーを取りそれを編集します。
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/hoge
$ sudo a2dissite default
$ sudo gedit /etc/apache2/sites-available/hoge
として、ServerAdmin や DocumentRoot を変更、保存。
$ sudo a2ensite hoge
$ sudo service apache2 restart
といった感じです。
2.また、/home/username/public_htmlを作成し、その中にindex.htmlを作成しましたが、http://localhost/~username/でアクセス出来ません。
userdir を使用するには、LoadModule userdir_module /usr/lib/apache2/modules/mod_userdir.so を有効にしなくてはいけません。
このためには、
$ sudo a2enmod userdir
$ sudo service apache2 restart
とします。
3.CGIも使えるようにしたいのですが、どこを変更していいかわかりません。
CGI は本来デフォルトで有効になっているはず(他の投稿でどうしても動かないというのがありましたが)なので、適切に設置してやれば、普通に動くはずです。
デフォルトの CGI ディレクトリは、/usr/lib/cgi-bin/ です。
Ubuntu ではこれ以外のディレクトリで CGI を動かすのは、セキュリティ上の理由であまりお勧めしていないようなのですが、例えばホームディレクトリ配下で動かしたければ下記のようにします。
ここでは仮に、/home/hoge/www/ を DocumenRoot にしていて、その下に cgi-bin ディレクトリを作り、その中で動かしたいとすると、
ScriptAlias /cgi-bin/ /home/hoge/www/cgi-bin/
<Directory "/home/hoge/www/cgi-bin/">
AllowOverride None
Options +ExecCGI FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>のような内容を、<VirtualHost *:80></VirtualHost> 内に記述しておきます。
なお、言わずもがなかと思いますが、CGI の実行ファイルは、chmod 755 しておかないと動きません。
Ubuntu(Debian) の apache2 はその設定方法や設定ファイルが独自なものなので、最初相当面喰らうかと思いますが、慣れるとかなり使いやすくて面白いです。
もし、apache2 そのものの基本的な使い方を教えてほしいと言うことでしたら、何か1冊基本書をお読みになることをお勧めします。設定方法が独自なだけで、考え方などはデフォルトの apache2(apache.org) とまったく同じですので。
ちょっと急いで書いたので、間違ったことを書いていたらツッコミ希望。
オフライン
butachokinさん による投稿:
!) パーミッションでロックされています。
2) DocumentRootを変更したい場合は、どのファイルを変更すればよいのですか?
3) いろいろなファイルの中にDocumentRootの記述がありますが、これは統一するべきなのでしょうか。
4) また、/home/username/public_htmlを作成し、その中にindex.htmlを作成しましたが、http://localhost/~username/でアクセス出来ません。
5) CGIも使えるようにしたいのですが、どこを変更していいかわかりません。
1) 新規にindex.htmlを指定したDocumentRootに置けば良いです。
/etc/apache2/site-available/defaultか/etc/apache2/site-enabled/000-defaultを編集していないなら、/var/www/以下に
index.htmlを配置すればOKです。
2と4) http://localhost/~username/index.htmlとしてアクセスしたいなら/etc/apache2/site-enabled/000-defaultを編集します。
DocumentRoot /var/www
<directory />
Options FollowSymLinks
AllowOverride None
< /directory>
以下のように書き換える
DocumentRoot /home/username/public_html
<directory />
Options FollowSymLinks
AllowOverride None
< /directory>
usernameは*(アスタリスク)でも可。異なるアカウントを作成したときに楽かも。
3) いろいろなファイルとは?あまりいじると分け分からなくなりますよ。
5の1)/etc/apache2/mods-enabled/mime.confの編集
164行目以降に
AddHandler cgi-script .cgi .pl ((.plを書き加える))
としておくと、フリーで配布されている多くのCGIスクリプトも動きます。
rubyとかだったら、.rbだったかな?
5の2) /etc/apache2/site-enabled/000-defaultの下の方に
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</directory>
と書かれているように、cgiファイルを/usr/lig/cgi-binフォルダに置くとCGIファイルとして認識し、動作しますよという設定です。
これを/home/user/cgi-binにCGIファイルを配置したい場合は
ScriptAlias /cgi-bin/ /home/*/cgi-bin/
<Directory /home/httpd/cgi-bin>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</directory>
と編集します。これで、http://localhost/~user/cgi-bin/hoge.cgi(or hoge.pl)で動くはずです。
あとは設置するCGIファイルのパーミッションに気をつければOKです。
オフライン
>>petitbootangさん
いろいろとご教授くださり、ありがとうございました。
なんとかこうとか/home/name/domainにdocumentrootを設定でき、またその中のindex.htmlの表示にも成功しました。
また、
Ubuntu ではこれ以外のディレクトリで CGI を動かすのは、セキュリティ上の理由であまりお勧めしていないようなのですが、
というのは、非推奨であって、別にそれほど問題ないということですか?
それとも、セキュリティホールが発生する可能性が格段とあがる、ということですか?
セキュリティなどはしっかりとしたいので、ご教授よろしくお願いします。
>>zaganさん
usernameは*(アスタリスク)でも可。異なるアカウントを作成したときに楽かも。
というのを見て、/home/*/domainとdocumentrootを設定してみたのですが、404になってしまいました。
使い方がおかしいのでしょうか?
"sudo vi /etc/apache2/sites-available/domain"というコマンドで編集しました。
オフライン
butachokinさん による投稿:
usernameは*(アスタリスク)でも可。異なるアカウントを作成したときに楽かも。
というのを見て、/home/*/domainとdocumentrootを設定してみたのですが、404になってしまいました。
使い方がおかしいのでしょうか?
"sudo vi /etc/apache2/sites-available/domain"というコマンドで編集しました。
ユーザーディレクトリに"domain"フォルダがありますか?
なければ作成して、そのフォルダの中にコンテンツを入れちゃってください。
sudo vi /etc/apache2/sites-available/domain
というのは、domainという設定ファイルを/etc/sites-available配下に作りましたよという意味ですよね。
で、このdomainと言うファイルの内容は同じディレクトリにあるdefaultのコピーになりますか?
cat /etc/apache2/sites-available/domain
として表示される内容が、defaultの内容からbutachokinさんが編集した内容に変更されていることを確認してください。
そのうえで、
sudo a2dissite default # 初期設定ファイルの無効化 sudo a2ensite domain # 新規設定ファイルの有効化 sudo apache2ctl cofigtest # 設定ファイルの文法チェック sudo /etc/init.d/apache2 restart # 再起動 (or) sudo service apache2 restart # 上記再起動で動作しない場合は、こちら
を実行して、Syntax ErorrとかNoteiceとか帰ってこなかったらOKです。
サーバーは、設定変更した時、必ず再起動させて変更を反映させるものだと思っておいたらよいかも。
オフライン
言わずもがなですが
ディレクトリ構成とファイルの配置についてのおまけ。
今回の設定では、たとえばindex.htmは
/home/user/domain/配下に
cgiファイルは
/home/user/domain/cgi-bin配下に
配置することになります。
オフライン
butachokin による投稿:
Ubuntu ではこれ以外のディレクトリで CGI を動かすのは、セキュリティ上の理由であまりお勧めしていないようなのですが、
というのは、非推奨であって、別にそれほど問題ないということですか?
それとも、セキュリティホールが発生する可能性が格段とあがる、ということですか?
それは秘密です・・・。
と言うのはウソですが、ごめんなさい、詳しい理由は私には分かりません。
セキュリティホールになることがあるので注意してください、と言うような説明しか見たことがなく、実際にどのようなことを想定しているお話なのかは、詳しい説明が見つからないんですよね、探し方が悪いのかも知れませんが。
思うに、自分以外の複数のユーザにホームページスペースを提供しているような場合、そのユーザディレクトリで万一、悪意のあるスクリプトを実行された場合(実行したユーザ自体に悪意があるとは限らない)、サーバを奪取されたりしかねないので、その辺の注意喚起をしているのではないかと思われますね。
その道で何年も飯を食っている専門家でもサーバを乗っ取られたりしているわけですから、サーバ管理者以外のユーザに CGI を実行させるのは、よほど注意しないと危険ですよ、ということだと思います。
オフライン
お返事ありがとうございます。
>>補足です
/etc/apache2/sites-available/配下にdomainというdefaultのコピー(編集済み)があります。
同じく、/home/nema/配下にdomainというディレクトリがあります。
domain配下にはindex.htmlがあります。
質問ばかりで申し訳ないのですが、
回答内容や文献を読んでると、疑問がでたので質問させていただいきます。
/etc/apache2/site-enabled/000-default
と、
/etc/apache2/sites-available/default
は何が違うのですか?
どちらを編集するかが文献によって様々で、困惑しています。
それと、CGIの設定も行ないましたが、perlは正常に動作するものの、Rubyが動きません。
踏んだ手順は以下のとおりです
1.sudo apt-get install libapache2-mod-ruby
2./etc/apache2/sites-available/domain の該当部を
ScriptAlias /cgi-bin/ /home/name/domain/cgi-bin/
<Directory "/home/name/domain/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
に変更。
3./home/name/domain/cgi-bin配下にtest.cgi(perl),test2.cgi(ruby)を作成、ともに755にchmod。
test.cgiおよび2.cgiの中身は
print "Content-type: text/html\n\n";
print "Hello";
で、パス部は
perl: #!/usr/bin/perl
Ruby: #!/usr/bin/ruby
にしました。
4.http://localhost/cgi-bin/test.cgiにアクセス→Hello
5.http://localhost/cgi-bin/test2.cgiにアクセス→500 error
となります。
Rubyを別途、apt-get install rubyするべきなのでしょうか?
はたまた、単なる設定ミスなのでしょうか?
オフライン
>>petitbootangさん
入れ違い、というかよりもリロードしてなかったので書き込みが間に合いませんでした;
思うに、自分以外の複数のユーザにホームページスペースを提供しているような場合、そのユーザディレクトリで万一、悪意のあるスクリプトを実行された場合 (実行したユーザ自体に悪意があるとは限らない)、サーバを奪取されたりしかねないので、その辺の注意喚起をしているのではないかと思われますね。
たしかに、納得しました。
ただ今回は、自分で使用、もしかしたら友人に貸して上げる程度の予定なので、それほど気にかけないことにします。
ただしその友人が裏切ったら・・・
なんて暗いことはなしの方向で(笑
オフライン
$ dpkg -l | grep ruby
としてみて、何も表示されずにプロンプトに戻ってしまう場合、ruby がインストールされてませんので、
$ sudo apt-get install ruby
オフライン
>ただしその友人が裏切ったら・・・
>
と言うか、その友人がどこからか極悪なスクリプトを拾ってくるかも知れませんので、その辺は充分気をつけていた方が良いということですね、お友達はもちろん悪人ではないと思いますので。
オフライン
butachokinさん による投稿:
回答内容や文献を読んでると、疑問がでたので質問させていただいきます。
/etc/apache2/site-enabled/000-default
と、
/etc/apache2/sites-available/default
は何が違うのですか?
sites-available配下にあるファイルをa2ensiteコマンドで有効化すると、sites-enabledにリンクが貼られ、そこで初めて公開が有効となります。
sites-available配下のファイルを編集した場合、即座にsites-enabled配下の有効化されたファイルに反映します。
sites-enabled配下のファイルを直接編集してもかまいません。
※編集したら、apache2の再起動を忘れずに。
butachokinさん による投稿:
それと、CGIの設定も行ないましたが、perlは正常に動作するものの、Rubyが動きません。
踏んだ手順は以下のとおりです
1.sudo apt-get install libapache2-mod-ruby
2./etc/apache2/sites-available/domain の該当部を
<!----snip--->
に変更。
/etc/apache2/mods-enabled/mime.confで
164行目以降に
AddHandler cgi-script .cgi .pl .rb
などと、rubyファイルの拡張子を加えてますか?
butachokinさん による投稿:
3./home/name/domain/cgi-bin配下にtest.cgi(perl),test2.cgi(ruby)を作成、ともに755にchmod。
test.cgiおよび2.cgiの中身は
<!---snip--->
Rubyを別途、apt-get install rubyするべきなのでしょうか?
はたまた、単なる設定ミスなのでしょうか?
rubyは動かしたことないのですが、libapache-ruby1.8はインストールされてますか?
オフライン
$ dpkg -l | grep rubyした結果、
ii libapache-ruby1.8 1.2.6-2 Ruby libraries for mod_ruby
ii libapache2-mod-ruby 1.2.6-2 Embedding Ruby in the Apache2 web server
ii libruby1.8 1.8.7.249-2 Libraries necessary to run Ruby 1.8
と表示されました。
/etc/apache2/mods-enabled/mime.confの165行目を、
AddHandler cgi-script .cgi .pl .rb
としました。
そして、errorログ(/var/log/apache2/error.log)を参照してみると、
[Mon Sep 13 20:49:44 2010] [error] [client 192.168.11.12] Premature end of script headers: test2.cgi
と表示されました。
その友人がどこからか極悪なスクリプトを拾ってくるかも知れませんので、
そうですね、気をつけたいと思います。
オフライン
>>zaganさん
おおおおっ
動きました、ありがとうございます!
mod等をインストールしていても、コアとなるRubyがなかったのでerrorだった、ということでしょうか?
いずれにせよ、動いてよかったです。
明日までの課題も、いまからできそうです笑
オフライン