Flaskアプリを引っ越す(2)

前のエントリは、/lib/systemd/system/bruschetta.service ファイルの書き方がわからない、というところで終わった。

Unit設定ファイル

その後、なんとなくではあるけど書けたので、とりあえずは動くようになった。参考になったページはここ。

 cf. 第4回 Unit設定ファイルの記述方法 – ITPro

Unit設定ファイルというらしい。ともかく、このページを参考にして書いたのがこれ。

[Unit]
Description=Bruschetta service
After=network.target

[Service]
ExecStart=/etc/init.d/bruschetta start
ExecStop=/etc/init.d/bruschetta stop
Restart=always
Type=forking
PIDFile=/var/run/bruschetta.pid

このファイルから、/etc/systemd/system/bruschetta.service にリンクを張る。

bruschetta@wplj:~$ sudo ln -s /lib/systemd/system/bruschetta.service /etc/systemd/system/bruschetta.service

起動確認

で、起動。

bruschetta@wplj:~$ sudo service bruschetta start

やった!動いた!
startstop を繰り返してみると、ちゃんと起動、停止する。今度は大丈夫そうだ。

ところが

Ubuntu 自体を再起動すると、サービスが動いていない。またもググッて調べた結果、systemctl enable コマンドを使えばいいらしい。

 cf. Systemdを使ってさくっと自作コマンドをサービス化してみる – Qiita

bruschetta@wplj:~$ sudo systemctl enable bruschetta
[sudo] bruschetta のパスワード: 
Synchronizing state of bruschetta.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable bruschetta
insserv: warning: script 'bruschetta' missing LSB tags and overrides
update-rc.d: error: bruschetta Default-Start contains no runlevels, aborting.

あれぇ?

更にググるとこのページを見つけた。

 cf. Systemd入門(4) – serviceタイプUnitの設定ファイル – めもめも

/lib/systemd/system/bruschetta.service ファイルに [Install] セクションを付け足してみる。

[Unit]
Description=Bruschetta service
After=network.target

[Service]
ExecStart=/etc/init.d/bruschetta start
ExecStop=/etc/init.d/bruschetta stop
Restart=always
Type=forking
PIDFile=/var/run/bruschetta.pid

[Install]
WantedBy=multi-user.target

今度はどうだ。

bruschetta@wplj:~$ sudo systemctl enable bruschetta
Synchronizing state of bruschetta.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable bruschetta
insserv: warning: script 'K01bruschetta' missing LSB tags and overrides
insserv: warning: script 'bruschetta' missing LSB tags and overrides
update-rc.d: error: bruschetta Default-Start contains no runlevels, aborting.

ああダメだ。……というところで今日は時間切れ。

Flaskアプリを引っ越す

apostrophe で動いている Flask アプリを wplj に引っ越す。

virtualenvとuwsgiのインストール

takatoh@wplj $ pip install virtualenv
プログラム 'pip' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt install python-pip

あれ、pip がインストールされてなかった。

takatoh@wplj $ sudo apt install python-pip

では、あらためて。

takatoh@wplj $ sudo pip install virtualenv
takatoh@wplj $ sudo pip install uwsgi

以前のエントリを見たら sudo をつけていたので、今回もつけて実行した。

takatoh@wplj $ pip list
adium-theme-ubuntu (0.3.4)
dnspython (1.12.0)
pip (8.1.1)
pycrypto (2.6.1)
setuptools (20.7.0)
unity-lens-photos (1.0)
uWSGI (2.0.14)
virtualenv (15.1.0)
wheel (0.29.0)
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

virtualenv と uWSGI がちゃんとインストールされてる。pip をアップグレードしろみたいなメッセージが出てるけど、これはあとでいいや。

ユーザを作る

Flask アプリを動かす専用のユーザを作る。

takatoh@wplj $ sudo adduser bruschetta
ユーザー `bruschetta' を追加しています...
新しいグループ `bruschetta' (1001) を追加しています...
新しいユーザー `bruschetta' (1001) をグループ `bruschetta' に追加しています...
ホームディレクトリ `/home/bruschetta' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい UNIX パスワードを入力してください: 
新しい UNIX パスワードを再入力してください: 
passwd: パスワードは正しく更新されました
bruschetta のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
	フルネーム []: 
	部屋番号 []: 
	職場電話番号 []: 
	自宅電話番号 []: 
	その他 []: 
以上で正しいですか? [Y/n] y

sudo する権利をつける。

takatoh@wplj $ sudo gpasswd -a bruschetta sudo
ユーザ bruschetta をグループ sudo に追加

ここで今作ったユーザでログインしなおす。

Flaskアプリの配置

GitHub からクローン。

bruschetta@wplj:~$ git clone https://github.com/takatoh/Bruschetta.git bruschetta
Cloning into 'bruschetta'...
remote: Counting objects: 358, done.
remote: Total 358 (delta 0), reused 0 (delta 0), pack-reused 358
Receiving objects: 100% (358/358), 31.96 KiB | 0 bytes/s, done.
Resolving deltas: 100% (241/241), done.
Checking connectivity... done.

virtualenv を作って必要なライブラリをインストール。

bruschetta@wplj:~/bruschetta$ virtualenv env
New python executable in /home/bruschetta/bruschetta/env/bin/python
Installing setuptools, pip, wheel...done.
bruschetta@wplj:~/bruschetta$ source env/bin/activate
(env) bruschetta@wplj:~/bruschetta$ pip install -r requirements.txt
Collecting Flask (from -r requirements.txt (line 1))
  Downloading Flask-0.12-py2.py3-none-any.whl (82kB)
    100% |████████████████████████████████| 92kB 3.0MB/s 
Collecting Flask-SQLAlchemy (from -r requirements.txt (line 2))
  Downloading Flask_SQLAlchemy-2.2-py2.py3-none-any.whl
Collecting Flask-Script (from -r requirements.txt (line 3))
  Downloading Flask-Script-2.0.5.tar.gz (42kB)
    100% |████████████████████████████████| 51kB 4.0MB/s 
Collecting itsdangerous>=0.21 (from Flask->-r requirements.txt (line 1))
  Downloading itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 4.6MB/s 
Collecting click>=2.0 (from Flask->-r requirements.txt (line 1))
  Downloading click-6.7-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 4.4MB/s 
Collecting Werkzeug>=0.7 (from Flask->-r requirements.txt (line 1))
  Downloading Werkzeug-0.11.15-py2.py3-none-any.whl (307kB)
    100% |████████████████████████████████| 317kB 3.0MB/s 
Collecting Jinja2>=2.4 (from Flask->-r requirements.txt (line 1))
  Downloading Jinja2-2.9.5-py2.py3-none-any.whl (340kB)
    100% |████████████████████████████████| 348kB 4.0MB/s 
Collecting SQLAlchemy>=0.8.0 (from Flask-SQLAlchemy->-r requirements.txt (line 2))
  Downloading SQLAlchemy-1.1.5.tar.gz (5.1MB)
    100% |████████████████████████████████| 5.1MB 237kB/s 
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->Flask->-r requirements.txt (line 1))
  Downloading MarkupSafe-0.23.tar.gz
Building wheels for collected packages: Flask-Script, itsdangerous, SQLAlchemy, MarkupSafe
  Running setup.py bdist_wheel for Flask-Script ... done
  Stored in directory: /home/bruschetta/.cache/pip/wheels/e2/ea/d8/8d114e46cef819f7d9879504a7f9cb2a88a479af2858223d9f
  Running setup.py bdist_wheel for itsdangerous ... done
  Stored in directory: /home/bruschetta/.cache/pip/wheels/fc/a8/66/24d655233c757e178d45dea2de22a04c6d92766abfb741129a
  Running setup.py bdist_wheel for SQLAlchemy ... done
  Stored in directory: /home/bruschetta/.cache/pip/wheels/8d/0a/3b/2109101a4052e58ad64f83661383a6b483a1c383eb09aad6d6
  Running setup.py bdist_wheel for MarkupSafe ... done
  Stored in directory: /home/bruschetta/.cache/pip/wheels/a3/fa/dc/0198eed9ad95489b8a4f45d14dd5d2aee3f8984e46862c5748
Successfully built Flask-Script itsdangerous SQLAlchemy MarkupSafe
Installing collected packages: itsdangerous, click, Werkzeug, MarkupSafe, Jinja2, Flask, SQLAlchemy, Flask-SQLAlchemy, Flask-Script
Successfully installed Flask-0.12 Flask-SQLAlchemy-2.2 Flask-Script-2.0.5 Jinja2-2.9.5 MarkupSafe-0.23 SQLAlchemy-1.1.5 Werkzeug-0.11.15 click-6.7 itsdangerous-0.24

データベースの初期化。

(env) bruschetta@wplj:~/bruschetta$ python manage.py init_db
manage.py:2: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
  from flask.ext.script import Manager
/home/bruschetta/bruschetta/bruschetta/__init__.py:2: ExtDeprecationWarning: Importing flask.ext.sqlalchemy is deprecated, use flask_sqlalchemy instead.
  from flask.ext.sqlalchemy import SQLAlchemy

なんか SQLAlchemy がらみでメッセージが出てるな。まあいい、先に進めよう。
起動確認。

(env) bruschetta@wplj:~/bruschetta$ python manage.py runserver
manage.py:2: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
  from flask.ext.script import Manager
/home/bruschetta/bruschetta/bruschetta/__init__.py:2: ExtDeprecationWarning: Importing flask.ext.sqlalchemy is deprecated, use flask_sqlalchemy instead.
  from flask.ext.sqlalchemy import SQLAlchemy
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [28/Feb/2017 20:14:23] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [28/Feb/2017 20:14:23] "GET /static/style.css HTTP/1.1" 200 -
127.0.0.1 - - [28/Feb/2017 20:14:23] "GET /favicon.ico HTTP/1.1" 404 -

OK。ブラウザでも確認できた。
ここで virtualenv から抜ける。

(env) bruschetta@wplj:~/bruschetta$ deactivate

uWSGIで起動

uWSGI の設定ファイルを apostrophe からコピーしてくる。

bruschetta@wplj:~/bruschetta$ scp bruschetta@apostrophe:bruschetta/bruschetta.ini .
bruschetta@apostrophe's password: 
bruschetta.ini                                100%  350     0.3KB/s   00:00

内容はこんな感じ。

[uwsgi]
uid = www-data
gid = www-data
http = :9090
venv = /home/bruschetta/bruschetta/env
python-path = /home/bruschetta/bruschetta
wsgi-file = /home/bruschetta/bruschetta/manage.py
callable = app
master=true
pidfile=/var/run/bruschetta.pid
daemonize=/home/bruschetta/bruschetta/bruschetta.log

ディレクトリ構成は一緒だから、このまま行けるはずだ。

bruschetta@wplj:~/bruschetta$ sudo uwsgi bruschetta.ini
sudo bruschetta のパスワード: 
uWSGI getting INI configuration from bruschetta.ini

OK。今度もブラウザで確認できた。

起動スクリプト

これも以前のスクリプトと同じ。

#!/bin/sh

PATH=/usr/local/bin:/usr/bin:/bin:/sbin
APP_ROOT=/home/bruschetta/bruschetta

case "$1" in
start)
cd ${APP_ROOT}
uwsgi bruschetta.ini
;;
stop)
PID_FILE=/var/run/bruschetta.pid
PID=`cat ${PID_FILE}`
kill -INT ${PID}
rm ${PID_FILE}
;;
*)
echo "Usage: bruschetta {start|stop}" >&2
exit 1
;;
esac

exit 0

起動確認。

bruschetta@wplj:~/bruschetta$ sudo service bruschetta start
Failed to start bruschetta.service: Unit bruschetta.service not found.

あれ、ダメだ。bruschetta.service ってなんだ?
ググってみると、/lib/systemd/system/bruschetta.service ファイルを作ってやればいいようだけど、書き方がよくわからない。どうしたもんか……

20auto-upgrades.ucf-distファイルについて

Ubuntu 16.04 にパッケージをインストールしたとき、最後にこんなメッセージが出る。

N: ディレクトリ '/etc/apt/apt.conf.d/' の '20auto-upgrades.ucf-dist' が無効なファイル名拡張子を持っているため、無視します

ググってみたら、このページを見つけた。

 cf. Ubuntu 16.10 その53 – aptコマンド実行時に20auto-upgrades.ucf-distに関するメッセージが表示される – kledgeb

このページによると、システムに影響を与えないので無視しておいても構わないようだ。対処法として「放置する」と「削除する」が紹介されている。
どっちでもいいなら削除しよう。

takatoh@wplj $ sudo rm /etc/apt/apt.conf.d/20auto-upgrades.ucf-dist

これでOKかな。

sqlite3をインストールする

wplj に sqlite3 をインストールする。

takatoh@wplj $ sudo apt install sqlite3
[sudo] takatoh のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libpango1.0-0 libpangox-1.0-0 ubuntu-core-launcher
これを削除するには 'sudo apt autoremove' を利用してください。
提案パッケージ:
  sqlite3-doc
以下のパッケージが新たにインストールされます:
  sqlite3
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
515 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,938 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 sqlite3 amd64 3.11.0-1ubuntu1 [515 kB]
515 kB を 0秒 で取得しました (3,497 kB/s)
N: ディレクトリ '/etc/apt/apt.conf.d/' の '20auto-upgrades.ucf-dist' が無効なファイル名拡張子を持っているため、無視します
以前に未選択のパッケージ sqlite3 を選択しています。
(データベースを読み込んでいます ... 現在 216083 個のファイルとディレクトリがインストールされています。)
.../sqlite3_3.11.0-1ubuntu1_amd64.deb を展開する準備をしています ...
sqlite3 (3.11.0-1ubuntu1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
sqlite3 (3.11.0-1ubuntu1) を設定しています ...
N: ディレクトリ '/etc/apt/apt.conf.d/' の '20auto-upgrades.ucf-dist' が無効なファイル名拡張子を持っているため、無視します

今日はこれで終わり。

と思ったけど、やっぱり最後のメッセージが気になるので調べてみた。エントリを分けて書く。

wikiを引っ越し

apostrophe で運用している wiki を wplj に引っ越す。
参考ページ:
 cf. wikiの引越し – blog.panicblanket.com

データのバックアップ

バックアップというか、apostrophe の wiki のデータを吐き出させる。データベースのデータは mysqldump コマンドで、画像などのデータは tar コマンドで固める。

takatoh@wplj $ ssh takatoh@apostrophe
takatoh@apostrophe's password: 
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-110-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

New release '16.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Sat Feb 25 17:14:03 2017 from wplj
takatoh@apostrophe $ mysqldump -u root -p wiki > wiki.sql
Enter password:
takatoh@apostrophe $ cd /var/www/html/wiki
takatoh@apostrophe $ sudo tar czf images.tar.gz images
takatoh@apostrophe $ cp images.tar.gz /home/takatoh
takatoh@apostrophe $ exit
ログアウト
Connection to apostrophe closed.

データの移動

apostrophe から wplj へ移動。scp コマンド使用。

takatoh@wplj $ scp takatoh@apostrophe:wiki.sql .
takatoh@apostrophe's password: 
wiki.sql                                      100%   20MB  20.5MB/s   00:01    
takatoh@wplj $ scp takatoh@apostrophe:images.tar.gz .
takatoh@apostrophe's password: 
images.tar.gz                                 100%  326MB  81.4MB/s   00:04

データベースへの読み込みとimagesの展開

takatoh@wplj $ mysql -u root -p wiki < wiki.sql
Enter password: 
takatoh@wplj $ cd /var/www/html/wiki
takatoh@wplj $ sudo cp /home/takatoh/images.tar.gz .
[sudo] takatoh のパスワード: 
takatoh@wplj $ ls
COPYING               autoload.php                maintenance
CREDITS               cache                       mw-config
FAQ                   composer.json               opensearch_desc.php
Gemfile.lock          composer.local.json-sample  phpcs.xml
Gruntfile.js          docs                        profileinfo.php
HISTORY               extensions                  resources
INSTALL               images                      serialized
LocalSettings.php     images.tar.gz               skins
README                img_auth.php                tests
RELEASE-NOTES-1.27    includes                    thumb.php
Rakefile              index.php                   thumb_handler.php
StartProfiler.sample  jsduck.json                 vendor
UPGRADE               languages                   wiki.phtml
api.php               load.php
takatoh@wplj $ sudo tar xzf images.tar.gz
takatoh@wplj $ sudo chown -R www-data:www-data images

これで完了。ブラウザでアクセスすると、ちゃんと表示された。
今回は、前回の引っ越しの時のように、MediwWiki のインストールやり直しみたいな事にはならなかった。
これでしばらく様子を見よう。

MediaWikiをインストール

参考にしたページ:
 cf. How to install MediaWiki on an Ubuntu 16.04 VPS – RoseHosting
 cf. UbuntuでMediaWikiを動かす – blog.panicblanket.com

関連パッケージのインストール

takatoh@wplj $ sudo apt update
takatoh@wplj $ sudo apt upgrade
takatoh@wplj $ sudo apt install imagemagick php7.0-intl php7.0-curl php7.0-gd php7.0-mbstring php7.0-mysql
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
imagemagick はすでに最新バージョン (8:6.8.9.9-7ubuntu5.4) です。
imagemagick は手動でインストールしたと設定されました。
php7.0-gd はすでに最新バージョン (7.0.15-0ubuntu0.16.04.2) です。
php7.0-gd は手動でインストールしたと設定されました。
php7.0-mysql はすでに最新バージョン (7.0.15-0ubuntu0.16.04.2) です。
php7.0-mysql は手動でインストールしたと設定されました。
php7.0-mbstring はすでに最新バージョン (7.0.15-0ubuntu0.16.04.2) です。
php7.0-mbstring は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libpango1.0-0 libpangox-1.0-0 ubuntu-core-launcher
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  php7.0-curl php7.0-intl
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
153 kB のアーカイブを取得する必要があります。
この操作後に追加で 637 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 php7.0-curl amd64 7.0.15-0ubuntu0.16.04.2 [27.5 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 php7.0-intl amd64 7.0.15-0ubuntu0.16.04.2 [126 kB]
153 kB を 0秒 で取得しました (1,457 kB/s)
N: ディレクトリ '/etc/apt/apt.conf.d/' の '20auto-upgrades.ucf-dist' が無効なファイル名拡張子を持っているため、無視します
以前に未選択のパッケージ php7.0-curl を選択しています。
(データベースを読み込んでいます ... 現在 216065 個のファイルとディレクトリがインストールされています。)
.../php7.0-curl_7.0.15-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
php7.0-curl (7.0.15-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ php7.0-intl を選択しています。
.../php7.0-intl_7.0.15-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
php7.0-intl (7.0.15-0ubuntu0.16.04.2) を展開しています...
php7.0-fpm (7.0.15-0ubuntu0.16.04.2) のトリガを処理しています ...
php7.0-curl (7.0.15-0ubuntu0.16.04.2) を設定しています ...

Creating config file /etc/php/7.0/mods-available/curl.ini with new version
php7.0-intl (7.0.15-0ubuntu0.16.04.2) を設定しています ...

Creating config file /etc/php/7.0/mods-available/intl.ini with new version
php7.0-fpm (7.0.15-0ubuntu0.16.04.2) のトリガを処理しています ...
N: ディレクトリ '/etc/apt/apt.conf.d/' の '20auto-upgrades.ucf-dist' が無効なファイル名拡張子を持っているため、無視します

なんか最後のメッセージが気になるな。まあ、いいか。次に進めよう。

MediaWikiのインストール

takatoh@wplj $ cd /var/www/html
takatoh@wplj $ sudo wget https://releases.wikimedia.org/mediawiki/1.27/mediawiki-1.27.1.tar.gz
takatoh@wplj $ tar -xvzf mediawiki-1.27.1.tar.gz
takatoh@wplj $ ls
index.nginx-debian.html  mediawiki-1.27.1.tar.gz  phpmyadmin
mediawiki-1.27.1         phpinfo.php
takatoh@wplj $ sudo mv mediawiki-1.27.1 wiki
takatoh@wplj $ ls
index.nginx-debian.html  mediawiki-1.27.1.tar.gz  phpinfo.php  phpmyadmin  wiki

wiki ディレクトリのオーナーを変更。

takatoh@wplj $ sudo chown www-data:www-data -R wiki
takatoh@wplj $ ls -l
合計 30780
-rw-r--r--  1 root     root          612  2月 24 21:19 index.nginx-debian.html
-rw-r--r--  1 root     root     31504507  8月 23  2016 mediawiki-1.27.1.tar.gz
-rw-r--r--  1 root     root           23  2月 25 17:16 phpinfo.php
lrwxrwxrwx  1 root     root           21  2月 26 13:53 phpmyadmin -> /usr/share/phpmyadmin
drwxr-xr-x 15 www-data www-data     4096  8月 23  2016 wiki

ブラウザで http://localhost/wiki に接続してセットアップする。
最後に LocalSettings.php ファイルをダウンロード(これは自動で行われる)して /var/www/html/wiki ディレクトリにコピー。

takatoh@wplj $ sudo cp /home/takatoh/Downloads/LocalSettings.php wiki
takatoh@wplj $ ls -l wiki
合計 1136
-rw-r--r--  1 www-data www-data  19419  8月 23  2016 COPYING
-rw-r--r--  1 www-data www-data   4181  8月 23  2016 CREDITS
-rw-r--r--  1 www-data www-data     77  8月 23  2016 FAQ
-rw-r--r--  1 www-data www-data   2606  8月 23  2016 Gemfile.lock
-rw-r--r--  1 www-data www-data   2578  8月 23  2016 Gruntfile.js
-rw-r--r--  1 www-data www-data 784935  8月 23  2016 HISTORY
-rw-r--r--  1 www-data www-data   3625  8月 23  2016 INSTALL
-rw-r--r--  1 root     root       4093  2月 26 14:45 LocalSettings.php
-rw-r--r--  1 www-data www-data   1453  8月 23  2016 README
-rw-r--r--  1 www-data www-data  35118  8月 23  2016 RELEASE-NOTES-1.27
-rw-r--r--  1 www-data www-data    530  8月 23  2016 Rakefile
-rw-r--r--  1 www-data www-data   1703  8月 23  2016 StartProfiler.sample
-rw-r--r--  1 www-data www-data  11830  8月 23  2016 UPGRADE
-rw-r--r--  1 www-data www-data   4159  8月 23  2016 api.php
-rw-r--r--  1 www-data www-data 112767  8月 23  2016 autoload.php
drwxr-xr-x  2 www-data www-data   4096  8月 23  2016 cache
-rw-r--r--  1 www-data www-data   2693  8月 23  2016 composer.json
-rw-r--r--  1 www-data www-data    102  8月 23  2016 composer.local.json-sample
drwxr-xr-x  8 www-data www-data   4096  8月 23  2016 docs
drwxr-xr-x 19 www-data www-data   4096  8月 23  2016 extensions
drwxr-xr-x  2 www-data www-data   4096  2月 26 14:34 images
-rw-r--r--  1 www-data www-data   7440  8月 23  2016 img_auth.php
drwxr-xr-x 62 www-data www-data   4096  8月 23  2016 includes
-rw-r--r--  1 www-data www-data   1590  8月 23  2016 index.php
-rw-r--r--  1 www-data www-data   1690  8月 23  2016 jsduck.json
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 languages
-rw-r--r--  1 www-data www-data   1685  8月 23  2016 load.php
drwxr-xr-x 17 www-data www-data  12288  8月 23  2016 maintenance
drwxr-xr-x  4 www-data www-data   4096  8月 23  2016 mw-config
-rw-r--r--  1 www-data www-data   3859  8月 23  2016 opensearch_desc.php
-rw-r--r--  1 www-data www-data   1735  8月 23  2016 phpcs.xml
-rw-r--r--  1 www-data www-data  11811  8月 23  2016 profileinfo.php
drwxr-xr-x  5 www-data www-data   4096  8月 23  2016 resources
drwxr-xr-x  2 www-data www-data   4096  8月 23  2016 serialized
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 skins
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 tests
-rw-r--r--  1 www-data www-data  21655  8月 23  2016 thumb.php
-rw-r--r--  1 www-data www-data   1087  8月 23  2016 thumb_handler.php
drwxr-xr-x 18 www-data www-data   4096  8月 23  2016 vendor
-rw-r--r--  1 www-data www-data     98  8月 23  2016 wiki.phtml
takatoh@wplj $ sudo chown www-data:www-data wiki/LocalSettings.php
takatoh@wplj $ ls -l wiki
合計 1136
-rw-r--r--  1 www-data www-data  19419  8月 23  2016 COPYING
-rw-r--r--  1 www-data www-data   4181  8月 23  2016 CREDITS
-rw-r--r--  1 www-data www-data     77  8月 23  2016 FAQ
-rw-r--r--  1 www-data www-data   2606  8月 23  2016 Gemfile.lock
-rw-r--r--  1 www-data www-data   2578  8月 23  2016 Gruntfile.js
-rw-r--r--  1 www-data www-data 784935  8月 23  2016 HISTORY
-rw-r--r--  1 www-data www-data   3625  8月 23  2016 INSTALL
-rw-r--r--  1 www-data www-data   4093  2月 26 14:45 LocalSettings.php
-rw-r--r--  1 www-data www-data   1453  8月 23  2016 README
-rw-r--r--  1 www-data www-data  35118  8月 23  2016 RELEASE-NOTES-1.27
-rw-r--r--  1 www-data www-data    530  8月 23  2016 Rakefile
-rw-r--r--  1 www-data www-data   1703  8月 23  2016 StartProfiler.sample
-rw-r--r--  1 www-data www-data  11830  8月 23  2016 UPGRADE
-rw-r--r--  1 www-data www-data   4159  8月 23  2016 api.php
-rw-r--r--  1 www-data www-data 112767  8月 23  2016 autoload.php
drwxr-xr-x  2 www-data www-data   4096  8月 23  2016 cache
-rw-r--r--  1 www-data www-data   2693  8月 23  2016 composer.json
-rw-r--r--  1 www-data www-data    102  8月 23  2016 composer.local.json-sample
drwxr-xr-x  8 www-data www-data   4096  8月 23  2016 docs
drwxr-xr-x 19 www-data www-data   4096  8月 23  2016 extensions
drwxr-xr-x  2 www-data www-data   4096  2月 26 14:34 images
-rw-r--r--  1 www-data www-data   7440  8月 23  2016 img_auth.php
drwxr-xr-x 62 www-data www-data   4096  8月 23  2016 includes
-rw-r--r--  1 www-data www-data   1590  8月 23  2016 index.php
-rw-r--r--  1 www-data www-data   1690  8月 23  2016 jsduck.json
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 languages
-rw-r--r--  1 www-data www-data   1685  8月 23  2016 load.php
drwxr-xr-x 17 www-data www-data  12288  8月 23  2016 maintenance
drwxr-xr-x  4 www-data www-data   4096  8月 23  2016 mw-config
-rw-r--r--  1 www-data www-data   3859  8月 23  2016 opensearch_desc.php
-rw-r--r--  1 www-data www-data   1735  8月 23  2016 phpcs.xml
-rw-r--r--  1 www-data www-data  11811  8月 23  2016 profileinfo.php
drwxr-xr-x  5 www-data www-data   4096  8月 23  2016 resources
drwxr-xr-x  2 www-data www-data   4096  8月 23  2016 serialized
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 skins
drwxr-xr-x  6 www-data www-data   4096  8月 23  2016 tests
-rw-r--r--  1 www-data www-data  21655  8月 23  2016 thumb.php
-rw-r--r--  1 www-data www-data   1087  8月 23  2016 thumb_handler.php
drwxr-xr-x 18 www-data www-data   4096  8月 23  2016 vendor
-rw-r--r--  1 www-data www-data     98  8月 23  2016 wiki.phtml

これで完了。

設定の変更

LocalSettings.php を編集する。ロゴを変更。

$wgLogo = "$wgResourceBasePath/skins/MonoBook/wiki.png";

ファイルのアップロードを有効に。

$wgEnableUploads = true;

Windows マシンからでもアクセスできるように。

$wgServer = "http://wplj";

アップロード可能なファイルサイズを設定。これは MediaWiki じゃなくて PHP の設定。/etc/php/7.0/fpm/php.ini を編集。

upload_max_filesize = 8M

MySqlとphpMyAdminをインストール

wplj で MySql を使えるようにする。参考にしたのは過去のエントリ。
 cf. UbuntuにMySqlをインストール – blog.panicblanket.com
 cf. phpMyAdminをインストール – blog.panicblanket.com

MySqlのインストール

takatoh@wplj $ sudo apt install mysql-server

途中で root ユーザのパスワードの入力を促される(2回)ので、入力。
バージョンの確認。

takatoh@wplj $ mysql --version
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

設定ファイルを編集

/etc/mysql に移動して、my.cnf を編集する。一応バックアップをとっておく。

takatoh@wplj $ cd /etc/mysql
takatoh@wplj $ ls
conf.d        debian.cnf  my.cnf.fallback  mysql.conf.d
debian-start  my.cnf      mysql.cnf
takatoh@wplj $ sudo cp my.cnf my.cnf.orig

で、以下を追記。

[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

MySqlを再起動して動作確認

再起動。

takatoh@wplj $ sudo service mysql restart

ログインして、ステータスを確認。

takatoh@wplj $ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:		4
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			55 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 26  Queries per second avg: 0.109
--------------

大丈夫そうかな。プロセスも確認してみる。

takatoh@wplj $ ps aux | grep mysqld
mysql    14000  0.2  3.5 1236388 139200 ?      Ssl  13:41   0:00 /usr/sbin/mysqld
takatoh  14055  0.0  0.0  15256   936 pts/20   S+   13:43   0:00 grep --color=auto mysqld

phpMyAdminのインストール

takatoh@wplj $ sudo apt install phpmyadmin

インストールの途中で設定する Web サーバを訊いてくるけど、Apache2 と Lighttpd しか選択肢がないので、 ESC キーを押して続行。しばらくして「phpmyadmin 用のデータベースを dbconfig-common で設定しますか?」と訊かれるので「はい」を選択。phpmyadmin 用のパスワードを入力。
これでインストールは完了。
/usr/share/phpmyadmin から /var/www/html/phpmyadmin にリンクを張る。

takatoh@wplj $ ls -l /var/www/html
合計 8
-rw-r--r-- 1 root root 612  2月 24 21:19 index.nginx-debian.html
-rw-r--r-- 1 root root  23  2月 25 17:16 phpinfo.php
takatoh@wplj $ ls -l /usr/share | grep phpmyadmin
drwxr-xr-x   10 root root  4096  2月 26 13:46 phpmyadmin
takatoh@wplj $ sudo ln -s /usr/share/phpmyadmin /var/www/html
takatoh@wplj $ ls -l /var/www/html
合計 8
-rw-r--r-- 1 root root 612  2月 24 21:19 index.nginx-debian.html
-rw-r--r-- 1 root root  23  2月 25 17:16 phpinfo.php
lrwxrwxrwx 1 root root  21  2月 26 13:53 phpmyadmin -> /usr/share/phpmyadmin

動作確認

http://localhost/phpmyadmin にログインしたところ。

良さそうだ。

PHPをインストールしてNginxで動くようにする

このページが参考になった。

 cf. nginx + php-fpmでphpを動かす – Qiita

インストール

takatoh@wplj $ sudo apt install php-fpm

php-fpmサービスの確認

takatoh@wplj $ systemctl status php7.0-fpm
● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor prese
   Active: active (running) since 土 2017-02-25 17:00:15 JST; 47s ago
 Main PID: 16510 (php-fpm7.0)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
   CGroup: /system.slice/php7.0-fpm.service
           ├─16510 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)      
           ├─16514 php-fpm: pool www                                            
           └─16515 php-fpm: pool www                                            

 2月 25 17:00:15 wplj systemd[1]: Starting The PHP 7.0 FastCGI Process Manager...
 2月 25 17:00:15 wplj systemd[1]: Started The PHP 7.0 FastCGI Process Manager.

active (running) とか出てるからこれでいいのかな。

socket

/etc/php/7.0/fpm/pool.d/www.conf にソケットの記述あり。

    listen = /run/php/php7.0-fpm.sock
takatoh@wplj $ ls -l /run/php/php7.0-fpm.sock
srw-rw---- 1 www-data www-data 0  2月 25 17:00 /run/php/php7.0-fpm.sock

Nginxから使えるようにする

/etc/nginx/sites-available/default を編集。

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    #
    # # With php7.0-cgi alone:
    # fastcgi_pass 127.0.0.1:9000;
    # With php7.0-fpm:
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

で、Nginx の設定ファイルを読みなおし。

takatoh@wplj $ sudo service nginx reload

動作確認

/var/www/html に phpinfo.php ファイルを作る。

<?php
 phpinfo();
?>

ブラウザで確認。

OK。

Nginxをインストール

apt コマンドでインストール。パッケージが何種類かあるけど、以前と同じ nginx-extras にした。

takatoh@wplj $ apt search nginx | grep ^nginx

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

nginx/xenial-updates,xenial-updates,xenial-security,xenial-security 1.10.0-0ubuntu0.16.04.4 all
nginx-common/xenial-updates,xenial-updates,xenial-security,xenial-security 1.10.0-0ubuntu0.16.04.4 all
nginx-core/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-core-dbg/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-doc/xenial-updates,xenial-updates,xenial-security,xenial-security 1.10.0-0ubuntu0.16.04.4 all
nginx-extras/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-extras-dbg/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-full/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-full-dbg/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-light/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
nginx-light-dbg/xenial-updates,xenial-security 1.10.0-0ubuntu0.16.04.4 amd64
takatoh@wplj $ sudo apt install nginx-extras
[sudo] takatoh のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libluajit-5.1-2 libluajit-5.1-common nginx-common
提案パッケージ:
  fcgiwrap nginx-doc
以下のパッケージが新たにインストールされます:
  libluajit-5.1-2 libluajit-5.1-common nginx-common nginx-extras
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 431 個。
897 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,692 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 libluajit-5.1-common all 2.0.4+dfsg-1 [35.3 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 libluajit-5.1-2 amd64 2.0.4+dfsg-1 [205 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 nginx-common all 1.10.0-0ubuntu0.16.04.4 [26.6 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 nginx-extras amd64 1.10.0-0ubuntu0.16.04.4 [629 kB]
897 kB を 0秒 で取得しました (5,198 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ libluajit-5.1-common を選択しています。
(データベースを読み込んでいます ... 現在 212452 個のファイルとディレクトリがインストールされています。)
.../libluajit-5.1-common_2.0.4+dfsg-1_all.deb を展開する準備をしています ...
libluajit-5.1-common (2.0.4+dfsg-1) を展開しています...
以前に未選択のパッケージ libluajit-5.1-2:amd64 を選択しています。
.../libluajit-5.1-2_2.0.4+dfsg-1_amd64.deb を展開する準備をしています ...
libluajit-5.1-2:amd64 (2.0.4+dfsg-1) を展開しています...
以前に未選択のパッケージ nginx-common を選択しています。
.../nginx-common_1.10.0-0ubuntu0.16.04.4_all.deb を展開する準備をしています ...
nginx-common (1.10.0-0ubuntu0.16.04.4) を展開しています...
以前に未選択のパッケージ nginx-extras を選択しています。
.../nginx-extras_1.10.0-0ubuntu0.16.04.4_amd64.deb を展開する準備をしています ...
nginx-extras (1.10.0-0ubuntu0.16.04.4) を展開しています...
ufw (0.35-0ubuntu2) のトリガを処理しています ...
プロファイル 'Samba' を規定するルールが更新されました
ファイアウォールを再読込しました
ureadahead (0.100.0-19) のトリガを処理しています ...
systemd (229-4ubuntu4) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
libluajit-5.1-common (2.0.4+dfsg-1) を設定しています ...
libluajit-5.1-2:amd64 (2.0.4+dfsg-1) を設定しています ...
nginx-common (1.10.0-0ubuntu0.16.04.4) を設定しています ...
nginx-extras (1.10.0-0ubuntu0.16.04.4) を設定しています ...
libc-bin (2.23-0ubuntu3) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
systemd (229-4ubuntu4) のトリガを処理しています ...
ufw (0.35-0ubuntu2) のトリガを処理しています ...
プロファイル 'Samba' を規定するルールが更新されました
ファイアウォールを再読込しました

80番ポートを開ける。

takatoh@wplj $ sudo ufw allow http
ルールを追加しました
ルールを追加しました (v6)
takatoh@wplj $ sudo ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
Samba                      ALLOW       Anywhere                  
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
Samba (v6)                 ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)

これでOK。