いろいろ業界の勉強してると技術ログを残したいものですが、ブログに書き続けるのも結構辛いものがあります。
昔のやつが埋まっちゃったりとか、一々検索もめんどくさいですからね。
というわけでまとめがしやすいようにローカルPCにDokuwikiを立ててみました。
今のメインPCはUbuntuなのでコンテナ(LXD)で立ててみたいと思います。
コンテナは自分の環境を汚さずにいろいろ立てられるので好きです。
別にDockerでいいじゃんって思ったけどLXDの方がDockerより自由に立てられそうなので、LXDで作ることにしました。
また、Wikiサイトはこの記事を読んでDokuwikiにしました。
WikiのOSSはたくさんありますが、勉強のまとめだけなので、さくっとこいつを作りたいと思います。
LXDのインストール
masashi@PC-ubuntu: ~$ sudo apt-get install lxd
インストール後は一回ログアウトします。
再ログイン後、バージョン確認
masashi@PC-ubuntu: ~$ lxd --version
2.0.11
LXDの初期化
sudoつけないとエラーが出ました。
bridgeが作れないのか。
/usr/sbin/dpkg-reconfigure は root で実行する必要があります error: Failed to configure the bridge
とりあえず設定は全部デフォルトにします。
masashi@PC-ubuntu: ~$ sudo lxd init Do you want to configure a new storage pool (yes/no) [default=yes] Name of the storage backend to use (dir or zfs) [default=dir]: Would you like LXD to be available over the network (yes/no) [default=no] Do you want to configure the LXD bridge (yes/no) [default=yes] Warning: Stopping lxd.service, but it can still be activated by: lxd.socket
このあとGUIが出ていろいろ設定するんですが、スクショを撮り忘れました。 これも全部デフォルトです。
下記のメッセージがでて初期化完了です。
LXD has been successfully configured.
コンテナイメージ取得
masashi@PC-ubuntu: ~$ lxc launch ubuntu:16.04 ubuntu16 クライアント証明書を生成します。1分ぐらいかかります... 初めて LXD を使う場合、sudo lxd init と実行する必要があります 初めてコンテナを起動するには、"lxc launch ubuntu:16.04" と実行してみてくだ さい。 ubuntu16 を作成中 (略)
コンテナの確認
コンテナのNWは10.94.47.0/24のようです。
インストール時のGUIで聞かれた気がする。
masashi@PC-ubuntu: ~$ lxc list +----------+---------+---------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +----------+---------+---------------------+------+------------+-----------+ | ubuntu16 | RUNNING | 10.94.47.134 (eth0) | | PERSISTENT | 0 | +----------+---------+---------------------+------+------------+-----------+
ブリッジの確認。
ちゃんと出来てますね。
(ローカルIPががっつり出ちゃうけどまあいいか)
masashi@PC-ubuntu: ~$ ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 6c:62:6d:e9:65:56 brd ff:ff:ff:ff:ff:ff inet 192.168.0.10/24 brd 192.168.0.255 scope global dynamic enp3s0 valid_lft 2481sec preferred_lft 2481sec inet6 fe80::a3b9:45e0:316a:2753/64 scope link valid_lft forever preferred_lft forever 4: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether fe:2c:4a:3d:4b:fa brd ff:ff:ff:ff:ff:ff inet 10.94.47.1/24 scope global lxdbr0 valid_lft forever preferred_lft forever inet6 fe80::c071:faff:feb8:a94c/64 scope link valid_lft forever preferred_lft forever 6: veth5YLIQG@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000 link/ether fe:2c:4a:3d:4b:fa brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::fc2c:4aff:fe3d:4bfa/64 scope link valid_lft forever preferred_lft forever
コンテナに入ってみます
この辺はDockerと同じですね。
masashi@PC-ubuntu: ~$ lxc exec ubuntu16 -- /bin/bash root@ubuntu16:~#
プロンプトが変わりました。
バージョン確認。
ホストOSと同じです。
root@ubuntu16:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
パッケージアップデートします。
root@ubuntu16:~# apt-get update ; apt-get upgrade
Dokuwiki用のパッケージインストール
公式ドキュメントに沿ってインストール
root@ubuntu16:~# apt-get install php7.0
root@ubuntu16:~# apt-get install php7.0-mbstring
root@ubuntu16:~# apt-get install php7.0-xml
Apacheはなんとなく触れるので今回はnginxでやってみます。
root@ubuntu16:~# apt-get install nginx
Dokuwikiを取得
root@ubuntu16:~# wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
解凍
root@ubuntu16:~# tar xvf dokuwiki-stable.tgz
ディレクトリ移動
私は/var/lib配下に入れるのが好きなのでここに移動します。
ドキュメントルートはどこがベストプラクティスなんですかねえ。
root@ubuntu16:~# mv dokuwiki-2017-02-19e /var/lib/dokuwiki
バックアップとって設定ファイル書き換えます。
root@ubuntu16:~# cp -i /etc/nginx/sites-available/default{,.bk} root@ubuntu16:~# ls -l /etc/nginx/sites-available/ total 8 -rw-r--r-- 1 root root 2074 Feb 11 2017 default -rw-r--r-- 1 root root 2074 Feb 7 14:58 default.bk
こんな感じ。
ローカルだしまだnginx慣れてないのでhttpでいいです。
root@ubuntu16:~# cat /etc/nginx/sites-available/default #server { # listen 80; # listen [::]:80; # server_name wiki.domain.example; # return 301 https://$server_name$request_uri; #} server { #listen [::]:443 ssl; listen 80; #server_name localhost; # Maximum file upload size is 4MB - change accordingly if needed client_max_body_size 4M; client_body_buffer_size 128k; root /var/lib/dokuwiki; index doku.php; #Remember to comment the below out when you're installing, and uncomment it when done. location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; } # Uncomment this prevents images being displayed ! # location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { # expires 31536000s; # add_header Pragma "public"; # add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate"; # log_not_found off; # } location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { # rewrites "doku.php/" out of the URLs if you set the userewrite setting to .htaccess in dokuwiki config page rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } location ~ \.php$ { try_files $uri $uri/ /doku.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_index doku.php; #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass unix:run/php/php7.0-fpm.sock; } }
サービス起動
root@ubuntu16:~# systemctl start nginx
httpが上がりました。ssh使わないし閉じちゃってもいいかも。
root@ubuntu16:~# ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::*
所有ユーザ変更を忘れていました。
root@ubuntu16:~# chown -R www-data:www-data /var/lib/dokuwiki
php-fpmとnginxを再起動。
php-fpmが何者かよくわかってないけどFastCGI実装の一つだそう。
root@ubuntu16:~# systemctl restart php7.0-fpm root@ubuntu16:~# systemctl restart nginx
ローカルでアクセスしてみます。
root@ubuntu16:~# curl -I localhost HTTP/1.1 200 OK Server: nginx/1.10.3 (Ubuntu) Date: Mon, 12 Feb 2018 09:45:31 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Set-Cookie: DokuWiki=8mbt5hbngnkj4hp92d6l7mlnp1; path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache X-UA-Compatible: IE=edge,chrome=1
大丈夫そうなのでホストからも確認。
masashi@PC-ubuntu:~$ curl -I 10.94.47.134 HTTP/1.1 200 OK Server: nginx/1.10.3 (Ubuntu) Date: Mon, 12 Feb 2018 09:46:29 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Set-Cookie: DokuWiki=7d9kukc20pv85djjrk0imq9s64; path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache X-UA-Compatible: IE=edge,chrome=1
OKですね。
ではブラウザから。
できました!
編集してみる
文章書いてみます。
セーブして...
ページが作れました!
Dokuwikiの使い方含め技術ログもここに書きためていこう思います。
セキュリティ周りの設定がガバガバな気がしますが、とりあえず動いたのでOKです。
細かいのはこれからチューニングしていきます。(できたら)
参考サイト
公式ドキュメントはphp5系なのでこちらを参考に7系で動かしました。
Nginx・PHP7.0・Ubuntu14.04でphpinfoを表示させる - Qiita
ていうかqiitaに書きためとけばいい気がしてきた...