Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@SFITB

Nimのcgiをさくらのレンタルサーバで実行する

実施方針

  • 共有サーバ上のため、サーバ内ではコンパイルせず、ローカルの仮想環境上のFreeBSDにてコンパイルしcgiをサーバにアップロード。

環境

  • Windows10 Pro.
  • 仮想実行環境:Hyper-v
  • 仮想マシン:FreeBSD12.2
  • さくらのレンタルサーバ(プレミアム): FreeBSD 11.2-RELEASE-p14 amd64

手順

FreeBSDの仮想マシンを設定

FreeBSDに、pkgを利用してNimをインストール。

pkg update -f
sudo pkg install nim
  • nimbleを使う場合は、gitが必要なので、pkgでgitをインストールする。
sudo pkg install git

FreeBSDでnimのcgi用コードを作成.

  • ただ、「test」と表示するだけのコード。
import cgi

writeContentType()
writeLine(stdout, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">")
writeLine(stdout, "<html><head><title>Test</title></head><body>")
writeLine(stdout, "test ")
writeLine(stdout, "</body></html>")

C言語のバイナリをコンパイル

nim --o:test.cgi cc test.nim

さくらのレンタルサーバにアップロード

  • FTP経由で上記のバイナリを公開ディレクトリにアップロード。このとき「バイナリ」で転送することに注意する。

cgiファイルのパーミッションを変更

  • ファイルが実行できるよう、「755」、または、「705」にパーミンションを変更。

表示確認

  • ブラウザで、以下のURLにアクセス。
  • サンプルコードの「test」が表示されれば成功。
https://[アクセスドメイン]/test.cgi

エラーについて

 ブラウザでアクセスした時に、InternalServerError(500)になる場合、以下のようなエラーログが管理画面から確認できます。

/home/XXXX/www/YYYY/test.cgi: Shared object has no run-time symbol table: /home/XXXX/www/YYYY/test.cgi

[cgi:error] [pid 24132] [client XXX.XXX.XXX.XXX:0] End of script output before headers: test.cgi

 いろいろな原因があると思いますが、私の場合、FTPの際にバイナリでの転送をしていないために起きていました。
参考までに。

最後に

 かなり端折って書きましたが、とりあえず、nimのコードでつくったcgiファイルをさくらのレンタルサーバで実行できることは確認しました。
 もっと簡単な方法があれば、コメントに書いてもらえると助かります。
 コーディング、デバッグ、デプロイまでをもっと簡単にできる方法を実験して、それができたらまた投稿したいと思います。
 もっと、Nimmerが増えることを期待しています。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?