利用しているサーバー

kagoya(カゴヤ)のクラウド/VPSサーバー
※月額がとても安価な上にセキュリティやメール大量送信にも適しているのでオススメです。
安価でサーバーを使いたい、初めてながらVPSの勉強もしたい人には特にうってつけです。


kagoyaVPSのFTPサーバーでCGIが動作せずに何ヶ月も葛藤しました。

テスト用のCGIにアクセスしても「ソースがそのまま表示されるだけ」でした。

CGIが許可されていないのだということでhttpd.confに

AddHandler cgi-script .cgi .pl

と書き加えても今度は403 Forbiddenになっていました。

エラーログを見るとパーミッションエラーだったので700,701,705,755,777などあらゆる番号を試しましましたがダメでした。

最終的な解決法となった結論から言うと

# yum install perl-CGIをインストールして

ファイルは755でディレクトリは全て777にしたらアクセスできるようになりました。

kagoyaVPSは公式ページ説明にもあるように/var/www/htmlであればCGIは動作するようになっています。

よってhttpd.confの内を以下のような形に書き換えました。



AllowOverride All
Options +ExecCGI
AddHandler cgi-script .pl .cgi
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCG MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# https://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
Options Indexes ExecCGI FollowSymLinks

アクセスさえできればCGIは使えるのでとりあえずはよかったかなと思います。

以下に試行錯誤した奮闘日記を載せますが、この中でも

Perlの場所確認
whereis perl

…で
/usr/bin/perl
などどこになっているかを確認すること、

しっかりアスキーモードでアップロードされていること、

それでもダメならsuexecの確認・変更・停止などを行うことなどが影響があったかなと思います。

以下、奮闘日記↓
___________________________________________________________
●試したこと1
【アップロードやパーティションの変更】(KAGOYAのサポートページを参考に)

KAGOYAの以下のサイトの手順にそって

カゴヤのサイトのCGIの設定方法を参考に
https://support.kagoya.jp/manual/cgi/cgi.html

FileZillaでアップロードし、TeraTermから操作しています。

しかし

https://(カゴヤのURLドメイン)/○○○.cgi

で実行しても、「ブラウザにCGIファイルのソースのみが表示」されてしまいます。

/home/アカウント/public_html 以下にCGIファイルを設置し、
「テキストモード(アスキーモード)」でファイル類をアップロードしました。
(基本はアスキーモードでのアップロードでOKです)

ちなみに一度削除して、「バイナリモード」や「自動」でのアップロードも試しましたが変化ありませんでした。

Perlは設定通り
#!/usr/bin/perl
に合わせてあります。

CGI側の設定も同じです。

マニュアルには700推奨とありましたが、suexec下なのでパーミッションが変わるのでフォルダからCIGファイルまで755ですべて設定しても結果は同じでした。

ちなみにCGIのパーミッションは
700だとソースがそのまま表示
705や777だと「403 Forbidden」でした。

ファイルやディレクトリまで755などでいろいろ設定しましたが結果は同じくダメでした。

●試めしたこと2
【httpd.confにCGIの書き加え】

同じような事例が以下のサイトにあったので、

CGIを表示するとソースがそのまま表示される
https://centossrv.com/bbshtml/webpatio/2496.shtml

それにそってhttpd.confに

Options Includes ExecCGI FollowSymLinks
AllowOverride All
AddHandler cgi-script .cgi .pl←追記

を書き加えてみたのですが、Internal Server Errorになってしまいました。
(もちろんその後、httpdの再起動によるApacheの再起動しています)

そもそも
AddHandler cgi-script .cgiを有効にすると「403 Forbidden」になってしまいます。
(ソースが表示されることはなくなりますが・・)

パーミッションを700,701,705,755,777などに変えてアクセスしてもダメでした。

また上部にある


Options Includes ExecCGI FollowSymLinks
AllowOverride All
#Options +ExecCGI←コメントアウトしたり外したり
AddHandler cgi-script .pl .cgi←追記

下部にある

こうなってたのを

#Option ExecCGI
#AddHandler cgi-script .cgi .pl

こうしました

Options +ExecCGI
AddHandler cgi-script .pl .cgi

Options Includes ExecCGI FollowSymLinks

など、いろいろ試行錯誤したのですが変化はありませんでした。

Options +ExecCGI

AddHandler cgi-script .pl .cgi

・・を書き込むと、「403 Forbidden」になってしまい、書き込まないとアクセスはできますがCGIのソースがそのまま表示されるだけになってしまいます。

カゴヤではなく、さくらサーバーでは同じような状況の場合.htaccessの最初のOptions -Indexes +ExecCGIに#を入れて再アップロードすると使えることもあるそうなので、試してみたのですが、やはりソースが表示されるだけで変化はありませんでした。
(もちろんその後、httpdの再起動によるApacheの再起動しています)

●試したこと3
上記を試した後、今度は
【suexecの確認・変更・停止】
を行いました。

○suexecの確認

suexecの以下↓も試して

Forbiddenが表示される、中身(ソース)が表示される
https://www.cside.jp/SP_pri/cgi/trouble/tro01.html

public_html下であること、フォルダ名がcgiやcgi-binなどで専門フォルダと重複してないこと、なども確認済みです。
ファイルの文字コードは「utf8」です。

vi /etc/httpd/conf/httpd.conf

/etc/rc.d/init.d/httpd restart
でhttpdの再起動によるApacheの再起動

chkconfig httpd on

までもちろん組み合わせて行いましたが、やはりCGIのソースがそのままブラウザに表示されてしまうだけでした。

○suexecの停止

suexecの実行ファイルをリネームして、apacheを再起動しました。

(1)
$ mv /usr/sbin/suexec /usr/sbin/suexec_back
$ /etc/init.d/httpd restart

これをやってリネームしました

今は停止させてる状態です。

(2)さらに以下を参考にこれを行いました。

(参考)
https://www.php-mysql-linux.com/linux/selinux-dis …

vi /etc/sysconfig/selinux

下記を記入し保存します。
SELINUX=disabled
再起動

もちろん:w、:qで更新保存するなど変更ごとに細かく確認しています。

これらを行っても尚、

テスト用のCGI(パーティション755)にアクセスしても「ソースがそのまま表示されるだけ」です。
httpd.confに

AddHandler cgi-script .cgi .pl
Options +ExecCGI

などと書き加えても今度は403 Forbiddenになってしまいました。

___________________________________________________________

何らかの参考になれば幸いです。