NetBSDをレビュー中、備忘録として残しておこう! その2
2022/08/11
2023/02/15

今回は前回の記事の続きでWORDPRESSが動作する環境を作ってゆく箇所でデフォルトではインストールしてすんなり動作しないためそれをどう攻略するかなどをまとめてゆこうと思う.
H2O WEBサーバの設定を行う
まず最初に設定フォルダーの作成とファイルの作成だな。ここは既存の設定をパクれば簡単に作れる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
mkdir -p /etc/h2o/conf.d cd /etc/h2o vi h2o.conf ------ここから設定------- user: h2o max-connections: 100 num-threads: 2 access-log: /var/log/h2o/access_log error-log: /var/log/h2o/error_log pid-file: /var/run/h2o.pid http1-upgrade-to-http2: ON http2-reprioritize-blocking-assets: ON header.add: "Strict-Transport-Security: max-age=31536000" file.index: [ 'index.php', 'index.html' ] hosts: <<: !file /etc/h2o/conf.d/cuckoo.conf ------ここで設定修了------- #ここからは仮想サーバ設定 cd conf.d vi cuckoo.conf ------ここから設定------- "cuckoo.abcdef.net": compress: ON listen: 80 listen: port: 443 ssl: minimum-version: TLSv1.3 ocsp-update-interval: 0 neverbleed: off certificate-file: "/etc/h2o/cuck/full.crt" key-file: "/etc/h2o/cuck/private.key" cipher-preference: server cipher-suite: "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA25 6:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA 256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-R SA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DH E-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-R SA-DES-CBC3-SHA:!DSS" paths: "/": file.dir: /var/www/vhosts/abcdef file.dirlisting: OFF file.send-compressed: ON redirect: url: /index.php/ internal: YES status: 307 file.custom-handler: extension: .php fastcgi.connect: host: 127.0.0.1 port: 9000 type: tcp ------ここで設定修了------- |
h2oには調整しないと動かないプログラムがある.
内部で呼び出す常駐プログラムがh2oにはある。/usr/pkg/share/h2o/start_serverがそれです。このファイルを修正しないとエラーが出ます。今迄Linuxで何度もh2oサーバは使ってきましたがこんなプログラムが内部にあるんだなーNetBSDの場合に限りかどうかはわからないけれど。
1 2 3 4 5 |
#! /bin/sh #exec ${H2O_PERL:-perl} -x $0 "$@" exec /usr/pkg/bin/perl -x $0 "$@" #2行目をコメントアウトしている。これがもともとの記述。3行目に書き直すとOKでした。 #環境変数に「export H2O_PERL=/usr/pkg/bin/perl 」入れたけどだめでした。直接書いて動作したのでこれでOKとしよう.多分/bin/shの記述問題だな?微妙にbashじゃないから。 |
サーバ起動スクリプトを記述
/etc/rc.d/h2oとして設置します。設置したら実行権つけましょうね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/bin/sh # # $NetBSD: h2o 1.2 2022/08/07 09:41:13 script revised by hideo ichinohe $ # # PROVIDE: h2o # REQUIRE: DAEMON # # You will need to set some variables in /etc/rc.conf to start h2o: # ex. echo "h2o=YES" >> /etc/ec.conf # . /etc/rc.subr name="h2o" rcvar=${name} config_file="/etc/h2o/h2o.conf" equired_files=$config_file start_cmd="run_h2o" pidfile="/var/run/${name}.pid" stop_cmd="stop_h2o" command="/usr/pkg/bin/${name}" command_args="-m daemon -c ${config_file}" run_h2o() { #touch /var/run/h2o.pid #chmod 666 /var/run/h2o.pid echo "Starting H2O WEB Server..." ${command} ${command_args} } stop_h2o() { echo "Shutdown H2O WEB Server..." PID=`cat ${pidfile}` kill -15 $PID } load_rc_config $name run_rc_command "$1" |
1 2 3 |
sudo echo "h2o=YES" >> /etc/rc.conf sudo service php_fpm start sudo service h2o start |
PHP FastCGIの設定を行う
phpのFastCGIをh2oで使う場合は2通りありphp-fpmとphp-cgiを使うが今回はphp-fpmを使う。
はまりまくったのが,php81-gdとphp81-magickのモジュール。このライブラリはWORDPRESSの中で画像のサムネイルや画像編集で内部的に利用するため必要だ。
実際に起こるのはこの2つのライブラリーが他のライブラリーや他のパッケージが必要と延々とエラーを出してくる。
メモを取らなかったので忘れたが10個前後はこの関連でインストールした。また導入したパッケージと要求されるパッケージのライブラリーマイナー番号が合わない。
ここは単純にソフトリンク(ln -s)で対応したが一応この方法で現状サーバーは動作しています。
ところで、Cコンパイラーがまともに動かないんだけど。がっくり!!
パッケージとしていくつかのgccバージョンが登録されておりインストールするが、エラーのオンパレードなんだなこれが!! つまりヘッダファイルやライブラリーがどうもおかしいのだ。インクルードするヘッダファイルやライブラリが足りないとか例えばcrt1.oがないとかcdefs.hファイルがないとかといったエラーになる。 printf(“hello in the world”); たったこれだけ出力するコンパイルでそれがでるのって欠陥でしょう。インストーラのパッケージ不足なのか、それとも構成ファイルの問題 なのかわけが分からない。調べてみるとcrt1.oは古いgccで必要とされていたファィルなのできっと構成ミスだな。完全にお手上げだ。環境はCONOHA VPSで提供されたイメージでインスタンス作っているがさすがにそこは素のNetBSDイメージだと思う。
—–後日談——-
自前のPCにfull install NetBSD9.1を行ったらしっかりコンパイラが動く。犯人はCONOHAのイメージだったか!!(^_^;)
正確にはCONOHAのイメージが悪いカスタマイズしていたという意味ではない。元々のNetBSDのインストールレベルの構成問題だろう。
レベルによってファイルに欠品が合ったということだ。
最初からfullでインストール時にgccやmake関連のツールを入れて上げないと単品インストールで構築できないケースがLinuxでもごく稀にあるが、まさに今回のNetBSDがそのような感じみたい。
VPSのテンプレートに入ってくるのはminimalのケースが多いよね。
とりあえず足りないファイルを圧縮してホスティングへ送ってあげようと思う。