Custom Search

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-22 (火) 14:33:26 (702d)