Mediawikiのインストール準備
時代はSSLを介してのアクセスを求めるようになってきている。
現在運用中のmediawikiは相当古のバージョンである。
アップーデートしようにもPHP 7以上を要求されたり、MYSQLのバージョンが合わなかったりで
現状のMySQLを維持するのは困難である。
そこで、SSL対応に合わせてMediawikiのバージョンアップを行うことにした。
ハードウェア
- CPU Intel Core i7 8700K BOX
- MEM DDR4-2666 DIMM 16GB x 2
- M/B GIGABYTE Z370 HD3
- SSD Intel SSD 545s 512GB SSDSC2KW512G8X1
- HDD SEAGATE ST4000DM004 4TB
- G/B 玄人志向 GF-GTX1080Ti-E11GB/OC/DF
ソフトウェア
- OS Ubuntu 18.04.1 LTS
- PHP PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )
- MYSQL Server version: 5.7.24-0ubuntu0.18.04.1 (Ubuntu)
- NVIDIAドライバ NVIDIA-SMI 390.87 Driver Version: 390.87
- CUDA Toolkit 10.0
- cuDNN v7.3.1 (Sept 28, 2018), for CUDA 10.0
- OpenBLAS
- libopenblas-base/bionic 0.2.20+ds-4 amd64
- libopenblas-dev/bionic 0.2.20+ds-4 amd64
- python-numpy (1:1.13.3-2ubuntu1)
- python-scipy (0.19.1-2ubuntu1)
- python-matplotlib (2.1.1-2ubuntu3)
- python-yaml (3.12-1build2)
- HDF5
- python-h5py (2.7.1-2)
- libhdf5-serial-dev (1.10.0-patch1+docs-4)
- graphviz (2.40.1-2)
- python-pip
- python-dev
- pydot-ng-2.0.0
- Bazel
- openjdk-8-jre:amd64 (8u181-b13-0ubuntu0.18.04.1)
- bazel (0.18.0)
- Python 2.7.15rc1
- pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
- virtualenv 15.1.0
- GNOME 3.28.2
最新のソースを入手
おもむろに
https://www.mediawiki.org/wiki/Download
ダウンロードページを訪れて最新のソースを入手する。現時点では1.31.1が最新である。
ターゲットディレクトリに移動して、解凍する。
/etc/www/html/自ドメイン/
Apache2のconfファイルを設定
WordPressで404エラーがでて発狂するでも触れたように、以前のapacheのようにhttpd.confにmod_rewriteを追加するのではなく、
Apache2にモジュールをインストールする専用のコマンド(a2enmod)を叩いてから
apache2.confを始めとする設定ファイル群を修飾する必要がある。
a2enmodだけ実行すると、インストール可能なモジュールがられるされるという設計になっている。
/var/www/html/(自ドメイン)$ sudo a2enmod
Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_fcgi authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cern_meta cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor http2 ident imagemap include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_prefork mpm_worker negotiation php7.2 proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_hcheck proxy_html proxy_http proxy_http2 proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
目的の「ssl」モジュールはすでに用意されているようなので、
/var/www/html/(自ドメイン)$ sudo a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2
とりあえず再起動させてみるか。
/var/www/html/(自ドメイン)$ sudo systemctl restart apache2
Ubuntu 18.04にインストールしたApache2では、VirtualHostの設定は /etc/apach2/sites-available/ 配下に (任意の文字).confファイルにVirtualHostを記載し、コマンドラインで a2ensite (任意の文字) を実行することでVirtualHostの設定を有効化している。有効化されたかどうかは、/etc/apach2/sites-enabled で ls を実行すれば /etc/apach2/sites-available/(任意の文字).conf にシンボリックリンクが貼られているのがわかる。
だが、小生はそんなまどろっこしいことは嫌いなので、/etc/apach2/apach2.conf にVirtualHostの設定をした。すなわち、以下のコードを/etc/apach2/apach2.conf に追記した。
<VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/(自ドメイン) ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost>
そしてサーバ再起動。
sudo systemctl restart apache2
ブラウザ(FireFox)で https://localhost/ と打ち込むと、自己証明書なので「安全な接続ではありません」エラーがでる。
不正なセキュリティ証明を使っていると警告が出るが、ひとまず開発のため一時的に例外を追加して先に進む。
これで完成。ローカルで構築したので、https://localhostとなっているが、実際にはhttps://(自ドメイン) でアクセスすることになる。
ディレクトリ一覧表示を禁止
基本事項ですが、
<Directory /var/www/> Options Indexes FollowSymLinks .... 各ディレクトリでApache2が取りうる振る舞いを制限する AllowOverride All .... .htaccessで制御できる事項を制限する Require all granted .... 以前はOrder Deny,Allowであったがその代替となりうる。 </Directory>
これはセキュリティ的にイケてない設定なので修正する。
Options Indexes FollowSymLinks
↓
Options FollowSymLinks
その他
おいおいでよいであろう。
ただし、Requireについては、リモートサーバで運用する際に大切になるところである。
次のページへ