UbuntuServer 22.04にNginx + Let's Encrypt + PHP + PHP-FPM + PukiWikiをインストールする方法です。
PukiWikiはPHPで作成されていてDBを必要としないので、PHPが動作するサーバであれば簡単にインストールすることができます。
PHP・PHP-FPMインストール
PukiWikiを動作させるために必要なパッケージをインストールします。
$ sudo apt update $ sudo apt install php-cli php-mbstring php-fpm
インストールされたPHPのバージョンを確認しておきます。
$ php -v PHP 8.1.2-1ubuntu2.17 (cli) (built: May 1 2024 10:10:07) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2-1ubuntu2.17, Copyright (c), by Zend Technologies
PHP-FPM 設定
Nginxから使用できるようにPHP-FPMの設定を行います。
$ cd /etc/php/8.1/fpm/pool.d/ $ sudo cp -p www.conf www.conf_`date +%Y%m%d-%H%M%S` $ sudo vi www.conf
設定内容
下記項目の設定変更を行います。
変更前
user = www-data group = www-data listen.owner = www-data listen.group = www-data ;listen.mode = 0660
変更後
user = nginx group = nginx listen.owner = nginx listen.group = nginx listen.mode = 0660
設定反映
PHP-FPMを再起動して設定を反映させます。
$ sudo systemctl restart php8.1-fpm
listen = 項目を確認
www.confに記述されているlisten = の項目は、Nginxの設定ファイルを作成する際に必要となるため、設定内容を確認をしておいてください。
$ grep "^listen =" /etc/php/8.1/fpm/pool.d/www.conf listen = /run/php/php8.1-fpm.sock
Nginxインストール
WebサーバであるNginxをインストールします。
インストール手順は、下記ページで説明していますので参照願います。
設定ファイル作成
下記の内容でPukiWiki用のNginx設定ファイルを作成します。
- nginx設定ファイル名: /etc/nginx/conf.d/pukiwiki.conf
- ホスト名: wiki.server-memo.net
- PukiWiki公開ディレクトリ: /usr/share/nginx/pukiwiki
設定する内容はご自分の環境に合わせて適宜読み替えて下さい。
$ sudo vi /etc/nginx/conf.d/pukiwiki.conf
設定内容
このあとLet's EncryptでSSL/TLS証明書の取得を行うので、そのために必要な最低限の設定をしておきます。
server { server_name wiki.server-memo.net; root /usr/share/nginx/pukiwiki; index index.html; }
ディレクトリ作成
PukiWikiを公開するためのディレクトリと、テスト用のindex.htmlファイルを作成します。
$ sudo mkdir /usr/share/nginx/pukiwiki $ echo wiki.server-memo.net | sudo tee /usr/share/nginx/pukiwiki/index.html
設定反映
Nginxを再起動して設定を反映させます。
$ sudo systemctl restart nginx
動作確認
webブラウザで接続して、index.htmlの内容が表示されることを確認します。
Let's EncryptでSSL/TLS証明書取得
httpsで接続できるように、Let's EncryptでSSL/TLS証明書を取得します。
※Let's Encryptを使ってSSL/TLS証明書を取得する方法の詳しい説明を下記のページでも行っていますので、よろしければ参照してみて下さい。
certbotインストール
Let's EncryptでSSL/TLS証明書を取得するために必要な、certbotのインストールを行います。
$ sudo apt update $ sudo apt install certbot python3-certbot-nginx
SSL/TLS証明書の取得
certbotを下記の書式で実行して、Let's EncryptからSSL/TLS証明書の取得を行います。
$ sudo certbot --nginx -d ホスト名 -m メールアドレス --agree-tos
今回の場合はこんな感じになります。
メールアドレス部分には、Let's Encryptからの連絡を受け取るためのメールアドレスを指定します。
$ sudo certbot --nginx -d wiki.server-memo.net -m メールアドレス --agree-tos
設定反映
certbotを使ってSSL/TLS証明書を取得すると、Nginxの設定ファイル(/etc/nginx/conf.d/pukiwiki.conf)に、https接続用の設定を自動的に追加してくれるのでNginxを再起動して設定を反映させます。
$ sudo systemctl restart nginx
https接続の動作確認
設定を反映したあとに、webブラウザからhttpsで接続できることを確認してください。
PukiWikiインストール
ダウンロード
はじめに、ダウンロードに使用するwgetと解凍に必要なunzipをインストールします。
すでにインストール済みであればこの手順はスキップしてください。
$ sudo apt update $ sudo apt install wget $ sudo apt install unzip
公式サイトのダウンロードページにアクセスします。
https://pukiwiki.sourceforge.io/?PukiWiki/Download
PukiWikiのダウンロードページが表示されるので、最新リリース版へのリンクをクリックします。
ダウンロード用の画面に遷移します。
UTF-8版とEUC-JP版がありますが、使用を推奨されているUTF-8版を使用します。
UTF-8版のダウンロード用リンクを右クリックしてリンクのアドレスをコピーします。
wgetでコピーしたアドレスからダウンロードを行います。
$ wget -O pukiwiki-1.5.4_utf8.zip https://sourceforge.net/projects/pukiwiki/files/1.5.4/pukiwiki-1.5.4_utf8.zip/download
解凍
ダウンロードしてきたzipデータをunzipで解凍します。
$ unzip pukiwiki-1.5.4_utf8
PukiWiki設定
pukiwiki.ini.phpに最低限必要な下記項目についての設定を行っていきます。
- 管理者: $modifier = 'anonymous';
- 管理者のサイト: $modifierlink = 'http://pukiwiki.example.com/';
- 管理者パスワード: $adminpass = '{x-php-md5}!';
$ cd pukiwiki-1.5.4_utf8 $ cp -p pukiwiki.ini.php pukiwiki.ini.php_$(date +%Y%m%d-%H%M%S) $ vi pukiwiki.ini.php
設定内容
今回は下記の内容で設定を行っていきます。
- 管理者: tamohiko
- 管理者のサイト: https://wiki.server-memo.net/
- 管理者パスワード: password
管理者パスワードはセキュリティを考慮してSHA256で暗号化したものを設定することにします。
下記の方法でSHA256を使いパスワードを暗号化することができます。
$ echo -n 'password' | sha256sum 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 -
passwordの部分を変更することで、任意のパスワードをSHA256で暗号化することができます。
変更前
$modifier = 'anonymous'; $modifierlink = 'http://pukiwiki.example.com/'; $adminpass = '{x-php-md5}!';
変更後
パスワードの暗号化方式を{x-php-md5}から{x-php-sha256}に変更していますので注意して下さい。
$modifier = 'tamohiko'; $modifierlink = 'https://wiki.server-memo.net/'; $adminpass = '{x-php-sha256}5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8';
ファイルとディレクトリのパーミッション確認
PukiWiki公式サイトに記述されているパーミッションと同じ設定になっているか確認します。
公開用ディレクトリにデータをコピー
設定が完了したら、Nginxで設定した公開用のrootディレクトリ(/usr/share/nginx/pukiwiki)に、pukiwiki-1.5.4_utf8ディレクトリ内のデータをコピーします。
$ cd ../ $ sudo cp -Rp pukiwiki-1.5.4_utf8/* /usr/share/nginx/pukiwiki $ sudo chown -R nginx:nginx /usr/share/nginx/pukiwiki
テスト用に作成した/usr/share/nginx/pukiwiki/index.htmlファイルは、必要がなければ削除してください。
Nginx設定(PukiWiki用)
公式サイトの設定を参考にして、PukiWikiをNginx + httpsで動作させる設定を/etc/nginx/conf.d/pukiwiki.confに追加していきます。
https://pukiwiki.sourceforge.io/?nginx
$ cd /etc/nginx/conf.d/ $ sudo cp -p pukiwiki.conf pukiwiki.conf_`date +%Y%m%d-%H%M%S` $ sudo vi pukiwiki.conf
設定内容
赤字部分が設定を追加・変更した部分になります。
「# managed by Certbot」と記述されている部分は、certbotでSSL/TSL証明書を取得した際に自動的に追加された設定です。
server { server_name wiki.server-memo.net; root /usr/share/nginx/pukiwiki; index index.php; # index.phpに変更 listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/wiki.server-memo.net/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/wiki.server-memo.net/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot location ~ (^/$) { # With php8.1-fpm: fastcgi_pass unix:/run/php/php8.1-fpm.sock; # php-fpmのwww.confのlisten設定にあわせる fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ^/(skin|image)/ { } location / { return 404; } } server { if ($host = wiki.server-memo.net) { return 301 https://$host$request_uri; } # managed by Certbot server_name wiki.server-memo.net; listen 80; return 404; # managed by Certbot }
設定反映
Nginxを再起動させて設定を反映させます。
$ sudo systemctl restart nginx
動作確認
webブラウザでアクセスして下記のことを確認します。
- トップページ(index.php)にアクセスできる
- pukiwiki.ini.phpなどの設定ファイルにアクセスできない
- ページの編集ができる
- ページの新規作成・削除ができる
- ページの凍結・凍結解除ができる
こちらがPukiWikiのトップページになります。
コメント