JITAKU_SVR_Wiki
Pukiwiki Advance †
pukiwikiが1.4.7でしばらく更新されていなかったが、2014年に1.5.0がリリースされた。
しばらく1.4.7時代があったので、別のpukiwikiにもちょっと浮気してみたくなったのでメモ。
Pukiwikiには色々派生したものが存在し、今回は一番厄介そうなものにしてみた。
環境はnginx、php5.5、php-fpmが良いっぽいので兼ねてテスト。
難易度はそんなに高くないが、pukiwikiをサラッと構築出来ない人には厳しい。
環境 †
OS:CentOS7.0.1406(64bit)
MW1:nginx-1.6
MW2:php関連
php-common-5.5.23
php-fpm-5.5.23
php-cli-5.5.23
php-pdo-5.5.23
php-opcache-5.5.23
php-pear-1.9.4
php-pecl-jsonc-1.3.7
php-pecl-zip-1.12.4
php-xml-5.5.23
php-process-5.5.23
php-mysqlnd-5.5.23
php-mbstring-5.5.23
wordpressも別にインストールしたのでちょっと余計なものもインストールされている。
wordpressは別記事で紹介。
リポジトリ追加 †
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
パッケージインストール †
(php-fpm)
# yum install openssl openssl-devel
# yum install libmcrypt libmcrypt-devel
# yum install libxml2 libxml2-devel libxslt
# yum install php-pear
# yum install --enablerepo=remi-php55 php-fpm
(nginx)
# yum install pcre pcre-devel
# yum install nginx
上記のインストールはリポジトリを上手に使い分ける必要あり。
例えば、php-fpmをインストールするにはremi-php55をリボジトリ指定する。
もし分からなければ、一旦必要なさそうなリポジトリを別ディレクトリ移動させるのもあり。
nginx,php-fpmインストール後のパッケージ情報 †
# rpm -qa | grep php
php-common-5.5.23-1.el6.remi.x86_64
php-fpm-5.5.23-1.el6.remi.x86_64
php-cli-5.5.23-1.el6.remi.x86_64
php-pdo-5.5.23-1.el6.remi.x86_64
php-opcache-5.5.23-1.el6.remi.x86_64
php-pear-1.9.4-21.el7.noarch
php-pecl-jsonc-1.3.7-1.el6.remi.5.5.x86_64
php-pecl-zip-1.12.4-1.el6.remi.5.5.x86_64
php-xml-5.5.23-1.el6.remi.x86_64
php-process-5.5.23-1.el6.remi.x86_64
php-mysqlnd-5.5.23-1.el6.remi.x86_64
php-mbstring-5.5.23-1.el6.remi.x86_64
# rpm -qa |grep nginx
nginx-release-centos-7-0.el7.ngx.noarch
nginx-1.6.3-1.el7.ngx.x86_64
pukiwiki advanceを設置する †
今回使用するソースは以下からDL出来る。
https://pukiwiki.logue.be/
ご丁寧にxz形式で圧縮してくれているので…
pukiwiki_adv-2.0.1-full.tar.xz
# xz -dv pukiwiki_adv-2.0.1-full.tar.xz
pukiwiki_adv-2.0.1-full.tar.xz (1/1)
100 % 14.9 MiB / 49.3 MiB = 0.302 0:01
pukiwiki_adv-2.0.1-full.tarが出来上がる。
あとはtarを展開するだけ。
# tar xf pukiwiki_adv-2.0.1-full.tar
このファイルを以下の手順でコピーする。
一点注意する点は、DocumentRootのパス(後述)。
# cp -pr ~/pukiwiki_adv-2.0.1 /var/www/html/pukiwiki
# chown -R nginx:nginx /var/www/html/pukiwiki
※面倒だったので大した調べもせずオーナグループを全てnginxにした。
ここまで完了したらMWの設定を少しする。
nginxの設定 †
念のためnginxがインストールされたかチェックする。
# nginx -v
nginx version: nginx/1.6.3
動作すれば問題なし。
細かい設定の話は別のところでするので、ここでは動くための設定。
# cat /etc/nginx/conf.d/pukiwiki.conf
server {
listen 80 default_server;
server_name pukiwiki.info;
root /var/www/html/pukiwiki/webroot;
index index.php index.html index.htm;
access_log /var/log/nginx/wiki_access.log main;
error_log /var/log/nginx/wiki_error.log warn;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
気をつける点としては、DocumentRootを"/var/www/html/pukiwiki/webroot"にしているというところ。
ここをDocumentRootにしないと動かない。
設定できたらnginxを起動する。
# systemctl enable nginx.service
→nginxを自動起動登録
# systemctl start nginx.service
→サービス起動
# ps -ef |grep nginx
root 2340 1 0 19:30 ? 00:00:00 nginx: master process /usr/sbin nginx -c /etc/nginx/nginx.conf
nginx 2341 2340 0 19:30 ? 00:00:00 nginx: worker process
root 3359 2751 0 21:09 pts/0 00:00:00 grep --color=auto nginx
こんな風に見えていたらOK。
php-fpmの設定 †
基本的にはほぼ何も触らず動くのだが、ユーザグループの変更だけしておく。
nginxと合わせたほうが何かと便利だと思う。
# vim /etc/php-fpm.d/www.conf
(40行目前後)
user = nginx
group = nginx
という感じでOK。
php-fpmは最初ビックリしたけど、これはどうやらデーモンとして起動するものらしい。
自動起動登録する。
設定できたらphp-fpmを起動する。
# systemctl enable php-fpm.service
→php-fpmを自動起動登録
# systemctl start php-fpm.service
→サービス起動
# ps -ef |grep php-fpm
root 3312 1 0 20:51 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
nginx 3313 3312 0 20:51 ? 00:00:00 php-fpm: pool www
nginx 3314 3312 0 20:51 ? 00:00:00 php-fpm: pool www
nginx 3315 3312 0 20:51 ? 00:00:00 php-fpm: pool www
nginx 3316 3312 0 20:51 ? 00:00:00 php-fpm: pool www
nginx 3317 3312 0 20:51 ? 00:00:00 php-fpm: pool www
root 3365 2751 0 21:15 pts/0 00:00:00 grep --color=auto php-fpm
以上で初期構築は完了。
次からエラー潰し。
まずは自サイトへアクセスしてみる。
http://web-server/
もし、必要な何かが足りていないなどがあればエラーが表示されるので潰す。
今回は以下のエラーが出たのでメモ。
エラー1 †
★エラー内容
Fatal error: Uncaught exception 'Zend\Cache\Exception\InvalidArgumentException' with message 'Cache directory '/var/www/
html/pukiwiki/webroot/../wiki-common/cache/' not writable' in /var/www/html/pukiwiki/vendor/zendframework/zend-cache/Sto
rage/Adapter/FilesystemOptions.php:133 Stack trace: #0 /var/www/html/pukiwiki/vendor/zendframework/zend-stdlib/AbstractO
ptions.php(104): Zend\Cache\Storage\Adapter\FilesystemOptions->setCacheDir('/var/www/html/p...') #1 /var/www/html/pukiwi
ki/vendor/zendframework/zend-stdlib/AbstractOptions.php(62): Zend\Stdlib\AbstractOptions->__set('cache_dir', '/var/www/h
tml/p...') #2 /var/www/html/pukiwiki/vendor/zendframework/zend-stdlib/AbstractOptions.php(32): Zend\Stdlib\AbstractOptio
ns->setFromArray(Array) #3 /var/www/html/pukiwiki/vendor/zendframework/zend-cache/Storage/Adapter/FilesystemOptions.php(
115): Zend\Stdlib\AbstractOptions->__construct(Array) #4 /var/www/html/pukiwiki/vendor/zendframework/zend-cache/Storage/
Adapter/Filesystem.php(73): Zend\Cache\Storage\Adapter\FilesystemOptions->__c in /var/www/html/pukiwiki/vendor/zendframe
work/zend-cache/Storage/Adapter/FilesystemOptions.php on line 133
★原因・対応
正直全く分からない。
opcache.soが見えていない?
とりあえずphp.iniにextension_dirを追加してみる
# vim /etc/php.ini
extension_dir = "/usr/lib64/php-zts/modules"
これで一応はエラー表示はされなくなったが、別で使用しているモジュールが見えなくなった…
後述しているが、この問題が最後まで分からなくて、サーバの再起動で解消されたので、上記の対応は必要ないのかも。
ちなみにCentOS6系では発生しなかった。
エラー2 †
★エラー内容
Fatal error: Class 'PDO' not found in /var/www/html/pukiwiki/vendor/bad-behavior/bad-behavior-sqlite.php on line 178
★原因・対応
PDOモジュールがないと言っている。
# yum install --enablerepo=remi-php55 php-pdo
パッケージを追加しサービスを再起動
# systemctl restart php-fpm.service
エラー3 †
★エラー内容
Fatal error: Call to undefined function PukiWiki\Lang\mb_language() in /var/www/html/pukiwiki/wiki-common/lib/PukiWiki/Lang/Lang.php on line 129
★原因・対応
mbstringが入ってない。
# yum install --enablerepo=remi-php55 php-mbstring
パッケージを追加しサービスを再起動
# systemctl restart php-fpm.service
エラー4 †
★エラー内容
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone s
etting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this
warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date
.timezone to select your timezone. in /var/www/html/pukiwiki/wiki-common/lib/PukiWiki/TimeZone.php on line 772
★原因・対応
これは正確に言うとエラーではない(Wariningって書いてあるし)。
内容は読めば分かるので簡単だと思う。
→単純にtimezoneが設定されていないだけ。
# vim /etc/php.ini
date.timezone = Asia/Tokyo
上記の設定を記述し、再起動。
# systemctl restart php-fpm.service
トラブルシュート †
上記対応してもwikiが表示されない †
①nginxが正常に動作している
②php-fpmが動作している
③ネットワーク関係に問題がない
という切り分けが出来ていたら↓
CentOS7からはiptablesが若干変わっているので、そういった問題は排除しておくこと。
nginxが応答しているのか、していないのかが判断出来ない人にはそもそも厳しいと思う。
・必要パッケージはインストールされている
・モジュールは有効になっている
・パスは問題ない
→サーバを再起動してみる
※正直理解できないけどうまくいった実績がある(バグ?不明)
参考 †
http://qiita.com/utano320/items/0c0d9b84a9a28525bcb9
http://qiita.com/hnakamur/items/77791e63ac2ad9644a2b