OpenBSDのapache2で、FastCGI(PHP)を動かす (OpenBSD 6.5R、2019/09/09) [OpenBSD]
タイトルを見て分かるとおり、泥沼化してきました(笑)
FreeBSD 12.0Rで動かしたJoomla!があまり期待通りではなかったので、再びWordPressを導入してみようかという気分になりました。が、ここで問題が。
最新のWordPressはphp7.3を要求しますが、zabbixの依存関係がphp7.2となっているため、無理にphp7.3化してしまうと環境が崩れてしまうのです。まあ、jailを使うとか、もう一つFreeBSDの仮想環境を作るとかやり方はあるのですが、どうせなら勉強も兼ねてOpenBSDでWordPressを動かしてみようと思い至った訳です。
さてさて、OpenBSDは堅物でもっと使いにくいのかと思っていたら、意外と普通に使えるのですね。pkg_infoコマンドで、パッケージの検索とインストール済みかどうかを確認することができます。追加したいときはpkg_addです。
WordPressにはMySQLが必要ですが、pkg_infoで検索しても出てきません。OpenBSDはMySQLの上位互換(?)であるMariaDB
が使えるようです。MariaDBの使い方はMySQLと全く一緒なので、ここでは割愛します。Webサーバは大好きなlighttpdがないので、apache2を使います。apacheでもFastCGIを使いたいので、/etc/php-fpm.confの設定変更を行い、rcctl enable php73_fpmでサービス登録を行うなどなど設定を積み上げていきます。(この辺は一般Webを参考にしています)
で、WordPressにアクセスすると「File Not Found」と表示される。あれ?
ソースコードを見てみたら、マークアップされたHTMLとしてのFile Not Foundではなく、Rawメッセージとしての文字列でした。下位レイヤからのメッセージなので、ベースの設定が怪しいように見えます。
apacheのエラーログには、AH01071: Got error 'Primary script unknown'と残っています。
ここから何時間も格闘したのですが、とりあえず切り分けとしては、
・apache2は、FastCGIを使わない普通のCGI方式だと、ちゃんと動く
・php-fpmは、socketを使ってもTCP Listenを使っても表示は変わらない
といったところが分かりました。
最終的に犯人はphp-fpm.confの以下の設定でした。(chrootをコメントアウトすれば直りました)
まあ、chroot時のディレクトリ階層がおかしいだけなので、論理的に整合性を取ってあげれば、chroot設定有りでちゃんと動くような気はしています。とりあえず今は先に進みたいので、設定を無効化して進みます。
FreeBSD 12.0Rで動かしたJoomla!があまり期待通りではなかったので、再びWordPressを導入してみようかという気分になりました。が、ここで問題が。
最新のWordPressはphp7.3を要求しますが、zabbixの依存関係がphp7.2となっているため、無理にphp7.3化してしまうと環境が崩れてしまうのです。まあ、jailを使うとか、もう一つFreeBSDの仮想環境を作るとかやり方はあるのですが、どうせなら勉強も兼ねてOpenBSDでWordPressを動かしてみようと思い至った訳です。
さてさて、OpenBSDは堅物でもっと使いにくいのかと思っていたら、意外と普通に使えるのですね。pkg_infoコマンドで、パッケージの検索とインストール済みかどうかを確認することができます。追加したいときはpkg_addです。
OpenBSD# pkg_info -Q apache apache-httpd-2.4.41 (installed) php-apache-7.1.32 php-apache-7.2.22 php-apache-7.3.9 (installed)
WordPressにはMySQLが必要ですが、pkg_infoで検索しても出てきません。OpenBSDはMySQLの上位互換(?)であるMariaDB
OpenBSD# pkg_info -Q maria mariadb-client-10.0.38v1 (installed) mariadb-server-10.0.38p0v1 (installed) mariadb-tests-10.0.38v1
が使えるようです。MariaDBの使い方はMySQLと全く一緒なので、ここでは割愛します。Webサーバは大好きなlighttpdがないので、apache2を使います。apacheでもFastCGIを使いたいので、/etc/php-fpm.confの設定変更を行い、rcctl enable php73_fpmでサービス登録を行うなどなど設定を積み上げていきます。(この辺は一般Webを参考にしています)
で、WordPressにアクセスすると「File Not Found」と表示される。あれ?
ソースコードを見てみたら、マークアップされたHTMLとしてのFile Not Foundではなく、Rawメッセージとしての文字列でした。下位レイヤからのメッセージなので、ベースの設定が怪しいように見えます。
apacheのエラーログには、AH01071: Got error 'Primary script unknown'と残っています。
ここから何時間も格闘したのですが、とりあえず切り分けとしては、
・apache2は、FastCGIを使わない普通のCGI方式だと、ちゃんと動く
・php-fpmは、socketを使ってもTCP Listenを使っても表示は変わらない
といったところが分かりました。
最終的に犯人はphp-fpm.confの以下の設定でした。(chrootをコメントアウトすれば直りました)
; Chroot to this directory at the start. This value must be defined as an ; absolute path. When this value is not set, chroot is not used. ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one ; of its subdirectories. If the pool prefix is not set, the global prefix ; will be used instead. ; Note: chrooting is a great security feature and should be used whenever ; possible. However, all PHP paths will be relative to the chroot ; (error_log, sessions.save_path, ...). ; Default Value: not set chroot = /var/www
まあ、chroot時のディレクトリ階層がおかしいだけなので、論理的に整合性を取ってあげれば、chroot設定有りでちゃんと動くような気はしています。とりあえず今は先に進みたいので、設定を無効化して進みます。
OpenBSDインストール その2 (OpenBSD 6.5R、2019/09/09) [OpenBSD]
わくわくしてきた。
OpenBSD# syspatch Get/Verify syspatch65-001_rip6cks... 100% |*****************************************************************************| 196 KB 00:00 Installing patch 001_rip6cksum Get/Verify syspatch65-002_srtp.tgz 100% |*******************************************************************************| 4316 KB 00:02 Installing patch 002_srtp Get/Verify syspatch65-003_mds.tgz 100% |********************************************************************************| 49488 KB 00:18 Installing patch 003_mds Get/Verify syspatch65-004_bgpd.tgz 100% |*******************************************************************************| 173 KB 00:00 Installing patch 004_bgpd Get/Verify syspatch65-005_libssl.tgz 100% |*****************************************************************************| 4316 KB 00:02 Installing patch 005_libssl Get/Verify syspatch65-006_tcpsack... 100% |*****************************************************************************| 161 KB 00:00 Installing patch 006_tcpsack Get/Verify syspatch65-007_smtpd.tgz 100% |******************************************************************************| 212 KB 00:00 Installing patch 007_smtpd Get/Verify syspatch65-008_swapgs.tgz 100% |*****************************************************************************| 146 KB 00:00 Installing patch 008_swapgs Get/Verify syspatch65-009_resume.tgz 100% |*****************************************************************************| 66736 00:00 Installing patch 009_resume Get/Verify syspatch65-010_frag6ec... 100% |*****************************************************************************| 47575 00:00 Installing patch 010_frag6ecn Relinking to create unique kernel... done; reboot to load the new kernel Errata can be reviewed under /var/syspatch OpenBSD#
OpenBSDインストール (OpenBSD 6.5R、2019/04/28) [OpenBSD]
XenServerにOpenBSDをインストールしてみました。仮想化サーバはこういったときにフットワークが軽くていいですよね。
openbsd# dmesg OpenBSD 6.5 (GENERIC.MP) #3: Sat Apr 13 14:48:43 MDT 2019 deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 1052770304 (1004MB) avail mem = 1011281920 (964MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xeb01f (14 entries) bios0: vendor Xen version "4.7.6-6.4" date 03/01/2019 bios0: Xen HVM domU acpi0 at bios0: rev 2 acpi0: sleep states S5 acpi0: tables DSDT FACP APIC HPET WAET acpi0: wakeup devices acpitimer0 at acpi0: 3579545 Hz, 32 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 11, 48 pins, remapped cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Celeron(R) J4105 CPU @ 1.50GHz, 1497.90 MHz, 06-7a-01 cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,3DNOWP,FSGSBASE,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,SHA,IBRS,IBPB,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu0: 4MB 64b/line 16-way L2 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges cpu0: apic clock running at 99MHz cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Celeron(R) J4105 CPU @ 1.50GHz, 1497.71 MHz, 06-7a-01 cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,3DNOWP,FSGSBASE,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,SHA,IBRS,IBPB,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu1: 4MB 64b/line 16-way L2 cache cpu1: smt 0, core 0, package 1 cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Celeron(R) J4105 CPU @ 1.50GHz, 1497.68 MHz, 06-7a-01 cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,3DNOWP,FSGSBASE,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,SHA,IBRS,IBPB,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu2: 4MB 64b/line 16-way L2 cache cpu2: smt 0, core 0, package 2 cpu3 at mainbus0: apid 6 (application processor) cpu3: Intel(R) Celeron(R) J4105 CPU @ 1.50GHz, 1647.45 MHz, 06-7a-01 cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,3DNOWP,FSGSBASE,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,SHA,IBRS,IBPB,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu3: 4MB 64b/line 16-way L2 cache cpu3: smt 0, core 0, package 3 acpihpet0 at acpi0: 62500000 Hz acpiprt0 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0: C1(@1 halt!) acpicpu1 at acpi0: C1(@1 halt!) acpicpu2 at acpi0: C1(@1 halt!) acpicpu3 at acpi0: C1(@1 halt!) acpipci0 at acpi0 PCI0: _OSC failed acpicmos0 at acpi0 "ACPI0007" at acpi0 not configured "ACPI0007" at acpi0 not configured "ACPI0007" at acpi0 not configured "ACPI0007" at acpi0 not configured pvbus0 at mainbus0: Hyper-V 0.0, Xen 4.7 xen0 at pvbus0: features 0x2705, 32 grant table frames, event channel 5 xbf0 at xen0 backend 0 channel 12: disk scsibus1 at xbf0: 2 targets sd0 at scsibus1 targ 0 lun 0: <Xen, phy xvda 768, 0000> SCSI3 0/direct fixed sd0: 131072MB, 512 bytes/sector, 268435456 sectors xbf1 at xen0 backend 0 channel 13: cdrom xbf1: timed out waiting for backend to connect xnf0 at xen0 backend 0 channel 13: address 4e:46:f8:d1:eb:61 pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02 pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00 pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel 0 wired to compatibility, channel 1 wired to compatibility pciide0: channel 0 disabled (no drives) atapiscsi0 at pciide0 channel 1 drive 1 scsibus2 at atapiscsi0: 2 targets cd0 at scsibus2 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.10> ATAPI 5/cdrom removable cd0(pciide0:1:1): using PIO mode 4, DMA mode 2 uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 1 int 23 piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x01: SMBus disabled vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) xspd0 at pci0 dev 3 function 0 "XenSource Platform Device" rev 0x02 isa0 at pcib0 isadma0 at isa0 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 lpt0 at isa0 port 0x378/4 irq 7 usb0 at uhci0: USB revision 1.0 uhub0 at usb0 configuration 1 interface 0 "Intel UHCI root hub" rev 1.00/1.00 addr 1 uhidev0 at uhub0 port 2 configuration 1 interface 0 "QEMU 0.10.2 QEMU USB Tablet" rev 1.00/0.00 addr 2 uhidev0: iclass 3/1 ums0 at uhidev0: 3 buttons, Z dir wsmouse1 at ums0 mux 0 vscsi0 at root scsibus3 at vscsi0: 256 targets softraid0 at root scsibus4 at softraid0: 256 targets root on sd0a (25f73276694a9d96.a) swap on sd0b dump on sd0b fd0 at fdc0 drive 1: density unknown