【Ubuntu】Nginx + Let’s Encrypt + PHP + PHP-FPM + PukiWikiをインストール

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をインストールします。

インストール手順は、下記ページで説明していますので参照願います。

【Ubuntu Server 22.04】Nginx公式サイトのリポジトリを使用してインストール
Ubuntu Server 22.04では、apt-key addコマンドが非推奨(廃止予定)となりましたので、それにあわせたインストール手順を説明していきます。 公式リポジトリを使用してNginxをインストール Ubuntu Server...

設定ファイル作成

下記の内容で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証明書を取得する方法の詳しい説明を下記のページでも行っていますので、よろしければ参照してみて下さい。

【Ubuntu】Let’s Encrypt+nginxでSSL/TLS(https接続)を設定する方法
検証環境 下記の環境でLet's EncryptでSSL/TLS証明書を発行して、nginxでhttps通信ができるまでの手順を解説していきます。 OS:Ubuntu Server 20.04 nginx:1.21.4 certbot(証明...

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公式サイトに記述されているパーミッションと同じ設定になっているか確認します。

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のトップページになります。

コメント

タイトルとURLをコピーしました