(続)採点を補助するサーバーを立てる_20230914

14 9月

以前の記事に書いた採点を補助するサーバーを立てるの改訂版です。Python の sympy バージョンの関係から、OS を ubuntu22 に変更したいと思います。以下は、その作業の記録です。

サーバーのハードウェアです。古いパーツです。

    マザーボード:Intel Desktop Board DZ75ML-45
    CPU:i5-3570
    ビデオカード:GeForce GTX 1050

まず OS の準備です。

最初、nvidia のドライバーを入れると起動時に画面がVGAぐらいの解像度になってしまう現象に悩まされました。上手く行くときもあって、それがなぜか bios(UEFI?) の boot menu を経由して起動させると上手く高解像度の画面となる確率が高い感じでした。ただ,CUDAのインストールなどをやっていると,また状況が変わってきます。パソコンのパーツがいずれも古いものなので,そのあたりも原因ではないかと思うのですが。

モニターの接続は,ディスプレイポートだったのですが,下記にあげた参照サイトに,「グラフィックカードに複数の出力端子がある場合」のトラブルの例がありました。それで DVI に接続を変更してみると,今のところ失敗なく高解像度で起動してきます。初期化の処理にかかる時間が何らかの影響を与えているのでしょうか?DVIポートを先に調べるとか,そんな順番が効いているのか?

参照サイト

このあと、CUDA のインストールです。ffmpeg のハードウェアアクセラレーションも効かせたいです。以前に書いた記事によると、CUDA のインストールが先です。これが手こずりました。手順はこのサイトに従います。しかし CUDA を入れると起動しなくなりました。コンパイルにも何か終盤でエラーがあったようでした。CUDA をインストールすると、ビデオカードのドライバーも同時に入るとのことで、以前はドライバーを入れずに CUDA をインストールしていました。それで、ドライバーを入れる前の ubuntu を用意して、CUDA をインストールすると、上手くいきました。ただし、起動のときに、bios でブートメニュー経由でないと上手く起動しません。この原因はわからないのですが、ブートメニュー経由であれば、いまのところ確実に起動します。

次は ffmpeg の準備です。手順は、以前の記事にあります。ライブラリーの名称の数値のところが多少変化していたぐらいで、ほぼ同じ手順でした。ビデオの返還はデフォルトの採点サーバーが引き受けていますので,ffmpegを利用しない採点サーバーでは,この作業は必要ありません。

このあと、Python 関連のものを入れます。synaptic で pandas、matplotlib、jupyter-notebook、python3-pip のインストール。そのあとで、下記で cupy を入れる。

$ sudo python3 -m pip install -U setuptools pip
$ sudo pip3 install cupy-cuda12x

1行目のコマンドが効いているのかどうか分からない。sudo でやる必要はあると思う。12x は本当に x を書いた。下記のように、バージョンの返事は帰ってきた。ちゃんと動いているのか心配です。

書かなかったのですが、途中で vlc、git などをインストールしています。

あとは過去記事と同じような感じです。

以下、編集中です(20230921)

続いて、webサーバーの準備です。php や apache など。過去の記事を参照。ただし、MySQL などは要らない。php-xml、php-mbstring も追加。

php の メモリーの上限を上げることを忘れない。/etc/php/8.1/apache2/php.ini の編集。memory_limit を 4096M に変更。

wsgi の準備。以前の記事を参照。/etc/apache2/mods-available/wsgi.conf に以下を追加した。

WSGIScriptAlias /wsgi /var/www/scripts/wsgi.py
WSGIApplicationGroup %{GLOBAL}

次に maxima のインストール。参考サイトです。サイトによれば、まず texinfo のインストール。その後、sbcl(synaptic から 2.1.11-1 を入れた)、maxima 5.36.0 のコンパイルと続けます。

あとは、/var/www の内容を準備します。コピーして配置するぐらいです。temporary の所有権を www-data に変更します。仮想で開発していた場合なら、ビデオカードでハードウェア的に処理するように変更する必要があります。送られてきた動画を変換する /var/www/html/videoConversion/videoConversion.php の内容を修正します。他は,cupy を利用できるように書き換えることでしょうか。

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

数式採点用の maxima-optimised の再構築をします。参照サイト。自分の所の参照サイト

apache の言語の設定をします。 php での日本語の取り扱いに関するものです(参考サイト)。作業内容を下記に引用します。

/etc/apache2/envvars を修正。export LANG=C の行をコメントアウトして、export LANG=ja_JP.UTF-8 を追加。下記のような感じです。

# export LANG=C
export LANG=ja_JP.UTF-8