(20220526 作業メモ) 採点を補助するサーバーを立てる

26 5月

e-Learning の採点機能を、入り口となるサーバー(kanaike)と実際に採点処理を実行するサーバーに分ける計画です。実際の採点処理を、入り口となるサーバーからの ネットワークリクエストとして書く予定です。採点処理を実行するサーバーは複数台用意することを想定しています。こうすることで、それぞれの出題者が、採点処理サーバーを手元に置いて自由に処理を書けるようにしようと思います。

それで、ここでは実際に採点を処理するサーバーの設定手順をメモしていこうと思います。

ubuntu 20.04 のインストール。

(1) CUDA のインストール。(20220415 作業メモ) Pythonの実行環境に従ってやります。ビデオカードのドライバーを最新のものにしたので、CUDA も最新のものを入れました。

synaptic のインストール。それを使って git のインストール。

(2) ffmpeg でビデオカードを使ったアクセラレーションをするために、ffmpeg のコンパイルをします。以前の記事。ビデオの返還はデフォルトの採点サーバーが引き受けていますので,ffmpegを利用しない採点サーバーでは,この作業は必要ありません。

vlc プレイヤーをインストール。

(3) webサーバーの準備。php や apache など。過去の記事を参照。ただし、MySQL などは要らない。

(4) wsgi の準備。以前の記事を参照。

(5) python の準備。ライブラリーなどを用意する。synaptic から pandas、numpy(すでに入っていた)、sympy、pip をインストール。

(6) CUPY のインストールは以前過去記事にあるようにやってみたが、この場合だとホームディレクトリー内に配置されているようだ。synaptic から導入した numpy は全員が利用できると思うが、以前のように pip3 install cupy-cuda116 で導入すると wsgi からは利用できないのではないか。それで、sudo pip3 install cupy-cuda116 で導入してみた。

wsgi の中で,numpy と cupy をインポートしたら,下記のエラーが出た。numpy に関するエラーだ。

[Fri May 27 17:06:03.575615 2022] [wsgi:error] [pid 3222] [client 192.168.100.17:60698] /var/www/script/wsgi.py:3: UserWarning: NumPy was imported from a Python sub-interpreter but NumPy does not properly support sub-interpreters. This will likely work for most users but might cause hard to track down issues or subtle bugs. A common user of the rare sub-interpreter feature is wsgi which also allows single-interpreter mode.
[Fri May 27 17:06:03.575664 2022] [wsgi:error] [pid 3222] [client 192.168.100.17:60698] Improvements in the case of bugs are welcome, but is not on the NumPy roadmap, and full support may require significant effort to achieve.
[Fri May 27 17:06:03.575670 2022] [wsgi:error] [pid 3222] [client 192.168.100.17:60698]   import numpy

こちらのサイトに、関連した記事がある。それによると、以下を追加しろとある。

WSGIApplicationGroup %{GLOBAL}

上記を,wsgi.conf に追加した。これで、numpy や cupy をインポートしても、エラーは出なくなった。開発用の環境では,この追加は必要なかったので,実際の環境では何かが違うようだ。インストール時の何か,あるいは設定の違いがあるのかもしれない。

(7) maxima のインストールである。参考サイト。サイトによれば、まず texinfo のインストール。その後、sbcl(synaptic から 2:2.0.1-3 を入れた)、maxima コンパイルと続く。

(8) php-xml のインストール。synaptic から。simplexml_load_string を利用するため。apache 再起動。

(9) /var/www の内容を準備。コピーして配置。temporary の所有権を www-data に変更。

(10) gnuplot のインストール(不必要かもしれない)。

(11) maxima-optimised の再構築。参照サイト。自分の所の参照サイト

(12) php に php-mbstring を追加した。

(13) apache の言語の設定 php での日本語の取り扱い。