前回でやっと終わったと思った Flask アプリの引っ越し、終わってなかった。
動作確認で、表示や検索の確認はできたのでそれで OK と思っていた。ところが、今日データを更新しようとしたらエラーになって更新できないことが判明。どうやらデータベース周りのエラーらしい。
そういえば、データベースを初期化した時にメッセージが出てた。Warning だったのでとりあえずそのままにしたんだけど、あれがダメだったのか?
ともかく新しいデータを登録できない状況で、アプリを改修しなきゃいけなさそう。そのためには、apostrophe で動いているもうひとつの Web アプリ(こっちは Rails 製)の引っ越しをして、apostrophe を 16.04 LTS にアップグレードしなきゃならない。そうでないと開発環境が整わないから。
ああ、道は遠いな。
カテゴリー: misc
Flaskアプリを引っ越す(3)
昨日は、Ubuntu 起動時にアプリを自動起動する systemctl enable
コマンドでエラーが出る、というところで終わった。
動いている
エラーが出ているのでてっきり自動起動に失敗しているものとばかり思っていたけど、ちゃんと enabled になっていた。
bruschetta@wplj:~$ systemctl list-unit-files | grep bruschetta bruschetta.service enabled
bruschetta@wplj:~$ systemctl status bruschetta ● bruschetta.service - Bruschetta service Loaded: loaded (/lib/systemd/system/bruschetta.service; enabled; vendor prese Active: active (running) since 火 2017-02-28 22:42:15 JST; 6h ago Process: 1105 ExecStart=/etc/init.d/bruschetta start (code=exited, status=0/SU Main PID: 1138 (uwsgi) CGroup: /system.slice/bruschetta.service ├─1138 uwsgi bruschetta.ini ├─1569 uwsgi bruschetta.ini └─1570 uwsgi bruschetta.ini
試しにリブートしてみても、ちゃんと自動起動していることを確認した。
うーん、ますます訳がわかんなくなってきた。が、まあいい、この件は後でゆっくり調べることにして、先に進めよう。
データベースファイルをコピー
apostrophe からデータベースファイルをコピーする。Sqlite3 なので、単にファイルを上書きコピーすればいいだけだ。
bruschetta@wplj:~/bruschetta/bruschetta$ scp bruschetta@apostrophe:bruschetta/bruschetta/bruschetta.db . bruschetta@apostrophe's password: bruschetta.db 100% 876KB 876.0KB/s 00:00
そんで、アプリを再起動。
bruschetta@wplj:~/bruschetta/bruschetta$ sudo systemctl stop bruschetta [sudo] bruschetta のパスワード: bruschetta@wplj:~/bruschetta/bruschetta$ sudo systemctl start bruschetta
service
コマンドじゃなくて systemctl
コマンドを使ってみた。ブラウザで確認してみると、無事データが移行されていた。
Nginxのヴァーチャルホスト
ヴァーチャルホスト bruschetta でアプリにアクセスできるようにする。これも設定ファイルを apostrophe からコピーしてくる。
bruschetta@wplj:~/bruschetta/bruschetta$ cd /etc/nginx/sites-available bruschetta@wplj:/etc/nginx/sites-available$ sudo scp bruschetta@apostrophe:/etc/nginx/sites-available/bruschetta . bruschetta@apostrophe's password: bruschetta 100% 905 0.9KB/s 00:00
コピーした設定ファイルがこれ。
upstream uwsgi-bruschetta { server 127.0.0.1:9090; } server { # port listen 80; # server name server_name bruschetta; # document root root /home/bruschetta/bruschetta; # index #index index.php index.html index.htm; # log files access_log /var/log/nginx/bruschetta/access.log combined; error_log /var/log/nginx/bruschetta/error.log warn; keepalive_timeout 60; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; #client_max_body_size 20M; location / { #root /home/bruschetta/bruschetta; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://uwsgi-bruschetta; } }
sites-enabled/bruschetta にリンクを張る。
bruschetta@wplj:/etc/nginx/sites-available$ sudo ln -s /etc/nginx/sites-available/bruschetta /etc/nginx/sites-enabled/bruschetta bruschetta@wplj:/etc/nginx/sites-available$ cd ../sites-enabled bruschetta@wplj:/etc/nginx/sites-enabled$ ls bruschetta default
ログファイル用のディレクトリを作る。
bruschetta@wplj:/etc/nginx/sites-enabled$ sudo mkdir /var/log/nginx/bruschetta
/etc/hosts ファイルを編集して1行追加。
192.168.1.6 bruschetta
そして Nginx を再起動。
bruschetta@wplj:/etc/nginx/sites-enabled$ sudo systemctl restart nginx
OK。あとは他のマシンの hosts ファイルも編集して bruschetta にアクセスできるようにするだけだ。はー、長かった。
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
やった!動いた!start
と stop
を繰り返してみると、ちゃんと起動、停止する。今度は大丈夫そうだ。
ところが
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。