年始の期間等を利用して、さくらのクラウドのサーバーをUbuntu 22.04.1 LTSのクリーンインストール状態にして移行した。同時に、Drupalはmultisite構成に変更し、nginx環境やletsencryptも最新化した。さくらのクラウドのアーカイブからUbuntuのディスクを作成して、まずはテスト環境で以下を実施。
phpは8.1の最新版が使いたいので、ondrejリポジトリを追加登録してインストールした。
3 sudo apt update
4 sudo apt upgrade
5 sudo add-apt-repository ppa:ondrej/php
6 sudo add-apt-repository ppa:ondrej/nginx-mainline
7 sudo apt update
8 sudo apt install -y php8.1
9 php -v
PHP 8.1.14 (cli) (built: Jan 6 2023 15:23:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.14, Copyright (c) Zend Technologies
with Zend OPcache v8.1.14, Copyright (c), by Zend Technologies
phpの定番機能を入れてから、apache2を落として、nginxを導入、追加のphp機能を導入し動作を確認した。
この辺りは、How to Install Drupal 9 with Nginx, PHP-FPM 8.1, MySQL, phpMyAdmin on Ubuntu 22.04 - Linode Guideを参考にさせていただいた。
11 sudo apt install php8.1-mbstring zip unzip php8.1-zip php8.1-curl -y
12 sudo systemctl stop apache2
13 sudo systemctl disable apache2
14 sudo apt install nginx -y
15 sudo apt install php8.1-fpm php8.1-cli php8.1-gd php8.1-mysql php8.1-xml -y
16 sudo systemctl restart php8.1-fpm
22 sudo vim /etc/nginx/sites-available/default # location ~ \.php$ { 部分をphp8.1に対応
23 sudo nginx -t
24 sudo systemctl restart nginx
25 sudo systemctl restart php8.1-fpm
45 sudo vim /var/www/html/info.php
ついで、mariadbを導入しセットアップ
51 sudo apt install mariadb-server -y
$ sudo mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.11-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create user XXXX@localhost identified by 'PASSWORD';
Query OK, 0 rows affected (0.013 sec)MariaDB [(none)]> grant all privileges on *.* to XXXX@localhost;
Query OK, 0 rows affected (0.013 sec)MariaDB [(none)]> quit
Bye
$
その後、composerをインストール
56 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
57 php composer-setup.php
58 sudo mv composer.phar /usr/local/bin/composer
59 rm *.php
61 composer --version
ついで、drupal最新版をテストインストール。自分をwww-dataグループに所属させ、ホームディレクトリをwww-dataグループにし、グループ書き込みを有効にした上で、sudo -u www-dataで実施。
64 sudo chgrp www-data .
67 sudo usermod -aG hagi www-data
70 chmod 775 .
71 sudo -u www-data composer create-project drupal/recommended-project:9.5.1 test
72 cd test
73 sudo -u www-data composer update -W
キャッシュが効いてしまうので、http://IPaddress/index.phpでアクセスすると無事に冒頭の画像が出て、インストールができることが確認できた。
ついでletsencryptをインストール
84 sudo apt install certbot -y
85 sudo apt install python3-certbot-nginx -y
後は、旧環境のデータを戻していった。委細は省略
テスト環境で動作確認を終えた後、テスト環境サーバーをshutdownして、さくらのsnapshotを取得し、そこから本番環境のディスクを生成、立ち上げた後hostnameとnetplanのIPアドレスを変更して再立ち上げ。
その後、certbotで証明書関係を再設定して完了
なお、今回ちょっとはまったのは、drupalをmultisite対応する時にsettings.phpのconfigurationのdefaultをサブディレクトリに変更するところ。ここを正しく修正すれば、drush -l www.ulslab.com crなどが問題なく動くようになる。
drupalは9.5.1に、テーマはOliveroに変更した。そのタイミングでCkeditorを5にした。いろいろ苦労もあったが、これですっきり垢が落とせたと思う。