sg

Mediawikiのインストール – SSL化を試みて

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については、リモートサーバで運用する際に大切になるところである。

CentOS7 HTTPサーバ2.4系でアクセスの許可と拒否の書き方

次のページへ

コメントを残す

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