show-go.works 廣井翔伍です。
前回公開した記事の続き、後編になります。
前編はこちらになります。
前半では、ほぼChatGPTの威力を堪能しただけで、サブドメインが公開できました。初めて同じような内容に取り組んだ時、以前は、よくわからないながらにインターネットで検索しながら、つまづきまくって1週間くらいかかっていました。そんな内容が、細切れ時間の3時間以下の作業時間で完了しました。この時点で、ChatGPT素晴らしい。
後半も、前編でChatGPTが示してくれたアウトラインに沿って作業を進めていくので、あまりストレスなくできそうです。
ではスタート。
後半作業のアウトラインの確認
WordPressをインストールして、サーバで動くようにするためには以下のようなものが必要です。
- PHP
- mariaDB
- WordPress本体(今回は、6.3)
- apache2のconfigと.htaccessの設定
これらのインストールとか準備をしていきました。
DBの運用方針の検討と決定
複数のWordPress他webアプリケーションを単一のmariaDBで動かすことのデメリットがあるかどうかについて、chatGTPに質問。
まず、一つのmariaDBを複数のアプリケーションで使い回すようにすると不具合が発生しそうなイメージだったので、確認してみる。
MariaDBを複数のWordPressやMediaWikiといったWebアプリケーションで共有する場合、データベースを適切にセグメント化し、アクセス制御を設定する必要があります。以下に、MariaDBを複数のWebアプリケーションで共有する一般的な手順を示します:
- データベースの作成: 各Webアプリケーションのために個別のデータベースを作成します。データベース名、ユーザ名、パスワードは、各アプリケーションごとに異なるものを設定します。例えば、WordPress1、WordPress2、MediaWikiといった名前のデータベースを作成します。
CREATE DATABASE WordPress1; CREATE DATABASE WordPress2; CREATE DATABASE MediaWiki;
- データベースユーザの作成: 各データベースにアクセスするためのユーザを作成します。各ユーザに対して、適切なデータベースへのアクセス権限を付与します。
CREATE USER 'wp1_user'@'localhost' IDENTIFIED BY 'password1'; GRANT ALL PRIVILEGES ON WordPress1.* TO 'wp1_user'@'localhost'; CREATE USER 'wp2_user'@'localhost' IDENTIFIED BY 'password2'; GRANT ALL PRIVILEGES ON WordPress2.* TO 'wp2_user'@'localhost'; CREATE USER 'mediawiki_user'@'localhost' IDENTIFIED BY 'password3'; GRANT ALL PRIVILEGES ON MediaWiki.* TO 'mediawiki_user'@'localhost';
- データベースのプレフィックス設定: 各Webアプリケーションの設定で、データベースのテーブルプレフィックスを設定することを検討してください。これにより、同じデータベース内でテーブルが区別されます。例えば、WordPressは「wp_」というデフォルトプレフィックスを使用しますが、異なるプレフィックスを設定して重複を防ぎます。
- 各Webアプリケーションの設定: 各Webアプリケーションの設定ファイル(WordPressの
wp-config.php
やMediaWikiのLocalSettings.php
)で、適切なデータベース名、ユーザ名、パスワードを設定します。また、テーブルプレフィックスを設定する必要があります。- セキュリティ検討: データベースへのアクセス権をできるだけ制限し、セキュリティを強化します。不要な権限を与えないようにし、外部からのアクセスを制限します。
- モニタリングとメンテナンス: データベースのパフォーマンスと安定性を維持するために、モニタリングとメンテナンスを行います。ログの監視、バックアップの設定、アップデートの実行などが含まれます。
MariaDBを複数のWebアプリケーションで共有することは、適切なデータベース設計とセキュリティ対策が必要です。必要に応じて、専門的なデータベース管理者やセキュリティ専門家の助けを借りることをお勧めします。
from ChatGTP
ということで、対案も検索してみることにする。
Ubuntu上に複数のMariaDBインスタンスをインストールすることはできます。これは、異なるプロジェクト、アプリケーション、またはテスト環境に異なるデータベースインスタンスを必要とする場合に有用です。ただし、複数のMariaDBインスタンスを適切に管理するには、いくつかのメリットとデメリットを考慮する必要があります。
メリット:
- 隔離とセキュリティ: 各MariaDBインスタンスは独自のプロセスとデータベースファイルを持ち、異なるポート番号でリスンすることができます。これにより、データベース間の隔離が確保され、セキュリティが向上します。
- 異なるバージョンのMariaDBのサポート: 異なるプロジェクトやアプリケーションが異なるMariaDBバージョンを必要とする場合、複数のインスタンスを使うことで、異なるバージョンのMariaDBを同時に実行できます。
- テスト環境: 開発者やテスターがプロダクションデータベースとは異なる環境でテストを行うために、複数のテスト環境をセットアップできます。
- パフォーマンスの最適化: 異なるMariaDBインスタンスを調整することで、各プロジェクトやアプリケーションに最適なパフォーマンスを提供できます。
デメリット:
- リソース使用: 複数のMariaDBインスタンスを実行すると、システムリソース(CPU、メモリ、ディスクスペース)を占有する可能性があります。大規模なプロジェクトやアプリケーションでは、リソースが不足する可能性があります。
- 管理の複雑さ: 複数のインスタンスを管理する必要があるため、設定、メンテナンス、バックアップ、アップデート、セキュリティ対策などの管理作業が増える可能性があります。
- ポートの競合: 複数のインスタンスを同じサーバ上で実行する場合、ポート番号の競合が発生する可能性があります。異なるポート番号を使用することで対処できますが、注意が必要です。
総括すると、複数のMariaDBインスタンスを設定することは、特定の要件に合致する場合に有用ですが、管理の複雑さとリソースの使用に関する課題が存在します。適切なプランニングと管理が必要です。一般的に、小規模なプロジェクトやアプリケーションでは、1つのMariaDBインスタンスが十分であることが多いです。
from chatGTP
ということで、一つのMariaDBインスタンスを複数のアプリケーションで使い回す方向で調整する方針に決定しました。
複数インスタンスを立ち上げるのはそりゃやっぱり効率がわるくなるよなあーと。納得いたしました。
mariaDBのインストールの方法の確認
ちなみにmariaDBのインストールについても、ChatGTPに質問してみました。
UbuntuにMariaDBをインストールするには、以下のステップに従います。以下の手順はUbuntu 20.04 LTSの場合のものですが、バージョンによっては若干の違いがあるかもしれません。
- システムの更新: MariaDBをインストールする前に、システムパッケージを最新の状態にアップデートします。ターミナルを開いて以下のコマンドを実行します。
sudo apt update sudo apt upgrade
- MariaDBのインストール: MariaDBをインストールするには、以下のコマンドを使用します。
sudo apt install mariadb-server
インストール中に、MariaDBのrootユーザのパスワードを設定するように求められます。パスワードを入力し、確認します。このパスワードはMariaDBのrootユーザ(管理者)のパスワードです。- MariaDBの起動と自動起動設定: MariaDBを起動し、システム起動時に自動的に起動するように設定します。
sudo systemctl start mariadb sudo systemctl enable mariadb
- セキュリティ設定: MariaDBのセキュリティ設定ツールを実行して、セキュリティ設定を行います。以下のコマンドを実行し、設定ツールに従ってセキュリティを向上させます。
sudo mysql_secure_installation
インストール中に以下の質問が表示されます:
- “Enter current password for root (enter for none):”:パスワードを設定していない場合はEnterキーを押して続行します。
- “Set root password?”:新しいrootパスワードを設定します。
- “Remove anonymous users?”:匿名ユーザを削除します。
- “Disallow root login remotely?”:リモートからのrootユーザログインを禁止します(おすすめ)。
- “Remove test database and access to it?”:テストデータベースを削除します。
- “Reload privilege tables now?”:特権テーブルを再読み込みします。
- MariaDBへのログイン: MariaDBにログインして動作確認を行うことができます。
sudo mysql -u root -p
パスワードを入力し、MariaDBプロンプトにアクセスできます。ログイン後、データベースの作成やクエリの実行が可能です。これでMariaDBがUbuntuに正常にインストールされ、セキュリティが強化されました。必要に応じて、新しいデータベースを作成し、アプリケーションで使用することができます。
from chatGTP
MariaDBのホスト名
MariaDBのホスト名の質問も投げてみる。確かlocalhostでよかったけど、それってなんでだっけか。
MariaDBのホスト名は、MariaDBデータベースサーバの識別に使用される名前またはアドレスです。ホスト名はMariaDBへの接続を確立する際に使用され、MariaDBサーバが実行されている場所を指定します。ホスト名は以下のような形式で指定できます:
- IPアドレス: MariaDBサーバのIPアドレスを使用してホスト名を指定できます。例えば、”192.168.1.100″といった形式です。
- ホスト名: MariaDBサーバのホスト名を使用することもできます。例えば、”db.example.com“のようなドメイン名です。この場合、DNSを介してIPアドレスに解決されます。
- ローカルホスト: MariaDBサーバが同じマシン(localhost)で実行されている場合、”localhost”または”127.0.0.1″をホスト名として指定することができます。これは通常、同じマシンからの接続に使用されます。
- UNIXソケット: MariaDBサーバがUnixドメインソケットを使用している場合、ソケットファイルへのパスを指定することができます。
ホスト名は、MariaDBへの接続設定(たとえば、アプリケーションのデータベース接続設定)で指定され、通信を確立するために使用されます。ホスト名には、MariaDBサーバの場所を正確に指定することが重要です。 MariaDBサーバがリモートホストで実行されている場合、適切なIPアドレスまたはホスト名を指定して、正しい接続を確立することが必要です。
from chatGTP
PHPのインストール
PHPがインストールされていなかったので、インストールしました。
普通にapt使いました。
WordPressのインストール
割と慣れてる作業。
最近は簡単インストール機能がついてるサーバも多いですが、やっぱり手動でバージョン調整することもあったりなかったりするので、ssh経由の作業は慣れてます。
wordpressのインストールは公式からそのまま、ダウンロード先のディレクトリにて、wgetして、tarで展開しました。
間違えてオリジナル版(英語のみ)をインストール
で、慣れてるという慢心ゆえ、実は、ここでミスしたのが、日本語版ではなく、オリジナルをダウンロードしてしまった。。。実は、ChatGTP先生に最新版のwordpressのファイルのことを聞いたらlatestって普通に答えられてしまったんだけれども、日本語版はjaがついてるんですよね。
そして、設定画面が英語の時点で気づけよ、という。
最近英語のページを見ることが多くてそのあたりも鈍感になっていた模様。
一旦オリジナル版を削除
結局、一旦、オリジナル版Wordpressを削除して、日本語版をインストールし直しました。
オリジナル版を日本語対応させることもできたのですが、かなり負担感があったのでやめました。大人しく、オリジナルの英語版を削除してから、日本語版を再インストールしました。
データベースにWordpressが一旦作ってしまっているテーブルデータを手動で削除
そうしたら、wordpressの日本語版を入れるために、一度SQLでテーブルを全部手動で削除してね、と怒られたので、mariaDBにログインして、tableを全部削除しました。
懲りずにchatGTPに聞きました。
MariaDBで複数のテーブルを一括して削除するには、以下のSQL文を使用します。指定のデータベース内で複数のテーブルを一度に削除するには、
DROP TABLE
文を使用します。テーブル名をカンマで区切って指定することで、複数のテーブルを削除できます。以下は複数のテーブルを一括で削除するSQLの例です。データベース名と削除したいテーブル名を適切に置き換えてください。
DROP TABLE テーブル1, テーブル2, テーブル3, ...;
例えば、
mydatabase
データベース内のtable1
、table2
、およびtable3
を削除する場合は、以下のようになります。DROP TABLE table1, table2, table3;
これにより、指定したデータベース内の複数のテーブルが一括で削除されます。テーブル名を適切に指定することが重要です。また、データのバックアップがない場合は慎重に操作してください。
from ChatGTP
SQLとか、もう本当に忘れてます。書けません。助かります。
ですので、こんな感じで、テーブルを削除しました。余計な一手間を増やしたので、時間的に、かなり手間をとってしまいました。
改めて日本語版Wordpressをインストールしました。
以上で、インストール完了しました。
あとは、wp-config.phpにアクセスして、準備しておいたデータベースの情報を記載して、サイトの名前とか記載するいつものWordpressの設定を実施したら完了です。
おつかれさまでした。
合計で3時間くらいの時間で作業自体は完了したのですが、体感としてはもっと長い時間が必要だったような感じがしました。途中、オリジナル版のwordpressをインストールしてしまっていることに、画面表示が英語の時点で気がついていれば・・・などもう少しスムーズにインストールができる余地はあったように思います。
補助ツールとして今回ChatGTPを使ってみての感想
目的の一つとしてChatGPTをつかってみてどうかを試してみる、というのがありました。
最初から最後まで、意識的につかってみたのですが、結果良かったと思います。最後の、Wordpressインストールの時の最新ファイルの名称はうっかり間違えてしまいましたが、それも自分が途中で気がつけばよかっただけです。
気が付くことができて、情報に依存しすぎず、ある程度参考する程度であれば、もうすでに実用範囲内だなあ、というのが正直な感想です。
つまり、使いこなすにはある程度事前に、知識があって当たりがつけられる能力が必要で、それさえあれば、ChatGPTの活用は、作業をする上でかなり時間短縮になるとおもいました。とくに、以前やったことがあったけど、なんか忘れてしまってるなあ、という場合。
今回みたいに、作業の内容はもちろん、作業の方向性が大体が、おおよそおもいだせればいいや、という用途にはかなり向いていると思いました。wordpressだけじゃなく、割とたくさんの人が関わっているコンテンツはChatGTPに尋ねてもそれなりに回答してくれるんだろうな、と思います。多分。質問さえよければ。
まとめると、使いこなすには、何を聞きたいのか、という「質問を作る力」がかなり重要になるな、というのが改めての気づきでした。
(追記:2023/12/01)phpモジュールの補完ができてなかった件
見落としてたのですが、Wordpressダッシュボード上のサイトヘルスが「致命的」になってました。
これは、あかん、と対応したところ、PHPモジュールが足りてないとのこと。
スクリーンショット撮ったと思ったけれど残ってなかった。
wordpressは普通に使えてたのだけれど、画像関連とか含めて不具合でるのも嫌なので対応しました。
ネットで検索して、こちらの記事を参考にさせていただきました。
https://hiroshi-sawai.com/docs/wordpress/wordpress-ubuntu.html
phpのバージョンは違ったので、そこだけ修正して、参考にさせていただきました。
結果、サイトヘルスが改善されたので、大変満足しています↓

コメントを残す