1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

さくらのレンタルサーバにてpythonで記述したCGIを動かす

Last updated at Posted at 2020-05-04

はじめに

さくらのレンタルサーバでスタンダードプランを利用しています。
Pythonで記述したシンプルな「Hello World」プログラムを作成して、
CGIとして動作させるまでを説明します。

Pythonで記載したプログラム

Hello.cgi
#!/usr/local/bin/python
print "Content-Type: text/html\n\n"
print "Hello World"

ファイル作成に関する留意点

ファイルの拡張子

「py」ではなく「cgi」にする必要があります(※1)。

※1:実は、拡張子をpyのままでcgiとして動作させる方法もあり、
 これにについては、後述の「.htaccessの要否」をご参照ください。

文字コードと改行記号

文字コードを「UTF-8」にして、
改行記号を「LF」にすると良いです。
他の組み合わせだとエラーになることがあるそうです。

pythonへのコマンドパス

上記の「Hello.cgi」の1行目に記載されているpythonへのコマンドパス。
最新の情報は、さくらのサポートページ>「レンタルサーバサービス仕様」>「CGI・PHP・SSI について」のページで「プログラムのコマンドパス」という項目があるのでここで確認してください → さくらのサポートページ

レンタルサーバへのアップ

アップ先

作成したファイル「Hello.cgi」のアップ先は、ドキュメントルート(/home/アカウント名/www/)以下であればどこでも良く、ドキュメントルート以下に新しく作成したフォルダでも良いです。

権限の設定

ファイルパーミッションは、 755、705、700(※2)のいずれかに設定する必要があります。

また、ドキュメントルート以下に作成されたフォルダ内にファイル「Hello.cgi」をアップした場合は、ファイル「Hello.cgi」があるフォルダに対しフォルダパーミッションとして755、705、700(※2)のいずれかに設定する必要があります。

※2:さくらのサポートページには、
「755または705のいずれかに設定」と記載されていますが
コメント欄でご指摘を頂いた通り「700」でも動作しました。
セキュリティ面を考えると「700」がより良いように思います。

.htaccessの要否

「.htaccess」は不要です。

ただ、コメント欄でご指摘を頂いた通り、
このままですと拡張子「py」を「cgi」に直さないといけないので非効率です。
そこで、以下を記述した.htaccessを作成して
拡張子「py」のままでもcgiとして動作できるようにする
という方法もあります。

.htaccess
AddType application/x-httpd-cgi .py

参考(さくらのサポートページ)

最新の情報は、
さくらのサポートページ>「レンタルサーバサービス仕様」>「CGI・PHP・SSI について」のページで「ファイル、ディレクトリの設定」という項目があるのでここで確認してください → さくらのサポートページ

#動作確認
ブラウザで「hello.cgi」が配置されているURLを指定して
「Hello World」が表示されることを確認します。
URL指定例:
「hello.cgi」をドキュメントルートへ配置した場合は、
「https://(ドメイン名)/hello.cgi」となります。

#あとがき
ちょっとPythonでCGIを試してみようとしたときに、
簡単な事例があると便利だ!と思いましたので、
この投稿をしました。誰かのお役に立てれば幸いです。

1
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?