MediaWikiサーバの作り方(その2)

3.稼働させるサーバサービスに必要なパッケージの導入

作業の順番としては、「2.OSの環境設定」が先なのですが、、、、

Linuxカーネルバージョンが、3.x系になってから、各種Linuxディストリビューションとも、systemdやNetwork-Mangerなど最新機能によって、構築作業での操作が大幅に変わり、以前までやっていた作業を、書籍やほかのWEBサイトで調べながら、試行錯誤の結果、最低限のところまでやれただけで、やり切れてないところや、やったことも十分なものか怪しい状況なので、もっと勉強して、整理出来たら投稿しようと思っています。

そういったことで、上記作業工程でも結構時間がかかってしまい、放置してしまうと、それだけお金が無駄になってしまいますし、やらなきゃいけないことがたくさんあるので、最も重要な主機能に当たるWikiサーバ機能を実装していくことにしました。

今回構築するWikiサーバの具体的な仕様としては、

  1. OSは、さくらインターネットVPSサーバでサポートされているLinuxOSのうち、プライベートで使用している(2ndマシンとして)Ubuntu20.04 Server とする。
  2. RDBMSは、通常使用されるMySQLやMariaDBではなく、会社で唯一使用しているLinuxサーバで実装しているPostgreSQLを使用する。(これは、単に個人的な要件)
  3. 上記RDBMSおよび、PHP、Webサーバサービスは、前項1に記すOSにバンドルされているパッケージを採用する。(PHPはバージョン7.4.3、WEBサーバはApache2.4.xx)
  4. MediaWikiは、現時点で最新のもの(バージョン:1.36.2)

では、さっそく上記必要パッケージをインストールしていく。

1)PHPおよびApache Webサーバのインストール

$> sudo apt-get install php php-apcu php-intl php-mbstring php-xml php-pgsql apache2


[sudo] password for ubuntu:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0
  libonig5 libpq5 php-apcu-bc php-common php7.4 php7.4-cli php7.4-common
  php7.4-intl php7.4-json php7.4-mbstring php7.4-opcache php7.4-pgsql
  php7.4-readline php7.4-xml ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser
  php-pear php-gd openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0
  libonig5 libpq5 php php-apcu php-apcu-bc php-common php-intl php-mbstring
  php-pgsql php-xml php7.4 php7.4-cli php7.4-common php7.4-intl php7.4-json
  php7.4-mbstring php7.4-opcache php7.4-pgsql php7.4-readline php7.4-xml
  ssl-cert
0 upgraded, 32 newly installed, 0 to remove and 86 not upgraded.
Need to get 6880 kB of archives.
After this operation, 29.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]Y

・・・・・・・・省略・・・・・・・・・

導入後、Apache Webサーバデーモンは利用可能な状態で立ち上がっているので、その状態を念のため確認してみる。

$> systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Sat 2022-01-22 23:35:45 JST; 25min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 78669 (apache2)
      Tasks: 6 (limit: 468)
     Memory: 17.4M
     CGroup: /system.slice/apache2.service
             tq78669 /usr/sbin/apache2 -k start
             tq78672 /usr/sbin/apache2 -k start
             tq78673 /usr/sbin/apache2 -k start
             tq78674 /usr/sbin/apache2 -k start
             tq78675 /usr/sbin/apache2 -k start
             mq78687 /usr/sbin/apache2 -k start

Jan 22 23:35:45 ik1-101-57125 systemd[1]: Starting The Apache HTTP Server...
Jan 22 23:35:45 ik1-101-57125 systemd[1]: Started The Apache HTTP Server.
$>

さらに、動作確認として、Apache2-Webサーバのドキュメントルート(= /var/www/html/ )に、デフォルトでApache2の構成情報が表示されるindex.htmlファイルが用意されているので、これが表示されるかを確認するものよいかと思われる。

ただし、確認出来たら、このファイルはセキュリティ上削除しておくこと。代わりに、運用上Webサーバが動作しているかをチェック(=ヘルスチェック)するために、簡単な内容のindex.htmlを別途用意しておくことを推奨。

2)PostgreSQLの導入

引き続き、Wikiサーバのデータを登録するRDBMSとして選択した、”PostgreSQL”をインストールする。

$> sudo apt-get install postgresql

[sudo] password for ubuntu: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libllvm10 libpq5 postgresql-12 postgresql-client-12
  postgresql-client-common postgresql-common sysstat
Suggested packages:
  postgresql-doc postgresql-doc-12 libjson-perl isag
The following NEW packages will be installed:
  libllvm10 libpq5 postgresql postgresql-12 postgresql-client-12
  postgresql-client-common postgresql-common sysstat
0 upgraded, 8 newly installed, 0 to remove and 55 not upgraded.
Need to get 30.6 MB of archives.
After this operation, 121 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y

           ・・・・・・・省略・・・・・・・

Success. You can now start the database server using:

    pg_ctlcluster 12 main start

Ver Cluster Port Status Owner    Data directory              Log file
12  main    5432 down   postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
update-alternatives: using /usr/share/postgresql/12/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up sysstat (12.2.0-2ubuntu0.1) ...

Creating config file /etc/default/sysstat with new version
update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode
Created symlink /etc/systemd/system/multi-user.target.wants/sysstat.service → /lib/systemd/system/sysstat.service.
Setting up postgresql (12+214ubuntu0.1) ...
Processing triggers for systemd (245.4-4ubuntu3.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
$>

ただ、このように導入しただけでは、WikiサーバのDBとして利用できないが、いったんこのままにして、メインのMediaWikiパッケージをインストールする。

3)MediaWikiパッケージの導入

MediaWikiサイトから、tar+zip形式のインストールパッケージをダウンロードして、導入サーバのApache-Webサーバのドキュメントルートディレクトリに展開するだけであるが、直接そこに配置せず、/opt配下に展開して、ここへのリンクをドキュメントルートに配置することにする。(詳細は、後述)

(ちなみに、この理由は、MediaWikiをバージョンアップする場合、上書きではなく、新バージョンディレクトリを別途展開して、そこにリンクを張りなおすことで、不具合時の切り戻しを容易にしたり、MediaWikiの機能拡張を追加したり、環境設定ファイル変更する際に、これらをまとめてバックアップ&リストアしやすくするため。)

なお、本手順を実施するにあたって、事前に MediaWikiサイト 内のMediaWikiインストールパッケージのURLを、実際にWebブラウザで辿って押さえておくこと。
(本手順実施時のURLは、”https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz”であった。)

$> wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz

--2021-11-09 13:22:07--  https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz
Resolving releases.wikimedia.org (releases.wikimedia.org)... 103.102.166.224, 2001:df2:e500:ed1a::1
Connecting to releases.wikimedia.org (releases.wikimedia.org)|103.102.166.224|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 49653546 (47M) [application/x-gzip]
Saving to: ‘mediawiki-1.36.2.tar.gz’

mediawiki-1.36.2.ta   0%[                    ]       0  --.-KB/s          mediawiki-1.36.2.ta   0%[                    ]  38.91K   127KB/s
・・・省略・・・
mediawiki-1.36.2.ta 100%[===================>]  47.35M  8.88MB/s    in 7.1s

2021-11-09 13:22:16 (6.69 MB/s) - ‘mediawiki-1.36.2.tar.gz’ saved [49653546/49653546]

$> cd /opt
$> ls
mediawiki-1.36.2.tar.gz
$> tar zxf mediawiki-1.36.2.tar.gz
・・・・省略・・・・
$> ls
mediawiki-1.36.2   mediawiki-1.36.2.tar.gz
※”mediawiki-1.36.2”が、パッケージを展開してできたMediaWiki本体のディレクトリである。
$> cd mediawiki-1.36.2
$> ls
CODE_OF_CONDUCT.md  cache                       maintenance
COPYING             composer.json               mw-config
CREDITS             composer.local.json-sample  opensearch_desc.php
FAQ                 docs                        resources
HISTORY             extensions                  rest.php
INSTALL             images                      skins
README.md           img_auth.php                tests
RELEASE-NOTES-1.36  includes                    thumb.php
SECURITY            index.php                   thumb_handler.php
UPGRADE             jsduck.json                 vendor
api.php             languages
autoload.php        load.php
$>

次に、Apache2-Webサーバのドキュメントルートに移動して、前手順で生成したMediaWiki本体のディレクトリへのリンクを作成する。

$> cd /var/www
/html
$> ln -s /opt/mediawiki-1.36.2 ./wiki 
$> ls -l
-rw-r--r-- 1 root root   838 Nov  9 15:34 index.html
lrwxrwxrwx 1 root root    21 Nov 15 22:51 wiki -> /opt/mediawiki-1.36.2
$>

4)Image Magickの導入

MediaWikiで画像ファイルをアップロードして利用する際に、画像ファイルをサムネイルで表示できるようにするための機能プログラム「Image Magick」をインストールする。

$> sudo apt-get install imagemagick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  gsfonts imagemagick-6-common imagemagick-6.q16 libfftw3-double3
  libilmbase24 liblqr-1-0 libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra
  libmagickwand-6.q16-6 libnetpbm10 libopenexr24 netpbm
Suggested packages:
  imagemagick-doc autotrace enscript ffmpeg gimp gnuplot grads graphviz hp2xx
  html2ps libwmf-bin mplayer povray radiance texlive-base-bin transfig
  ufraw-batch libfftw3-bin libfftw3-dev inkscape libjxr-tools
The following NEW packages will be installed:
  gsfonts imagemagick imagemagick-6-common imagemagick-6.q16 libfftw3-double3
  libilmbase24 liblqr-1-0 libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra
  libmagickwand-6.q16-6 libnetpbm10 libopenexr24 netpbm
0 upgraded, 13 newly installed, 0 to remove and 46 not upgraded.
Need to get 8135 kB of archives.
After this operation, 25.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
         ・・・・・以下省略・・・・・

5)Wiki用データベースの作成

下記内容でWiki用データベースを作成する。

  • データベース名=WIKIDB00
  • データベースユーザ名=wikidbuser
  • 上記ユーザパスワード=******

まず、作成するまえに、PostgreSQL用のコマンドを実行するためのシステムユーザ”postgres”(PostgreSQLのバイナリパッケージインストール時に自動的にシステムユーザに追加される)を利用可能にする。

$> sudo passwd postgres
New password: 
Retype new password: 
passwd: password updated successfully
$> 

postgreユーザになって、以下のコマンドを実行してWiki用データベースとアクセスユーザを用意する。

$> su - postgres
Password: ********
postgres$> 
postgres$> which createuser
/usr/bin/createuser
postgres$>
postgres$> createuser -S -D -R -P -E wikidbusr
Enter password for new role: ******* 
Enter it again: 
postgres$> echo $?
0
postgres$> which createdb
/usr/bin/createdb
postgres$> createdb -O wikidbusr WIKIDB00
postgres$> echo $?
0
postgres$> echo $?

注)上記作業を”postgres”ユーザ以外で実行してしまうと、下記エラーとなる。

ubuntu$> sudo createuser -S -D -R -P -E wikidbusr
[sudo] password for ubuntu: 
Enter password for new role: 
Enter it again: 
createuser: error: could not connect to database template1: FATAL:  role "root" does not exist

念のため、作成したデータベースとユーザ(ロール)が存在するかを確認する。

ubuntu$> su - postgres
Password:
postgres$>
postgres$> psql
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# \l
                              List of databases
   Name    |   Owner   | Encoding | Collate |  Ctype  |   Access privileges
-----------+-----------+----------+---------+---------+-----------------------
 WIKIDB00 | wikidbusr| UTF8     | C.UTF-8 | C.UTF-8 |
 postgres  | postgres  | UTF8     | C.UTF-8 | C.UTF-8 |
 template0 | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |           |          |         |         | postgres=CTc/postgres
 template1 | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |           |          |         |         | postgres=CTc/postgres
(4 rows)

postgres=# \q
postgres$> 

上記操作の詳細については、後日PostgreSQLを勉強してから、改めてPostgreSQLに関する記事を書こうと思う。

最後に、PHPスクリプトからPostgreSQLに接続できるようにPHP環境設定ファイル(php.ini)に修正を施す。
過去のバージョンであれば、php.iniは、/etcディレクトリ内にあったはずだが、昨今のバージョンだと、かなり構成が変わっており、見つけ出すのが困難。
そこで、下記コマンドを実行して、そのありかを表示させる。

$> php -i |grep php.ini
Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini

以上の出力結果から、php.iniのパスが分かったので、このファイルの内容を一部修正する。
$> sudo vi /etc/php/7.4/cli/php.ini

なお、修正箇所は、下記2か所である。
L934: extension=pdo_pgsql   ←コメント記号の”;”をはずす。
L936: extension=pgsql   ←コメント記号の”;”をはずす。

変更を有効にするため、Apache2-Webサーバデーモンを再起動する。
$> systemctl restart apache2

以上で、必要パッケージのインストールと、MediaWikiセットアップのための準備が整った。

次回は、MediaWikiのセットアップ操作をまとめる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です