<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux (CentOS、Rocky、Ubuntu) | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Fri, 11 Sep 2026 05:12:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>Linux (CentOS、Rocky、Ubuntu) | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress：PHP8.４、Mariadb10.11に更新</title>
		<link>https://www.kazuban.com/blog/php-mariadb-update/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Tue, 04 Aug 2026 01:01:45 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[mariaDB更新]]></category>
		<category><![CDATA[PHP更新]]></category>
		<category><![CDATA[RockyLinux9.7]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12976</guid>

					<description><![CDATA[こちらの記事では、バックアップ用サーバー用途なので、試しもかねて新しいバージョンで設定しましたが 本サーバーのほうは、WordPress本体しか更新していませんでした。WordPress のサイトヘルスで更新の改善のメッ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">こちらの記事では、バックアップ用サーバー用途なので、試しもかねて新しいバージョンで設定しましたが</p>


<a href="https://www.kazuban.com/blog/wordpress-install-no3/" title="RockyLinux9.7で「WordPress環境構築「Vol-03」PHP8.4、MariaDB11.4" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2026/04/wordPress-environment-setup-no3-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/04/wordPress-environment-setup-no3-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/wordPress-environment-setup-no3-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/wordPress-environment-setup-no3-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.7で「WordPress環境構築「Vol-03」PHP8.4、MariaDB11.4</div><div class="blogcard-snippet internal-blogcard-snippet">RockyLinux9.7のインストール記事です。なるべくコピペで設定きるようにまとめていますPHP、MariaDB、第三弾。つづく・・・</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.01</div></div></div></div></a>


<p class="wp-block-paragraph">本サーバーのほうは、WordPress本体しか更新していませんでした。<br>WordPress のサイトヘルスで更新の改善のメッセージがでていました。<br>サイトヘルスは「ダッシュボード　➡　ツール　➡　サイトヘルス」で確認できます<br>私の環境では、ステータスとしては「良好」ではありますがおすすめの改善が４件ありました<br>その中でも、「PHPのバージョン」「データベースのバージョン」は改善したほうがよさそうです</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>2026/09/11</strong><br>下記設定で正常に、PHP8.４、Mariadb10.11 に更新できましたが<br><span class="marker-under-red">後日サーバー機の更新「sudo dnf update」で一部のパッケージが更新できない！<br>というエラーがでました。</span><br><a href="#toc34">AIに相談し、下記記事で改善できました</a></p>
</blockquote>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">WordPress 必須条件（2026.08時点）</a></li><li><a href="#toc2" tabindex="0">PHPバージョンの更新</a><ol><li><a href="#toc3" tabindex="0">現バージョンの確認</a></li><li><a href="#toc4" tabindex="0">（事前に）バックアップを取る</a></li><li><a href="#toc5" tabindex="0">Remiリポジトリ追加</a></li><li><a href="#toc6" tabindex="0">モジュールリスト確認</a></li><li><a href="#toc7" tabindex="0">PHPモジュールのリセット</a></li><li><a href="#toc8" tabindex="0">新しいPHPバージョンの有効化（例: 8.4）</a></li><li><a href="#toc9" tabindex="0">新規インストールの場合</a></li><li><a href="#toc10" tabindex="0">新規インストールで拡張機能追加（よく使うパッケージ一式）</a></li><li><a href="#toc11" tabindex="0">アップグレードの場合</a></li><li><a href="#toc12" tabindex="0">更新の確認</a></li><li><a href="#toc13" tabindex="0">再起動</a></li><li><a href="#toc14" tabindex="0">更新の確認</a></li></ol></li><li><a href="#toc15" tabindex="0">MariaDBバージョンの更新</a><ol><li><a href="#toc16" tabindex="0">現バージョンの確認</a></li><li><a href="#toc17" tabindex="0">（事前に）バックアップを取る</a></li><li><a href="#toc18" tabindex="0">モジュールリスト確認</a></li><li><a href="#toc19" tabindex="0">MariaDB停止</a></li><li><a href="#toc20" tabindex="0">キャッシュのクリアとmariadbモジュールのリセット</a></li><li><a href="#toc21" tabindex="0">新しいモジュール（10.11）へ切り替え</a></li><li><a href="#toc22" tabindex="0">設定ファイル「/etc/my.cnf.d/mariadb-server.cnf」&nbsp;更新</a></li><li><a href="#toc23" tabindex="0">MariaDB 起動</a></li><li><a href="#toc24" tabindex="0">DB 内部の更新</a></li><li><a href="#toc25" tabindex="0">Apache＆PHP-FPM　再起動</a></li><li><a href="#toc26" tabindex="0">更新の確認</a></li></ol></li><li><a href="#toc27" tabindex="0">トラブル時、mariaDB 事前バックアップからリストアする方法</a><ol><li><a href="#toc28" tabindex="0">基本のリストアコマンド</a></li><li><a href="#toc29" tabindex="0">リストア時の注意点</a><ol><li><a href="#toc30" tabindex="0">MariaDBが起動している必要があります</a></li><li><a href="#toc31" tabindex="0">アップグレード失敗などで「元の10.5環境に戻す」場合</a></li><li><a href="#toc32" tabindex="0">既存データとの重複に注意</a></li><li><a href="#toc33" tabindex="0">リストア後の確認</a></li></ol></li></ol></li><li><a href="#toc34" tabindex="0">後日の、dnf update でエラーがでました</a><ol><li><a href="#toc35" tabindex="0">原因</a></li><li><a href="#toc36" tabindex="0">対処手順</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WordPress 必須条件（2026.08時点）</span></h2>



<p class="wp-block-paragraph">2026.08時点では、「PHP 8.3以上」「MariaDB 10.11以上」が必須条件になっています</p>


<a rel="noopener" href="https://ja.wordpress.org/about/requirements/" title="必須要件" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img fetchpriority="high" decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/cocoon-resources/blog-card-cache/6ad4f5b66be737a1618019916626b1bd.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">必須要件</div><div class="blogcard-snippet external-blogcard-snippet">Requirements To run WordPress, it’s recommended your host supports: That’s really it. Apache or Nginx is recom</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/about/requirements/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>


<p class="wp-block-paragraph">私の環境では、「サイトヘルス」➡「情報」で確認すると「PHP 8.2」「MariaDB 10.5」です</p>



<h2 class="wp-block-heading"><span id="toc2">PHPバージョンの更新</span></h2>



<h3 class="wp-block-heading"><span id="toc3">現バージョンの確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1"><code>php --version</code></pre>



<h3 class="wp-block-heading"><span id="toc4">（事前に）バックアップを取る</span></h3>



<p class="wp-block-paragraph">必須ではありませんが、wp-config.php, DB, ファイル一式のバックアップが推奨されます<br>wp-config.phpは「cp」コマンドで簡単にコピーできます<br>DB や WordPressのファイル一式は、こちらでも紹介しているスクリプトでも取る事ができます</p>


<a href="https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/" title="WordPress の「バックアップ・リストア」BASHスクリプト。crontab で自動バックアップ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2026/06/wordpress-backup-Gemini_Generated_Image-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/06/wordpress-backup-Gemini_Generated_Image-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2026/06/wordpress-backup-Gemini_Generated_Image-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2026/06/wordpress-backup-Gemini_Generated_Image-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">WordPress の「バックアップ・リストア」BASHスクリプト。crontab で自動バックアップ</div><div class="blogcard-snippet internal-blogcard-snippet">RockyLinux9.7でバックアップサーバーを新しくしたので、バックアップ＆復元スクリプトも書き直してみました。せっかくなので、最新のBASH構文をAIに聞きながらですが、本当すごいなAIは・・デバッグ方法も教えてもらいました。コードは、コピペで利用できるように投稿しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.07</div></div></div></div></a>


<h3 class="wp-block-heading"><span id="toc5">Remiリポジトリ追加</span></h3>



<p class="wp-block-paragraph">AppStreamの、8.3を利用する場合やすでにRemiリポジトリが設定されている場合には不要ですが<br>より新しいPHPバージョンにアップデートした場合には、追加しておきます<br>今回筆者は、8.4に更新しようと思っているので、Remiリポジトリを追加します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2"><code>## Rocky Linux 9の場合
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm</code></pre>



<h3 class="wp-block-heading"><span id="toc6">モジュールリスト確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3"><code>dnf module list php</code></pre>



<p class="wp-block-paragraph">もし、404などのエラーが出てしまう場合には、一度キャッシュをクリアして再確認します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4"><code>sudo rm -f /etc/dnf/vars/releasever
sudo dnf clean all &amp;&amp; sudo dnf makecache
dnf module list php</code></pre>



<pre class="wp-block-preformatted">Rocky Linux 9 - AppStream<br>Name       Stream            Profiles                        Summary                                <br>php        8.1               common [d], devel, minimal      PHP scripting language                 <br>php        8.2               common [d], devel, minimal      PHP scripting language                 <br>php        8.3               common [d], devel, minimal      PHP scripting language                 <br><br>Remi's Modular repository for Enterprise Linux 9 - x86_64<br>Name       Stream            Profiles                        Summary                                <br>php        remi-7.4          common [d], devel, minimal      PHP scripting language                 <br>php        remi-8.0          common [d], devel, minimal      PHP scripting language                 <br>php        remi-8.1          common [d], devel, minimal      PHP scripting language                 <br>php        remi-8.2          common [d], devel, minimal      PHP scripting language                 <br>php        remi-8.3          common [d], devel, minimal      PHP scripting language                 <br>php        <strong>remi-8.4</strong>          common [d], devel, minimal      PHP scripting language                 <br>php        remi-8.5          common [d], devel, minimal      PHP scripting language </pre>



<h3 class="wp-block-heading"><span id="toc7">PHPモジュールのリセット</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5"><code>sudo dnf module reset php -y</code></pre>



<h3 class="wp-block-heading"><span id="toc8">新しいPHPバージョンの有効化（例: 8.4）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6"><code>sudo dnf module enable php:remi-8.4 -y</code></pre>



<h3 class="wp-block-heading"><span id="toc9">新規インストールの場合</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7"><code>sudo dnf install php php-fpm -y</code></pre>



<h3 class="wp-block-heading"><span id="toc10">新規インストールで拡張機能追加（よく使うパッケージ一式）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8"><code>sudo dnf install -y \
  php-mysqlnd \
  php-curl \
  php-exif \
  php-fileinfo \
  php-gd \
  php-imagick \
  php-intl \
  php-mbstring \
  php-xml \
  php-zip</code></pre>



<h3 class="wp-block-heading"><span id="toc11">アップグレードの場合</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-9"><code>sudo dnf update php\* -y</code></pre>



<h3 class="wp-block-heading"><span id="toc12">更新の確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-10"><code>php -v</code></pre>



<h3 class="wp-block-heading"><span id="toc13">再起動</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-11"><code>sudo systemctl restart httpd
sudo systemctl restart php-fpm</code></pre>



<h3 class="wp-block-heading"><span id="toc14">更新の確認</span></h3>



<p class="wp-block-paragraph">これで更新されたと思います<br>対象のWordPressへログインし、「サイトヘルス」で確認してください。</p>



<h2 class="wp-block-heading"><span id="toc15">MariaDBバージョンの更新</span></h2>



<h3 class="wp-block-heading"><span id="toc16">現バージョンの確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-12"><code>mariadb --version</code></pre>



<h3 class="wp-block-heading"><span id="toc17">（事前に）バックアップを取る</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-13"><code>sudo mysqldump -u root -p --all-databases &gt; /path/to/backup_$(date +%Y%m%d).sql</code></pre>



<p class="wp-block-paragraph"><a href="#toc4">PHP更新の項目でも紹介した</a>こちらスクリプトでもバックアップは可能です</p>



<h3 class="wp-block-heading"><span id="toc18">モジュールリスト確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-14"><code>dnf module list mariadb</code></pre>



<pre class="wp-block-code"><code>$ dnf module list mariadb
メタデータの期限切れの最終確認: 1:19:24 前の 2026年08月03日 10時24分16秒 に実施しました。
Rocky Linux 9 - AppStream
Name         Stream      Profiles                         Summary                       
mariadb      <strong>10.11</strong>       client, galera, server &#91;d]       MariaDB Module                            
mariadb      11.8<strong> </strong>       client, galera, server &#91;d]       MariaDB Module                            </code></pre>



<h3 class="wp-block-heading"><span id="toc19">MariaDB停止</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-15"><code>sudo systemctl stop mariadb</code></pre>



<h3 class="wp-block-heading"><span id="toc20">キャッシュのクリアとmariadbモジュールのリセット</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-16"><code>sudo dnf clean all
sudo dnf module reset mariadb -y</code></pre>



<h3 class="wp-block-heading"><span id="toc21">新しいモジュール（10.11）へ切り替え</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-17"><code>sudo dnf module switch-to mariadb:10.11 -y
sudo dnf update mariadb-server mariadb -y ##念のためパッケージ更新も明示
mariadb --version ##10.11になっているか確認</code></pre>



<h3 class="wp-block-heading"><span id="toc22">設定ファイル「/etc/my.cnf.d/mariadb-server.cnf」&nbsp;更新</span></h3>



<p class="wp-block-paragraph">設定ファイルのセッション名にバージョン番号（mariadb-10.5など）が含まれている場合があります<br>その項目下になにもない場合は、特に編集の必要はありませんが、今後追加の予定などある場合には<br>バージョンに合わせたセッション名に書き換えておいたほうが無難です</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-18"><code>cd /etc/my.cnf.d/
sudo vi ./mariadb-server.cnf</code></pre>



<pre class="wp-block-preformatted">・<br>・<br># This group is only read by MariaDB-10.5 servers.<br># If you use the same .cnf file for MariaDB of different versions,<br># use this group for options that older servers don't understand<br>#[mariadb-10.5]<br># ↓ 変更　<br>[mariadb-10.11] <br>・<br>・<br></pre>



<h3 class="wp-block-heading"><span id="toc23">MariaDB 起動</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-19"><code>sudo systemctl start mariadb
sudo systemctl enable mariadb</code></pre>



<h3 class="wp-block-heading"><span id="toc24">DB 内部の更新</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-20"><code>sudo mariadb-upgrade -u root -p「DB管理者パスワード」</code></pre>



<h3 class="wp-block-heading"><span id="toc25">Apache＆PHP-FPM　再起動</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-21"><code>sudo systemctl restart php-fpm
sudo systemctl restart httpd</code></pre>



<h3 class="wp-block-heading"><span id="toc26">更新の確認</span></h3>



<p class="wp-block-paragraph">対象のWordPressへログインし、「サイトヘルス」で確認します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="793" height="141" src="https://www.kazuban.com/blog/wp-content/uploads/2026/08/mariadb10-11.png" alt="" class="wp-image-13024" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/08/mariadb10-11.png 793w, https://www.kazuban.com/blog/wp-content/uploads/2026/08/mariadb10-11-500x89.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2026/08/mariadb10-11-300x53.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2026/08/mariadb10-11-768x137.png 768w" sizes="(max-width: 793px) 100vw, 793px" /></figure>



<p class="wp-block-paragraph">筆者の環境では、トラブルなく更新できました。</p>



<h2 class="wp-block-heading"><span id="toc27">トラブル時、mariaDB 事前バックアップからリストアする方法</span></h2>



<h3 class="wp-block-heading"><span id="toc28">基本のリストアコマンド</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-22"><code>sudo mariadb -u root -p &lt; /path/to/backup_20260803.sql</code></pre>



<h3 class="wp-block-heading"><span id="toc29">リストア時の注意点</span></h3>



<h4 class="wp-block-heading"><span id="toc30">MariaDBが起動している必要があります</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-23"><code>sudo systemctl status mariadb  ##起動確認
sudo systemctl start mariadb   ##停止していたら起動</code></pre>



<h4 class="wp-block-heading"><span id="toc31">アップグレード失敗などで「元の10.5環境に戻す」場合</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-24"><code>sudo dnf module switch-to mariadb:10.5 -y
sudo dnf update mariadb-server mariadb -y ##念のためパッケージ更新も明示
mariadb --version ##10.5になっているか確認</code></pre>



<h4 class="wp-block-heading"><span id="toc32">既存データとの重複に注意</span></h4>



<p class="wp-block-paragraph"><code>--all-databases</code> のダンプには <code>CREATE DATABASE</code> 文が含まれているため、同名DBが既に存在する場合は上書きされます。もし「クリーンな状態に戻したい」なら、リストア前に対象DBを削除しておくと安全です。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-25"><code>##例：wordpress用DBを削除してからリストアする場合
sudo mariadb -u root -p -e "DROP DATABASE wordpress;"
sudo mariadb -u root -p &lt; /path/to/backup_20260803.sql</code></pre>



<h4 class="wp-block-heading"><span id="toc33">リストア後の確認</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-26"><code>sudo mariadb -u root -p -e "SHOW DATABASES;"</code></pre>



<h2 class="wp-block-heading"><span id="toc34">後日の、dnf update でエラーがでました</span></h2>



<p class="wp-block-paragraph">後日、サーバーの「dnf update」でエラーがでました<br>一部のパッケージが更新できない！というエラーです</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li>エラー:<br>問題 1: package gd3php-2.3.3-9.el9.remi.x86_64 from @System requires libavif.so.15()(64bit), but none of the providers can be installed</li>



<li>cannot install both libavif-1.1.1-2.el9.next.x86_64 from epel-next and libavif-0.11.1-5.el9.x86_64 from @System</li>



<li>cannot install both libavif-1.1.1-2.el9.next.x86_64 from epel-next and libavif-0.11.1-5.el9.x86_64 from epel</li>



<li>パッケージの最良アップデート候補をインストールできません libavif-0.11.1-5.el9.x86_64</li>



<li>パッケージの最良アップデート候補をインストールできません gd3php-2.3.3-9.el9.remi.x86_64</li>



<li>nothing provides libdav1d.so.6()(64bit) needed by libavif-0.11.1-0.x86_64 from remi-safe<br>問題 2: package php-gd-8.4.25-1.module_php.8.4.el9.remi.x86_64 from @System requires libgd.so.103()(64bit), but none of the providers can be installed</li>



<li>package gd3php-2.3.3-9.el9.remi.x86_64 from @System requires libavif.so.15()(64bit), but none of the providers can be installed</li>



<li>package gd3php-2.3.3-9.el9.remi.x86_64 from remi-safe requires libavif.so.15()(64bit), but none of the providers can be installed</li>



<li>package gd3php-2.3.3-8.el9.remi.x86_64 from remi-safe requires libavif.so.14()(64bit), but none of the providers can be installed</li>



<li>package libavif-0.11.1-5.el9.x86_64 from @System requires libSvtAv1Enc.so.0()(64bit), but none of the providers can be installed</li>



<li>package libavif-0.11.1-5.el9.x86_64 from epel requires libSvtAv1Enc.so.0()(64bit), but none of the providers can be installed</li>



<li>package libavif0.10-0.10.1-2.el9.x86_64 from epel requires libSvtAv1Enc.so.0()(64bit), but none of the providers can be installed</li>



<li>cannot install both svt-av1-libs-2.3.0-2.el9.next.x86_64 from epel-next and svt-av1-libs-0.9.0-1.el9.x86_64 from @System</li>



<li>cannot install both svt-av1-libs-2.3.0-2.el9.next.x86_64 from epel-next and svt-av1-libs-0.9.0-1.el9.x86_64 from epel</li>



<li>パッケージの最良アップデート候補をインストールできません svt-av1-libs-0.9.0-1.el9.x86_64</li>



<li>パッケージの最良アップデート候補をインストールできません php-gd-8.4.25-1.module_php.8.4.el9.remi.x86_64</li>



<li>nothing provides libdav1d.so.6()(64bit) needed by libavif-0.11.1-0.x86_64 from remi-safe<br>(競合するパッケージを置き換えるには、コマンドラインに &#8216;&#8211;allowerasing&#8217; を追加してみてください <br>または、&#8217;&#8211;skip-broken&#8217; を追加して、インストール不可のパッケージをスキップしてください <br>または、&#8217;&#8211;nobest&#8217; を追加して、最適候補のパッケージのみを使用し<br>ないでください)</li>
</ul>
</blockquote>



<p class="wp-block-paragraph">警告メッセージに、スキップする助言があったので、一つづつやってみます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-27"><code>sudo dnf update --allowerasing</code></pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-28"><code>sudo dnf update --skip-broken</code></pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-29"><code>sudo dnf update --nobest</code></pre>



<p class="wp-block-paragraph">どのオプションがいいのかわかりませんが、私の環境では、最後のオプションで、先へ進み<br>更新できないパッケージ以外はupdate はできましたが、<br>これでいいのかな？ -> AIさん教えて！</p>



<blockquote class="wp-block-quote has-watery-red-background-color has-background is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">結論から言うと、<strong>そのままにしておくのは良くありません</strong>。システムが壊れているわけではありませんが、一部のパッケージ（<code>gd3php</code> や <code>php-gd</code>）の更新がスキップされており、今後セキュリティアップデートなどを受け取れなくなる危険性があります。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc35">原因</span></h3>



<p class="wp-block-paragraph"><strong><code>epel-next</code> リポジトリが有効化されていること</strong>が原因です。</p>



<ul class="wp-block-list">
<li><strong>EPEL-Next</strong> は、CentOS Stream（次期RHEL）向けの先行テストリポジトリです。</li>



<li>Rocky Linux（安定版RHELクローン）でこれを有効にすると、<code>epel-next</code> から入ってきた新しすぎるパッケージ（<code>libavif-1.1.1</code> や <code>svt-av1-libs-2.3.0</code>）が、通常の <code>epel</code> や <code>remi</code> リポジトリのパッケージと競合を起こしてしまいます。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc36">対処手順</span></h3>



<p class="wp-block-paragraph"><strong>1.epel-next の無効化と CRB の有効化:</strong>競合の原因を無効化。<br>競合の元になっている <code>epel-next</code> を無効にし、Remiに必要な <code>crb</code> リポジトリを有効化します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-30"><code>sudo dnf config-manager --set-disabled epel-next
sudo dnf config-manager --set-enabled crb</code></pre>



<p class="wp-block-paragraph"><em>確認方法:</em> <code>dnf repolist</code> を実行し、<code>crb</code> があり <code>epel-next</code> がないことを確認します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-31"><code>dnf repolist</code></pre>



<p class="wp-block-paragraph"><strong>2.PHP 8.4 モジュールの指定:</strong>PHP 8.4 へのリセット。<br>PHP 8.4 モジュールを明示的に有効化し直します。<br><em>確認方法:</em> <code>dnf module list php</code> を実行し、<code>remi-8.4</code> の項目に <code>[e]</code> が付いていることを確認します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-32"><code>dnf module list php</code></pre>



<p class="wp-block-paragraph"><strong>3.キャッシュクリアと同期（distro-sync）:</strong>バージョン調整。<br>キャッシュを破棄し、<code>epel-next</code> 由来の不整合パッケージを正規バージョンへダウングレード・同期させます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-33"><code>sudo dnf clean all
sudo dnf distro-sync -y</code></pre>



<p class="wp-block-paragraph"><strong>4.確認:</strong>仕上げ<br>通常の dnf update を実行:<br>最後にオプションなしでシステム全体を更新します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-34"><code>sudo dnf update</code></pre>



<p class="wp-block-paragraph">エラーやスキップの警告が出ずに「完了しました!」と表示されれば成功です。<br>作業完了後、<code>php -v</code> を実行して <strong>PHP 8.4.x</strong> と表示されることを確認してください。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-35"><code>php -v</code></pre>



<p class="wp-block-paragraph">PHP 8.4 で <code>gd</code> モジュールが正常に読み込まれているか確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-36"><code>php -m | grep -i gd</code></pre>



<p class="wp-block-paragraph">実行してターミナルに <span class="bold-red"><strong><code>gd</code></strong> </span>と表示されれば、モジュールは正常に読み込まれています。<br>さらに、JPEGやPNG、WebP、AVIFなどの画像フォーマットが有効になっているか詳しく確認したい場合は、次のコマンドを実行してください。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-37"><code>php -r "print_r(gd_info());"</code></pre>



<pre class="wp-block-preformatted">Array<br>(<br>    [GD Version] =&gt; 2.3.3<br>    [FreeType Support] =&gt; 1<br>    [FreeType Linkage] =&gt; with freetype<br>    [GIF Read Support] =&gt; 1<br>    [GIF Create Support] =&gt; 1<br>    [JPEG Support] =&gt; 1<br>    [PNG Support] =&gt; 1<br>    [WBMP Support] =&gt; 1<br>    [XPM Support] =&gt; 1<br>    [XBM Support] =&gt; 1<br>    [WebP Support] =&gt; 1<br>    [BMP Support] =&gt; 1<br>    [AVIF Support] =&gt; 1<br>    [TGA Read Support] =&gt; 1<br>    [JIS-mapped Japanese Font Support] =&gt;<br>)</pre>



<p class="wp-block-paragraph">AIさん、おかげで、正常になりました</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress の「バックアップ・リストア」BASHスクリプト。crontab で自動バックアップ</title>
		<link>https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 06:28:26 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[RockyLinux9.7]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[リストア]]></category>
		<category><![CDATA[自宅サーバー]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12790</guid>

					<description><![CDATA[バックアップ・リストアの記事は、以前こちらでも紹介しました 目次 新しいBASHデバッグshellcheckset コマンドスクリプト構成WordPress_Config_Data.sh : 変数設定Wp-Backup. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">バックアップ・リストアの記事は、以前こちらでも紹介しました </p>


<a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/" title="RockyLinux9.３で自宅サーバーを再構築V07・WordPress のバックアップとリストア" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.３で自宅サーバーを再構築V07・WordPress のバックアップとリストア</div><div class="blogcard-snippet internal-blogcard-snippet">引越しするには、旧環境のデータをバックアップし、新環境へリストアします。WordPress のバックアップとリストアの方法を説明し、自動バックアップするスクリプトを作成します。バックアップ・リストアができると、引越しだけでなく、トラブル時にも以前の状態まで戻せます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.08</div></div></div></div></a>



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">新しいBASH</a></li><li><a href="#toc2" tabindex="0">デバッグ</a><ol><li><a href="#toc3" tabindex="0">shellcheck</a></li><li><a href="#toc4" tabindex="0">set コマンド</a></li></ol></li><li><a href="#toc5" tabindex="0">スクリプト構成</a><ol><li><a href="#toc6" tabindex="0">WordPress_Config_Data.sh : 変数設定</a></li><li><a href="#toc7" tabindex="0">Wp-Backup.sh : データベース＆WordPressコンテンツのバックアップ</a></li><li><a href="#toc8" tabindex="0">MariaDB_Backup.sh : データベースバックアップ（Wp-Backup.shから呼ばれる）</a></li><li><a href="#toc9" tabindex="0">Wp-Content_Backup.sh : WordPressコンテンツバックアップ（Wp-Backup.shから呼ばれる）</a></li><li><a href="#toc10" tabindex="0">Wp-Restore.sh : データベース＆WordPressコンテンツの復元</a></li><li><a href="#toc11" tabindex="0">MariaDB_Restore.sh データベース復元（Wp-Restore.shから呼ばれる）</a></li><li><a href="#toc12" tabindex="0">Wp-Content_Restore.sh: WordPressコンテンツ復元（Wp-Restore.shから呼ばれる）</a></li><li><a href="#toc13" tabindex="0">Header.sh : デバッグモード仕様（変数 DEBUG=1 で有効）</a></li><li><a href="#toc14" tabindex="0">Tidyup_backfile.sh : バックアップファイルの整理（引数：対象ディレクトリ・保存日数）</a></li></ol></li><li><a href="#toc15" tabindex="0">リストアする場合の注意点</a><ol><li><a href="#toc16" tabindex="0">update_wp_url.sh</a></li></ol></li><li><a href="#toc17" tabindex="0">自動バックアップ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">新しいBASH</span></h2>



<p class="wp-block-paragraph">前回のスクリプトは、<a href="https://www.kazuban.com/blog/mirror-site-v2/#toc9">2020年に紹介した</a>コマンド操作をネット情報を参考にスクリプト化しましたが、今回はこのスクリプトをAIに投げて、最新のBASH構文への変換を教えてもらいながら作成しました。<br>投稿のスクリプト類はちょっと長くなりましたが、全てコピペできるようにしました。<br>また、開発途中ではBASHで一行づつのデバッグもやってみました。</p>



<h2 class="wp-block-heading"><span id="toc2">デバッグ</span></h2>



<p class="wp-block-paragraph">編集はVSCodeを利用したので、デバッグプラグインもインストールしてみましたが、あまり思ったように動いてくれませんでした。<br>AIに聞いてみると、BASH自体にも、構文チェックやステップデバッグができる機能があるようです</p>



<h3 class="wp-block-heading"><span id="toc3">shellcheck</span></h3>



<p class="wp-block-paragraph"><span class="inline-button-white-black"><code>shellcheck [スクリプト名.sh]</code></span>のようにコマンド実行するだけで、スクリプトのバグや構文エラーを簡単にチェックできます。<br>パッケージ名は、キャメルケース的書き方「<strong>S</strong>hell<strong>C</strong>heck」になるので注意が必要です</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-38"><code>sudo dnf install ShellCheck</code></pre>



<p class="wp-block-paragraph">もしパッケージが見つからない場合には、EPELリポジトリが有効になっていない可能性があるのでEPELを有効化した上で再度インストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-39"><code>sudo dnf install epel-release
sudo dnf install ShellCheck</code></pre>



<p class="wp-block-paragraph">shellcheck は、スクリプトのバグや構文エラーを検出してエラーコードと共に表示してくれます。<br>標準では致命的でない場合でも警告を出してくるのでちょっとうるさく感じる事もありますが、<br>エラーコードをAIに聞くことでより安全なコードの書き方の学習にもなります</p>



<h3 class="wp-block-heading"><span id="toc4">set コマンド</span></h3>



<p class="wp-block-paragraph">Bashの <code>set</code> コマンドは、シェルの動作やオプションを設定・変更するためのコマンドです。<br>主にスクリプトの安全運転モードやデバッグのために、シェルの冒頭でオプションと組み合わせて使用されます<br>・set -euo pipefail<br>実務でよく使われる定番のオプション<br>これにより、スクリプト実行時のバグや予期せぬトラブルを大幅に減らせます<br><br>・<strong><code>set -x</code></strong>: デバッグ開始<br>実行されるコマンドや変数の展開結果をすべて画面（標準エラー出力）に表示<br><br>・<strong><code>set +x</code></strong>: デバッグ開始<br>実行トレース出力を停止<br><br>・trap &#8216;read -p &#8220;STEP&gt; &#8221; &lt; /dev/tty&#8217; DEBUG<br>実行中、すべてのコマンドを実行する直前で指定文字（STEP&gt;）プロンプトで一時停止<br><br>・export PS4=&#8217;+ ${LINENO}: &#8216;<br>デバッグモード（<code>set -x</code>）で実行されるコマンドを表示する際、そのコマンドのスクリプトでの行番号を出力に含める設定</p>



<p class="wp-block-paragraph">これらコードをスクリプト上部で実行しておくことで、シェルスクリプトのバグの原因特定が早くなります。<br>サンプルコードを書いてみました。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-40"><code>#!/bin/bash

set -euo pipefail
# --- debug mode: DEBUGGING=1 で有効 ---
DEBUGGING=1

if &#91;&#91; $DEBUGGING == "1" ]]; then
  echo "Debug mode is 'true' !! "
  export PS4='+ ${LINENO}: '
  set -x
  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
else
  echo "Debug mode is 'false' !! "
fi

# テスト用コード
echo "最初の処理"
x=10
y=20
result=$((x + y))
echo "結果は $result"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">このコードを実行すると、デバッグの状況が体験できます</p>



<p class="wp-block-paragraph">次に今回作成したWordPressのバックアップ＆リストアのスクリプトを紹介します<br>デバッグコードは、Header.sh に別スクリプトにして、呼び出す形式にしました。</p>



<h2 class="wp-block-heading"><span id="toc5">スクリプト構成</span></h2>



<p class="wp-block-paragraph">WordPressのバックアップは、大きく分けて「ファイル（サーバー内のデータ）」と「データベース（MySQL/MariaDB）」の2つが必要になります。<br>前回スクリプトは、昔の経験とネット検索を参考に、自分で作成しましたが<br>今回は、BASHもかなり進化しているみたいなので、AIのサポートで最新の構文で書き直しました。<br>バックアップファイルやスクリプトの構成は<br>・「ユーザーホーム」内に、「Backup」ディレクトリを作成<br>・「Backup」内に、「WordPress」と「bin」ディレクトリを作成<br>・「WordPress」内にWordPress パッケージをインストールしたディレクトリ名（筆者環境では「blog」）を作成します<br>・「blog」内に、データベースとサーバー内データのバックアップを保存します<br>・「bin」内に実行スクリプトを保存します</p>



<pre class="wp-block-preformatted">.[ユーザーホームディレクトリ]<br>├── Backup #「バックアップデータを保存する」<br>│   ├── WordPress #「WordPerss関連データ」<br>│   │   └── blog #「blog内のバックアップデータ」<br>│   │       ├── 20260530-MariaDB.bak       # データベースバックアップ<br>│   │       ├── 20260530-Wp-content.tar.gz # WordPressコンテンツ<br>│   │       ├── mariadb_backup.log<br>│   │       └── wp_backup.log<br>│   ├── bin #「スクリプト」<br>│   │   ├── Header.sh                #「デバッグ用のスクリプト」<br>│   │   ├── MariaDB_Backup.sh        #「データベースのバックアップ」<br>│   │   ├── MariaDB_Restore.sh       #「データベースのリストア」<br>│   │   ├── Tidyup_backfile.sh       #「バックアップデータの整理」<br>│   │   ├── WordPress_Config_Data.sh #「バックアップ環境の設定」<br>│   │   ├── Wp-Backup.sh             #「バックアップ用メインスクリプト」<br>│   │   ├── Wp-Content_Backup.sh     #「WordPressデータのバックアップ」<br>│   │   ├── Wp-Content_Restore.sh    #「WordPressデータのリストア」<br>│   │   └── Wp-Restore.sh            #「リストア用メインスクリプト」</pre>



<h3 class="wp-block-heading"><span id="toc6">WordPress_Config_Data.sh : 変数設定</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-41"><code>#!/bin/bash
#  WoredPressバックアップ設定ファイル
#    WordPress_Config_Data.sh    2026/05 by Kazuban
#------------------------------------
export USER="kazuban"
export USER_DIR="/home/${USER}"
export SUB_DIR="blog"
export DOCUMEN_ROOT="/home/www/html"
#----- MariaDB ----------------------
export MYSQL_ROOT_PASSWD="hogehoge_passwd"
export DATABASE="WpDb"
export MYSQL_USER="WpAdmin"
export MYSQL_USER_PASSWD="WpPasswd"
#----- WordPress --------------------
export WP_CONTENT_DIR="wp-content"
export WP_CONTENT_FILENAME="Wp-content"
export WP_CONTENT_PATH="/home/www/html/${SUB_DIR}/${WP_CONTENT_DIR}"
export WP_CONTENT_OWNER="apache:apache"</code></pre>



<h3 class="wp-block-heading"><span id="toc7">Wp-Backup.sh : データベース＆WordPressコンテンツのバックアップ</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-42"><code>#!/bin/bash
#  WoredPress のバックアップ
#    データベース(Mysql)とサーバーデータ(wp-content)
#  Wp-Backup.sh    2026/05 by Kazuban
#------------------------------------
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
export CALLER_SCRIPT="$0"
#export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#shellscriptで警告でたので、AIに聞くとこの書き方が安全らしい
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#---- MariaDB -----------------------
export MYSQL_BACKUP_SCRIPT="${SCRIPT_DIR}/MariaDB_Backup.sh"
export MYSQL_LOG="${BACKUP_DIR}/mariadb_backup.log"
#---- WordPress ---------------------
#export BACKUP_SOURCE_DIR="${DOCUMEN_ROOT}/${SUB_DIR}/wp-content"
export WP_BACKUP_SCRIPT="${SCRIPT_DIR}/Wp-Content_Backup.sh"
export BACKUP_SOURCE_DIR="${DOCUMEN_ROOT}/${SUB_DIR}/${WP_CONTENT_DIR}"
export WP_LOG="${BACKUP_DIR}/wp_backup.log"
#------------------------------------
export TIDY_UP_SCRIPT="${SCRIPT_DIR}/Tidyup_backfile.sh"
export DAYS_AGO="5"
#-----　関数定義 -----------------------
user_dir=$(pwd)
echo $user_dir
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
check_backup_dir(){
  #$BACKUP_DIRが存在しない場合には作成
  mkdir -p $BACKUP_DIR 
}
cmd_mariadb()   { check_backup_dir; $MYSQL_BACKUP_SCRIPT; }
cmd_wordpress() { check_backup_dir; $WP_BACKUP_SCRIPT; }
cmd_all()       { cmd_mariadb; cmd_wordpress; }
cmd_help() {
  echo "--- WordPress Backup Script ---"
  echo "Directory: ${SCRIPT_DIR}"
  echo "Usage: $0 {db|wp|all|help}"
  echo "  db   = データベース(MariaDB)"
  echo "  wp   = Word Press (Wp-Content)"
  echo "  all  = db + wp"
  echo "  help = オプション"
}

#-----　メインプログラム　-------------
#------------------------------------
case "${1:-}" in
  db)        cmd_mariadb   ;;
  wp)        cmd_wordpress ;;
  all)       cmd_all       ;;
  help|"")   cmd_help      ;;
  *)
    echo "Unknown command: $1"
    cmd_help
    exit 1
    ;;
esac
</code></pre>



<h3 class="wp-block-heading"><span id="toc8">MariaDB_Backup.sh : データベースバックアップ（Wp-Backup.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-43"><code>#!/bin/bash
#  WoredPress のデータベースバックアップ
#    MariaDB_Backup.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
#------------------------------------
# --- 関数定義 ---
usage() {
  echo "使用方法: ${SCRIPT_NAME:-$(basename "$0")}"
  echo "  データベース(MariaDB)をバックアップし、古いファイルを整理します。"
  exit 0
}

log() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') ${message}" | tee -a "${MYSQL_LOG}"
}

failed() {
  echo "エラー: $1" &gt;&amp;2
  log "ERROR: $1"
  exit 1
}

# バックアップファイル名を生成する（同名ファイルがあれば連番を付加）
make_filename() {
  local date_str
  date_str=$(date '+%Y%m%d')
  local basename="-MariaDB.bak"
  local filename="${date_str}${basename}"
  local i=1
  while &#91;&#91; -e "${BACKUP_DIR}/${filename}" ]]; do
    filename="${date_str}-${i}${basename}"
    (( i++ )) || true
  done
  echo "${filename}"
}

# --- ヘルプ ---
if &#91;&#91; "${1:-}" == "-?" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# --- 事前チェック ---
&#91;&#91; -d "${BACKUP_DIR}" ]]      || failed "バックアップ先が見つかりません: ${BACKUP_DIR}"
&#91;&#91; -x "${TIDY_UP_SCRIPT}" ]]  || failed "整理スクリプトが見つかりません: ${TIDY_UP_SCRIPT}"

# --- ファイル名決定 ---
FILENAME=$(make_filename)
BACKUP_PATH="${BACKUP_DIR}/${FILENAME}"

# --- バックアップ実行 ---
log "MariaDB バックアップ開始: ${FILENAME}"
echo "MariaDB を ${FILENAME} にバックアップします。"

if mariadb-dump \
    --user="${MYSQL_USER}" \
    --password="${MYSQL_USER_PASSWD}" \
    --host=localhost \
    --all-databases \
    --single-transaction \
    --quick \
    &gt; "${BACKUP_PATH}" \
    2&gt;&gt; "${MYSQL_LOG}"; then
  log "バックアップ成功: ${FILENAME} ($(du -sh "${BACKUP_PATH}" | cut -f1))"
else
  failed "mariadb-dump コマンドが失敗しました"
fi

# --- 古いファイルの整理 ---
log "古いバックアップを整理します（${DAYS_AGO} 日以前）"
"${TIDY_UP_SCRIPT}" "${BACKUP_DIR}" "${DAYS_AGO}"

log "MariaDB バックアップ完了"
echo "MariaDB Backup Complete."</code></pre>



<h3 class="wp-block-heading"><span id="toc9">Wp-Content_Backup.sh : WordPressコンテンツバックアップ（Wp-Backup.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-44"><code>#!/bin/bash
#  wp-content ディレクトリのバックアップスクリプト
#    WP-content_Backup.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh wp] から呼び出してください。"
  exit 1
fi
#------------------------------------
readonly SCRIPT_NAME="$(basename "$0")"
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
#------------------------------------
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
#------------------------------------
# --- 関数定義 ---
usage() {
  echo "使用方法: ${SCRIPT_NAME}"
  echo "  wp-content ディレクトリをバックアップし、古いファイルを整理します。"
  exit 0
}

log() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') ${message}" | tee -a "${WP_LOG}"
}

failed() {
  echo "エラー: $1" &gt;&amp;2
  log "ERROR: $1"
  exit 1
}

# バックアップファイル名を生成する（同名ファイルがあれば連番を付加）
make_filename() {
  local date_str
  date_str=$(date '+%Y%m%d')
  local basename="-Wp-content.tar.gz"
  local filename="${date_str}${basename}"
  local i=1
  while &#91;&#91; -e "${BACKUP_DIR}/${filename}" ]]; do
    filename="${date_str}-${i}${basename}"
    (( i++ )) || true
  done
  echo "${filename}"
}

# --- ヘルプ ---
if &#91;&#91; "${1:-}" == "-?" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# --- 事前チェック ---
&#91;&#91; -d "${BACKUP_DIR}" ]]   || failed "バックアップ先が見つかりません: ${BACKUP_DIR}"
&#91;&#91; -d "${BACKUP_SOURCE_DIR}" ]]  || failed "バックアップ元が見つかりません: ${BACKUP_SOURCE_DIR}"
&#91;&#91; -x "${TIDY_UP_SCRIPT}" ]]  || failed "整理スクリプトが見つかりません: ${TIDY_UP_SCRIPT}"

# --- ファイル名決定 ---
FILENAME=$(make_filename)
DEST="${BACKUP_DIR}/${FILENAME}"

# --- バックアップ実行 ---
log "WordPress バックアップ開始:"
log "${BACKUP_SOURCE_DIR} → ${DEST}"
echo "WordPress Backup Starting..."

#echo "バックアップファイル：${DEST}"
#echo "sudo chown ${USER}: ${DEST}"
#exit 1
if sudo tar \
    --create \
    --gzip \
    --file="${DEST}" \
    "${BACKUP_SOURCE_DIR}"; then # \
    #2&gt;&gt; "${WP_LOG}"; then
  echo "バックアップファイル：${DEST}"
  echo "sudo chown ${USER}: ${DEST}"
  sudo chown ${USER}: ${DEST}
  log "バックアップ成功: ${FILENAME} ($(du -sh "${DEST}" | cut -f1))"
else
  failed "tar コマンドが失敗しました"
fi

# --- 古いファイルの整理 ---
log "古いバックアップを整理します（${DAYS_AGO} 日以前）"
"${TIDY_UP_SCRIPT}" "${BACKUP_DIR}" "${DAYS_AGO}"

log "WordPress バックアップ完了"
echo "WordPress Backup Complete."</code></pre>



<h3 class="wp-block-heading"><span id="toc10">Wp-Restore.sh : データベース＆WordPressコンテンツの復元</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-45"><code>#!/bin/bash
#  WoredPress の復元
#    データベース(Mysql)とサーバーデータ(wp-content)
#  Wp-Restore.sh    2026/05 by Kazuban
#------------------------------------
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
export CALLER_SCRIPT="$0"
#export SCRIPT_DIR=$(dirname "$(realpath "$0")")
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#---- MariaDB -----------------------
export MYSQL_RESTORE_SCRIPT="${SCRIPT_DIR}/MariaDB_Restore.sh"
export PRE_BACKUP_FILE="Pre-Backup.bak"
#---- WordPress ---------------------
export WP_RESTORE_SCRIPT="${SCRIPT_DIR}/Wp-Content_Restore.sh"
#------------------------------------
export PRE_BACKUP="Y"    # リストア前に現行 wp-content を退避するか Y/N
#-----　関数定義 -----------------------
#user_dir=$(pwd)
#echo $user_dir
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
check_backup_dir(){
  if &#91; ! -d $BACKUP_DIR ]; then
    echo "バックアップディレクトリがありません！"
    exit 0 
  fi
}
cmd_mariadb()   { check_backup_dir; $MYSQL_RESTORE_SCRIPT; }
cmd_wordpress() { check_backup_dir; $WP_RESTORE_SCRIPT; }
cmd_all()       { cmd_mariadb; cmd_wordpress; }
cmd_help() {
  echo "--- WordPress Restor Script ---"
  echo "Directory: ${SCRIPT_DIR}"
  echo "Usage: $0 {db|wp|all|help}"
  echo "  db   = データベース(MariaDB)"
  echo "  wp   = Word Press (Wp-Content)"
  echo "  all  = db + wp"
  echo "  help = オプション"
}

#-----　メインプログラム　-------------
#------------------------------------
case "${1:-}" in
  db)        cmd_mariadb   ;;
  wp)        cmd_wordpress ;;
  all)       cmd_all       ;;
  help|"")   cmd_help      ;;
  *)
    echo "Unknown command: $1"
    cmd_help
    exit 1
    ;;
esac
</code></pre>



<h3 class="wp-block-heading"><span id="toc11">MariaDB_Restore.sh データベース復元（Wp-Restore.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-46"><code>#!/bin/bash
#  WoredPress のデータベース復元スクリプト
#    MariaDB_Restore.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
# --- debug mode: DEBUG=1 で有効 ---
#DEBUG=
PRE_BACKUP="Y"   # リストア前にバックアップを取るか Y/N
PRE_BACKUP_FILE="Pre-Backup.bak"
#------------------------------------
export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
#export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#------------------------------------

# ---- 関数定義 ---------------------------------------
# バックアップファイルの一覧を配列に格納する
load_backup_files() {
  BACKUP_FILES=()
  while IFS= read -r f; do
    BACKUP_FILES+=("$(basename "$f")")
  #done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*.bak" | sort)
  done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*-MariaDB.bak" | sort)
}

# 番号付きリストを表示する
list_backups() {
  echo "--------------------"
  echo "バックアップディレクトリ: ${BACKUP_DIR}"
  echo "--------------------"

  # --- # は個数を表し、&#91;@] は配列のすべての要素
  if &#91;&#91; ${#BACKUP_FILES&#91;@]} -eq 0 ]]; then
    echo "（バックアップファイルが見つかりません）"
  else
    local i=1
    for f in "${BACKUP_FILES&#91;@]}"; do
      printf "  &#91;%d] %s\n" "$i" "$f"
      (( i++ )) || true   # set -e 対策: (( )) は 0 になると終了コード 1 を返すため
    done
  fi
  echo "--------------------"
}

# 入力値（番号 or ファイル名）からファイル名を解決して返す
resolve_input() {
  local input="$1"

  # 数字のみ → 番号として解釈
  if &#91;&#91; "$input" =~ ^&#91;0-9]+$ ]]; then
    local idx=$(( input - 1 ))
    if (( idx &lt; 0 || idx &gt;= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" &gt;&amp;2
      exit 1
    fi
    echo "${BACKUP_FILES&#91;$idx]}"
  else
    # 文字列 → ファイル名として解釈（リスト内に存在するか確認）
    local f
    for f in "${BACKUP_FILES&#91;@]}"; do
      if &#91;&#91; "$f" == "$input" ]]; then
        echo "$f"
        return
      fi
    done
    echo "エラー: ファイルが見つかりません: ${input}" &gt;&amp;2
    exit 1
  fi
}

# 対話形式でファイルを選択させる
select_backup_file() {
  local selected=""
  while &#91;&#91; -z "$selected" ]]; do
    read -r -p "番号またはファイル名を入力してください (q で終了): " INPUT
    case "$INPUT" in
      &#91;qQ])
        kill -USR1 $$    # 親プロセス（スクリプト自身）にシグナルを送る
        exit 1;;
      "")   echo "入力してください" ;;
      *)    selected=$(resolve_input "$INPUT") ;;
    esac
  done
  echo "$selected"
}

usage() {
  echo "使い方: $(basename "$0") &#91;バックアップファイル名 or 番号]"
  echo "  引数なしで起動すると対話形式で選択できます。"
  echo "--------------------"
  list_backups
  exit 1
}

run_pre_backup() {
  local date_str
  date_str=$(date '+%Y%m%d-%H%M')
  local pre_backup_path="${BACKUP_DIR}/${date_str}-${PRE_BACKUP_FILE}"

  echo "--------------------"
  echo "-- 事前バックアップを開始します... --"

  #mysqldump \
  mariadb-dump \
    --user="${MYSQL_USER}" \
    --password="${MYSQL_USER_PASSWD}" \
    --host=localhost \
    --all-databases \
    --single-transaction \
    --quick \
    &gt; "${pre_backup_path}"

  echo "-- 事前バックアップ完了: ${pre_backup_path} --"
  echo "--------------------"
}

run_restore() {
  local backup_file="${BACKUP_DIR}/${1}"

  echo "--------------------"
  echo "-- リストア対象: ${1} --"
  echo "-- データベース: ${DATABASE} --"
  echo "--------------------"

  read -r -p "リストアを実行しますか？ (y/n): " YN
  case "${YN}" in
    &#91;yY])
      echo "-- リストアを開始します... --"
      #mysql \
      mariadb \
        --user=root \
        --password="${MYSQL_ROOT_PASSWD}" \
        "${DATABASE}" \
        &lt; "${backup_file}"
      echo "-- リストア完了 --"
      ;;
    &#91;nN])
      kill -USR1 $$    # 親プロセス（スクリプト自身）にシグナルを送る
      exit 0
      echo "-- 中止しました --"
      exit 0
      ;;
    *)
      echo "エラー: y または n を入力してください" &gt;&amp;2
      exit 1
      ;;
  esac
}

# ----- メイン処理 --------------------------------------------

# バックアップディレクトリの存在確認
if &#91;&#91; ! -d "${BACKUP_DIR}" ]]; then
  echo "エラー: バックアップディレクトリが存在しません: ${BACKUP_DIR}" &gt;&amp;2
  exit 1
fi

# ファイル一覧をグローバル配列に読み込む
# declare 変数の属性やタイプ -a 「配列(Array)」
declare -a BACKUP_FILES
load_backup_files

# ヘルプ
if &#91;&#91; "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# ファイル選択：引数あり → 解決、なし → 対話形式
if &#91;&#91; $# -gt 0 ]]; then
  list_backups
  SELECTED_FILE=$(resolve_input "$1")
else
  list_backups
  SELECTED_FILE=$(select_backup_file)
fi

echo "-- 選択されたファイル: ${SELECTED_FILE} --"

# 事前バックアップ
if &#91;&#91; "${PRE_BACKUP}" =~ ^&#91;Yy]$ ]]; then
  run_pre_backup
fi

# リストア実行
run_restore "${SELECTED_FILE}"
</code></pre>



<h3 class="wp-block-heading"><span id="toc12">Wp-Content_Restore.sh: WordPressコンテンツ復元（Wp-Restore.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-47"><code>#!/bin/bash
#  wp-content ディレクトリの復元スクリプト
#    WP-Content_Restore.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
# --- debug mode: DEBUG=1 で有効 ---
#export DEBUG=
PRE_BACKUP="Y"    # リストア前に現行 wp-content を退避するか Y/N
#------------------------------------
export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
#------------------------------------

# --- 関数定義 ---
# バックアップファイルの一覧を配列に格納する
load_backup_files() {
  BACKUP_FILES=()
  cmd="find ${BACKUP_DIR} -maxdepth 1 -name *-${WP_CONTENT_DIR}.tar.gz"  #${WP_CONTENT_DIR}
  while IFS= read -r f; do
    BACKUP_FILES+=("$(basename "$f")")
  done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*-${WP_CONTENT_FILENAME}.tar.gz" | sort)
}

# 番号付きリストを表示する
list_backups() {
  echo "--------------------"
  echo "バックアップディレクトリ: ${BACKUP_DIR}"
  echo "--------------------"

  if &#91;&#91; ${#BACKUP_FILES&#91;@]} -eq 0 ]]; then
    echo "（バックアップファイルが見つかりません）" &gt;&amp;2
  else
    local i=1
    for f in "${BACKUP_FILES&#91;@]}"; do
      printf "  &#91;%d] %s\n" "$i" "$f"
      (( i++ )) || true   # set -e 対策: (( )) は 0 になると終了コード 1 を返すため
    done
  fi
  echo "--------------------"
}

# 入力値（番号 or ファイル名）からファイル名を解決して返す
resolve_input() {
  local input="$1"

  # 数字のみ → 番号として解釈
  if &#91;&#91; "$input" =~ ^&#91;0-9]+$ ]]; then
    local idx=$(( input - 1 ))
    if (( idx &lt; 0 || idx &gt;= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" &gt;&amp;2
      exit 1
    fi
    echo "${BACKUP_FILES&#91;$idx]}"
  else
    # 文字列 → ファイル名として解釈（リスト内に存在するか確認）
    local f
    for f in "${BACKUP_FILES&#91;@]}"; do
      if &#91;&#91; "$f" == "$input" ]]; then
        echo "$f"
        return
      fi
    done
    echo "エラー: ファイルが見つかりません: ${input}" &gt;&amp;2
    exit 1
  fi
}

# 対話形式でファイルを選択させる
select_backup_file() {
  local selected=""
  while &#91;&#91; -z "$selected" ]]; do
    read -r -p "番号またはファイル名を入力してください (q で終了): " INPUT
    case "$INPUT" in
      &#91;qQ])
        kill -USR1 $$
        exit 1 ;;
      "")   echo "入力してください" ;;
      *)    selected=$(resolve_input "$INPUT") ;;
    esac
  done
  echo "$selected"
}

# 使い方表示
usage() {
  echo "使い方: $(basename "$0") &#91;バックアップファイル名 or 番号]"
  echo "  引数なしで起動すると対話形式で選択できます。"
  echo "--------------------"
  list_backups
  exit 1
}

# 既存 wp-content を日付付きディレクトリ名にリネームして退避する
run_pre_backup() {
  local date_str
  date_str=$(date '+%Y%m%d-%H%M')
  local backup_path="${WP_CONTENT_PATH}-${date_str}.bak"

  echo "--------------------"
  echo "-- 事前バックアップ（退避）を開始します... --"
  echo "-- ${WP_CONTENT_PATH} → ${backup_path} --"
  sudo mv "${WP_CONTENT_PATH}" "${backup_path}"
  echo "-- 事前バックアップ完了 --"
  echo "--------------------"
}

# リストア実行
run_restore() {
  local backup_file="${BACKUP_DIR}/$1"
  local work_dir
  #work_dir=$(mktemp -d) #添付ディレクトリの利用
  work_dir=$BACKUP_DIR

  echo "--------------------"
  echo "-- リストア対象: $1 --"
  echo "-- 展開先 (${WP_CONTENT_DIR}): ${WP_CONTENT_PATH} --"
  echo "--------------------"

  read -r -p "リストアを実行しますか？ (y/n): " YN
  case "${YN}" in
    &#91;yY])
      echo "-- リストアを開始します... --"

      # 1. アーカイブ内の wp-content の階層数を確認
      echo "-- 展開中: ${backup_file} --"
      local wp_path strip_count

      list=$(tar tzf "${backup_file}")
      wp_path=$(echo "$list" | grep -m1 "${WP_CONTENT_DIR}/$" || true)
      echo "------ $wp_path --------"
      if &#91;&#91; -z "${wp_path}" ]]; then
        echo "エラー: アーカイブ内に ${WP_CONTENT_DIR} ディレクトリが見つかりません" &gt;&amp;2
        exit 1
      fi
      # パスの / の数から除去する階層数を算出
      # 例: home/www/html/sweb01/wp-content/ → スラッシュ5個 → strip=4
      strip_count=$(echo "${wp_path}" | tr -cd '/' | wc -c)
      strip_count=$(( strip_count - 1 ))
      echo $strip_count
      #exit 1
      if &#91;&#91; $strip_count &lt; 0 ]]; then
        echo "エラー: 階層がありません" &gt;&amp;2
        #echo "エラー: アーカイブ内に wp-content ディレクトリが見つかりません"
        exit 1
      fi
      #DIR="${work_dir}/wp-content"
      DIR=${work_dir}
      echo "${DIR}がない場合には作成します"
      mkdir -p "$DIR"
      # --strip-components で wp-content/ を作業ディレクトリ直下に展開
      tar xvzf "${backup_file}" -C "${DIR}" \
        --strip-components="${strip_count}"
      ls -la $DIR

      # 所定の場所に配置してオーナーを設定
      echo sudo mv "${work_dir}/${WP_CONTENT_DIR}" "${WP_CONTENT_PATH}"
      echo sudo chown -R "${WP_CONTENT_OWNER}" "${WP_CONTENT_PATH}/"
      sudo mv "${work_dir}/${WP_CONTENT_DIR}" "${WP_CONTENT_PATH}"
      sudo chown -R "${WP_CONTENT_OWNER}" "${WP_CONTENT_PATH}/"

      echo "-- リストア完了 --"
      # スクリプト終了時に作業ディレクトリを削除
      #trap 'rm -rf "${work_dir}"' EXIT

      ;;
    &#91;nN])
      kill -USR1 $$
      exit 0
      ;;
    *)
      echo "エラー: y または n を入力してください" &gt;&amp;2
      exit 1
      ;;
  esac
}
cleanup() {
  echo Clean up!!
  echo ${BACKUP_DIR}
  #read -r -p "${BACKUP_DIR}/${WP_CONTENT_DIR} 削除しますか？ (Y/N): " INPUT
  #  case "$INPUT" in
  #    &#91;Yy])
  #      rm -rf "${BACKUP_DIR}/${WP_CONTENT_DIR}"  
  #  esac
}

# --- メイン処理 ---

# バックアップディレクトリの存在確認
if &#91;&#91; ! -d "${BACKUP_DIR}" ]]; then
  echo "エラー: バックアップディレクトリが存在しません: ${BACKUP_DIR}" &gt;&amp;2
  exit 1
fi

# ファイル一覧をグローバル配列に読み込む
declare -a BACKUP_FILES
load_backup_files

# ヘルプ
if &#91;&#91; "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# ファイル選択：引数あり → 解決、なし → 対話形式
if &#91;&#91; $# -gt 0 ]]; then
  list_backups
  SELECTED_FILE=$(resolve_input "$1")
else
  list_backups
  SELECTED_FILE=$(select_backup_file)
fi

echo "-- 選択されたファイル: ${SELECTED_FILE} --"

# 事前バックアップ（現行 wp-content の退避）
if &#91;&#91; "${PRE_BACKUP}" =~ ^&#91;Yy]$ ]]; then
  run_pre_backup
fi

# リストア実行
run_restore "${SELECTED_FILE}"</code></pre>



<h3 class="wp-block-heading"><span id="toc13">Header.sh : デバッグモード仕様（変数 DEBUG=1 で有効）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-48"><code>#!/bin/bash
#
#  Header.sh    2026/05 by AI &amp; Kazuban
#  共通ヘッダー: source で読み込んで使う
#  使い方: source "${SCRIPT_DIR}/Header.sh"
#
#------------------------------------
#-e：失敗で停止：#-u：未定義変数禁止:#pipefail：パイプの途中も検知
set -euo pipefail

# --- traps ---
trap 'echo "-- 中止しました --"; exit 0' USR1
trap 'echo "Error at line $LINENO"; exit 1' ERR
trap cleanup EXIT

# cleanup は呼び出し元スクリプトで上書き可能
cleanup() {
  :
}

# --- debug mode: DEBUG=1 で有効 ---
export DEBUG=${DEBUG:-0}
if &#91;&#91; "$DEBUG" == "1" ]]; then
  echo "Debug mode is 'true' !! "
  export PS4='+ ${LINENO}: '
  set -x
  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
else
  echo "Debug mode is 'false' !! "
fi
</code></pre>



<h3 class="wp-block-heading"><span id="toc14">Tidyup_backfile.sh : バックアップファイルの整理（引数：対象ディレクトリ・保存日数）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-49"><code>#!/bin/bash
# Delete $DAY days ago from backup
#
#  Tidyup_backfile.sh  by AI &amp; Kazuban 2026/05
#                default 10 days ago
#
#------------------------
# delete_backup - バックアップファイルを整理するスクリプト
# 使用方法: delete_backup &#91;削除対象ディレクトリ] &#91;何日前まで残すか]

#set -euo pipefail
#--- for debag ----------------------
#--- デバッグモード（DEBUG=1 で有効）---
#if &#91;&#91; "${DEBUG:-0}" == "1" ]]; then
#  export PS4='+ ${LINENO}: '
#  set -x
#  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
#fi

readonly SCRIPT_NAME="$(basename "$0")"

usage() {
    echo "使用方法: ${SCRIPT_NAME} &lt;削除対象ディレクトリ&gt; &#91;保持日数]"
    echo "  削除対象ディレクトリ  : バックアップファイルのあるディレクトリ"
    echo "  保持日数              : 何日前までのファイルを残すか (デフォルト: 10)"
    exit 1
}

# --- 引数チェック ---
if &#91;&#91; $# -lt 1 || "$1" == "-?" || "$1" == "-h" || "$1" == "--help" ]]; then
    usage
fi

TARGET_DIR="$1"
DAYS="${2:-10}"

# --- 数値チェック ---
if ! &#91;&#91; "$DAYS" =~ ^&#91;0-9]+$ ]]; then
    echo "エラー: 保持日数には正の整数を指定してください: ${DAYS}" &gt;&amp;2
    exit 1
fi

# --- ディレクトリ存在チェック ---
if &#91;&#91; ! -d "$TARGET_DIR" ]]; then
    echo "エラー: ディレクトリが見つかりません: ${TARGET_DIR}" &gt;&amp;2
    exit 1
fi

# --- 削除基準日を算出 ---
DEL_DATE="$(date --date="${DAYS} days ago" +%Y%m%d)"
echo "削除基準日: ${DEL_DATE} より前のファイルを削除します (保持日数: ${DAYS}日)"

# --- 対象ファイルの処理 ---
# 数字始まりのファイル名から先頭8桁(YYYYMMDD)を取得して重複排除
while IFS= read -r file_date; do
    if &#91;&#91; "$file_date" &lt; "$DEL_DATE" ]]; then
        echo "削除: ${TARGET_DIR}/${file_date}*"
        rm -f -- "${TARGET_DIR}/${file_date}"*
    fi
done &lt; &lt;(
    ls -- "$TARGET_DIR" \
        | grep -E '^&#91;0-9]' \
        | awk '{ print substr($0, 1, 8) }' \
        | sort -u
)

echo "完了"</code></pre>



<h2 class="wp-block-heading"><span id="toc15">リストアする場合の注意点</span></h2>



<p class="wp-block-paragraph">リストアスクリプトでは、バックアップファイルのリストが表示されますが、<br>必ず、<span class="marker-under-red">データベースとコンテンツのバックアップファイルのリスト番号（日付）は同じにする事</span>をお勧めします<br>また、バックアップサーバーなどへリストアする場合、URLが異なる場合があるかもしれません<br>その時は、<a href="https://www.kazuban.com/blog/mirror-site-v2/#toc12">こちらの作業が必要になる場合があります</a></p>



<p class="wp-block-paragraph">この作業をAIにスクリプト化してもらったのが、下記になります</p>



<h3 class="wp-block-heading"><span id="toc16">update_wp_url.sh</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-50"><code>#!/bin/bash

# ==========================
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
# ===== 設定 =====
DB_USER="root"
DB_PASS=${MYSQL_ROOT_PASSWD}
DB_NAME=${DATABASE}
OLD_URL="http://www.hogehoge.com/blog"
NEW_URL="http://www2.hogehoge.com/blog"

# ===== 実行前確認 =====
echo "=== WordPress URL変更スクリプト ==="
echo "DB      : $DB_NAME"
echo "変更前  : $OLD_URL"
echo "変更後  : $NEW_URL"
echo ""
read -p "続行しますか？ (y/N): " confirm
&#91;&#91; "$confirm" != "y" &amp;&amp; "$confirm" != "Y" ]] &amp;&amp; echo "キャンセルしました。" &amp;&amp; exit 0

# ===== 変更前の値を確認 =====
echo ""
echo "--- 変更前 ---"
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "SELECT option_id, option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');"

# ===== UPDATE実行 =====
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "UPDATE wp_options SET option_value = '$NEW_URL' WHERE option_id = 1 OR option_id = 2;"

echo ""
echo "--- 変更後 ---"
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "SELECT option_id, option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');"

echo ""
echo "✅ 完了しました。"</code></pre>



<h2 class="wp-block-heading"><span id="toc17">自動バックアップ</span></h2>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/#toc10">こちらでも、紹介していますが</a>、「crontab」に下記のように設定する事で、毎日２時に自動バックアップできるようになります</p>



<pre class="wp-block-code"><code>00 2 * * *        /home/kazuban/Backup/bin/Wp-Backup.sh all</code></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RockyLinux9.7で「WordPress環境構築「Vol-04」WordPressインストール</title>
		<link>https://www.kazuban.com/blog/wordpress-install-no4/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 10 May 2026 00:03:42 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[インストール]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12701</guid>

					<description><![CDATA[いよいよWordPressをインストールしていきますこのサイトでも、同様の記事は書いていますが、変更点もあるので新しく投稿します。 目次 WordPress インストール最新のWordPresssダウンロードWordPr [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">いよいよWordPressをインストールしていきます<br>このサイトでも、同様の記事は書いていますが、変更点もあるので新しく投稿します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">WordPress インストール</a><ol><li><a href="#toc2" tabindex="0">最新のWordPresssダウンロード</a></li><li><a href="#toc3" tabindex="0">WordPressパッケージをApache設定場所へ移動</a></li></ol></li><li><a href="#toc4" tabindex="0">MariaDBの設定</a><ol><li><a href="#toc5" tabindex="0">データベースの作成</a></li></ol></li><li><a href="#toc6" tabindex="0">WordPress 初期設定</a><ol><li><a href="#toc7" tabindex="0">初期設定</a></li><li><a href="#toc8" tabindex="0">サイトヘルス</a></li></ol></li><li><a href="#toc9" tabindex="0">Hello World!</a></li><li><a href="#toc10" tabindex="0">WordPress環境構築終了</a><ol><ol><li><a href="#toc11" tabindex="0">WordPress環境構築まとめ</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WordPress インストール</span></h2>



<h3 class="wp-block-heading"><span id="toc2">最新のWordPresssダウンロード</span></h3>



<p class="wp-block-paragraph">ダウンロード後展開する作業場所へ移動し、ダウンロードします<br>筆者は、ユーザーディレクトリの「Downloads」を作業場所にしました</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-55"><code>cd ~/Downloads/
wget https://ja.wordpress.org/latest-ja.tar.gz
tar xvzf latest-ja.tar.gz
ls wordpress/ </code></pre>



<p class="wp-block-paragraph">WordPress パッケージが展開されました</p>



<pre class="wp-block-preformatted">index.php             wp-config-sample.php  wp-mail.php<br>license.txt           wp-content            wp-settings.php<br>readme.html           wp-cron.php           wp-signup.php<br>wp-activate.php       wp-includes           wp-trackback.php<br>wp-admin              wp-links-opml.php     xmlrpc.php<br>wp-blog-header.php    wp-load.php<br>wp-comments-post.php  wp-login.php</pre>



<h3 class="wp-block-heading"><span id="toc3">WordPressパッケージをApache設定場所へ移動</span></h3>



<p class="wp-block-paragraph">展開した「wordpress」ディレクトリを、<a href="https://www.kazuban.com/blog/wordpress-install-no2/#toc5">前回「httpd.conf」で「DocumentRoot」に設定した</a>ディレクトリ配下へ移動します<br>また、「wordpress」というディレクトリ名は、公開する時のアドレス名になります<br>この場合、<span class="marker-under-blue">https://「サイトドメイン」/wordpress/</span> です。<br>変更したい場合には、好みの名前に変更します<br>次の例では、「blog」という名前に変更し、所有権も「apache」に変更しています</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-56"><code>cd ~/Downloads/
sudo mv ./wordpress/ /home/www/html/ 
cd /home/www/html/
sudo mv ./wordpress/ ./blog/
sudo chown -R apache.apache ./blog/
ls -la</code></pre>



<pre class="wp-block-preformatted">・<br>・<br>drwxr-xr-x. 5 <strong>apache apache</strong> 4096  4月  3 01:00 <strong>blog</strong><br>-rw-r--r--. 1 apache apache  121  4月 24 10:52 index.html</pre>



<p class="wp-block-paragraph">「blog」と言う名前に変更され、所有者も「apache」になっていれば、WordPressの配置は完了です。</p>



<h2 class="wp-block-heading"><span id="toc4">MariaDBの設定</span></h2>



<p class="wp-block-paragraph">WordPress用のデータベースとユーザーを作成します<br>設定情報は、事前にメモを作成しておくとスムーズに進行できます<br>例として、下記で設定します</p>



<ul class="wp-block-list">
<li>root パスワード：<a href="https://www.kazuban.com/blog/wordpress-install-no3/#toc17">初期設定</a>で、「Change the root password」で作成したパスワード</li>



<li>データベース名：WpDb</li>



<li>ユーザー名：WpAdmin</li>



<li>パスワード：WpPasswd</li>



<li>データベースホスト：localhost</li>
</ul>



<h3 class="wp-block-heading"><span id="toc5">データベースの作成</span></h3>



<pre class="wp-block-preformatted">mysql -u root -p[rootパスワード] #-pの後ろはスペースは入れない<br>・<br>・データベース作成<br>MariaDB [(none)]&gt;CREATE DATABASE <strong><span class="marker-under-red">WpDb</span></strong> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;<br>・<br>・データベース確認<br>MariaDB [(none)]&gt; SHOW DATABASES;<br>・<br>・管理者作成<br>GRANT ALL ON <strong><span class="marker-under-red">WpDb.</span></strong>* TO '<strong><span class="marker-under-red">WpAdmin</span></strong>'@'localhost' IDENTIFIED By '<strong><span class="marker-under-red">WpPasswd</span></strong>';<br>・<br>・確認<br>USE mysql<br>SELECT user,host from user;<br>SHOW GRANTS FOR '<strong><span class="marker-under-red">WpAdmin</span></strong>'@'localhost';<br></pre>



<p class="wp-block-paragraph">もし、データベース名やユーザーを変更したい場合には、「DROP」コマンドで<br>一度削除し、再生成します</p>



<pre class="wp-block-preformatted">DROP DATABASE データベース名;<br>・より安全を考慮した次のコードでは存在しない場合のエラーを回避できます<br>DROP DATABASE IF EXISTS データベース名;<br><br>DROP USER 'username'@'localhost';<br>・存在しない場合のエラーを回避<br>DROP USER IF EXISTS 'username'@'localhost'; <br></pre>



<h2 class="wp-block-heading"><span id="toc6">WordPress 初期設定</span></h2>



<h3 class="wp-block-heading"><span id="toc7">初期設定</span></h3>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/wordpress-install-no2/#toc13">Apacheの設定</a>で、ドメインでのアクセスが可能であればドメインで、<br>ドメインでの設定をしていない場合には、IPアドレスを<br>ChromeなどWebブラウザに入力して確認します<br>「WordPressへようこそ・・・」の画面が表示されます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="780" height="577" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom.png" alt="" class="wp-image-8464" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom.png 780w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-500x370.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-300x222.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-768x568.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p class="wp-block-paragraph"><br>その画面で「さあ、始めましょう！」をクリック<br>上記で設定したデータベース情報を設定します</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="776" height="720" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/database.png" alt="" class="wp-image-8465" style="width:689px;height:auto" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/database.png 776w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/database-500x464.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/database-300x278.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/database-768x713.png 768w" sizes="(max-width: 776px) 100vw, 776px" /></figure>



<p class="wp-block-paragraph">「サイトタイトル」「ユーザー名」「パスワード」を設定しますが<br>ここでのユーザー名は、<span class="marker-under">WordPressの管理画面にログインするユーザーを設定</span>します<br><span class="marker-under-red"><a href="#toc4">データベースの管理ユーザー</a>とは違いますので注意</span>してください</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="777" height="284" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/install.png" alt="" class="wp-image-8466" style="aspect-ratio:2.736111111111111;width:688px;height:auto" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/install.png 777w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/install-500x183.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/install-300x110.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/install-768x281.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="772" height="887" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/setting.png" alt="" class="wp-image-8467" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/setting.png 772w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/setting-500x574.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/setting-300x345.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/setting-768x882.png 768w" sizes="(max-width: 772px) 100vw, 772px" /></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="774" height="432" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/success.png" alt="" class="wp-image-8470" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/success.png 774w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-500x279.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-300x167.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-768x429.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/success-320x180.png 320w" sizes="(max-width: 774px) 100vw, 774px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="402" height="529" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/login.png" alt="" class="wp-image-8473" style="object-fit:cover;width:200px;height:200px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/login.png 402w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/login-300x395.png 300w" sizes="(max-width: 402px) 100vw, 402px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">ログインで、WordPressの管理画面からWordPressの設定ができるようになります</p>
</div>
</div>



<h3 class="wp-block-heading"><span id="toc8">サイトヘルス</span></h3>



<p class="wp-block-paragraph">「https://「サイトドメイン」/blog/wp-admin/site-health.php」にアクセスすると、サイトの状態が確認できますが、自宅環境では、「REST API 」エラーが出ました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="624" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error-800x624.png" alt="" class="wp-image-8487" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error-800x624.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error-500x390.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error-300x234.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error-768x599.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/site-health-error.png 808w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">自宅内での設定の場合、名前解決ができていないのが原因のようです<br><a href="https://www.kazuban.com/blog/wordpress-install-no2/#toc13">同じLAN上のwindowsPCには「hosts」ファイルに設定</a>しましたが、サーバー（Linux）側も<br>「hosts」設定し強制的に名前解決させようと思います。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-57"><code>sudo vi /etc/hosts</code></pre>



<pre class="wp-block-preformatted">127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4<br>::1         localhost localhost.localdomain localhost6 localhost6.localdomain6<br>192.168.1.100 www2.hogehoge.com</pre>



<p class="wp-block-paragraph">これで、「・・/wp-admin/site-health.php」を更新すると、「REST API 」エラーは消えていました</p>



<h2 class="wp-block-heading"><span id="toc9">Hello World!</span></h2>



<p class="wp-block-paragraph">「https://「サイトドメイン」/blog/」にアクセスすると、デフォルトのサンプルページが表示されます</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="800" height="755" src="https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world-800x755.png" alt="" class="wp-image-12773" style="aspect-ratio:1.0596459670495892;object-fit:cover;width:480px;height:auto" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world-800x755.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world-500x472.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world-300x283.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world-768x725.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2026/05/hello-world.png 1024w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc10">WordPress環境構築終了</span></h2>



<p class="wp-block-paragraph">これで、WordPress環境構築は終了です<br>「https://「サイトドメイン」/blog/wp-admin/」で、ダッシュボード（管理画面）が開きます。<br>コンテンツから外観までいろいろな設定変更が可能で、「管理画面（ダッシュボード）」を使いこなすことから始めます。<br>まずは、「外観」⇒「テーマ」を変更する事で、見栄えをガラッと変えましょう！</p>



<h4 class="wp-block-heading"><span id="toc11">WordPress環境構築まとめ</span></h4>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no1/">１</a></span></p>



<p class="wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no2/">２</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-58 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no3/">３</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-59 wp-block-paragraph"><span class="inline-button-white-blue"><a href="https://www.kazuban.com/blog/wordpress-install-no4/">４</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-60 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/">５</a></span></p>



<p class="has-light-grey-color has-text-color has-link-color wp-elements-61 wp-block-paragraph">６</p>



<p class="wp-block-paragraph"></p>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RockyLinux9.7で「WordPress環境構築「Vol-03」PHP8.4、MariaDB11.4</title>
		<link>https://www.kazuban.com/blog/wordpress-install-no3/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Fri, 01 May 2026 01:36:17 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[インストール]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12568</guid>

					<description><![CDATA[WordPress構築のために、PHPとMariaDB(Mysql)環境を整備していきます現状の状態は、WordPress6.9.4、PHP 8.2.30 MariaDB10.5.29です。今回は、バックアップ用が目的で [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">WordPress構築のために、PHPとMariaDB(Mysql)環境を整備していきます<br>現状の状態は、<br>WordPress6.9.4、PHP 8.2.30 MariaDB10.5.29です。<br>今回は、バックアップ用が目的ですが、トライアルもかねて、なるべく新しいバージョンにしておきたいと思います。<br>現wordpressに対応している、phpとwordpressのバージョンは下記を参考にしました</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><a href="https://tcd-theme.com/2021/09/wordpress-php-version.html">PHP</a><br><a href="https://tane-creative.co.jp/column/6445/">MariaDB</a></p>
</blockquote>



<p class="wp-block-paragraph">上記を参考に、<strong><span class="marker-under">PHP8.4 MariaDB11.4(LTS)</span></strong>をインストールします</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">PHPのインストールまたは更新</a><ol><li><a href="#toc2" tabindex="0">拡張機能を追加</a></li><li><a href="#toc3" tabindex="0">PHP8.4について、🧑‍💻AIからのアドバイス</a><ol><ol><ol><li><a href="#toc4" tabindex="0">補足：PHP 8.4での注意点（AIからのアドバイス）</a></li></ol></li></ol></li></ol></li><li><a href="#toc5" tabindex="0">php.ini の設定</a></li><li><a href="#toc6" tabindex="0">キャッシュ拡張用の10-opcache.ini の設定変更</a></li><li><a href="#toc7" tabindex="0">httpd.conf の編集</a></li><li><a href="#toc8" tabindex="0">多少の動画添付を考慮した、WordPress側の設定</a></li><li><a href="#toc9" tabindex="0">PHP確認</a></li></ol></li><li><a href="#toc10" tabindex="0">MariaDB 11.4(LTS)</a><ol><li><a href="#toc11" tabindex="0">リポジトリ追加</a><ol><li><a href="#toc12" tabindex="0">EPEL リポジトリ系エラーについて、🧑‍💻AIの回答</a><ol><ol><li><a href="#toc13" tabindex="0">なるほど、閉域網環境なんですね。その状況なら無効化で問題ないです。</a></li><li><a href="#toc14" tabindex="0">確認</a></li><li><a href="#toc15" tabindex="0">本機トラブル時に外部接続が必要になったら</a></li></ol></li></ol></li></ol></li><li><a href="#toc16" tabindex="0">MariaDB 11.４ のインストール</a></li><li><a href="#toc17" tabindex="0">初期セキュリティ設定</a></li><li><a href="#toc18" tabindex="0">ファイアウォールの設定（外部接続が必要な場合）</a></li><li><a href="#toc19" tabindex="0">インストール確認</a></li><li><a href="#toc20" tabindex="0">文字コードの設定</a></li><li><a href="#toc21" tabindex="0">再起動と確認</a><ol><li><a href="#toc22" tabindex="0">WordPress環境構築まとめ</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">PHPのインストールまたは更新</span></h2>



<p class="wp-block-paragraph">筆者の現環境では、PHPはまだインストールしていませんが、とりあえず確認します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-68"><code>php --version</code></pre>



<p class="wp-block-paragraph">やはりインストールされていませんが、もしインストールされている場合には、モジュールのリセットやキャッシュクリアしたほうがトラブルは少ないと思います<br>事前にwp-config.php, DB, ファイル一式のバックアップを取っておきましょう</p>



<p class="wp-block-paragraph">Remiリポジトリ追加（Rocky Linux 9の場合）</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-69"><code>sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm</code></pre>



<p class="wp-block-paragraph">キャッシュをクリア</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-70"><code>sudo dnf clean all &amp;&amp; sudo dnf makecache</code></pre>



<p class="wp-block-paragraph">モジュールリスト確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-71"><code>dnf module list php</code></pre>



<p class="wp-block-paragraph">もし404のエラーが出た場合</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-72"><code>sudo rm -f /etc/dnf/vars/releasever
sudo dnf clean all &amp;&amp; sudo dnf makecache
dnf module list php</code></pre>



<pre class="wp-block-preformatted">Rocky Linux 9 - AppStream<br>Name     Stream       Profiles                      Summary                            <br>php      8.1          common [d], devel, minimal    PHP scripting language             <br>php      8.2          common [d], devel, minimal    PHP scripting language             <br>php      8.3          common [d], devel, minimal    PHP scripting language             <br><br>Remi's Modular repository for Enterprise Linux 9 - x86_64<br>Name     Stream       Profiles                      Summary                            <br>php      remi-7.4     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.0     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.1     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.2     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.3     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.4     common [d], devel, minimal    PHP scripting language             <br>php      remi-8.5     common [d], devel, minimal    PHP scripting language  </pre>



<p class="wp-block-paragraph">私の環境では、AppStream には、8.3までですが、Remiでは、8.5まで登録されています<br>ここでは、最新は避けて8.4を使用しようと思います</p>



<p class="wp-block-paragraph">PHPモジュールのリセット</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-73"><code>sudo dnf module reset php -y</code></pre>



<p class="wp-block-paragraph">新しいPHPバージョンの有効化（例: 8.4）</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-74"><code>sudo dnf module enable php:remi-8.4 -y</code></pre>



<p class="wp-block-paragraph">新規インストールの場合</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-75"><code>sudo dnf install php php-fpm -y</code></pre>



<p class="wp-block-paragraph">アップグレードの場合</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-76"><code>sudo dnf update php\* -y</code></pre>



<p class="wp-block-paragraph">更新の確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-77"><code>php -v</code></pre>



<h3 class="wp-block-heading"><span id="toc2">拡張機能を追加</span></h3>



<p class="wp-block-paragraph">WordPressを動作させるのに、必須と推奨なPHP拡張機能があります。<br><a href="https://make.wordpress.org/hosting/handbook/server-environment/#php-extensions">こちらとAIの意見を参考にして、</a>インストールしておきたいと思います。<br>すでに、インストール済みや一致するものがない場合もありましたが、インストールしました</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-78"><code>sudo dnf install -y \
  php-mysqlnd \
  php-curl \
  php-exif \
  php-fileinfo \
  php-gd \
  php-imagick \
  php-intl \
  php-mbstring \
  php-xml \
  php-zip</code></pre>



<p class="wp-block-paragraph">再起動</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-79"><code>sudo systemctl restart httpd
sudo systemctl restart php-fpm</code></pre>



<h3 class="wp-block-heading"><span id="toc3">PHP8.4について、🧑‍💻AIからのアドバイス</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<h6 class="wp-block-heading"><span id="toc4">補足：PHP 8.4での注意点（AIからのアドバイス）</span></h6>



<p class="wp-block-paragraph">PHP 8.4は比較的新しいため、利用している<strong>WordPressテーマや古いプラグイン</strong>がまだ対応しておらず、非推奨（Deprecated）の警告が出る場合があります。</p>



<ul class="wp-block-list">
<li>もしエラーが出る場合は、WordPressの管理画面から「サイトヘルス」を確認し、足りないモジュールがないかチェックしてみてください。</li>
</ul>



<p class="wp-block-paragraph">もし特定のプラグインで「これが足りない」と言われた場合は、<code>dnf search php-拡張名</code> で探すとすぐに見つかりますよ。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc5">php.ini の設定</span></h3>



<p class="wp-block-paragraph">PHPの設定は、「/etc/php.ini」で行います。<br>念のためバックアップととり、編集します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-80"><code>sudo cp -p /etc/php.ini /etc/php.ini.org
sudo vi /etc/php.ini</code></pre>



<p class="wp-block-paragraph">筆者の利用方法としては、記事内に画像貼り付けと少数ですが<span class="marker-under-red">動画も貼り付けたい</span>と思っているので、多少余裕をもった設定にしました。</p>



<pre class="wp-block-preformatted">・<br>・<br>;expose_php = On<br><strong>expose_php = Off</strong><br><br>;max_execution_time = 30<br><strong>max_execution_time = 300</strong><br><br>;max_input_time = 60<br><strong>max_input_time = 300</strong><br><br>;max_input_vars = 1000<br><strong>max_input_vars = 3000</strong><br><br>;post_max_size = 8M<br><strong>post_max_size = 300M</strong><br><br>;upload_max_filesize = 2M<br><strong>upload_max_filesize = 256M</strong><br><br>;max_file_uploads = 20<br><strong>max_file_uploads = 50</strong><br><br>;date.timezone =<br><strong>date.timezone = "Asia/Tokyo"</strong><br><br>;mbstring.language = Japanese<br>mbstring.language = Japanese<br><br>;mbstring.internal_encoding =<br><strong>mbstring.internal_encoding = UTF-8</strong><br><br>;mbstring.http_input =<br><strong>mbstring.http_input = UTF-8</strong><br><br>;mbstring.http_output =<br><strong>mbstring.http_output = pass</strong><br><br>;mbstring.encoding_translation = Off<br><strong>mbstring.encoding_translation = On</strong><br><br>;mbstring.detect_order = auto<br>mbstring.detect_order = auto<br><br>;mbstring.substitute_character = none<br>mbstring.substitute_character = none<br>・<br>・</pre>



<h3 class="wp-block-heading"><span id="toc6">キャッシュ拡張用の10-opcache.ini の設定変更</span></h3>



<p class="wp-block-paragraph">OPcache（オプキャッシュ）は、PHPスクリプトのコンパイル結果（バイトコード）を共有メモリにキャッシュすることで、PHPの動作を高速化する拡張モジュールですが、その設定ファイルも余裕をみた設定にしました<br>/etc/php.d/10-opcache.ini もバックアップをとって編集します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-81"><code>sudo cp -p /etc/php.d/10-opcache.ini /etc/php.d/10-opcache.ini.org
sudo vi /etc/php.d/10-opcache.ini</code></pre>



<pre class="wp-block-preformatted">・<br>・<br>opcache.enable=1<br><br>;opcache.memory_consumption=128<br><strong>opcache.memory_consumption=256</strong><br><br>;opcache.memory_consumption=128<br><strong>opcache.memory_consumption=256</strong><br><br>;opcache.max_accelerated_files=10000<br><strong>opcache.max_accelerated_files=20000</strong><br>・<br>・</pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-82"><code>sudo systemctl restart php-fpm
sudo systemctl restart httpd</code></pre>



<h3 class="wp-block-heading"><span id="toc7">httpd.conf の編集</span></h3>



<p class="wp-block-paragraph">こちらは、必須ではないですが、やっといたほうがいいかも？との🧑‍💻AIのアドバイスです</p>



<p class="wp-block-paragraph">/etc/httpd/conf/httpd.conf</p>



<pre class="wp-block-preformatted">・<br>・<br>LimitRequestBody 314572800  #（= 約300MB）<br>・</pre>



<p class="wp-block-paragraph">ただ、<a href="https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.1_release_notes/enhancement_dynamic-programming-languages-web-and-database-servers">こちらの情報では</a>、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">デフォルト値が&nbsp;<code>0</code>&nbsp;(無制限) から 1 GiB に変更されたようです。</p>
</blockquote>



<p class="wp-block-paragraph">デフォルトでは無制限ではなくなったみたいです。</p>



<h3 class="wp-block-heading"><span id="toc8">多少の動画添付を考慮した、WordPress側の設定</span></h3>



<p class="wp-block-paragraph">こちらも、🧑‍💻AIのアドバイス<br>画像貼り付け予定であれば、設定しておいたほうがよいとの事<br>こちらは、wordpress立ち上げ時に設定しようと思います</p>



<p class="wp-block-paragraph">WordPress側の設定（wp-config.php）</p>



<pre class="wp-block-preformatted">define('WP_MEMORY_LIMIT', '256M');<br>define('WP_MAX_MEMORY_LIMIT', '512M');</pre>



<h3 class="wp-block-heading"><span id="toc9">PHP確認</span></h3>



<p class="wp-block-paragraph">「/home/www/home」に「index.php」という、ファイルを作成し、ブラウザに「<a href="https://www2.kazuban.com/">https://www2.hogehoge.com/index.php</a>」で確認します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-83"><code>echo '&lt;?php phpinfo(); ?&gt;' | sudo tee /home/www/html/index.php</code></pre>



<p class="wp-block-paragraph">アドレスバーに「<a href="https://www2.kazuban.com/">https://www2.hogehoge.com/index.php</a>」で確認します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="280" src="https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver-800x280.png" alt="" class="wp-image-12621" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver-800x280.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver-500x175.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver-300x105.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver-768x269.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/php-ver.png 1050w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">確認ができたら、削除しておきましょう</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-84"><code>sudo rm /home/www/html/index.php</code></pre>



<h2 class="wp-block-heading"><span id="toc10">MariaDB 11.4(LTS)</span></h2>



<p class="wp-block-paragraph">11.5も動作すると思いますが、11.4(LTS)をインストールしようと思います</p>



<h3 class="wp-block-heading"><span id="toc11">リポジトリ追加</span></h3>



<p class="wp-block-paragraph">リポジトリ追加</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-85"><code>curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-11.4"</code></pre>



<p class="wp-block-paragraph">パッケージキャッシュの更新</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-86"><code>sudo dnf makecache</code></pre>



<p class="wp-block-paragraph">EPEL リポジトリ系のネットワーク接続エラーが出たので、AIに聞いてみましたが、問題はないようです<br>AIの回答では閉鎖環境では、EPELを無効化する事でエラーは消えるようです（筆者は試していません）</p>



<h4 class="wp-block-heading"><span id="toc12">EPEL リポジトリ系エラーについて、🧑‍💻AIの回答</span></h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<h6 class="wp-block-heading"><span id="toc13">なるほど、閉域網環境なんですね。その状況なら無効化で問題ないです。</span></h6>



<p class="wp-block-paragraph">EPEL を無効化する</p>



<pre class="wp-block-code"><code>sudo dnf config-manager --disable epel</code></pre>



<h6 class="wp-block-heading"><span id="toc14">確認</span></h6>



<pre class="wp-block-code"><code>sudo dnf makecache</code></pre>



<p class="wp-block-paragraph">エラーが消えれば OK です。</p>



<h6 class="wp-block-heading"><span id="toc15">本機トラブル時に外部接続が必要になったら</span></h6>



<p class="wp-block-paragraph">その時は再度有効化すればいいだけです：</p>



<pre class="wp-block-code"><code>sudo dnf config-manager --enable epel</code></pre>



<p class="wp-block-paragraph">切り替えが簡単なので、普段は無効化しておいて問題ありません👍</p>
</blockquote>



<p class="wp-block-paragraph"><br>パッケージ情報の一覧は、下記で確認できます<br>11.4のパッケージが確認できました</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-87"><code>dnf list mariadb*</code></pre>



<pre class="wp-block-preformatted">・<br>MariaDB-client.x86_64          11.4.10-1.el9     @mariadb-main<br>MariaDB-client-compat.noarch   11.4.10-1.el9     @mariadb-main<br>MariaDB-common.x86_64          11.4.10-1.el9     @mariadb-main<br>MariaDB-server.x86_64          11.4.10-1.el9     @mariadb-main<br>MariaDB-server-compat.noarch   11.4.10-1.el9     @mariadb-main<br>MariaDB-shared.x86_64 <br>・</pre>



<h3 class="wp-block-heading"><span id="toc16">MariaDB 11.４ のインストール</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-88"><code>sudo dnf install -y MariaDB-server MariaDB-client</code></pre>



<p class="wp-block-paragraph">MariaDB サービスの起動と自動起動設定</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-89"><code>sudo systemctl start mariadb
sudo systemctl enable mariadb</code></pre>



<h3 class="wp-block-heading"><span id="toc17">初期セキュリティ設定</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-90"><code>sudo mariadb-secure-installation</code></pre>



<p class="wp-block-paragraph">対話形式で以下を設定します：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>推奨設定</th></tr></thead><tbody><tr><td>ERROR 2002 (HY000): Can&#8217;t connect to local server through socket</td><td>MariaDB サービスが起動していない場合、このエラーがでます。その場合は起動させます。<br>sudo systemctl start mariadb</td></tr><tr><td>Enter current password for root (enter for none):<br>カレントrootパスワード：</td><td>以前設定していなければ「<strong>Enter</strong>」</td></tr><tr><td>Switch to unix_socket authentication [Y/n]<br>Unix socket 認証</td><td><code><strong>n</strong></code>（パスワード認証を使う場合）</td></tr><tr><td>Change the root password? [Y/n]<br>root パスワード設定<br>このパスワードは、データベース作成時にも使用するので、<span class="marker-under">忘れないようにメモ</span>します</td><td><code><strong>y</strong></code> → パスワードを入力<br>データベースへのログインで使用する<br>mysql -u root -p<strong>[パスワード]</strong></td></tr><tr><td>Remove anonymous users? [Y/n]<br>匿名ユーザーの削除</td><td><code><strong>y</strong></code></td></tr><tr><td>Disallow root login remotely? [Y/n]<br>リモート root ログインの禁止</td><td><code><strong>y</strong></code></td></tr><tr><td>Remove test database and access to it? [Y/n]<br>テスト DB の削除</td><td><code><strong>y</strong></code></td></tr><tr><td>Reload privilege tables now? [Y/n]<br>権限テーブルのリロード</td><td><code><strong>y</strong></code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">ファイアウォールの設定（外部接続が必要な場合）</span></h3>



<p class="wp-block-paragraph">外部からデータベースに接続する場合には、ファイヤフォールに許可します<br>筆者は外部からデータベースへのアクセスの予定はないので、今回は設定していませんが<br>覚書として、書いておきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-91"><code>sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload
sudo firewall-cmd --list-all --zone=public</code></pre>



<h3 class="wp-block-heading"><span id="toc19">インストール確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-92"><code>sudo systemctl status mariadb</code></pre>



<h3 class="wp-block-heading"><span id="toc20">文字コードの設定</span></h3>



<p class="wp-block-paragraph">文字化け防止に、文字コードを編集します<br>設定ファイルは<br>「/etc/my.cnf.d/server.cnf」<br>「/etc/my.cnf.d/client.cnf」で行うので<br>バックアップアップを取って、編集。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-93"><code>sudo cp -p /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.org 
sudo cp -p /etc/my.cnf.d/client.cnf /etc/my.cnf.d/client.cnf.org </code></pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-94"><code>sudo vi /etc/my.cnf.d/server.cnf</code></pre>



<pre class="wp-block-preformatted">・<br>・<br># This group is only read by MariaDB servers, not by MySQL.<br># If you use the same .cnf file for MySQL and MariaDB,<br># you can put MariaDB-only options here<br>[mariadb]<br><strong># ----- 2026/05/01 -----<br>character-set-server = utf8mb4<br>collation-server     = utf8mb4_unicode_ci</strong><br>・<br>・<br></pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-95"><code>sudo vi /etc/my.cnf.d/client.cnf</code></pre>



<pre class="wp-block-preformatted">・<br>・<br>#<br># These two groups are read by the client library<br># Use it for options that affect all clients, but not the server<br>#<br>[client]<br><strong># ----- 2026/05/01 -----</strong><br><strong>default-character-set = utf8mb4</strong><br>・<br>・<br></pre>



<h3 class="wp-block-heading"><span id="toc21">再起動と確認</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-96"><code>sudo systemctl restart mariadb
sudo systemctl status mariadb</code></pre>



<pre class="wp-block-preformatted">mysql -u root -p[パスワード]<br>mysql: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb' instead<br>Welcome to the MariaDB monitor.  Commands end with ; or \g.<br>Your MariaDB connection id is 3<br>Server version: 11.4.10-MariaDB MariaDB Server<br><br>Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.<br><br>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br><br>MariaDB [(none)]&gt; <strong>show variables like "chara%";</strong><br>+--------------------------+------------------------------+<br>| Variable_name            | Value                        |<br>+--------------------------+------------------------------+<br>| character_set_client     | utf8mb4                      |<br>| character_set_collations |                              |<br>| character_set_connection | utf8mb4                      |<br>| character_set_database   | <strong>utf8mb4</strong>                      |<br>| character_set_filesystem | binary                       |<br>| character_set_results    | utf8mb4                      |<br>| character_set_server     | <strong>utf8mb4</strong>                      |<br>| character_set_system     | utf8mb3                      |<br>| character_sets_dir       | /usr/share/mariadb/charsets/ |<br>+--------------------------+------------------------------+<br>9 rows in set (0.002 sec)<br><br>MariaDB [(none)]&gt; <strong>quit</strong><br>Bye</pre>



<p class="wp-block-paragraph"><strong>utf8mb4</strong> になっていることを確認します<br>もし、「latin1」とかになっていた場合には、<span class="marker-under-red">再起動</span>「<strong>sudo systemctl restart mariadb</strong>」で反映されます。</p>



<hr class="wp-block-separator has-text-color has-indigo-color has-alpha-channel-opacity has-indigo-background-color has-background is-style-wide" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h4 class="wp-block-heading"><span id="toc22">WordPress環境構築まとめ</span></h4>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<p class="has-black-color has-text-color has-link-color wp-elements-97 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no1/">１</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-98 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no2/">２</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-99 wp-block-paragraph"><span class="inline-button-white-blue"><a href="https://www.kazuban.com/blog/wordpress-install-no3/">３</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-100 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no4/">４</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-101 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/">５</a></span></p>



<p class="has-light-grey-color has-text-color has-link-color wp-elements-102 wp-block-paragraph">６</p>



<p class="wp-block-paragraph"></p>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RockyLinux9.7で「WordPress環境構築「Vol-02」Apache設定と、HTTPS化</title>
		<link>https://www.kazuban.com/blog/wordpress-install-no2/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 23:49:17 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[インストール]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12446</guid>

					<description><![CDATA[前回、RockyLinux9.7をインストールし、WindowsターミナルでSSH接続できるようになりました今回は、Apache、MariaDB、PHPをインストールし、WordPressを起動させます筆者の環境ではすで [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">前回、RockyLinux9.7をインストールし、WindowsターミナルでSSH接続できるようになりました<br>今回は、Apache、MariaDB、PHPをインストールし、WordPressを起動させます<br>筆者の環境ではすでに自宅内で、Wordpress（このブログサイト）は起動しているのでテスト環境として、<span class="marker-under-red">仮に</span><strong>www2.hogehoge.com</strong> で設定を行っています<br>この仮ドメインは、<span class="marker-under-red">実際のドメインに変更</span>してご利用ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Apache</a><ol><li><a href="#toc2" tabindex="0">Remi リポジトリのインストール</a></li><li><a href="#toc3" tabindex="0">httpdインストール</a></li><li><a href="#toc4" tabindex="0">Firewalld に許可</a></li><li><a href="#toc5" tabindex="0">httpd.conf</a></li><li><a href="#toc6" tabindex="0">セキュリティ対策</a></li><li><a href="#toc7" tabindex="0">ドキュメントルートのトップページの表示</a></li></ol></li><li><a href="#toc8" tabindex="0">Let’s Encrypt証明書でhttps化</a><ol><li><a href="#toc9" tabindex="0">sslモジュール</a></li><li><a href="#toc10" tabindex="0">Certbot クライアントのインストール</a></li><li><a href="#toc11" tabindex="0">証明書発行</a></li><li><a href="#toc12" tabindex="0">証明書の設定</a></li><li><a href="#toc13" tabindex="0">https:// でのアクセス確認</a></li><li><a href="#toc14" tabindex="0">HTTP/2を利用する</a></li><li><a href="#toc15" tabindex="0">HTTP/2有効確認</a><ol><li><a href="#toc16" tabindex="0">WordPress環境構築まとめ</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Apache</span></h2>



<p class="wp-block-paragraph">コピペで設定できるように、まとめます<br>詳細は、こちらを参照してください</p>


<a href="https://www.kazuban.com/blog/rokeylinux9-3-apache/" title="RockyLinux9.３で自宅サーバーを再構築V04・LAMPの「A」、Apache編" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.３で自宅サーバーを再構築V04・LAMPの「A」、Apache編</div><div class="blogcard-snippet internal-blogcard-snippet">LAMPの「A」のApacheの構築編です。インストール、セキュリティ対策、ファイヤーウォール、https化、HTTP2通信設定を説明します。さらに例では、CGIも動作できるような設定にしています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.06</div></div></div></div></a>


<h3 class="wp-block-heading"><span id="toc2">Remi リポジトリのインストール</span></h3>



<p class="wp-block-paragraph">ApacheやPHPの最新バージョンにも対応したいので、Remi リポジトリのインストールします<br>Remiのインストールには、「crb」や「epel」のインストールが必要なようです</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-107"><code>sudo dnf config-manager --set-enabled crb
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm</code></pre>



<h3 class="wp-block-heading"><span id="toc3">httpdインストール</span></h3>



<p class="wp-block-paragraph">続いて、httpd関連をインストールし、自動起動するように設定します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-108"><code>sudo dnf install httpd httpd-tools mod_ssl
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl is-enabled httpd
sudo systemctl status httpd</code></pre>



<pre class="wp-block-preformatted"><span class="bold-green">●</span> httpd.service - The Apache HTTP Server<br>     Loaded: loaded (/usr/lib/systemd/system/httpd.service; <span class="bold-green">enabled</span>; preset: <span class="bold-blue">disabled</span>)<br>     Active: <span class="bold-green">active (running)</span> since Sat 2026-04-18 17:24:47 JST; 54min ago</pre>



<p class="wp-block-paragraph"><span class="bold-green">active (running)</span>とservice; <span class="bold-green">enabled</span>で確認できます。</p>



<h3 class="wp-block-heading"><span id="toc4">Firewalld に許可</span></h3>



<p class="wp-block-paragraph">「http」と「https」を許可します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-109"><code>sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all --zone=public</code></pre>



<p class="wp-block-paragraph">「services: 」で確認できます</p>



<pre class="wp-block-preformatted">public (active)<br>  target: default<br>  icmp-block-inversion: no<br>  interfaces: wlp8s0<br>  sources:<br>  services: cockpit dhcpv6-client <strong>http https</strong> ssh</pre>



<p class="wp-block-paragraph">ブラウザのアドレスバーにIPアドレス「http://192.168.*.*」をに入力すれば、テストページが表示されれば動作しています</p>



<h3 class="wp-block-heading"><span id="toc5">httpd.conf</span></h3>



<p class="wp-block-paragraph">サーバー上のディレクトリや、ホスト名など、自分の環境に合わせて設定ファイルを編集します<br>筆者の場合、「DocumentRoot」を「/home/www/html」に変更します<br>「ServerName」は、バックアップ用なので本サーバーとの識別のためドメイン名は<br>「www2」とし「www2.hogehoge.com」に設定します<br>CGIスクリプトを使用する場合では、AddHandlerでスクリプトの拡張子を指定し、ScriptAlias以外のディレクトリにスクリプトを置く場合には、その指定ディレクトリに「Options ExecCGI」を追加します<br>まずは、設定ファイル「httpd.conf」はバックアップを取ってから作業します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-110"><code>cd /etc/httpd/conf/
sudo cp -p httpd.conf httpd.conf.org
sudo vi ./httpd.conf</code></pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">edhitor</span></p>



<pre class="wp-block-preformatted">#ServerAdmin root@localhost<br>ServerAdmin root@localhost<br><br>#ServerName www.example.com:80<br>ServerName www2.hogehoge.com:80<br><br>#DocumentRoot "/var/www/html"<br>DocumentRoot "/home/www/html"<br><br>#&lt;Directory "/var/www"&gt;<br>&lt;Directory "/home/www"&gt;<br><br>#&lt;Directory "/var/www/html"&gt;<br>&lt;Directory "/home/www/html"&gt;<br><br>#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"<br>ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"<br><br>#&lt;Directory "/var/www/cgi-bin"&gt;<br>&lt;Directory "/home/www/cgi-bin"&gt;<br><br>#Options Indexes FollowSymLinks<br>Options FollowSymLinks<br><br>#AddHandler cgi-script .cgi<br># --- 2026/04/19 add by kazuban<br>AddHandler cgi-script .cgi<br>&lt;Directory /home/www/html/script&gt;<br>  AllowOverride None<br>  Options ExecCGI FollowSymLinks<br>  Order allow,deny<br>  Allow from all<br>&lt;/Directory&gt;</pre>



<p class="wp-block-paragraph">筆者の場合、デフォルトにディレクトリを変更したので、そのディレクトリを作成し、所有者をapacheに変更します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-111"><code>sudo mkdir /home/www
sudo mkdir /home/www/html
sudo mkdir /home/www/cgi-bin
sudo chown apache.apache /home/www/html/
sudo chown apache.apache /home/www/cgi-bin/
ls -la /home/www
httpd -t</code></pre>



<p class="wp-block-paragraph">「Syntax OK」が出れば、正常に変更されています</p>



<h3 class="wp-block-heading"><span id="toc6">セキュリティ対策</span></h3>



<p class="wp-block-paragraph">・テストページや「icons」一覧を非表示にする<br>・Apacheバージョン情報とＴRACEメソッドOFF<br>・X-Frame-Optionsの有効を確認<br>・設定したドキュメントルートにindex.htmlを作成</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-112"><code>cd /etc/httpd/conf.d
sudo cp -p welcome.conf welcome.conf.org
sudo cp -p  autoindex.conf  autoindex.conf.org
sudo vi ./welcome.conf</code></pre>



<p class="wp-block-paragraph">表示させたくないので、削除や名前変更もできますが、自動的に復活するらしいので、&lt;Directory&gt;設定は、全てコメントにしました。<br>autoindex.confも同様です</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-113"><code>sudo vi autoindex.conf</code></pre>



<p class="wp-block-paragraph">httpdを再起動すると、「http://192.168.*.*」は表示されなくなっていれば正常です</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-114"><code>sudo systemctl restart httpd</code></pre>



<p class="wp-block-paragraph">さらに、Apacheバージョン情報とＴRACEメソッドもOFFにします<br>/etc/httpd/conf/httpd.confを編集</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-115"><code>sudo vi /etc/httpd/conf/httpd.conf</code></pre>



<p class="wp-block-paragraph">最終行に、設定コードを追加</p>



<pre class="wp-block-preformatted">##--- kazuban added. 2026/04/19<br>ServerTokens ProductOnly<br>ServerSignature off<br>TraceEnable off</pre>



<p class="wp-block-paragraph">構文チェックしOKであれば、再起動します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-116"><code>httpd -t
sudo systemctl restart httpd</code></pre>



<p class="wp-block-paragraph">X-Frame-Optionsは、Webサイトを不正な埋め込み（クリックジャッキング攻撃）から守るために非常に重要だと言うことなので、こちらも有効になっているか確認します<br>「/etc/httpd/conf.modules.d/00-base.conf」に、<strong>mod_headers.so</strong>の記載があればモジュールは入っています</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-117"><code>cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_headers.so</code></pre>



<p class="wp-block-paragraph">次に、「/etc/httpd/conf/httpd.conf」の最後に、<br>「 Header append X-FRAME-OPTIONS “SAMEORIGIN” 」<br>を追加して、apacheを再起動します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-118"><code>sudo vi /etc/httpd/conf/httpd.conf</code></pre>



<pre class="wp-block-preformatted">・<br>・<br>##--- kazuban added. 2026/04/19<br>ServerTokens ProductOnly<br>ServerSignature off<br>TraceEnable off<br><br><strong>Header append X-FRAME-OPTIONS "SAMEORIGIN"</strong></pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-119"><code>sudo systemctl restart httpd
sudo systemctl status httpd</code></pre>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading"><span id="toc7">ドキュメントルートのトップページの表示</span></h3>



<p class="wp-block-paragraph">上記<a href="#toc6">セキュリティ対策</a>でトップページが表示されなくなったので、「index.html」を作成し、簡単な表示が出るようにしておきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-120"><code>cd /home/www/html/
cat &lt;&lt;EOF | sudo tee index.html
&lt;html&gt;
  &lt;body&gt;
    &lt;h1&gt;This website is currently under maintenance.&lt;/h1&gt;
  &lt;/body&gt;
&lt;/html&gt;
EOF
sudo chown apache:apache ./index.html
httpd -t
sudo systemctl restart httpd</code></pre>



<p class="wp-block-paragraph">これで、「http://192.168.*.*」でトップページが表示されるようになりました</p>



<h2 class="wp-block-heading"><span id="toc8">Let’s Encrypt証明書でhttps化</span></h2>



<p class="wp-block-paragraph">https化を行う場合には、ファイヤーウォールでの許可が必要ですが、<a href="#toc4">上記ですでに許可してます</a>から、ここでは確認だけ行います</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-121"><code>sudo firewall-cmd --list-all --zone=public</code></pre>



<p class="wp-block-paragraph">「services: 」に「https」があれば、許可済みです</p>



<h3 class="wp-block-heading"><span id="toc9">sslモジュール</span></h3>



<p class="wp-block-paragraph">「mod_ssl」も、<a href="#toc3">上記でインストールされています</a>、確認してみます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-122"><code>dnf list installed | grep mod_ssl
httpd -M | grep ssl</code></pre>



<h3 class="wp-block-heading"><span id="toc10">Certbot クライアントのインストール</span></h3>



<p class="wp-block-paragraph">Let’s Encryptで証明書の取得には、「Certbot」と言うソフトを利用します<br>パッケージの状態を確認します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-123"><code>dnf list --all | grep certbot</code></pre>



<p class="wp-block-paragraph">複数でてきますが、「certbot.noarch」「python3-certbot-apache.noarch」をインストールします</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-124"><code>sudo dnf install certbot
sudo dnf install python3-certbot-apache
dnf list installed | grep certbot</code></pre>



<h3 class="wp-block-heading"><span id="toc11">証明書発行</span></h3>



<p class="wp-block-paragraph">すでにhttpdが動作している場合には、「webroot プラグイン」を使います<br>動作していない場合には、「Standaloneプラグイン」を使います<br>ただし、両方とも外部から対象のPCの80番ポートへ通信は必要です<br>したがって、<span class="marker-under-red">外部（インターネット側）から、対象のドメインのが名前解決が必要</span>です<br>私は、無料のサービス<a href="https://www.mydns.jp/">https://www.mydns.jp/</a>　を利用させてもらっています<br>80番ポートは「Standalone」の場合は、certbot が占有します<br>「webroot」は、apacheが使います<br>したがって、「webroot」はwebサーバーが動作している必要がありますが、「Standalone」では停止しておく必要があります</p>



<p class="wp-block-paragraph">まず、外部からの80番へのリクエストが、対象のPCアドレスへ転送されるように設定します<br>自宅であれば、ルーターの「ポートマッピング」などの項目で設定できると思います<br>次に、httpdの起動状態を確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-125"><code>sudo systemctl status httpd</code></pre>



<p class="wp-block-paragraph">80番と、httpdの起動が確認できたら、certbot を起動しましょう<br>確認はしていませんが、権限が必要なファイルに書き込むので、「su」での起動がいいと思います</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-126"><code>su
certbot certonly --webroot -w /home/www/html/ -d www2.hogehoge.com -d hogehoge.com</code></pre>



<p class="wp-block-paragraph">対話での設定になります</p>



<pre class="wp-block-preformatted">Saving debug log to /var/log/letsencrypt/letsencrypt.log<br>Enter email address (used for urgent renewal and security notices)<br> (Enter 'c' to cancel): 　　　　　&lt;------自分のEメールアドレスを入力<br><br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>Please read the Terms of Service at<br> https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must<br>agree in order to register with the ACME server. Do you agree?<br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>(Y)es/(N)o: y　&lt;----- 利用規約を読んでください<br><br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>Would you be willing, once your first certificate is successfully issued, to<br>share your email address with the Electronic Frontier Foundation, a founding<br>partner of the Let's Encrypt project and the non-profit organization that<br>develops Certbot? We'd like to send you email about our work encrypting the web,<br>EFF news, campaigns, and ways to support digital freedom.<br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>(Y)es/(N)o: y  &lt;--------- 電子フロンティア財団からEメールが届いてもいいか？<br>Account registered.<br>Requesting a certificate for www2.hogehoge.com and hogehoge.com<br><br><strong>Successfully</strong> received certificate.<br>Certificate is saved at: /etc/letsencrypt/live/www2.hogehoge.com/fullchain.pem<br>Key is saved at:         /etc/letsencrypt/live/www2.hogehoge.com/privkey.pem<br>This certificate expires on 2026-07-18.<br>These files will be updated when the certificate renews.<br>Certbot has set up a scheduled task to automatically renew this certificate in the background.<br><br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>If you like Certbot, please consider supporting our work by:<br> * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate<br> * Donating to EFF:                    https://eff.org/donate-le<br>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre>



<p class="wp-block-paragraph">「<strong>Successfully</strong>」になれば、証明書ファイルは保管されています</p>



<h3 class="wp-block-heading"><span id="toc12">証明書の設定</span></h3>



<p class="wp-block-paragraph">証明書を「/etc/httpd/conf.d/ssl.conf」で反映させます<br>まずは、バックアップをとってから、編集します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-127"><code>cd /etc/httpd/conf.d
sudo cp -p ssl.conf ssl.conf.org
sudo vi ./ssl.conf</code></pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">/etc/httpd/conf.d/ssl.conf</span></p>



<pre class="wp-block-preformatted">・<br>#SSLCertificateFile /etc/pki/tls/certs/localhost.crt<br>SSLCertificateFile /etc/letsencrypt/live/www2.hogehoge.com/fullchain.pem       <br>・<br>・<br>#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key<br>SSLCertificateKeyFile /etc/letsencrypt/live/www2.hogehoge.com/privkey.pem<br>・</pre>



<p class="wp-block-paragraph">保存後、確認でOKなら、httpd再起動</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-128"><code>sudo httpd -t
sudo systemctl restart httpd
sudo systemctl status httpd</code></pre>



<h3 class="wp-block-heading"><span id="toc13">https:// でのアクセス確認</span></h3>



<p class="wp-block-paragraph"><a href="#toc11">証明書発行</a>では80番ポーとを通しましたが、httpsでは443ポートを通してておきます<br>ただし、筆者の環境のように、同じLAN上にWebサーバーとアクセスPCがある場合には外部DNSを使用しないので、アクセスできない場合があります<br>その場合、アクセス側PCの「hosts」ファイルで設定しておくと可能になります</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">C:\Windows\System32\drivers\etc\hosts</span>　(windows)</p>



<pre class="wp-block-preformatted">#Server <br>192.168.1.100 hogehoge.com<br>192.168.1.100 www.hogehoge.com<br><br>#TestServer<br>192.168.1.101 www2.hogehoge.com<br></pre>



<p class="wp-block-paragraph">この設定後、「https://www2.hogehoge.com」で正常に<a href="#toc7">「index.html」画面</a>が表示されれば証明書は正常です</p>



<h3 class="wp-block-heading"><span id="toc14">HTTP/2を利用する</span></h3>



<p class="wp-block-paragraph">詳細は、<a href="https://www.kazuban.com/blog/rokeylinux9-3-apache/#toc21">こちらを確認</a>してください<br>まず、eventMPMモジュールとhttp2モジュールが必要ですが、Rocky9では、デフォルトで有効になっているようです。<br>確認してみます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-129"><code>sudo httpd -M | grep mpm
sudo httpd -M | grep http2</code></pre>



<p class="wp-block-paragraph">次に、「httpd.conf」で有効設定する予定ですが、設定前にhttp2の有効状態を確認してみました<br>確認は、Chromeで「https://www2.hogehoge.com」を表示後、F12キーで表示される開発ページの「Network」「Protocol」で確認できますが、筆者の環境ではすでに「h2」になっていて、http2が有効になっていました。<br>AIに聞いてみると、Apacheのバージョンによっては、有効になっている場合もあるが、明示的に設定をいれる事を推奨するの事なので、設定はしておこうと思います</p>



<p class="wp-block-paragraph">設定は、「/etc/httpd/conf/httpd.conf」で行います</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-130"><code>sudo vi /etc/httpd/conf/httpd.conf</code></pre>



<p class="wp-block-paragraph">最終行に追加して、httpdを再起動</p>



<pre class="wp-block-preformatted">・<br>&lt;IfModule http2_module&gt;<br>    Protocols h2 http/1.1<br>    ProtocolsHonorOrder on<br>&lt;/IfModule&gt;<br>・</pre>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-131"><code>sudo systemctl restart httpd</code></pre>



<h3 class="wp-block-heading"><span id="toc15">HTTP/2有効確認</span></h3>



<p class="wp-block-paragraph">Chromeで「https://www2.hogehoge.com」を表示後、F12キーで表示される開発ページの「Network」「Protocol」で確認できますが、「Protocol」が表示されていない場合があります<br>・開発ページが表示された後、CTRL+R でページを更新<br>・もし、翻訳のダイアログが出た場合には、「日本語」にしてみます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="343" height="159" src="https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-01.png" alt="" class="wp-image-12547" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-01.png 343w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-01-300x139.png 300w" sizes="(max-width: 343px) 100vw, 343px" /></figure>



<p class="wp-block-paragraph">・開発ページが更新されても、デフォルトでは「Protocol」が非表示になっている場合があります<br>・「Network」タブの、「Name」セル上でマウス右ボタンで、表示項目の選択ができるので「Protocol」をチェックする事で、表示されます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="463" height="171" src="https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-02.png" alt="" class="wp-image-12548" srcset="https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-02.png 463w, https://www.kazuban.com/blog/wp-content/uploads/2026/04/http2-02-300x111.png 300w" sizes="(max-width: 463px) 100vw, 463px" /></figure>



<p class="wp-block-paragraph">・表示された「Protocol」が、「h2」や「h3」になっていれば、HTTP/2で応答しています</p>



<hr class="wp-block-separator has-text-color has-indigo-color has-alpha-channel-opacity has-indigo-background-color has-background is-style-wide" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h4 class="wp-block-heading"><span id="toc16">WordPress環境構築まとめ</span></h4>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no1/">１</a></span></p>



<p class="wp-block-paragraph"><span class="inline-button-white-blue"><a href="https://www.kazuban.com/blog/wordpress-install-no2/">２</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-132 wp-block-paragraph"><a href="https://www.kazuban.com/blog/wordpress-install-no3/"><span class="inline-button-white-black">３</span></a></p>



<p class="has-black-color has-text-color has-link-color wp-elements-133 wp-block-paragraph"><a href="https://www.kazuban.com/blog/wordpress-install-no4/"><span class="inline-button-white-black">４</span></a></p>



<p class="has-black-color has-text-color has-link-color wp-elements-134 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/">５</a></span></p>



<p class="has-light-grey-color has-text-color has-link-color wp-elements-135 wp-block-paragraph">６</p>



<p class="wp-block-paragraph"></p>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RockyLinux9.7で「WordPress環境構築「Vol-01」WindowsからのSSH接続でリモート管理</title>
		<link>https://www.kazuban.com/blog/wordpress-install-no1/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 08:18:05 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RockyLinux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[インストール]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12299</guid>

					<description><![CDATA[ひと昔以上前のノートに、「ubuntu」入れてみたのが、２年前 会社でもローカル環境にwordpressでのコミュニティサイトを検討しているので、wordpress環境構築作業に戸惑わないよう、コピペできるよう、まとめま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ひと昔以上前のノートに、「ubuntu」入れてみたのが、２年前</p>


<a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/" title="Ubuntu24.04LTSでWorrPressを動作させる。インストール・SSH・ファイヤーウォール" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Ubuntu24.04LTSでWorrPressを動作させる。インストール・SSH・ファイヤーウォール</div><div class="blogcard-snippet internal-blogcard-snippet">「Ubuntu24.04LTS」に、「RHEL系、RockyLinux9」と同様の設定で、「WordPress」を動作させます。特に、「apache」の設定方法が違っているので戸惑いました。「RHEL」から移行の方には参考になると思います。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.06.29</div></div></div></div></a>


<p class="wp-block-paragraph">会社でもローカル環境にwordpressでのコミュニティサイトを検討しているので、wordpress環境構築作業に戸惑わないよう、コピペできるよう、まとめました。<br>せっかくなので、RockyLinux10で試してみましたが、筆者の１０数年前のノートPCではインストーラさえ起動しませんでした<br>RockyLinux9.7であれば起動したので、クリーンインストールして再構築しました</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">RockyLinux9.7 ダウンロード・インストール</a><ol><li><a href="#toc2" tabindex="0">有線デバイスを認識しない</a><ol><li><a href="#toc3" tabindex="0">インターフェースの確認:</a></li><li><a href="#toc4" tabindex="0">JMicron用ドライバのインストール</a></li><li><a href="#toc5" tabindex="0">「ELRepo-kernel」から最新カーネルを試す（成功率：中）</a></li><li><a href="#toc6" tabindex="0">ethernetデバイスを接続する</a></li></ol></li></ol></li><li><a href="#toc7" tabindex="0">インストール直後の設定</a><ol><li><a href="#toc8" tabindex="0">ホームディレクトリの日本語表記を英語表記に変更</a></li><li><a href="#toc9" tabindex="0">特定のユーザーにsudo を可能にする</a></li></ol></li><li><a href="#toc10" tabindex="0">SSH利用状況の確認</a><ol><li><a href="#toc11" tabindex="0">firewalldでのsshの確認</a></li></ol></li><li><a href="#toc12" tabindex="0">SSHでリモート操作</a></li><li><a href="#toc13" tabindex="0">インストール後の設定２（SSHでも可）</a><ol><li><a href="#toc14" tabindex="0">まずは、パッケージのアップデート</a></li><li><a href="#toc15" tabindex="0">SELinuxに強制させない設定</a></li><li><a href="#toc16" tabindex="0">設定中に本体のGUIがクラッシュした</a><ol><li><a href="#toc17" tabindex="0">復旧方法：キーボードショートカットで復旧</a></li></ol></li><li><a href="#toc18" tabindex="0">恒久対策として：スリープ・省電力設定を無効化する</a></li><li><a href="#toc19" tabindex="0">CUIモードをデフォルトにする</a></li></ol></li><li><a href="#toc20" tabindex="0">SSHのセキュリティ向上対策</a><ol><li><a href="#toc21" tabindex="0">SSHを鍵認証方式で運用</a></li><li><a href="#toc22" tabindex="0">秘密鍵のアクセス権限を厳しく設定</a></li><li><a href="#toc23" tabindex="0">公開鍵をサーバー側へコピー</a></li><li><a href="#toc24" tabindex="0">サーバー側へsshでログインし操作</a></li><li><a href="#toc25" tabindex="0">公開鍵を保存ファイル（authorized_keys）へ登録</a></li><li><a href="#toc26" tabindex="0">再度、鍵を使って、SSHログイン</a></li><li><a href="#toc27" tabindex="0">鍵認証以外ではログイン拒否</a></li><li><a href="#toc28" tabindex="0">ついでにリモートからのROOTログインも拒否設定します</a></li><li><a href="#toc29" tabindex="0">さらに、ポート番号を変更</a><ol><li><a href="#toc30" tabindex="0">WordPress環境構築まとめ</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">RockyLinux9.7 ダウンロード・インストール</span></h2>



<p class="wp-block-paragraph">ダウンロード・インストールの詳細はこちらを確認してください</p>


<a href="https://www.kazuban.com/blog/rockylinux9-3-install/#toc1" title="RockyLinux9.3で自宅サーバーを再構築V01・インストール。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.3で自宅サーバーを再構築V01・インストール。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます</div><div class="blogcard-snippet internal-blogcard-snippet">2023年、このサイトは、centOS7 で構築していますが、サポート終了が近づいてきました。centOS8のサポートも既に終了しています。今回、RockyLinux9.3で再構築した記録のインストール編です。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.05</div></div></div></div></a>


<h3 class="wp-block-heading"><span id="toc2">有線デバイスを認識しない</span></h3>



<p class="wp-block-paragraph">wifiを利用していたので、あまり意識しませんでしたが、wifiでのトラブルがあったので、有線LANを利用しようとしましたが、認識しない状況になりました。<br>AIに聞きながらどうにか解決したので、ここに覚書としてメモしておきます</p>



<h4 class="wp-block-heading"><span id="toc3">インターフェースの確認:</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-141"><code>nmcli device</code></pre>



<p class="wp-block-paragraph">通常、正常であればここに <code>enp...</code> や <code>eth0</code> といった名称のデバイスが表示されますが<br>リストに出てきませんでした。<br>AIに相談すると</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">リストにないということは、設定の問題ではなく「ドライバが読み込まれていない」か「ハードウェアが認識されていない」可能性が極めて高いです。<br>次の結果を教えてください</p>
</blockquote>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-142"><code>lspci -nn | grep -i net</code></pre>



<pre class="wp-block-preformatted">$ lspci -nn | grep -i net<br><br>08:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01)<br><br>09:00.0 Ethernet controller [0200]: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet Controller [197b:0250] (rev 05)</pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">原因が特定できました。搭載されている有線LANコントローラー <strong>「JMicron JMC250 [197b:0250]」</strong> は、Rocky Linux 9 (RHEL 9) の標準カーネルではサポート（ドライバが同梱）されていません。</p>
</blockquote>



<h4 class="wp-block-heading"><span id="toc4">JMicron用ドライバのインストール</span></h4>



<p class="wp-block-paragraph"><strong>JMicron JMC250 [197b:0250]」</strong> は、<strong>ELRepo</strong> リポジトリからドライバを提案してもらいましたが、結局、<strong>Rocky Linux 9 (EL9) 用には JMicron [197b:0250] のドライバが提供されていない</strong> ようです</p>



<h4 class="wp-block-heading"><span id="toc5">「ELRepo-kernel」から<strong>最新カーネル</strong>を試す（成功率：中）</span></h4>



<p class="wp-block-paragraph">成功率は「中」ですが、新しいカーネルには、稀に古いドライバが復活していたり、汎用ドライバで動く可能性があるとの事なので、やってみます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-143"><code># 最新カーネルのインストール
sudo dnf --enablerepo=elrepo-kernel install kernel-ml

# 再起動して、起動メニューで新しいカーネル（数字が大きい方）を選択
sudo reboot</code></pre>



<p class="wp-block-paragraph">再起動後に <code>nmcli device</code> を確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-144"><code><code>nmcli device</code></code></pre>



<pre class="wp-block-preformatted">DEVICE          TYPE      STATE            CONNECTION     <br>wlp8s0          wifi      接続済み         aterm-e41133-g <br>lo              loopback  接続済み (外部)  lo             <br>enp9s0f0        ethernet  切断済み         --             </pre>



<p class="wp-block-paragraph">認識されました</p>



<h4 class="wp-block-heading"><span id="toc6">ethernetデバイスを接続する</span></h4>



<p class="wp-block-paragraph">接続は「nmcli device connect デバイス名」で接続できます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-145"><code>sudo nmcli device connect enp9s0f0</code></pre>



<p class="wp-block-paragraph">その他、ネットワーク設定は、下記を参考にしてください</p>


<a href="https://www.kazuban.com/blog/rockylinux9-3-install/#toc20" title="RockyLinux9.3で自宅サーバーを再構築V01・インストール。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.3で自宅サーバーを再構築V01・インストール。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます</div><div class="blogcard-snippet internal-blogcard-snippet">2023年、このサイトは、centOS7 で構築していますが、サポート終了が近づいてきました。centOS8のサポートも既に終了しています。今回、RockyLinux9.3で再構築した記録のインストール編です。記事最後のリンクをすべて実行すれば、WordPressサイトが作れます</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.05</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc7">インストール直後の設定</span></h2>



<h3 class="wp-block-heading"><span id="toc8">ホームディレクトリの日本語表記を英語表記に変更</span></h3>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-146"><code>LANG=C xdg-user-dirs-gtk-update</code></pre>



<h3 class="wp-block-heading"><span id="toc9">特定のユーザーにsudo を可能にする</span></h3>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-147"><code>su
visudo</code></pre>



<p class="wp-block-paragraph">visudo で、コメント行になっている、下記の「#」を外し有効にします<br>%wheel  ALL=(ALL)       NOPASSWD: ALL</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-preformatted">・
・
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

・
## Same thing without a password
%wheel  ALL=(ALL)       NOPASSWD: ALL

</pre>



<p class="wp-block-paragraph">その後、特定ユーザーを、「wheel」グループに追加すればそのユーザーはパスワードなしで「sudo」実行が可能になります</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-148"><code>usermod -aG wheel hogehoge</code></pre>



<h2 class="wp-block-heading"><span id="toc10">SSH利用状況の確認</span></h2>



<p class="wp-block-paragraph">RockyLinux9では、ほとんどの選択でsshは自動起動している状態になっています。<br>動作は、「ssh」コマンドで確認できます</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-149"><code>ssh</code></pre>



<p class="wp-block-paragraph">usage: ssh [・・・・」のような<br>コマンドの使い方を示すヘルプメッセージが表示されれば動作しています<br>また、sshサービスはファイヤーウォールでの制限対象ですが、こちらも標準では許可されていますが、確認しておきます<br>詳細は、下記記事を参照してください</p>


<a href="https://www.kazuban.com/blog/rockylinux9-3-firewalld/" title="RockyLinux9.３で自宅サーバーを再構築V03・firewalldでアクセス制御" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.３で自宅サーバーを再構築V03・firewalldでアクセス制御</div><div class="blogcard-snippet internal-blogcard-snippet">firewalldを少し詳しく調べていました。一例として、sshサービスを、LAN内（指定アドレス）からのみ接続可能な設定にしました。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.06</div></div></div></div></a>


<p class="wp-block-paragraph">ここでは、sshの許可状態だけ確認します</p>



<h3 class="wp-block-heading"><span id="toc11">firewalldでのsshの確認</span></h3>



<p class="wp-block-paragraph">まず、「firewalld」の起動状態を確認してみます</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-150"><code>systemctl status firewalld</code></pre>



<p class="wp-block-paragraph">これで、<span class="inline-button-white-green">active (running)</span>になっていれば、起動しています</p>



<p class="wp-block-paragraph"><br>ファイヤーウォールのアクセスルール対象となるのはアクティブゾーンになります<br>まずは、アクティブゾーンを確認します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-151"><code> sudo firewall-cmd --get-active-zones</code></pre>



<pre class="wp-block-preformatted">public<br>  interfaces: wlp8s0</pre>



<p class="wp-block-paragraph">アクティブゾーンは「public」のみと言うのがわかりました<br>今回は「ssh」の許可状態は「public」の設定で確認すればわかります</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-152"><code>sudo firewall-cmd --list-all --zone=public</code></pre>



<pre class="wp-block-preformatted">public (active)<br>  target: default<br>  icmp-block-inversion: no<br>  interfaces: wlp8s0<br>  sources: <br>  services: cockpit dhcpv6-client <strong>ssh</strong><br>  ports: </pre>



<p class="wp-block-paragraph">「services」に、「ssh」があるので、許可されています</p>



<h2 class="wp-block-heading"><span id="toc12">SSHでリモート操作</span></h2>



<p class="wp-block-paragraph">上で確かめたように、RockyLinux9では、デフォルトでsshサービスもファイヤーウォールでの許可も利用可能な状態になっています。<br>「ssh」コマンドでアクセスしてみましょう。<br><span class="inline-button-white-black">windows</span><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-153"><code>ssh hogehoge@192.168.*.* -p 22</code></pre>



<p class="wp-block-paragraph">ssh 「Linux側のユーザー@IPアドレス」 でパスワード入力で接続できます<br>「-p 22」は、ポート番号指定です。sshはデフォルトでは２２番ポートです。<br>デフォルトであれば、省略できます。<br>「-p 22」はオプションですが、違うポート番号の場合は、その番号を指定します。<br>また以前ポート番号などを変更していたなどで接続できない事もあります<br>その場合には、標準ポート番号「22」を指定する事で接続できるようになります<br>windowsターミナルでも同じコマンドです<br>接続ができれば、windowsから、Linuxマシンを殆どリモートで設定できます　<br>ローカル内だけでの運用であれば、この設定でもいいかもしれませんが、後ほどポート番号変更と鍵認証方式に変更しようと思います</p>



<h2 class="wp-block-heading"><span id="toc13">インストール後の設定２（SSHでも可）</span></h2>



<h3 class="wp-block-heading"><span id="toc14">まずは、パッケージのアップデート</span></h3>



<p class="wp-block-paragraph">sshアクセスができれば、windowsターミナルからでも操作できまます<br>インストール初期のアップデートで、<strong>依存関係の競合</strong>とかでエラーが表示される事があります<br>エラーメッセージでは、「<strong><code>--skip-broken</code></strong>」の付加のアドバイスが出ますが、ついでに「&#8211;allowerasing」オプションも追加したほうがいいようです</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-154"><code>sudo dnf update --skip-broken --allowerasing
sudo reboot</code></pre>



<h3 class="wp-block-heading"><span id="toc15">SELinuxに強制させない設定</span></h3>



<p class="wp-block-paragraph">SELinuxはセキュリティをより強固にする機能で、RockyLinuxなどRedHat系では標準で有効になっていますが、思うように動作しないトラブルも多いようです。<br>ポリシーを読み込まず、無効的な状態にする方法もありますが、警告のみでポリシーを強制しない「Permissiveモード」に設定にしようと思います</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-155"><code>su
vi /etc/selinux/config</code></pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">editor</span></p>



<pre class="wp-block-preformatted">・
・
#SELINUX=enforcing
SELINUX=permissive
・
・</pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-156"><code>reboot</code></pre>



<p class="wp-block-paragraph">再起動後、確認</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-157"><code>sudo getenforce</code></pre>



<p class="wp-block-paragraph">「Permissive」が返ってくれば、設定されています</p>



<h3 class="wp-block-heading"><span id="toc16">設定中に本体のGUIがクラッシュした</span></h3>



<p class="wp-block-paragraph">外部PCからsshで操作していて、たまに戻ると、画面がクラッシュしている場合があります<br>これはGUIのディスプレイマネージャー（gdm）がロックやスリープ状態になっているか、セッションがクラッシュしている場合に起こるようです</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<h4 class="wp-block-heading"><span id="toc17">復旧方法：キーボードショートカットで復旧</span></h4>



<p class="wp-block-paragraph">私の状況は、マウスカーソルだけが動く状態だったので、その画面で：</p>



<ul class="wp-block-list">
<li><code>Ctrl + Alt + F2</code>（または F3〜F6）を押す → テキストコンソールに切り替え</li>



<li>ログイン後、以下を実行：</li>
</ul>
</blockquote>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-158"><code>systemctl restart gdm</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><code>Ctrl + Alt + F1</code>（または F7）でGUI画面に戻る</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc18">恒久対策として：スリープ・省電力設定を無効化する</span></h3>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-159"><code># GNOMEのスクリーンセーバー・自動サスペンドを無効化
sudo -u ユーザー名 gsettings set org.gnome.desktop.screensaver lock-enabled false
sudo -u ユーザー名 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'</code></pre>



<p class="wp-block-paragraph">このコマンドは、私の環境でSSH経由では、X11のDISPLAY環境変数がないとのエラーになりました<br>ssh経由の場合には、DISPLAY変数を指定して実行します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-160"><code>sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings set org.gnome.desktop.screensaver lock-enabled false
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'</code></pre>



<p class="wp-block-paragraph">確認方法</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-161"><code>sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings get org.gnome.desktop.screensaver lock-enabled
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type</code></pre>



<p class="wp-block-paragraph">下記の結果がでれば、正常に反映されている</p>



<pre class="wp-block-preformatted">false
'nothing'</pre>



<h3 class="wp-block-heading"><span id="toc19">CUIモードをデフォルトにする</span></h3>



<p class="wp-block-paragraph">SSH経由でのリモートがほとんどになれば、CUIモードのほうがトラブルは少なそうなので、CUIモードに設定します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-162"><code>sudo systemctl set-default multi-user.target</code></pre>



<p class="wp-block-paragraph">これで、再起動後はGUIなしで起動します。<br>もし、GUIが必要になったら、</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-163"><code>sudo systemctl start gdm</code></pre>



<p class="wp-block-paragraph">再度GDMを停止させCUIに戻るには、サーバー機で操作できる場合には</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><code>Ctrl</code> + <code>Alt</code> + <code>F2</code> </p>
</blockquote>



<p class="wp-block-paragraph">または、リモートも含めたコマンド操作の場合は</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-164"><code>sudo systemctl stop gdm</code></pre>



<p class="wp-block-paragraph">このコマンド操作で、画面が止まったように見える場合は、サーバー機で</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">上記の <code>Ctrl</code> + <code>Alt</code> + <code>F2</code> </p>
</blockquote>



<h2 class="wp-block-heading"><span id="toc20">SSHのセキュリティ向上対策</span></h2>



<h3 class="wp-block-heading"><span id="toc21">SSHを鍵認証方式で運用</span></h3>



<p class="wp-block-paragraph">「鍵認証方式」は、「秘密鍵」と「公開鍵」のペアの鍵を作成し、アクセスする側は「秘密鍵」が必要になり、アクセスされる（サーバー）側には、「公開鍵」を登録します<br>一般的には、アクセス側で鍵を生成し、「公開鍵」の登録をサーバーへお願いします<br>鍵生成は、windowsでもLinuxでも、「ssh-keygen」コマンドで生成できます<br>今回は、windowsターミナルで生成します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-165"><code>ssh-keygen -t ed25519</code></pre>



<pre class="wp-block-preformatted">Generating public/private ed25519 key pair.<br>Enter file in which to save the key (C:\Users\hogehoge/.ssh/id_ed25519):<br>Enter passphrase (empty for no passphrase):<br>Enter same passphrase again<br>Your identification has been saved in C:\Users\hogehoge/.ssh/id_ed25519<br>Your public key has been saved in C:\Users\hogehoge/.ssh/id_ed25519.pub<br>The key fingerprint is:<br>SHA256:o2ojnUu7UflR12VZq2yOcTY/Ky-VzibafGh/PJbPe6C hogehoge@hoge-Pc<br>The key's randomart image is:<br>+--[ED25519 256]--+<br>|             .+.o|<br>|               Oo|<br>|     o + o .   . |<br>|    . Z   . . o..|<br>|    . o     . *AC|<br>+----[SHA256]-----+</pre>



<h3 class="wp-block-heading"><span id="toc22">秘密鍵のアクセス権限を厳しく設定</span></h3>



<p class="wp-block-paragraph">下記のアクセス権の設定は<span class="marker-under">、windowsターミナルでの操作コマンドです。</span><br><a href="https://www.kazuban.com/blog/rockylinux9-3-ssh/#toc6">Linuxでの操作は、こららを参考</a>にしてください</p>



<p class="wp-block-paragraph"><strong>継承の無効化と権限のクリア</strong></p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-166"><code>icacls "$HOME\.ssh\id_ed25519" /inheritance:r</code></pre>



<p class="wp-block-paragraph"><strong>ユーザーにのみ読み取り権限を付与</strong></p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-167"><code>icacls "$HOME\.ssh\id_ed25519" /grant:r "$($env:USERNAME):R"</code></pre>



<p class="wp-block-paragraph"><strong>「自分自身」以外のユーザー権限を削除</strong></p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-168"><code>icacls "$HOME\.ssh\id_ed25519" /remove "SYSTEM"
icacls "$HOME\.ssh\id_ed25519" /remove "Administrators"
icacls "$HOME\.ssh\id_ed25519"</code></pre>



<p class="wp-block-paragraph">エクスプローラの「プロパティ」⇒「セキュリティ」でも確認できます</p>



<h3 class="wp-block-heading"><span id="toc23">公開鍵をサーバー側へコピー</span></h3>



<p class="wp-block-paragraph">作成した、「id_ed25519.pub」をサーバー側ユーザーの「.ssh」ディレクトリへコピー<br>・windowsの自分自身のホームの「.ssh」に移動<br>・scp コマンドへ、サーバー側ユーザーの「.ssh」へコピー</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-169"><code>cd $HOME\.ssh
scp .\id_ed25519.pub hogehoge@192.168.*.*:.ssh</code></pre>



<h3 class="wp-block-heading"><span id="toc24">サーバー側へsshでログインし操作</span></h3>



<p class="wp-block-paragraph">windows側から、sshログインし、「.ssh」ディレクトリへ移動し確認</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-170"><code>ssh hogehoge@192.168.*.*</code></pre>



<p class="wp-block-paragraph">ログイン後、コピーされているか、確認</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-171"><code>cd ./.ssh
ls -la</code></pre>



<h3 class="wp-block-heading"><span id="toc25">公開鍵を保存ファイル（authorized_keys）へ登録</span></h3>



<p class="wp-block-paragraph">コピーされた公開鍵を、保存用のファイルへ登録し、そのファイルのアクセス権は厳しくします<br>持ってきて、公開鍵は削除しておきます</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span><span class="inline-button-white-black">linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-172"><code>cd ~/.ssh 
cat id_ed25519.pub &gt;&gt; authorized_keys 
chmod 600 authorized_keys
rm id_ed25519.pub
exit</code></pre>



<h3 class="wp-block-heading"><span id="toc26">再度、鍵を使って、SSHログイン</span></h3>



<p class="wp-block-paragraph">ssh に「i」オプションで鍵指定</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">windows</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-173"><code>ssh -i .ssh/id_ed25519 hogehoge@192.168.*.*</code></pre>



<p class="wp-block-paragraph">ログイン時、鍵生成時登録したパスフレーズを入力し、ログイン</p>



<h3 class="wp-block-heading"><span id="toc27">鍵認証以外ではログイン拒否</span></h3>



<p class="wp-block-paragraph">鍵を使ってのログインが確認できたら、鍵以外でのログインは拒否する設定をしておきます<br>設定は、「/etc/ssh/sshd_config」ファイルの”PasswordAuthentication”を&#8221;no&#8221;に設定します<br>まずは、ファイルをバックアップして、編集します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span><span class="inline-button-white-black"> linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-174"><code>sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
sudo vi /etc/ssh/sshd_config</code></pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">editor</span></p>



<pre class="wp-block-preformatted">・<br>・<br>#PasswordAuthentication yes<br>PasswordAuthentication no<br>・<br>・<br></pre>



<h3 class="wp-block-heading"><span id="toc28">ついでにリモートからのROOTログインも拒否設定します</span></h3>



<p class="wp-block-paragraph">「/etc/ssh/sshd_config」ファイルの”PermitRootLogin”も&#8221;no&#8221;に設定</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">editor</span></p>



<pre class="wp-block-preformatted">・<br>・<br>#PermitRootLogin prohibit-password<br>PermitRootLogin no<br>・<br>・</pre>



<h3 class="wp-block-heading"><span id="toc29">さらに、ポート番号を変更</span></h3>



<p class="wp-block-paragraph">「ssh」のポートは「22番」が標準なので、自動スキャンなどのアタックが増えるので、違う番号に変更しておきます。<br>ポート番号も「/etc/ssh/sshd_config」ファイルの”Port”で設定します<br>ポート番号は登録済み番号などもあるので、49152–65535の範囲に設定します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">editor</span></p>



<pre class="wp-block-preformatted">・<br>・<br>#Port 22<br>Port 55522<br>・<br>・</pre>



<p class="wp-block-paragraph">「22番」は「ssh」サービスのデフォルトなので、firewalldの設定でsshは「22番」になります<br>firewalld設定は、ポート番号を直接設定する事もできますが、やはりsshのポート番号を変更する方法がfirewalldは再起動だけで、設定は不要なのでスマートだと思います<br>デフォルト設定は、「 /usr/lib/firewalld/services/ ssh.xml 」に保存されているので、<br>そのファイルを「 /etc/firewalld/services /」にコピーして編集します。</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span><span class="inline-button-white-black"> linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-175"><code>sudo cp -p /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
sudo cd /etc/firewalld/services/
sudo ls /etc/firewalld/services/
sudo vi /etc/firewalld/services/ssh.xml</code></pre>



<p class="wp-block-paragraph"><span class="inline-button-white-black">editor</span></p>



<pre class="wp-block-preformatted">・<br>・<br>&lt;port protocol="tcp" port="22"/&gt;<br>↓<br>&lt;port protocol="tcp" port="55522"/&gt;<br>・<br>・</pre>



<p class="wp-block-paragraph">sshとfirewall　サービスを再起動して、アクセスにはポート番号を明示します</p>



<p class="wp-block-paragraph"><span class="inline-button-white-black">ssh</span><span class="inline-button-white-black"> linux</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-176"><code>sudo systemctl reload sshd.service
sudo firewall-cmd --reload
ssh  -p 55522 hogehoge@192.168.*.*</code></pre>



<p class="wp-block-paragraph">ここまでで、RockyLinux9.7のインストールと、やっておきたい初期設定を解説しました<br>「ssh」の設定も完了しているので、windowsターミナルからでも実行できます</p>



<hr class="wp-block-separator has-text-color has-indigo-color has-alpha-channel-opacity has-indigo-background-color has-background is-style-wide" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h4 class="wp-block-heading"><span id="toc30">WordPress環境構築まとめ</span></h4>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph"><span class="inline-button-white-blue"><a href="https://www.kazuban.com/blog/wordpress-install-no1/">１</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-177 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no2/">２</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-178 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no3/">３</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-179 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/wordpress-install-no4/">４</a></span></p>



<p class="has-black-color has-text-color has-link-color wp-elements-180 wp-block-paragraph"><span class="inline-button-white-black"><a href="https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/">５</a></span></p>



<p class="has-light-grey-color has-text-color has-link-color wp-elements-181 wp-block-paragraph">６</p>



<p class="wp-block-paragraph"></p>
</div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2025/10月から、自宅サーバーのPostFixからプロバイダー経由のメール送信ができなくなった！</title>
		<link>https://www.kazuban.com/blog/postfix_new_setting/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sat, 04 Oct 2025 06:36:58 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[生成Ai]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=11507</guid>

					<description><![CDATA[外部からのログイン時や、ブログのバックアップ時など自動的にEメールが届くように設定していますが、今月（2025/10）に入ってからメールが届かなくなっていました。既存設定は下記で記事にしましたが、送信メール専用の運用です [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">外部からのログイン時や、ブログのバックアップ時など自動的にEメールが届くように設定していますが、今月（2025/10）に入ってからメールが届かなくなっていました。<br>既存設定は下記で記事にしましたが、送信メール専用の運用です</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/rockylinux9-3-postfix/" title="RockyLinux9.３で自宅サーバーを再構築V08・postfix で送信専用メールサーバー構築" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.３で自宅サーバーを再構築V08・postfix で送信専用メールサーバー構築</div><div class="blogcard-snippet internal-blogcard-snippet">このサイトには「お問い合わせフォーム」を設定していますし、起動しているサーバーがエラーなどの連絡を発信する場合もあります。重要なメールもあるので、メインのメールアドレスへ配信させる設定を行います。今回は、サーバー側から、配信するのみの設定を行います</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.08</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">この設定により、このブログサイトへの、「お問い合わせ」も設置できているのですが、この不具合では、「お問い合わせ」もこちらに届きません<br>う～ん、困った。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">こんな時ほど、Aiに相談だぁ！</a><ol><li><a href="#toc2" tabindex="0">Aiのエラー内容の整理</a><ol><li><a href="#toc3" tabindex="0">主な原因候補</a></li></ol></li><li><a href="#toc4" tabindex="0">確認方法</a><ol><li><a href="#toc5" tabindex="0">状況まとめ</a></li></ol></li><li><a href="#toc6" tabindex="0">解決方法</a></li><li><a href="#toc7" tabindex="0">解決策（おすすめ）</a><ol><li><a href="#toc8" tabindex="0">プロバイダのSMTPサーバを経由する（最も現実的）</a></li></ol></li><li><a href="#toc9" tabindex="0">整理すると</a></li></ol></li><li><a href="#toc10" tabindex="0">設定方法</a><ol><li><a href="#toc11" tabindex="0">認証情報ファイルを作成</a></li><li><a href="#toc12" tabindex="0">Postfix設定ファイルを修正</a></li><li><a href="#toc13" tabindex="0">ハッシュ化して権限設定</a></li><li><a href="#toc14" tabindex="0">Postfix再起動</a></li><li><a href="#toc15" tabindex="0">テスト送信</a></li><li><a href="#toc16" tabindex="0">確認</a></li><li><a href="#toc17" tabindex="0">後日、Gmailへの転送がNGになった</a><ol><li><a href="#toc18" tabindex="0">ここも、AIに聞いてみる</a></li></ol></li><li><a href="#toc19" tabindex="0">AIが問題点指摘</a><ol><li><a href="#toc20" tabindex="0">A. kazuban.com のDNSにSPFレコードを追加（推奨）</a></li></ol></li></ol></li><li><a href="#toc21" tabindex="0">正常にもどった</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">こんな時ほど、Aiに相談だぁ！</span></h2>



<p class="wp-block-paragraph">最初は、ググってみましたが、なかなか的確なサイトにぶち当たりません。<br>Aiに聞いてみよう！<br>ChatGPT と Gemini 2.5Flash に同じ質問をしてみましたが、ほぼ同じ回答内容でしたが<br>ChatGPTのほうが、みやすく感じます<br>ただ、ChatGPTは次から次に、逆質問をしてくるのが、ちょっとウザいかも・・・</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">rocky linux9 で自宅サーバーを運用していますが、2025/10月からサーバーからのメールが送信できなくなりました sudo cat /var/log/maillog | grep -i error を実行してみると、下記エラーがでます。原因はなんでしょう？ <br>sudo cat /var/log/maillog | grep -i error<br>（エラー内容）<br>・<br>・</p>
</blockquote>



<p class="wp-block-paragraph">それにしても、エラー内容をそのまま突っ込めるのは、今までの検索では考えられないですね。</p>



<h3 class="wp-block-heading"><span id="toc2">Aiのエラー内容の整理</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">ログのエラー内容を整理すると：<br>Postfix が プロバイダ<strong> のメールサーバ (mx.hogehoge.com) に TCP ポート 25 で接続しようとしてタイムアウト</strong>しています。</p>



<h4 class="wp-block-heading"><span id="toc3">主な原因候補</span></h4>



<p class="wp-block-paragraph"><strong>１０月からであれば、原因とは考えにくいですが・・・</strong><br>Rocky Linux の <code>firewalld</code> やルーターで 25番ポートのアウトバウンドが塞がれた可能性。</p>



<p class="wp-block-paragraph"><strong>プロバイダ側のポート25ブロック</strong><br>2025年現在、多くの ISP（特に家庭向け回線）はスパム対策のため <strong>ポート25を塞いでいる</strong> ことが多いです。<br>それまでは通っていたけど、2025年10月から「送信ポリシー変更」でブロックされた可能性があります。</p>



<p class="wp-block-paragraph"><strong>プロバイダ 側の受信制限</strong><br>プロバイダ の受信サーバが外部からの直接SMTPを拒否するようになった可能性があります。</p>



<p class="wp-block-paragraph"><strong>ファイアウォール / サーバ側の設定</strong><br>個人宅サーバからの直接送信を受け付けない運用に切り替えた可能性。<br></p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc4">確認方法</span></h3>



<p class="wp-block-paragraph">自宅サーバーからプロバイダメールサーバーへ直接接続できるか試す</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-182"><code>telnet mx.hogehoge.com 25</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">もしタイムアウトするなら → 回線側（ISPやプロバイダ）で遮断。<br>もし「220〜」の応答があれば → Postfixの設定やファイアウォールの問題。</p>
</blockquote>



<p class="wp-block-paragraph">結果、telnet mx.hogehoge.com 25 が応答なし（タイムアウト）でした。<br>ということは、サーバー側(Postfix)の問題ではなく、回線側で25番ポートがブロックされている可能性が非常に高いと言うことのようです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<h4 class="wp-block-heading"><span id="toc5">状況まとめ</span></h4>



<ul class="wp-block-list">
<li>以前は送れた → 2025年10月から送れなくなった</li>



<li>ログでは「Connection timed out」</li>



<li>telnet も通らない</li>
</ul>



<p class="wp-block-paragraph">👉 これは「ISP（プロバイダ 側）が <strong>自宅回線からの直接25番SMTP送信を禁止</strong> に切り替えた」ケースに一致します。<br>最近は迷惑メール対策で家庭向け回線ではほぼ標準でブロックされます。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc6">解決方法</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">１．プロバイダのメールサーバ経由（SMTPリレー / smarthost）<br>　・Postfix の <code>relayhost</code> 設定でプロバイダの SMTP サーバ（587 or 465ポート）を使う<br>２．外部のメールリレーサービスを利用<br>　・SendGrid, Gmail SMTP relay, AWS SES など<br>３．自宅サーバではなく VPS 経由で送信<br>　・自宅サーバからVPSへ転送して、VPSから外へ送信。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc7">解決策（おすすめ）</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<h4 class="wp-block-heading"><span id="toc8">プロバイダのSMTPサーバを経由する（最も現実的）</span></h4>



<p class="wp-block-paragraph">Postfix で <strong>「スマートホスト」設定</strong>をして、<code>smtp.hogehoge.com:587</code> 経由で送信するのがベストです。（25番ではなく 587 番（Submission ポート）がベスト）</p>
</blockquote>



<p class="wp-block-paragraph">まずは、 外部からの直接配送(mx) ではなく、 認証付きの送信サーバ(smtp) なら接続できるかの確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-183"><code>telnet smtp.hogehoge.com 25
telnet smtp.hogehoge.com 587</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">結果、両方とも接続できました<br>telnet smtp.hogehoge.com 587<br> Trying 000.000.000.0… Connected to smtp.hogehoge.com. Escape character is &#8216;^]&#8217;. <br> 220 hogehoge.com ESMTP server ready Sat, 4 Oct 2025 15:42:22 +0900</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc9">整理すると</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">mx.hogehoge.com:25 → タイムアウト（接続できない）<br>smtp.hogehoge.com:25 → 接続できる（220応答あり）<br>smtp.hogehoge.com:587 → 接続できる（220応答あり）<br>つまり：<br>プロバイダ は 外部からの直接配送(mx) を制限している<br>代わりに 認証付きの送信サーバ(smtp) なら 25 でも 587 でも受け付けている<br>じゃあどっちを使うべき？<br>587（submission ポート） が推奨です（標準仕様で「認証あり専用の送信ポート」）<br>25番で smtp.nifty.com に直接送ることもできますが、将来的にブロックされる可能性が高いです。<br>なので、Postfixの relayhost を smtp.hogehoge.com:587 にして、SMTP認証を通す設定がベストです。</p>
</blockquote>



<h2 class="wp-block-heading"><span id="toc10">設定方法</span></h2>



<h3 class="wp-block-heading"><span id="toc11">認証情報ファイルを作成</span></h3>



<p class="wp-block-paragraph">/etc/postfix/sasl_passwd　ファイルを作成し、アドレスとパスワードを追記：<br>「プロバイダのメールアドレス」：「アドレスパスワード」</p>



<ol class="wp-block-list">
<li></li>
</ol>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-184"><code>&#91;smtp.hogehoge.com]:587 myaddress@hogehoge.com:mypasswd</code></pre>



<h3 class="wp-block-heading"><span id="toc12">Postfix設定ファイルを修正</span></h3>



<p class="wp-block-paragraph">/etc/postfix/main.cf の末尾あたりに下記追記：</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-185"><code># hogehoge の SMTP サーバをリレーに指定
relayhost = &#91;smtp.hogehoge.com]:587

# SMTP認証を有効化
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

# TLS を使用
smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
</code></pre>



<h3 class="wp-block-heading"><span id="toc13">ハッシュ化して権限設定</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-186"><code>sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd*</code></pre>



<h3 class="wp-block-heading"><span id="toc14">Postfix再起動</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-187"><code>sudo systemctl restart postfix</code></pre>



<h3 class="wp-block-heading"><span id="toc15">テスト送信</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-188"><code>echo "This is a test mail" | mail -s "Postfix smtp test" myaddress@hogehoge.com</code></pre>



<h3 class="wp-block-heading"><span id="toc16">確認</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">/var/log/maillog を確認して、status=sent になれば成功</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc17">後日、Gmailへの転送がNGになった</span></h3>



<p class="wp-block-paragraph">後日、バックアップサーバーの立ち上げをやっていて、GmailへのテストメールがNGになった</p>



<pre class="wp-block-code"><code> echo "This is a test mail to gmail" | mail -s "Postfix smtp test2" hogehoge@gmail.com</code></pre>



<h4 class="wp-block-heading"><span id="toc18">ここも、AIに聞いてみる</span></h4>



<p class="wp-block-paragraph">Gmailで該当メールを開いて <strong>「︙」→「メッセージのソースを表示」</strong> し、以下の行を確認してみてください：</p>



<pre class="wp-block-code"><code>Authentication-Results: mx.google.com;
   spf=pass  ← ここがfailだとアウト
   dkim=pass ← ここがfailだとアウト</code></pre>



<p class="wp-block-paragraph">その結果を教えてもらえれば、どこが問題か特定できます！</p>



<pre class="wp-block-code"><code>Authentication-Results: nifty.com;
    dmarc=none header.from=kazuban.com;
    dkim=none;
    spf=fail smtp.mailfrom=kazuban.com;
    sender-id=Fail (pra) header.From=kazuban.com</code></pre>



<p class="wp-block-paragraph">原因が明確になりました！</p>



<h3 class="wp-block-heading"><span id="toc19">AIが問題点指摘</span></h3>



<p class="wp-block-paragraph"><strong><code>spf=fail</code></strong> → <code>kazuban.com</code> のDNSにSPFレコードがないか、Niftyのサーバーが許可されていないNiftyのSMTP経由で送っているのに、Fromアドレスが <code>@kazuban.com</code> なので、<br>「kazuban.comのSPF的にNiftyは許可されてないよ」とGmailに判断されています。</p>



<h4 class="wp-block-heading"><span id="toc20">A. <strong>kazuban.com のDNSにSPFレコードを追加</strong>（推奨）</span></h4>



<pre class="wp-block-preformatted">種別     ホスト名          内容<br>TXT      @ （または空欄）<code>  v=spf1 include:nifty.com ~all</code></pre>



<p class="wp-block-paragraph">設定後、反映に<strong>数分〜数時間</strong>かかる場合があります。確認コマンドはこちら：</p>



<pre class="wp-block-code"><code>dig TXT kazuban.com | grep spf</code></pre>



<p class="wp-block-paragraph"><code>v=spf1 include:nifty.com ~all</code> が表示されれば成功です。</p>



<h2 class="wp-block-heading"><span id="toc21">正常にもどった</span></h2>



<p class="wp-block-paragraph">いまさらですが、Aiはすごいですね<br>ちょっと前までは、プロンプトが重要とか言われていましたが、最近ではあまり感じません<br>普通に個人の言葉で、質問すれば、かなり理解してくれます<br>もしかすると、サポート会社などへ、電話質問するよりも簡単かもしれません<br>理解力と分析力は、はるかに人間を超えているように思います</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AIに教えてもらいながら、どうにかUbuntu上の Docker EngineでDifyをサーバー化できた。</title>
		<link>https://www.kazuban.com/blog/ubuntu-dockerengine-dify/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Mon, 05 May 2025 01:17:22 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[AIとのやり取り]]></category>
		<category><![CDATA[Dify]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[ubuntu24]]></category>
		<category><![CDATA[wsl]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=11029</guid>

					<description><![CDATA[前回までで、「Docker Engine」の設定は完了しています。今回は、「Docker」で「Dify」を起動させサーバー化が目的です。実現するにあたって、かなりAIに助けてもらったので、そのやり取りも紹介しています。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/">前回までで、「Docker Engine」の設定は完了しています。</a><br>今回は、「Docker」で「Dify」を起動させサーバー化が目的です。<br>実現するにあたって、かなりAIに助けてもらったので、そのやり取りも紹介しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Difyをクローン化</a><ol><li><a href="#toc2" tabindex="0">gitの確認</a></li><li><a href="#toc3" tabindex="0">Gitでdifyをクローン化する</a></li></ol></li><li><a href="#toc4" tabindex="0">Difyコンテナ起動</a><ol><li><a href="#toc5" tabindex="0">docker compose upでエラー発生！AIに聞いてみる。</a></li></ol></li><li><a href="#toc6" tabindex="0">Dify起動</a><ol><li><a href="#toc7" tabindex="0">初期画面</a></li><li><a href="#toc8" tabindex="0">Difyの動作と試用</a></li></ol></li><li><a href="#toc9" tabindex="0">Difyを自動起動</a></li><li><a href="#toc10" tabindex="0">Difyをサーバー化して、他のPCからもアクセスさせる</a><ol><li><a href="#toc11" tabindex="0">DifyPCのIPアドレス調査</a></li><li><a href="#toc12" tabindex="0">Windowsのアドレスからは、アクセスできない。</a></li><li><a href="#toc13" tabindex="0">docker ps コマンドで実行中のコンテナーを提出</a></li><li><a href="#toc14" tabindex="0">ファイヤーウォールとポートフォワーディング設定</a><ol><li><a href="#toc15" tabindex="0">１．ファイアウォール開放 (ポート 80):</a></li><li><a href="#toc16" tabindex="0">2．ポートフォワーディング設定 (ポート 80):</a></li><li><a href="#toc17" tabindex="0">アクセスできた～</a></li></ol></li></ol></li><li><a href="#toc18" tabindex="0">DifyにLLMを設定して、カスタムチャット環境を構築</a><ol><li><a href="#toc19" tabindex="0">DifyにLLMの設定方法</a><ol><li><a href="#toc20" tabindex="0">オンラインLLMの登録</a></li><li><a href="#toc21" tabindex="0">LM Studio モデルの登録</a></li><li><a href="#toc22" tabindex="0">Ollama　モデルの登録</a></li></ol></li></ol></li><li><a href="#toc23" tabindex="0">あとがき</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Difyをクローン化</span></h2>



<h3 class="wp-block-heading"><span id="toc2">gitの確認</span></h3>



<p class="wp-block-paragraph">difyをクローン化するのに、「git」を利用するので、「git」のインストール状況を確認します。<br>windows ターミナルを開き、wsl を起動し、「git -v」で状況を確認します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-190"><code>PS C:\Users\hogehoge2&gt; wsl

$ git -v
git version 2.43.0
インストールされていない場合には、インストール
$ sudo apt update
$ sudo apt install git</code></pre>



<h3 class="wp-block-heading"><span id="toc3">Gitでdifyをクローン化する</span></h3>



<p class="wp-block-paragraph">「git clone ・・」でクローン化を実行すると、カレントディレクト下「dify」ディレクトリへソースコードがクローン化されます。<br>windowsターミナルで、「wsl」を実行し、ubuntu環境へ入ると、デフォルトでは、winndowsユーザーのディレクトリへセットされた状態で起動します。<br>好みの問題だと思いますが、この場所へ「dify」環境を作成してもいいと思いますが、筆者はubuntuのユーザーホームディレクトリ下に作成しようと思います。<br>wsl、ubuntuプロンプトで、「cd」を実行すると、ユーザーのホームディレクトリへ移動します。<br>その場所で「git clone・・」すると、そのディレクトリ直下に「dify」さらにその下に「docker」ディレクトリが作成されています。<br>「ls」コマンドで確認できます。<br>「dify/docker」ディレクトリへ「cd」コマンドで移動しておきます。<br>「pwd」コマンドで、現在のディレクトリが確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-191"><code>hogehoge2@hoge-PC:/mnt/c/Users/hogehoge2$
$ cd
$ git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 153846, done.
remote: Counting objects: 100% (536/536), done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 153846 (delta 396), reused 178 (delta 177), pack-reused 153310 (from 3)
Receiving objects: 100% (153846/153846), 87.73 MiB | 5.07 MiB/s, done.
Resolving deltas: 100% (111131/111131), done.
$ ls
dify
$ cd dify/docker/
$ pwd
/home/hogehoge2/dify/docker</code></pre>



<h2 class="wp-block-heading"><span id="toc4">Difyコンテナ起動</span></h2>



<p class="wp-block-paragraph">「git clone」を実行したディレクトリに、「dify/docker」ディレクトリが作成されています。<br>その中に「.env.example」のサンプル環境変数ファイルが作成されています。<br>通常ファイルは「ls」コマンドで確認できますが。「.」で始まるファイルは表示されません。<br>その場合「ls -la」コマンドを実行すると、表示されます。<br>コピーは「cp &lt;オリジナルファイル名&gt;　&lt;複写ファイル名&gt;」で複写できます。<br>「.env.example」ファイルを、正式な環境変数「.env」としてコピーし、「docker compose」コマンドで、コンテナを起動させます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-192"><code>$ pwd
/home/hogehoge2/dify/docker
$ cp .env.example .env
$ docker compose up -d
&#91;+] Running 80/80    
✔ web Pulled             149.7s
✔ sandbox Pulled         221.1s
 ✔ ssrf_proxy Pulled      88.2s
 ✔ db Pulled             224.4s
 ✔ worker Pulled         402.2s
 ✔ plugin_daemon Pulled  404.6s
 ✔ nginx Pulled           36.4s
 ✔ weaviate Pulled       225.1s
 ✔ redis Pulled          221.2s
 ✔ api Pulled            402.2s
&#91;+] Running 12/12
 ✔ Network docker_default             Created    0.1s
 ✔ Network docker_ssrf_proxy_network  Created    0.0s
 ✔ Container docker-web-1             Started    3.7s
 ✔ Container docker-ssrf_proxy-1      Started    4.0s
 ✔ Container docker-sandbox-1         Started    3.7s
 ✔ Container docker-redis-1           Started    3.7s
 ✔ Container docker-weaviate-1        Started    3.7s
 ✔ Container docker-db-1              Healthy    10.7s
 ✔ Container docker-worker-1          Started    9.3s
 ✔ Container docker-plugin_daemon-1   Started    9.3s
 ✔ Container docker-api-1             Started    9.5s
 ✔ Container docker-nginx-1           Started    10.0s
</code></pre>



<h3 class="wp-block-heading"><span id="toc5">docker compose upでエラー発生！AIに聞いてみる。</span></h3>



<p class="wp-block-paragraph">上記は正常な例ですが、古いPCをテストマシンとして利用した時、「docker compose up」で下記エラーがでた事がありました。</p>



<blockquote class="wp-block-quote has-vivid-red-color has-watery-red-background-color has-text-color has-background has-link-color wp-elements-193 is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">dependency failed to start: container docker-db-1 is unhealthy</p>
</blockquote>



<p class="wp-block-paragraph">この時もgeminiに聞いてみたところ、「docker logs docker-db-1」でログを確認してくれとの事なので、ログを直接貼り付けると、</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph">ログを見る限り、データベースの初期化自体は正常に完了しています (<code>PostgreSQL init process complete; ready for start up.</code>)。 その後の起動プロセスも進んでいますが、<strong><code>2025-04-29 00:02:07.998 UTC [557] FATAL: the database system is starting up</code></strong> という致命的なエラーが出力されています。</p>



<p class="wp-block-paragraph">このエラーは、PostgreSQLサーバーが起動してリカバリなどの内部処理を行っている最中に、外部からの接続要求（この場合はおそらくDockerのヘルスチェックや、依存するDifyコンテナからの初期接続試行）があった場合に発生することがあります。</p>



<p class="wp-block-paragraph">つまり、データベースサーバー自体は最終的に <code>database system is ready to accept connections</code> の状態になりますが、Dockerのヘルスチェックがサーバーの準備が完全に整う前に接続を試み、上記の <code>FATAL</code> エラーを受け取ってしまい、それが原因でコンテナが <code>unhealthy</code> と判定されている可能性が高いです。<br><br><strong>解決策:</strong></p>



<p class="wp-block-paragraph">Dockerのヘルスチェック設定を調整し、データベースが完全に起動して接続可能になるまで、チェックを待つように設定を変更するのが最も有効な対策です。</p>



<p class="wp-block-paragraph"><strong>データベースサービス (db または postgresql) の <code>healthcheck</code> 設定を見つける:</strong> <br><code>services</code> のセクションにある、データベースコンテナに対応するサービス定義（通常は <code>db</code> という名前）を探します。その中に <code>healthcheck</code> というブロックがあるはずです。<br><br><strong>YAML</strong><br><code>services: </code><br><br><code>db: # ... その他の設定 ...</code><br><code>  healthcheck: # ここに設定があります </code><br>　　・<br><code>    test: ["CMD-EXEC", "pg_isready -U &lt;db_user&gt; -d &lt;db_name&gt;"] # 例 </code><br><code>    interval: 10s </code><br><code>    timeout: 5s </code><br><code>    retries: 5 </code><br><code>    start_period: 30s # &lt;-- この値を調整します</code></p>



<p class="wp-block-paragraph"><strong><code>docker-compose.yml</code> を開く:</strong> Difyを起動するために使用している <code>docker-compose.yml</code> ファイルをテキストエディタで開きます。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#dddddd"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon has-background has-light-grey-background-color">
<p class="wp-block-paragraph">docker-compose.yamlを確認した所、「<code>start_period:</code>」の設定がありません。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph"><code>start_period</code> が指定されていない場合、コンテナが起動を開始すると同時にヘルスチェックが始まります。今回のデータベースのログで見たように、起動直後の一時的な準備期間中に接続を試みると <code>FATAL: the database system is starting up</code> のようなエラーが発生することがあります。</p>



<p class="wp-block-paragraph"><code>interval: 1s</code> と非常に短い間隔でチェックが実行されるため、データベースが完全に準備できる前に多くのチェックが走ってしまい、すぐにリトライ回数（<code>retries: 60</code>）を使い果たして <code>unhealthy</code> と判定されてしまう可能性が高いです。</p>



<p class="wp-block-paragraph"><strong>解決策:</strong></p>



<p class="wp-block-paragraph"><code>start_period</code> を追加し、必要に応じて <code>interval</code> も調整しましょう。</p>



<ol class="wp-block-list">
<li><strong><code>healthcheck</code> 設定に <code>start_period</code> を追加する:</strong> データベースが起動して準備ができるまでの猶予期間として、<code>start_period</code> を設定します。<br>例えば <code>30s</code> または <code>60s</code> (30秒または60秒) を指定します。 <br><strong>YAML</strong><br><code>services: </code><br><code>db: # ... その他の設定 ... </code><br><br><code>  healthcheck: </code><br><code>    test: [ 'CMD', 'pg_isready', '-h', 'db', '-U', '${PGUSER:-postgres}', '-d', '${POSTGRES_DB:-dify}' ] </code><br><code>    interval: 5s # 例: 毎秒ではなく5秒ごとにチェックに緩和 </code><br><code>    timeout: 3s </code><br><code>    retries: 10 # 例: リトライ回数を調整 (intervalを長くすればretriesは少なくても良い) </code><br><code>    start_period: 60s # &lt;- この行を追加 (例: 60秒待つ)</code> <br><br><strong>ポイント:</strong> <code>start_period</code> の間は、ヘルスチェックが失敗してもコンテナは <code>starting</code> 状態のままとなり、<code>unhealthy</code> とは判定されません。<code>start_period</code> が経過した後に初めて、ヘルスチェックの失敗が <code>unhealthy</code> の判定に使われます。</li>



<li><strong><code>interval</code> も少し長めにすることをお勧めします:</strong> <code>interval: 1s</code> は開発時などに素早く確認したい場合には便利ですが、本番に近い環境や安定性を重視する場合は <code>5s</code> や <code>10s</code> に設定することが一般的です。これにより、データベースへの不要な負荷も軽減されます。</li>



<li><strong><code>docker-compose.yml</code> を保存する。</strong></li>



<li><strong>Docker Compose を再起動する:</strong> 変更を反映させるために、コンテナを再作成して起動します。</li>
</ol>
</div></div>



<p class="wp-block-paragraph">アドバイス通りに、編集して再度「docker compose up -d」を実行すると、正常になりました。<br>いやぁ～、AIさまさま、ですね～<br>おそらく、ネット検索では、解決できなかったと思います。<br>ただし、古いPCだったのが、一番の原因かもしれません。<br>５年ほど前のPCでは、このエラーはでなかったので、レアなケースかもしれませんが、AIの利用例として紹介しました。</p>



<h2 class="wp-block-heading"><span id="toc6">Dify起動</span></h2>



<h3 class="wp-block-heading"><span id="toc7">初期画面</span></h3>



<p class="wp-block-paragraph">「docker compose up」が正常に終了すると、Webブラウザで「http://localhost/install」へアクセスすると「dify」の初期設定が開きます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="755" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-800x755.png" alt="" class="wp-image-11052" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-800x755.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-500x472.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-300x283.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-768x725.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h3 class="wp-block-heading"><span id="toc8">Difyの動作と試用</span></h3>



<p class="wp-block-paragraph">とりあえず、起動しました。<br>以前このサイトでも説明していますが、<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc1">簡単なチャットボットを作成</a>し試してみます。<br>LLMモデルはオンラインの「gemini」を登録し、動作を確認できました。<br>オンラインであれば、「LM Studio」や「Ollama」など、ローカルLLMを利用するアプリは必要ないので、すぐに確認できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="571" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-800x571.png" alt="" class="wp-image-11056" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-800x571.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-500x357.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-300x214.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-768x548.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try.png 1577w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc9">Difyを自動起動</span></h2>



<p class="wp-block-paragraph"><span class="marker-under">Difyを動作させるには、Dockerが起動していなくてはいけません。</span><br>それには、WSL上で、ubuntuも起動している必要があります。<br>手動でやる場合、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">・windowsターミナル起動<br>・wslコマンドで、ubuntuターミナル起動<br>・ubuntuターミナルでカレントディレクトリを、Difyのクローンディレクトリに移動<br>・「docker compose up -d」 コマンド実行</p>
</blockquote>



<p class="wp-block-paragraph">このような手順が必要ですが、問題なのは、<span class="marker-under-red">ターミナルを閉じるとdockerも終了してしまう</span>ことです<br>Difyを使うには、dockerが起動していなくてはいけません。<br>windowsアプリの「docker desktop」であれば、標準で自動起動設定だったと思いますし、起動後もシステムトレイのアイコンで起動が確認できます。右ボタンで状態確認や終了も簡単です。<br>ubuntu経由の場合には、GUIでの確認ができないので、ここが面倒なところですね～。<br>自動起動方法をいろいろ調べると、windowsバッチファイルを作成し、スタートアップフォルダに登録する事で、windows起動時に、自動起動できそうです。<br>ただ、<br>「コマンドプロンプト　⇒　ubuntuターミナル　⇒　docker」<br>のタスクが必要で、<span class="marker-under-red">ターミナルは開いた状態にしておく</span>必要があります。<br>このようなバッチファイルを作りたいですが、どんなコードにすればいいのか・・？<br>うまいコードを考え付かなかったので、difyの試しもかねて起動しているチャットボットで設定しているgeminiに考えてもらいました。</p>



<pre class="wp-block-code has-black-color has-watery-yellow-background-color has-text-color has-background has-link-color wp-elements-194"><code>@echo off
title Starting Dify via WSL

echo Starting WSL and navigating to ~/dify/docker...
echo Running 'docker compose up -d'...
echo WSL window will remain open after commands.

REM WSLを起動し、bashシェル内でコマンドを実行します。
REM cd ~          : ホームディレクトリに移動 (念のため)
REM cd ./dify/docker : dify/docker ディレクトリに移動
REM docker compose up -d : docker compose をバックグラウンドで起動
REM exec bash     : 上記コマンド実行後、インタラクティブなbashシェルを開始して終了させない
wsl.exe -e bash -c "cd ~/dify/docker &amp;&amp; docker compose up -d &amp;&amp; echo '--- Dify containers started (or attempted to start) ---' &amp;&amp; exec bash"

echo WSL window launched. This batch window can be closed if desired.
REM pause REM Optionally uncomment this line to keep the batch window open until a key is pressed</code></pre>



<p class="wp-block-paragraph">すごいです。<br>ほとんど実際の起動には影響がない「REM」や「echo」文がほとんどですが、<br>「REM」文を使っての説明文や、「echo」での実行中のメッセージにも手抜きがないですね！<br>このコードをコピーしてエディターで、「start_dify.bat」というファイルで保存しました。<br>バッチファイルの単独実行では問題ありませんでした。<br>後はこのファイルのショートカットを、スタートアップフォルダへコピーするだけです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">・上記の作成したバッチファイルを、適当は場所へ保存します<br>　私は、ユーザーフォルダ「C:\Users\「ユーザー」」へ保存しました。<br>・次に、このファイルのショートカットを作成します。<br>・このショートカットを「スタートアップフォルダ」へ保存します。<br>　スタートアップフォルダは、エクスプローラーのアドレスバーへ「shell:startup」と入力すると開くことができます。</p>
</blockquote>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-top"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="622" height="989" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder.png" alt="" class="wp-image-11070 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder.png 622w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder-500x795.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder-300x477.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">特に必須ではないですが、ターミナルは起動状態にさせるので邪魔になる場合、作成したショートカットファイルを、マウス右ボタンで「プロパティ」を開きます。<br>「プロパティ」の「ショートカット」タブの<span class="marker-under">「実行時の大きさ」を「最小化」</span>に設定すると、起動時にタスクバーに最小化状態で起動できます。</p>
</div></div>



<p class="wp-block-paragraph">これで、再起動すると、自動起動したターミナルはタスクバーへ最小化状態ですが、環境によっては起動途中の場合があるので、すぐに使用したい場合には、一度開いてDockerの状態を確認したほうがいいと思います。<br>正常に起動できると、Webブラウザのアドレスバーに「http://localhost/install」でdifyが起動できます。<br>場合によっては、「http://localhost/signin」にリダイレクトされる場合もあります</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="732" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-800x732.png" alt="" class="wp-image-11073" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-800x732.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-500x458.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-300x275.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-768x703.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin.png 875w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">この画面が開くと、ローカルPCでは、Difyを利用する事ができますが、<span class="marker-under">今回はサーバーとして利用したい</span>ので、<span class="marker-under-red">LAN上の別のPCからのアクセスも必要</span>です。</p>



<h2 class="wp-block-heading"><span id="toc10">Difyをサーバー化して、他のPCからもアクセスさせる</span></h2>



<p class="wp-block-paragraph">同じLAN上であっても、「localhost」では、他のPCではアクセスできません。<br><a href="https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/#toc15">前回後半で少し話題にしました</a>が、「windowsホスト」「WSL(ubuntu)」「Docker」と複雑な通信環境なので面倒です。</p>



<h3 class="wp-block-heading"><span id="toc11">DifyPCのIPアドレス調査</span></h3>



<p class="wp-block-paragraph">IPアドレスは、windowsターミナルでは「ipconfig」コマンド<br>WSLターミナルでは、「ip addr」で確認できます。<br>この情報を、Aiに添付して聞いてみました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph">詳細な情報ありがとうございます！ipconfig と ip a の結果から状況がより明確になりました。<br>原因の特定<br>・Windows ホスト:<br>　あなたの Windows PC の Wi-Fi アダプターには 192.168.0.94 という IP アドレスが割り当てられています。<br>　これはご自宅などの LAN 内の IP アドレスです。<br>・WSL (Ubuntu):<br>　Windows Subsystem for Linux (WSL) 環境内の Ubuntu には、eth0 インターフェースに 172.31.226.6 という IP アドレスが割り当てられています。<br>　これは WSL が使用する仮想ネットワーク内の IP アドレスです。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph">WSL2 環境で Docker コンテナを動かしている場合、Windows ホストからそのコンテナ内のサービスにアクセスするには、通常以下のいずれかのアドレスを使用します。<br>１．localhost: <br>　Windows ホストのブラウザで http://localhost/chat/&#8230;と入力する。<br>　WSL2 は localhost 経由でのポートフォワーディングをサポートしています。 <br>　（これが最も一般的な方法です）<br>２．WSL の IP アドレス: http://172.31.226.6/chat/&#8230;<br>　(今回アクセスできている方法)<br><br>・http://192.168.0.94/chat/&#8230; でアクセスできないのは、WSL2 と Docker のネットワークアーキテクチャ上、自然なことです。<br>サービスが Windows ホストの物理的な IP アドレスに直接公開されているわけではないためです。<br>・もし、LAN 内の他の PC (例: 192.168.0.100) からもこの Dify 環境にアクセスしたい場合は、追加の設定が必要になる可能性があります:<br><br>１．Windows ファイアウォールの設定: Windows のファイアウォールで、外部からのポート 80 (または Dify が使用しているポート) への着信接続を許可する必要があります。<br>２．ポートフォワーディング (状況による): WSL2 のネットワーク設定によっては、Windows ホストの 192.168.0.94 のポート 80 へのアクセスを、WSL の 172.31.226.6 のポート 80 へ転送する設定が必要になる場合があります。<br>これは 「netsh interface portproxy」 コマンドなどで設定できますが、まずは localhost や WSL の IP でアクセスできることを確認するのが先決です。<br><br>要約:<br>・Windows ホストからアクセスする場合: http://localhost/chat/… または http://172.31.226.6/chat/… を使用してください。<br>・http://192.168.0.94/chat/&#8230; でアクセスできないのは仕様であり、問題ではありません。<br></p>
</div></div>



<h3 class="wp-block-heading"><span id="toc12">Windowsのアドレスからは、アクセスできない。</span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">http://localhost や http://172.31.226.6 からはアクセスできています。<br>今回は、LAN上の別のPCからhttp://192.168.0.94 にアクセスしたいため、自分PCで試したら、アクセスできませんでした</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph">なるほど、LAN上の他のPCからアクセスできるようにしたい、ということですね。承知いたしました。</p>



<p class="wp-block-paragraph">ご自身のPC (<code>192.168.0.94</code>) から <code>http://192.168.0.94/chat/...</code> にアクセスできなかったのは、まさにその設定がまだされていないためです。Windowsホストのネットワーク(<code>192.168.0.x</code>) と WSL内部のネットワーク (<code>172.31.x.x</code>) は分離されており、外部（LANを含む）から直接WSL内のサービスにアクセスするには、「ポートフォワーディング（ポート転送）」という設定が必要になります。</p>



<p class="wp-block-paragraph"><strong>設定手順</strong></p>



<p class="wp-block-paragraph">以下の手順を<strong>管理者権限</strong>で実行してください。</p>



<ol class="wp-block-list">
<li><strong>Difyが使用しているポートを確認 (重要):</strong>
<ul class="wp-block-list">
<li>まず、DifyがWSL内でどのポート番号で待ち受けているか確認します。HTTPなので通常は <strong>80番</strong> ですが、Dockerの設定によっては異なるポート（例: 3000番など）がホスト(WSL)に公開されている場合があります。</li>



<li>Docker Composeを使っている場合は <code>docker-compose.yml</code> ファイルの <code>ports:</code> セクションを確認してください。例えば <code>ports: - "80:80"</code> や <code>ports: - "3000:80"</code> のようになっています。左側の数字がWSL側で公開されているポート番号です。</li>



<li><code>docker ps</code> コマンドを実行しても確認できます。<code>PORTS</code> 列に <code>0.0.0.0:80-&gt;80/tcp</code> や <code>0.0.0.0:3000-&gt;80/tcp</code> のように表示されます。<code>0.0.0.0:</code> の後の数字がWSL側で公開されているポート番号です。</li>



<li><strong>以降の説明では、Difyがポート <code>80</code> を使用していると仮定します。もし異なるポート（例: 3000）だった場合は、コマンド内の <code>80</code> をその番号に読み替えてください。</strong></li>
</ul>
</li>



<li><strong>Windows ファイアウォールでポートを開放:</strong>
<ul class="wp-block-list">
<li>LAN内の他のPCからのアクセスを許可するために、WindowsのファイアウォールでDifyが使用するポート（ここでは80番）を開ける必要があります。</li>



<li><strong>管理者としてPowerShellを開き</strong>、以下のコマンドを実行します。<br><code>powershell New-NetFirewallRule -DisplayName "Allow Dify Access from LAN" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code><br><em>(もしコマンドプロンプトを使いたい場合は、管理者として開き <code>netsh advfirewall firewall add rule name="Allow Dify Access from LAN" dir=in action=allow protocol=TCP localport=80</code> を実行)</em></li>
</ul>
</li>



<li><strong>ポートフォワーディングの設定:</strong>
<ul class="wp-block-list">
<li>Windowsホスト (<code>192.168.0.94</code>) のポート80に来た通信を、WSL (<code>172.31.226.6</code>) のポート80に転送するように設定します。</li>



<li><strong>管理者としてPowerShell（またはコマンドプロンプト）を開き</strong>、以下のコマンドを実行します。 <code>powershell netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code>
<ul class="wp-block-list">
<li><code>listenport=80</code>: Windows側で外部からの接続を待ち受けるポート番号。</li>



<li><code>listenaddress=0.0.0.0</code>: Windowsの全てのIPアドレス（<code>192.168.0.94</code> を含む）で待ち受ける設定。特定のIP (<code>192.168.0.94</code>) だけを指定することも可能です。</li>



<li><code>connectport=80</code>: 転送先のWSL内でDifyが待ち受けているポート番号。</li>



<li><code>connectaddress=172.31.226.6</code>: 転送先のWSLのIPアドレス。</li>
</ul>
</li>
</ul>
</li>



<li><strong>動作確認:</strong>
<ul class="wp-block-list">
<li>設定後、まずご自身のPCのブラウザから <code>http://192.168.0.94/chat/84aj9r6azPSYjXt8</code> にアクセスできるか試してください。 (ポートが80以外の場合は <code>http://192.168.0.94:ポート番号/chat/...</code> のように指定)</li>



<li>アクセスできれば、LAN内の他のPCからも同じアドレス (<code>http://192.168.0.94/chat/...</code>) でアクセスできるはずです。</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph"><strong>注意点:</strong></p>



<ul class="wp-block-list">
<li><strong>WSLのIPアドレスの変動:</strong> WSLを再起動すると、WSLのIPアドレス (<code>172.31.226.6</code>) が変わる可能性があります。もしアクセスできなくなった場合は、<code>ip a</code> コマンドでWSLの新しいIPアドレスを確認し、手順3のポートフォワーディング設定を一度削除して再作成する必要があります。
<ul class="wp-block-list">
<li>削除コマンド: <code>netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0</code></li>



<li>再作成コマンド: (新しい <code>connectaddress</code> を指定して再度実行)</li>
</ul>
</li>



<li><strong>管理者権限:</strong> ファイアウォールとポートフォワーディングの設定には管理者権限が必要です。</li>



<li><strong>ポート番号:</strong> Difyが使用しているポート番号を正確に確認し、コマンド内の <code>80</code> を適宜修正してください。</li>
</ul>



<p class="wp-block-paragraph">この手順で、LAN内の他のPCからアクセスできるようになるはずです。試してみてください。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc13"><em>docker ps コマンドで実行中のコンテナーを提出</em></span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">docker ps では下記になっています。<br>$ docker ps<br>・・<br>・<br>・</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p class="wp-block-paragraph"><code>docker ps</code> の出力結果、ありがとうございます。</p>



<p class="wp-block-paragraph">コンテナ <code>docker-nginx-1</code> の <code>PORTS</code> 列にご注目ください。</p>



<pre class="wp-block-code"><code>PORTS
0.0.0.0:80-&gt;80/tcp, &#91;::]:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp, &#91;::]:443-&gt;443/tcp</code></pre>



<p class="wp-block-paragraph">これは、以下のことを意味しています。</p>



<ul class="wp-block-list">
<li><code>0.0.0.0:80-&gt;80/tcp</code>: WSLホスト（<code>172.31.226.6</code> など）の <strong>ポート 80</strong> (HTTP) へのTCP接続を、<code>docker-nginx-1</code> コンテナ内部のポート 80 に転送する。</li>



<li><code>[::]:80-&gt;80/tcp</code>: 上記のIPv6版。</li>



<li><code>0.0.0.0:443-&gt;443/tcp</code>: WSLホストの <strong>ポート 443</strong> (HTTPS) へのTCP接続を、<code>docker-nginx-1</code> コンテナ内部のポート 443 に転送する。</li>



<li><code>[::]:443-&gt;443/tcp</code>: 上記のIPv6版。</li>
</ul>



<p class="wp-block-paragraph"><code>docker-web-1</code> コンテナ自体は内部的にポート 3000 を使っていますが、外部（WSLホスト）からのアクセスは <code>docker-nginx-1</code> コンテナがポート 80 (HTTP) と 443 (HTTPS) で受け付けています。Nginx がリバースプロキシとして動作し、リクエストを <code>docker-web-1</code> や <code>docker-api-1</code> などに振り分けている構成です。</p>



<p class="wp-block-paragraph"><strong>結論</strong></p>



<p class="wp-block-paragraph">あなたが LAN 上の他の PC からアクセスしたい <strong>HTTP</strong> のポート番号は <strong>80</strong> です。</p>



<p class="wp-block-paragraph">したがって、先ほどのポートフォワーディング設定のコマンドは、ポート番号 <code>80</code> を使って実行してください。</p>



<ol class="wp-block-list">
<li><strong>ファイアウォール開放 (ポート 80):</strong> <code>New-NetFirewallRule -DisplayName "Allow Dify Access from LAN (HTTP)" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code></li>



<li><strong>ポートフォワーディング設定 (ポート 80):</strong><br><code>powershell netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code></li>
</ol>



<p class="wp-block-paragraph">これで、 <code>http://192.168.0.94</code> (ポート80は省略可能) でアクセスできるはずです。</p>



<p class="wp-block-paragraph">もし将来的にHTTPS (<code>https://192.168.0.94</code>) でアクセスしたい場合は、同様にポート <code>443</code> 用のファイアウォールルールとポートフォワーディング設定を追加する必要があります。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc14">ファイヤーウォールとポートフォワーディング設定</span></h3>



<p class="wp-block-paragraph"><span class="marker-under-red">ファイアウォールを開放</span>し、<span class="marker-under-red">ポートフォワーディング設定をしろ</span>、のアドバイスです。<br>教わったコードを実行してみます。</p>



<h4 class="wp-block-heading"><span id="toc15">１．ファイアウォール開放 (ポート 80):</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-195"><code>PowerShell
PS C:\Users\hoge2&gt;　New-NetFirewallRule -DisplayName "Allow Dify Access from LAN (HTTP)" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code></pre>



<p class="wp-block-paragraph">コントロールパネル→システムとセキュリティ→windows Defender ファイアウォール→詳細設定<br>受信の規則で<br>コマンドで指定したAllow Dify Access from LAN(HTTP)が設定されているのが、確認できます。<br>コマンドではなく、この画面で、GUI設定する事もできます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="638" src="https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-800x638.png" alt="" class="wp-image-11155" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-800x638.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-500x399.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-300x239.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-768x612.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h4 class="wp-block-heading"><span id="toc16">2．ポートフォワーディング設定 (ポート 80):</span></h4>



<p class="wp-block-paragraph">管理者権限のPowerShell の、「netsh」コマンドで設定します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-196"><code>PowerShell（管理者）
PS C:\Users\hoge2&gt; netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code></pre>



<p class="wp-block-paragraph">「netsh interface portproxy show v4tov4」で確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-197"><code>PS C:\Users\hoge2&gt; netsh interface portproxy show v4tov4
ipv4 をリッスンする:         ipv4 に接続する:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         80          172.31.226.6    80</code></pre>



<h4 class="wp-block-heading"><span id="toc17">アクセスできた～</span></h4>



<p class="wp-block-paragraph">これで無事に「http://192.168.0.94/instal」でアクセスできました。<br>LAN上の別のPCからも、アクセス確認できました。<br>おそらく、ネット検索では、ここまで的確なアドバイスを見つけるのは至難の業だと思います。<br>ちょっと前までは、言語生成AIをうまく使うには、プロンプトが重要だと言われていましたが、最近の言語生成AIはかなり言語の理解力が向上していると感じます。<br>上記のじじぃの質問でもわかりますが、ほとんど「プロンプト」など意識していません。<br>とにかくわからない事やPCからの出力を、自分の言葉で質問しているだけです。<br>それでもかなり的確な回答をくれます。<br>たまには、間違った回答もありますが、それでエラーが発生した場合、<span class="marker-under">そのエラーやログをそのまま突っ込めば</span>、新たな回答をくれます。<br>すごい時代になりました。</p>



<h2 class="wp-block-heading"><span id="toc18">DifyにLLMを設定して、カスタムチャット環境を構築</span></h2>



<p class="wp-block-paragraph">やっとDifyサーバーが起動できました。</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="407" height="690" src="https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm.png" alt="" class="wp-image-11167 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm.png 407w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm-300x509.png 300w" sizes="(max-width: 407px) 100vw, 407px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">次に、このDifyにLLMモデルを設定することで、チャットボットをはじめカスタムLLMアプリを開発する事ができるようになります。<br>左図の例では、<br>一番上の「Gemini」はオンラインで公開されているLLMです。<br>二番目は、「LM Studio」でダウンロードしたローカルLLMです。<br>三番目は、「Ollama」で読み込んでいるローカルLLMです。<br>このように、「Dify」ではオンライン、ローカルあまり意識せず、使用するLLMを自由にカスタマイズできます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc19">DifyにLLMの設定方法</span></h3>



<p class="wp-block-paragraph">ネット上でも、多くの情報があると思いますが、このサイトでも以前の記事で紹介しています。</p>



<h4 class="wp-block-heading"><span id="toc20"><a href="https://www.kazuban.com/blog/dify-lmstudio/#toc3">オンラインLLMの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc3" title="ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。</div><div class="blogcard-snippet internal-blogcard-snippet">LM StudioとDifyをローカルで連携させたのでレポートします。記事を書いている時に、Dify設定にLM Studioのプラグインを発見したので、そちらの設定も追加してます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.23</div></div></div></div></a>
</div></figure>



<h4 class="wp-block-heading"><span id="toc21"><a href="https://www.kazuban.com/blog/dify-lmstudio/#toc6">LM Studio モデルの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc6" title="ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。</div><div class="blogcard-snippet internal-blogcard-snippet">LM StudioとDifyをローカルで連携させたのでレポートします。記事を書いている時に、Dify設定にLM Studioのプラグインを発見したので、そちらの設定も追加してます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.23</div></div></div></div></a>
</div></figure>



<h4 class="wp-block-heading"><span id="toc22"><a href="https://www.kazuban.com/blog/dify-ollama/#toc6">Ollama　モデルの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-ollama/#toc6" title="DifyとOllamaを連携させ、ローカルチャットボット環境を作る" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">DifyとOllamaを連携させ、ローカルチャットボット環境を作る</div><div class="blogcard-snippet internal-blogcard-snippet">前回はLM StudioとDifyの連携でしたが、今回は、Ollamaと連携させてみました。どちらもそれぞれ特徴があるので、使い分けてもいいと思います。私的には、スタンドアローンで使うならLM Studio。Difyとの連携であればOllama かな？と思っています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.30</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading"><span id="toc23">あとがき</span></h2>



<p class="wp-block-paragraph">Windowsアプリ「Docker Desktop」を使わず、「Ubuntu」にインストールした「Docker Engine」で「Dify」をサーバー化する方法を紹介しました。<br>「Docker Desktop」はWindows環境向けのツールであり、構築の手間は比較的少ないですが、Ubuntuサーバー上で動作させる際は、仮想化環境の設定やネットワーク通信の複雑さが生じるため、トラブルシューティングがやや難しくなります。<br>今回は、AIのアシストにより、Difyサーバーを構築することができました。<br>設定プロセスだけでなく、AIを活用した実践例として、このやり取りもご参考にしていただければ幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WSLのUbuntu24.04にDockerEngineをインストール。</title>
		<link>https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 11:59:02 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[ubuntu24]]></category>
		<category><![CDATA[wsl]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10895</guid>

					<description><![CDATA[以前の記事では、「WSL」を構築し、Windowsアプリの「Docker Desktop」をインストールし、そこに「Dify」をクローン化して起動させました。 この状態では、「WSL」環境には、別途Linuxはインストー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">以前の記事では、「WSL」を構築し、Windowsアプリの「Docker Desktop」をインストールし、そこに「Dify」をクローン化して起動させました。</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-install/" title="話題のDifyをインストールしてみた。失敗談あり。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">話題のDifyをインストールしてみた。失敗談あり。</div><div class="blogcard-snippet internal-blogcard-snippet">話題のDifyをローカルインストールしてみました。普通にやれば何てことない作業ですが、余計な事したので時間がかかってしましました。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.15</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">この状態では、「WSL」環境には、別途Linuxはインストールされていません。<br>「wsl -l -v」コマンドで確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-198"><code>PS C:\Users\hoge&gt; wsl -l -v
  NAME              STATE           VERSION
* docker-desktop    Running         2</code></pre>



<p class="wp-block-paragraph">現在は、仮想環境として「Docker Engine」のみが動作し、そのコンテナとして「Dify」が動作しています。<br>この状態でも、「Dify」を利用する場合には問題ありませんが、せかっくの「WSL」なので「ubuntu」環境に「Docker」を構築し、「Dify」コンテナを構築し直そうと思います。<br>また、windowsアプリ「Docker Desktop」は、ライセンス的に完全オープンではありませんし、「Dify」もLinuxとの組み合わせのほうが、貧弱スペックマシンでは、パフォーマンスが向上しそうな気がしています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Docker Desktop と WSLを完全アンインストール</a><ol><li><a href="#toc2" tabindex="0">Docker Desktop のアンインストール</a></li><li><a href="#toc3" tabindex="0">wslを完全に削除する</a></li><li><a href="#toc4" tabindex="0">ハードディスクのチェック</a></li></ol></li><li><a href="#toc5" tabindex="0">WSLにUbintu24.04をインストール</a><ol><li><a href="#toc6" tabindex="0">Windows新しいアカウント作成</a></li><li><a href="#toc7" tabindex="0">Ubuntu24.04インストール</a></li><li><a href="#toc8" tabindex="0">ユーザーとパスワード設定</a></li><li><a href="#toc9" tabindex="0">root パスワード設定</a></li><li><a href="#toc10" tabindex="0">パスワード入力なしで「sudo」を実行する</a></li></ol></li><li><a href="#toc11" tabindex="0">Docker Engine をインストール</a><ol><li><a href="#toc12" tabindex="0">古いバージョンのアンインストール</a></li><li><a href="#toc13" tabindex="0">Docker Engine インストール手順（Ubuntu 編）</a></li><li><a href="#toc14" tabindex="0">コンテナの削除</a></li></ol></li><li><a href="#toc15" tabindex="0">WSL、Ubuntu24.04、Docker Engine、環境完了</a><ol><li><a href="#toc16" tabindex="0">ubuntu、docker の通信状態</a><ol><li><a href="#toc17" tabindex="0">Windowsターミナルで、ipconfig コマンド</a></li><li><a href="#toc18" tabindex="0">wslで、ip a コマンド</a></li></ol></li><li><a href="#toc19" tabindex="0">ネットワーク環境・・複雑ですね</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Docker Desktop と WSLを完全アンインストール</span></h2>



<p class="wp-block-paragraph">再度、クリーンな状態から再インストールしたい場合もあると思います<br>gemini君に教えてもらった、クリーンインストール方法をメモしておきます。</p>



<h3 class="wp-block-heading"><span id="toc2">Docker Desktop のアンインストール</span></h3>



<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">★Docker Desktopのアンインストール<br>1. 「設定」アプリを開く:<br>　Windowsキー + Iキーを押すか、スタートメニューから「設定」を選択します。<br>2. 「アプリ」を開く:<br>　「アプリ」をクリックします。<br>3. 「アプリと機能」を開く:<br>　左側のメニューから「アプリと機能」を選択します。<br>4. Docker Desktopを選択してアンインストール:<br>　アプリの一覧から「Docker Desktop」を見つけて選択し、「アンインストール」をクリックします。<br>　画面の指示に従ってアンインストールを完了させます。</p>



<p class="wp-block-paragraph">★ 関連するファイルの削除 (オプション)<br>Docker Desktopのアンインストール後、残りのファイルを手動で削除することで、より完全にアンインストールすることができます。</p>



<pre class="wp-block-code"><code>1. 以下のフォルダを削除:
　`C:\Program Files\Docker`
　`C:\ProgramData\DockerDesktop`
　`C:\Users\&lt;ユーザー名&gt;\AppData\Local\Docker`
　`C:\Users\&lt;ユーザー名&gt;\AppData\Roaming\Docker`
2. Hyper-Vを無効化 (Docker DesktopでHyper-Vを使用していた場合):
　「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。
　「Hyper-V」のチェックボックスをオフにして、「OK」をクリックします。
　コンピュータを再起動します。
3. WSL 2を無効化 (Docker DesktopでWSL 2を使用していた場合):
　管理者としてPowerShellを開きます。

　`wsl --unregister docker-desktop`と`wsl --unregister docker-desktop-data`コマンドを実行します。
　「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。
　「Linux用Windowsサブシステム」のチェックボックスをオフにして、「OK」をクリックします。
　コンピュータを再起動します。
4. 環境変数の削除 (Docker関連の環境変数を設定していた場合):
　「システム環境変数の編集」を検索して開きます。
　「環境変数」ボタンをクリックします。
　ユーザー環境変数とシステム環境変数から、Dockerに関連する変数を削除します。
★注意点:
　上記のフォルダやファイルは、環境によって異なる場合があります。
　レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。
　Docker Toolboxを使用していた場合は、VirtualBoxもアンインストールする必要があります。</code></pre>
</blockquote>



<h3 class="wp-block-heading"><span id="toc3">wslを完全に削除する</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code>★ WSLディストリビューションのアンインストール<br>　WSLに、既にLinuxディストリビューションがインストールされている場合、<br>　まず、これらを個別にアンインストールします。<br>1. 管理者権限でPowerShellまたはコマンドプロンプトを開きます。<br>2. `wsl --list --verbose` または `wsl -l -v` コマンドを実行し、インストールされているディストリビューションの一覧と名前を確認します。<br>3. `wsl --unregister &lt;ディストリビューション名&gt;` コマンドを実行します。<br>　例：`wsl --unregister Ubuntu-24.04`<br>4. 他のディストリビューションに対しても同様の手順を繰り返します。<br>**補足:**<br>　ディストリビューションをアンインストールすると、そのディストリビューションに関連付けられたすべてのデータが削除されます。<br>　必要なデータがある場合は、事前にバックアップしてください。<br>　Microsoft Storeからインストールしたディストリビューションは、通常のWindowsアプリと同様にアンインストールすることも可能です。</code></pre>



<p class="wp-block-paragraph">★WSL機能の無効化<br>　ディストリビューションをアンインストールした後、WSL機能を完全に無効化することもできます。<br>1. 「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。<br>2. 「Windows Subsystem for Linux」と「仮想マシン プラットフォーム」のチェックボックスをオフにします。<br>3. 「OK」をクリックし、コンピューターを再起動します。<br>**補足:**<br>　WSL機能を無効化すると、すべてのWSL関連機能が利用できなくなります。<br>　Hyper-Vを有効にしている場合は、Hyper-Vも無効にする必要があります。<br>**その他の注意点**<br>　 WSL関連のファイルやフォルダが残っている場合は、手動で削除することも可能です。ただし、システムの重要なファイルを誤って削除しないように注意してください。<br>　レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。</p>



<p class="wp-block-paragraph">これらの手順に従うことで、WSLを完全に削除することができます。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc4">ハードディスクのチェック</span></h3>



<p class="wp-block-paragraph">古いPCにインストールしていると、ハードディスクの調子が悪いのか？WSLが正常にインストールできない事がありました。<br>Windows付属のチェッカーで回復する可能性がありますので、メモしておきます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code>★システムファイルチェッカー（SFC）の実行:<br>システムファイルの破損を修復します。<br>管理者権限でコマンドプロンプトを開き、<br>「sfc /scannow」と入力して実行。</code></pre>



<pre class="wp-block-code"><code>★DISMコマンドの実行:<br>SFCで修復できないシステムイメージの破損を修復します。<br>管理者権限でコマンドプロンプトを開き、<br>「DISM /Online /Cleanup-Image /RestoreHealth」と入力して実行。</code></pre>
</blockquote>



<h2 class="wp-block-heading"><span id="toc5">WSLにUbintu24.04をインストール</span></h2>



<p class="wp-block-paragraph">「Docker Desktop」と「WSL」のアンインストール方法を紹介しました。<br>今回は、WSLに「Ubuntu24.04」を構築し、「Docker Engine」環境を構築しますが、まだ「Docker Desktop」の環境は残しておきたいので、Windowsに新しいユーザーアカウントを作成し新しい環境で作業したいと思います。</p>



<h3 class="wp-block-heading"><span id="toc6">Windows新しいアカウント作成</span></h3>



<p class="wp-block-paragraph">新しいユーザーの作成方法は、ネット上に情報がありますので、検索してみてください。<br>新しいユーザーでサインインし、新たに「WSL」環境を構築する場合では、<a href="https://www.kazuban.com/blog/dify-install/#toc2">こちらを参考してしてください。</a><br>新しいユーザーでサインインした初期状態では「wsl -l -v」で確認すると、なにも環境がないのがわかります。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-199"><code>PS C:\Users\hoge2&gt; wsl -l -v
Linux 用 Windows サブシステムにインストールされているディストリビューションはありません。
この問題を解決するには、以下の手順に従ってディストリビューションをインストールしてください:

'wsl.exe --list --online' を使用して利用可能な配布を一覧表示する
および 'wsl.exe --install &lt;Distro&gt;' を使用してインストールしてください。</code></pre>



<h3 class="wp-block-heading"><span id="toc7">Ubuntu24.04インストール</span></h3>



<p class="wp-block-paragraph">いよいよインストールを始めますが、２つの方法<br><span class="marker">「Microsoft Store 経由」</span>と<span class="marker">「wsl コマンド経由」</span>があります。<br>どちらでもいいと思いますが、アンインストールなどアプリの管理は「Microsoft Store 経由」のほうが簡単です</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="685" height="229" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall.png" alt="" class="wp-image-10920" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall.png 685w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall-500x167.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall-300x100.png 300w" sizes="(max-width: 685px) 100vw, 685px" /></figure>



<p class="wp-block-paragraph">インストール自体はどちらも、簡単です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>「Microsoft Store 経由」</strong><br>・Microsoft Store を開き、「Ubuntu 24.04」を検索。<br>・ 「入手」をクリック。<br>・ インストールが完了したら、「起動」をクリックします。</p>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code><strong>「wsl コマンド経由」</strong><br>・PowerShell またはコマンドプロンプトを管理者権限で開く。<br>・「wsl --list --online」　でLinux ディストリビューションが一覧表示できる<br>・希望のディストリビューションをインストール<br>・「wsl --install -d Ubuntu-24.04」<br>・インストールが完了後「Ubuntu」起動</code></pre>
</blockquote>



<h3 class="wp-block-heading"><span id="toc8">ユーザーとパスワード設定</span></h3>



<p class="wp-block-paragraph">「ubuntu」の起動は、<strong>「Microsoft Store 経由」</strong>であれば、「スタートメニュー」にアイコンが作成されています。<br><strong>「wsl コマンド経由」</strong>の場合は、<span class="marker-under-red">ターミナルを起動し「wsl」コマンド</span>で起動できます。<br>「ubuntu」の最初の起動では、Unixユーザ名の作成を求められます。<br>特に、<span class="marker-under">WIndowsユーザーと同じ必要はない</span>ので、適当なユーザー名とパスワードを設定します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-200"><code>・
Enter new UNIX username: hoge2
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
・</code></pre>



<h3 class="wp-block-heading"><span id="toc9"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc4">root パスワード設定</a></span></h3>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc4">こちらでもレポートしましたが、</a>「ubuntu」では管理権限が必要な場合には「sudo」コマンドで行い、「root」ユーザーは極力使わないを基本にしているみたいです。<br>したがってデフォルトでは「root」パスワードは設定されていません。<br>ただ、管理者権限が必要なコマンドやフォルダのアクセスなど、設定やメンテナンスの場合一回一回「sudo」を使うのは面倒です。<br>「root」での作業は、注意が必要ですが、管理者コマンドの連続の場合、筆者は使用しています。<br>その場合、筆者は「root」パスワードを設定しています。<br>「root」パスワードは、「<strong>sudo passwd root</strong>」コマンドで設定できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-201"><code>$ <strong>sudo passwd root</strong>
&#91;sudo] password for hoge2:
New password:
Retype new password:
passwd: password updated successfully</code></pre>



<p class="wp-block-paragraph">設定されました。<br>「root」になりたい時には、「<strong>su</strong>」コマンドを使用します。<br>「root」になると<span class="marker-under">「$」プロンプトが「#」に換わります</span>。<br>元のユーザに戻るには「exit」コマンドを実行します。<br>現在のユーザーは<strong>「whoami」</strong>で確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-202"><code>$ su
Password:
# whoami
root
# exit
exit
$ whoami
hoge2</code></pre>



<h3 class="wp-block-heading"><span id="toc10"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc5">パスワード入力なしで「sudo」を実行する</a></span></h3>



<p class="wp-block-paragraph">通常は「sudo」コマンドを使用しますが、いちいちパスワードを聞かれるので、結構面倒です。<br>パスワードなしで「sudo」を実行できる設定は「<strong>visudo</strong>」コマンドの特殊なエディターで設定します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-203"><code>$ sudo visudo
・
・
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
・
## Same thing without a password
%sudo  ALL=(ALL)       NOPASSWD: ALL
・
・</code></pre>



<p class="wp-block-paragraph">開いた設定ファイルに、<br>「<strong>%sudo ALL=(ALL) NOPASSWD: ALL</strong>」<br>この設定値を追加し上書き保存します。<br>この設定で、「sudo」グループのユーザーは「sudo」が実行でき、パスワードが不要になります。<br>ただし、「sudo」コマンドを実行できるのは、「sudoグループ」登録されているユーザーのみなので、現ユーザーを「suduグループ」に登録します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-204"><code>$ sudo usermod -aG sudo $USER
$ newgrp sudo</code></pre>



<p class="wp-block-paragraph">この設定で、現ユーザーは「sudoグループ」に登録され「sudo」コマンドが実行できます。</p>



<h2 class="wp-block-heading"><span id="toc11">Docker Engine をインストール</span></h2>



<p class="wp-block-paragraph">「ubuntu」を操作できるユーザー設定が完了したので、いよいよ「Docker Engine」をインストールしていきます。</p>



<h3 class="wp-block-heading"><span id="toc12">古いバージョンのアンインストール</span></h3>



<p class="wp-block-paragraph">古いバージョンがインストールされている可能性がある場合には、念のため次のコマンドを実行してアンインストールしておきます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-205"><code>$ sudo apt-get remove docker docker-engine docker.io containerd runc</code></pre>



<p class="wp-block-paragraph">完全に削除するには、次のコマンドでボリュームやイメージデータを削除します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-206"><code>$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd</code></pre>



<h3 class="wp-block-heading"><span id="toc13">Docker Engine インストール手順（Ubuntu 編）</span></h3>



<p class="wp-block-paragraph">・依存パッケージのインストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-207"><code>$ sudo apt-get update
$ sudo apt-get install -y ca-certificates curl gnupg lsb-release</code></pre>



<p class="wp-block-paragraph">・ディレクトリを作製し、Docker の公式 GPG 鍵を追加</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-208"><code>$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</code></pre>



<p class="wp-block-paragraph">・Docker リポジトリを追加</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-209"><code>$ echo \
  "deb &#91;arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
</code></pre>



<p class="wp-block-paragraph">・パッケージ更新＆インストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-210"><code>$ sudo apt-get update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>



<p class="wp-block-paragraph">・Docker の動作確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-211"><code>$ sudo docker run hello-world

↑ これで「Hello from Docker!」が出れば OK！</code></pre>



<p class="wp-block-paragraph">・dockerコマンド実行は、「sudo」 が必要ですが、実行ユーザーがdockerグループであれば、不要になります。<br>下記コマンドで、douckerグループに参加させます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-212"><code>$ sudo usermod -aG docker $USER
$ newgrp docker</code></pre>



<h3 class="wp-block-heading"><span id="toc14">コンテナの削除</span></h3>



<p class="wp-block-paragraph">動作確認で「hello-world」コンテナを作製しましたが、コンテナ削除操作を覚書しておきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-213"><code>★コンテナの一覧を表示
$ docker ps -a

★コンテナ削除
$ docker rm &lt;CONTAINER ID または NAMES&gt;

★hello-world イメージ自体を削除
★動作している場合に、エラーになるので、コンテナ削除後にイメージ削除
　 ※"hello-word"のCONTAINER IDを表示する
　 $ docker ps -a -q --filter ancestor=hello-world
$ docker rm $(docker ps -a -q --filter ancestor=hello-world)
$ docker rmi hello-world

★全てのコンテナと全てのコンテナイメージを削除
  -f オプションを付加すると、強制的に削除されるので注意
$ docker rm -f $(docker ps -a -q)
$ docker rmi -f $(docker images -a -q)

★ボリュームの削除: 全ボリュームを削除します。
$ docker volume rm $(docker volume ls -q)

★ネットワークの削除: ネットワークを削除します。
$ docker network rm $(docker network ls -q)

★キャッシュのクリア: 必要に応じて、Dockerのキャッシュをクリアします。
$ docker system prune -a

★すべての停止中コンテナと未使用イメージのみを一掃
　実行中のコンテナは削除しない
$ docker system prune</code></pre>



<h2 class="wp-block-heading"><span id="toc15">WSL、Ubuntu24.04、Docker Engine、環境完了</span></h2>



<p class="wp-block-paragraph">WSL、ubuntu、docker の環境が出来上がりました。<br>次に、dockerでDifyの環境をセットアップする予定ですが、windowsアプリの「docker Desktop」の場合は、ある程度アプリがやってくれそうですが、今回は「Ubuntu24.04」環境に「Docker」をインストールしたのでネットワーク環境が複雑になりそうな気がしています。</p>



<h3 class="wp-block-heading"><span id="toc16">ubuntu、docker の通信状態</span></h3>



<p class="wp-block-paragraph">windows環境とwsl環境で、通信状態を調べてみます。</p>



<h4 class="wp-block-heading"><span id="toc17">Windowsターミナルで、ipconfig コマンド</span></h4>



<pre class="wp-block-code"><code>PS C:\Users\hogehoge2&gt; ipconfig
Windows IP 構成
・
Wireless LAN adapter Wi-Fi:
   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240f:110:2717:1:f62b:3484:aafb:ade5
   一時 IPv6 アドレス. . . . . . . . . .: 240f:110:2717:1:b1bf:2b2:5d5d:2a98
   リンクローカル IPv6 アドレス. . . . .: fe81::84c1:d56e:ece:1ad8%15
   IPv4 アドレス . . . . . . . . . . . .: <strong>192.168.0.94</strong>
   サブネット マスク . . . . . . . . . .: <strong>255.255.255.0</strong>
   デフォルト ゲートウェイ . . . . . . .: fe81::fab7:98ff:fe4b:95b8%15
・                                          192.168.0.1
イーサネット アダプター vEthernet (WSL):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe81::f749:f04d:c08e:932%44
   IPv4 アドレス . . . . . . . . . . . .: <strong>172.31.224.1</strong>
   サブネット マスク . . . . . . . . . .: <strong>255.255.240.0</strong>
   デフォルト ゲートウェイ . . . . . . .:</code></pre>



<p class="wp-block-paragraph">WindowsホストマシンIPアドレス、家庭内LAN：<br> 192.168.0.94/24<br><br>WSL Windows側IPアドレス、WindowsとWSL間の通信するためのゲートウェイ：<br> 172.31.244.1/20</p>



<h4 class="wp-block-heading"><span id="toc18">wslで、ip a コマンド</span></h4>



<pre class="wp-block-code"><code>$ ip a
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2:<strong> eth0:</strong> &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:c8:2e:42 brd ff:ff:ff:ff:ff:ff
    inet <strong>172.31.226.6/20</strong> brd 172.31.239.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe81::215:5dff:fec8:2e42/64 scope link
       valid_lft forever preferred_lft forever
3: <strong>docker0</strong>: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN group default
    link/ether ba:b5:41:49:d7:3c brd ff:ff:ff:ff:ff:ff
    inet <strong>172.17.0.1/16</strong> brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever</code></pre>



<p class="wp-block-paragraph">WSL Docker側IPアドレス、WSL環境はこのアドレスで、Windowsと通信：<br> 172.31.226.6/20<br><br>docker0 のIPアドレス、Dockerがコンテナにネットワーク機能を提供するためにWSL 2のLinux環境内に作成する<strong>ブリッジネットワークインターフェース</strong>です<br>172.17.0.1/16</p>



<h3 class="wp-block-heading"><span id="toc19">ネットワーク環境・・複雑ですね</span></h3>



<p class="wp-block-paragraph">次回、DockerにDifyのコンテナを作成しようと思います。<br>LAN内でも別のPCからのアクセス可能にしたいので、設定状況をレポートします。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ubuntu24.04LTSでWorsPressを動作させる。WordPress インストール、バックアップと復元</title>
		<link>https://www.kazuban.com/blog/wordpewss-ubuntu/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 30 Jun 2024 06:22:28 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[ubuntu24]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=8935</guid>

					<description><![CDATA[「RockyLinux9」への「WordPress」のインストールはこちらで説明しています。 目次 WordPressを動作させる最新のWordPressをダウンロードとドキュメント・ルートへ設置MariaDBにデータベ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「RockyLinux9」への「WordPress」のインストールは<a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-install/">こちら</a>で説明しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">WordPressを動作させる</a><ol><li><a href="#toc2" tabindex="0">最新のWordPressをダウンロードとドキュメント・ルートへ設置</a></li><li><a href="#toc3" tabindex="0">MariaDBにデータベースと管理ユーザーの設定</a></li><li><a href="#toc4" tabindex="0">WordPress 初期設定</a></li><li><a href="#toc5" tabindex="0">Apacheの、rewriteモジュールとAllowOverrideの設定</a></li></ol></li><li><a href="#toc6" tabindex="0">WordPress バックアップとリストア</a><ol><li><a href="#toc7" tabindex="0">スクリプトの環境</a></li><li><a href="#toc8" tabindex="0">スクリプトのダウンロードと展開</a></li><li><a href="#toc9" tabindex="0">自分の環境に合わせて、編集</a><ol><li><a href="#toc10" tabindex="0">MariaDBデータベースのバックアップスクリプト</a></li><li><a href="#toc11" tabindex="0">MariaDBデータベースの復元スクリプト</a></li><li><a href="#toc12" tabindex="0">WordPress内容の復元スクリプト</a></li><li><a href="#toc13" tabindex="0">WordPress内容のバックアップスクリプト</a></li></ol></li><li><a href="#toc14" tabindex="0">バックアップ自動化</a></li></ol></li><li><a href="#toc15" tabindex="0">Ubuntu24.04LTSでWordPressを構築する記事一覧</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WordPressを動作させる</span></h2>



<h3 class="wp-block-heading"><span id="toc2">最新のWordPressをダウンロードとドキュメント・ルートへ設置</span></h3>



<p class="wp-block-paragraph">・ホームディレクトリの仮のダウンロードディレクトリに移動<br>・<a href="https://ja.wordpress.org/latest-ja.tar.gz">WordPress 最新版のダウンロード</a><br>・圧縮ファイルを展開<br>・WordPress ディレクトリ全体を、Apacheのドキュメント・ルートへ移動<br>・必要に応じて、「wordpress」ディレクトリ名を自分の環境へ変更<br>・WordPressディレクトリ全体の、ユーザーとグループの変更</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-214"><code>$ cd ~/Downloads/
$ wget https://ja.wordpress.org/latest-ja.tar.gz
$ tar xvzf latest-ja.tar.gz
$ sudo mv ./wordpress/ /home/www/html/
$ cd /home/www/html/
$ sudo mv ./wordpress/ ./blog/
$ sudo chown -R apache:apache ./blog/</code></pre>



<h3 class="wp-block-heading"><span id="toc3">MariaDBにデータベースと管理ユーザーの設定</span></h3>



<p class="wp-block-paragraph">「CREATE DATABASE」でWordPress用のデータベースを作成し<br>「GRANT ALL ON」でデータベースへ全権限を持つ ユーザを作成します。<br>mariaDBに wordpress用のデータベースを作成前に、設定情報をメモしておきます。<br>・データベース名：WpDb<br>・ユーザー名:WpAdmin<br>・パスワード:WpPasswd<br>・データベースホスト:local</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-215"><code>$<strong> mysql -u root -p&#91;パスワード]</strong> &lt;----- -pの後スペースなし
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.11.8-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB &#91;(none)]&gt; <strong>CREATE DATABASE WpDb;</strong>  &lt;--- データベース作成
Query OK, 1 row affected (0.001 sec)

MariaDB &#91;(none)]&gt; <strong>SHOW DATABASES;</strong>  &lt;---- データベース確認
+--------------------+
| Database           |
+--------------------+
| <strong>WpDb</strong>              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.001 sec)
          &lt;---------- 作成したデータベースの管理者ユーザーの作成
MariaDB &#91;(none)]&gt; <strong>GRANT ALL ON WpDb.* TO 'WpAdmin'@'localhost' IDENTIFIED By 'WpPasswd';</strong>
Query OK, 0 rows affected (0.008 sec)

MariaDB &#91;(none)]&gt; <strong>USE mysql</strong>   &lt;---- 管理者ユーザーのデータベースは「mysql」
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB &#91;mysql]&gt; <strong>SELECT user,host from user;</strong>  &lt;---- ユーザーデータベースの確認
+-----------------+-----------+
| User            | Host      |
+-----------------+-----------+
| <strong>WpDb</strong>           | localhost |
| mariadb.sys     | localhost |
| mysql           | localhost |
| root            | localhost |
+-----------------+-----------+
4 rows in set (0.003 sec)

MariaDB &#91;mysql]&gt; <strong>SHOW GRANTS FOR 'WpAdmin'@'localhost';</strong> &lt;--- 権限の確認
+------------------------------------------------------------------------------------------------------------------------+
| Grants for WpAdministrator@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `WpAdmin`@`localhost` IDENTIFIED BY PASSWORD '*1234567AABBB2024A1B2222CC33344A2014Z' |
| GRANT ALL PRIVILEGES ON `WpDb`.* TO `WpAdmin`@`localhost`                                                |
+------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB &#91;mysql]&gt; quit
Bye</code></pre>



<h3 class="wp-block-heading"><span id="toc4">WordPress 初期設定</span></h3>



<p class="wp-block-paragraph">さあ、準備が完了したので、アドレスバーに公開サイトURLを入力すると「初期画面」が出てくるはずですが、前回の「RockyLinux」同様、<span class="marker-under-red">エラーが出てしまいました。</span></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="772" height="216" src="https://www.kazuban.com/blog/wp-content/uploads/2024/01/mysqli_error.png" alt="" class="wp-image-8536" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/01/mysqli_error.png 772w, https://www.kazuban.com/blog/wp-content/uploads/2024/01/mysqli_error-500x140.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2024/01/mysqli_error-300x84.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2024/01/mysqli_error-768x215.png 768w" sizes="(max-width: 772px) 100vw, 772px" /></figure>



<p class="wp-block-paragraph">「php-mysql*」の状態を調べてみます</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-216"><code>$ dpkg -l | grep php-mysql
l$ apt list php-mysql*
一覧表示... 完了
php-mysql/noble 2:8.3+93ubuntu2 all</code></pre>



<p class="wp-block-paragraph">「RockyLinux9」では、「php-mysqlnd」が必要でしたが、「ubuntu2.4」では「php-mysql」のようなのでインストールします</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-217"><code>$ sudo apt install php-mysql</code></pre>



<p class="wp-block-paragraph">インストール後再度公開サイトへアクセスすると、<span class="marker-under">無事に初期設定　画面がでてきました。</span></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="780" height="577" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom.png" alt="" class="wp-image-8464" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom.png 780w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-500x370.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-300x222.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/welcom-768x568.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p class="wp-block-paragraph">「さぁ、始めましょう！<span style="font-size: revert; font-family: var(--cocoon-default-font);">」を</span>クリックする事で、次の「ようこそ」画面で必要情報を入力する事でサンプルページが出てきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="715" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage-800x715.png" alt="" class="wp-image-8474" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage-800x715.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage-500x447.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage-300x268.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage-768x686.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/samplepage.png 893w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">確認が済んだら、設定した「データベースのユーザー名」などの情報は、/home/www/html/blog/wp-config.phpに書かれているので、アクセス権は厳しくしておきます</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-218"><code>$ cd /home/www/html/blog
$ sudo chmod 600 ./wp-config.php</code></pre>



<h3 class="wp-block-heading"><span id="toc5">Apacheの、rewriteモジュールとAllowOverrideの設定</span></h3>



<p class="wp-block-paragraph">WordPress設定のパーマリンクで<span class="marker">「基本」以外</span>の設定にしたい場合、Apache上でURLの書き換えを行う<span class="marker-under-red">「mod_rewrite」モジュールを有効</span>にする必要があります。<br>したがって、「mod_rewrite.so」モジュールが組み込まれている必要があります。<br>またパーマリンクの設定で、<span class="marker">「基本」以外</span>に設定した場合、URLの書き換えを行う設定がWordPressのディレクトリ内の「<strong>.htaccess</strong>」として作成されます。<br>apacheは「.htaccess」を見つけると、この設定を有効にしますが、<strong>AllowOverride がNone</strong>で設定されていると<span class="marker-under-red">「.htaccess」は無視</span>されます。<br>「mod_rewriteモジュール」と「AllowOverride ディレクティブ」の確認を行います</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-219"><code>$ ls /etc/apache2/mods-enabled/ | grep rewrite
　・・     &lt;--- 有効になっていない

$ ls /etc/apache2/mods-available/ | grep rewrite
<strong>rewrite.load</strong>
　・・     &lt;--- 設定ファイルはあるので、有効にする

$ sudo <strong>a2enmod rewrite</strong>
Enabling module rewrite.
To activate the new configuration, you need to run:
  systemctl restart apache2

　・・     &lt;--- AllowOverrideの設定ファイルを作成
$ cd /etc/apache2/conf-available
$ sudo vi ./wordpress.conf
&lt;Directory "/home/www/html/blog"&gt;
    <strong>AllowOverride All</strong>
&lt;/Directory&gt;
　・・     &lt;--- 設定ファイル保存し、有効にする
$ sudo <strong>a2enconf wordpress</strong>
Enabling conf wordpress.
To activate the new configuration, you need to run:
  systemctl reload apache2</code></pre>



<h2 class="wp-block-heading"><span id="toc6">WordPress バックアップとリストア</span></h2>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/#toc6">バックアップの詳細はこちらで紹介している</a>ので、興味あればご確認ください<br>今回以前自作した、バックアップとリストアのスクリプトをダウンロード可能にしました。<br>環境をあわせれば、使用できると思いますし、スクリプトなのでご自身の環境に合わせる事で使用できると思います。</p>



<h3 class="wp-block-heading"><span id="toc7">スクリプトの環境</span></h3>



<p class="wp-block-paragraph">基本的は構造は下記になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">・「自分のホームディレクトリ」に「bin」ディレクトリを作成<br>・「bin」にスクリプトを保存し、スクリプトには実行権限「+X」もしくは「700」に設定<br>・「自分のホームディレクトリ」にバックアップ用「Backup」ディレクトリを作成<br>・「Backup」に「MariaDB」と「WordPress」のバックアップ用ディレクトリを作成<br><br>$ cd &lt;&#8212;&#8211; ホームディレクトリに移動<br>$ mkdir ./bin &lt;&#8212;&#8211; スクリプトを保存するディレクトリ<br>$ mkdir ./Backup &lt;&#8212;&#8211; バックアップ保存用ディレクトリ<br>$ mkdir ./Backup/MariaDB &lt;&#8212;&#8212;&#8211; MariaDBデータ保存用ディレクトリ<br>$ mkdir ./Backup/Wp-content &lt;&#8212;&#8212; WordPressコンテンツ保存用ディレクトリ</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc8">スクリプトのダウンロードと展開</span></h3>



<p class="wp-block-paragraph">下記からダウンロードし、展開して使用します。<br><a href="https://www.kazuban.com/soft/wordpress-back-restore.tar.gz">https://www.kazuban.com/soft/wordpress-back-restore.tar.gz</a></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-220"><code>$ cd 
$ wget https://www.kazuban.com/soft/wordpress-back-restore.tar.gz
$ tar xvzf wordpress-back-restore.tar.gz
$ cd .bin
$ chmod 700 ./*
$ ls
MariaDB_Backup.sh  MariaDB_Restore.sh  Tidyup_backfile.sh  Wp-ContentRestore.sh  Wp-Content_Backup.sh</code></pre>



<p class="wp-block-paragraph">５個のスクリプトが展開されます。<br>・MariaDB_Backup.sh　　　MariaDBデータベースのバックアップ<br>・MariaDB_Restore.sh　　　MariaDBデータベースの復元<br>・Tidyup_backfile.sh        　バックアップデータの整理<br>・Wp-ContentRestore.sh　　WordPressコンテンツの復元<br>・Wp-Content_Backup.sh　　WordPressコンテンツのバックアップ</p>



<h3 class="wp-block-heading"><span id="toc9">自分の環境に合わせて、編集</span></h3>



<h4 class="wp-block-heading"><span id="toc10">MariaDBデータベースのバックアップスクリプト</span></h4>



<p class="wp-block-paragraph">自分の環境に合わせて、変数を編集します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-221"><code>#!/bin/sh
#
#  MariaDB_Backup.sh    2023/12
#
#------------------------------------
BackupDir="/home/hogehoge/Backup/MariaDB"   &lt;-------- バックアップディレクトリ
MysqlUser="WpAdmin"                        &lt;-------- WordPressのユーザー
MysqlUserPasswd="WpPasswd"                 &lt;-------- WordPressユーザーのパスワード
TidyUpScript="/home/hogehoge/bin/Tidyup_backfile.sh" &lt;---- データ整理スクリプト
DaysAgo="4"               &lt;-------- データを整理する日数
LOG="mariadb_backup.log"　&lt;------- ログファイル名
#------------------------------------
　　・
　　・</code></pre>



<p class="wp-block-paragraph">実行すると、バックアップを開始します。<br>設定されている、バックアップディレクトリに、<br>「実行時の日付」-MariaDB.bak　の名前で保存されます<br>もし、古いバックアップがある場合、その作成日が「DaysAgo=&#8221;4&#8243;」より古い場合削除されます</p>



<h4 class="wp-block-heading"><span id="toc11">MariaDBデータベースの復元スクリプト</span></h4>



<p class="wp-block-paragraph">自分の環境に合わせて、変数を編集します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-222"><code>#!/bin/sh
#
#  MariaDB_Restore.sh    2024/02
#
#------------------------------------
BackupDir="/home/hogehoge/Backup/MariaDB"     &lt;-------- バックアップディレクトリ
MySqlPasswd="Password"                        &lt;-------- MariaDBのパスワード
DataBase="WpDb"                               &lt;-------- WordPressデータベース
#------------------------------------
PreBackup="Y"   # Do you want to back up? Y/N &lt;---- 事前バックアップの有無
PreBackupFile="Pre-Backup.bak"                &lt;------事前バックアップのファイル名
MysqlUser="WpAdmin"                           &lt;----- WordPressデータベースユーザー
MysqlUserPasswd="WpPassword"                    &lt;-------- WordPressユーザーのパスワード
BackupScript="/home/hogehoge/bin/MarinaDB_Backup.sh"
#------------------------------------
echo "--------------------"
　　・
　　・</code></pre>



<p class="wp-block-paragraph">復元スクリプトは、引数なしで実行すると、バックアップディレクトリに保存されているファイルのリストを表示するので、再度バックアップしたい日付のファイルを引数に指定して実行します。<br>「PreBackup=&#8221;Y&#8221;」に設定されている場合には、<br>復元前の状態のバックアップととり、確認後復元を開始します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-223"><code>$ ./MariaDB_Restore.sh     &lt;---- 引数なしで実行
--------------------
/home/hogehoge/Backup/MariaDB　　&lt;----- バックアップディレクトリ内のファイルを表示
20240625-MariaDB.bak
20240626-MariaDB.bak
20240627-MariaDB.bak
20240628-MariaDB.bak
<strong>20240629-MariaDB.bak</strong>
--------------------
MariaDB_Restore.sh &#91;Backup file name]
--------------------
-- You are able to select from the list above.--
--------------------

$ ./MariaDB_Restore.sh <strong>20240629-MariaDB.bak</strong>　&lt;---- ファイルを指定して再実行
--------------------
/home/hogehoge/Backup/MariaDB
20240629-MariaDB.bak
--------------------
--------------------
preliminary backup start.  &lt;----- 実行前データバックアップ
mysqldump -u WpAdmin -pWpPassword -h localhost -A  > 20240629-Pre-Backup.bak
-- The backup is complete. --
--------------------
-- Mysql restore start --
mysql -u root -pPassword WpDb &lt; 20240629-MariaDB.bak
Restore?(y/n):y   &lt;----- 確認</code></pre>



<h4 class="wp-block-heading"><span id="toc12">WordPress内容の復元スクリプト</span></h4>



<p class="wp-block-paragraph">自分の環境に合わせて、変数を編集します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-224"><code>#!/bin/sh
#
#       WP-contentRestor.sh   2024/02
#
#--------------------------------------------
BackupDir="/home/hogehoge/Backup/Wp-content" &lt;---- WordPressのバックアップディレクトリ
WordPressWpContentDir="/home/www/html/blog/wp-content"　　&lt;----WordPressコンテンツ本体 
#------------------------------------
echo "--------------------"
　　・
　　・</code></pre>



<p class="wp-block-paragraph">MariaDBと同様に、引数なしで実行すると、バックアップディレクトリに保存されているファイルのリストを表示するので、再度バックアップしたい日付のファイルを引数に指定して実行します<br>復元前の状態のバックアップととり、確認後復元を実行します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-225"><code>$ ./Wp-ContentRestore.sh
--------------------
/home/hogehoge/Backup/Wp-content　　&lt;----- バックアップディレクトリ内のファイルを表示
20240625-Wp-content.tar.gz
20240626-Wp-content.tar.gz
20240627-Wp-content.tar.gz
20240628-Wp-content.tar.gz
<strong>20240629-Wp-content.tar.gz</strong>
wp-content_backup.log
--------------------
Wp-content_Backup.sh &#91;????????-Wp-content.tar.gz] 
--------------------
-- You are able to select from the list above.--
--------------------

$ ./Wp-ContentRestore.sh <strong>20240629-Wp-content.tar.gz</strong>　&lt;---- ファイルを指定して再実行
--------------------
/home/hogehoge/Backup/Wp-content
20240625-Wp-content.tar.gz
20240626-Wp-content.tar.gz
20240627-Wp-content.tar.gz
20240628-Wp-content.tar.gz
20240629-Wp-content.tar.gz
wp-content_backup.log
--------------------
--------------------
/home/hogehoge/Backup/Wp-content
tar xzf 20240629-Wp-content.tar.gz  &lt;----展開、容量により時間がかかります
---- Restore --------
sudo mv /home/www/html/blog/wp-content /home/www/html/blog/wp-content-20240629
sudo mv /home/hogehoge/Backup/Wp-content /home/www/html/blog/wp-content /home/www/html/blog/wp-content
sudo chown -R apache:apache /home/www/html/blog/wp-content/
Restore completed!
--------------------</code></pre>



<h4 class="wp-block-heading"><span id="toc13">WordPress内容のバックアップスクリプト</span></h4>



<p class="wp-block-paragraph">自分の環境に合わせて、変数を編集します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-226"><code>#!/bin/sh
#
#       WP-content_Backup.sh    2020/03
#                               2023/12
#
#--------------------------------------------
BackupToDir="/home/hogehoge/Backup/Wp-content" &lt;-- WordPressのバックアップディレクトリ
BackupSorceDir="/home/www/html/blog/wp-content"&lt;----WordPressコンテンツ本体
TidyUpScript="/home/hogehoge/bin/Tidyup_backfile.sh" &lt;---- データ整理スクリプト
DaysAgo="4"               &lt;-------- データを整理する日数
LOG="wp-content_backup.log"　&lt;------- ログファイル名
#--------- Help -----------------------------
　　・
　　・</code></pre>



<p class="wp-block-paragraph">バックアップは引数なしで実行が始まります。<br>事前にWordPressのディレクトリを日付付きのファイルに圧縮して保存します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-227"><code>$ ./Wp-Content_Backup.sh
tar czf 20240629-Wp-content.tar.gz /home/www/html/blog/wp-content/  &lt;---- 事前バックアップ
rm 20240625*  &lt;--- バックアップファイル整理
rm 20240626*</code></pre>



<h3 class="wp-block-heading"><span id="toc14">バックアップ自動化</span></h3>



<p class="wp-block-paragraph">Linux の「Crontab」コマンドで、スケジューリングする事で自動的にバックアップする事も可能になります。<br>「crontab -e」でスケジュールを編集し、「crontab -l」で確認できます。<br>また、「MAILTO=」を設定する事で、指定ユーザーに結果をメールを送信してくれます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-228"><code>$ crontab -e
MAILTO=root
00 1 * * *       /home/hogehoge/bin/MariaDB_Backup.sh
30 1 * * *       /home/hogehoge/bin/Wp-Content_Backup.sh

$ crontab -l
MAILTO=root
00 1 * * *       /home/hogehoge/bin/MariaDB_Backup.sh
30 1 * * *       /home/hogehoge/bin/Wp-Content_Backup.sh
</code></pre>



<p class="wp-block-paragraph">これで、プラグインを使用しなくても、Wordpressのバックアップが可能になりました。<br></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc15">Ubuntu24.04LTSでWordPressを構築する記事一覧</span></h2>



<div class="wp-block-columns has-watery-red-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1024" height="773" src="https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop.png" alt="" class="wp-image-8987" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-500x377.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-800x604.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-300x226.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/Desktop-768x580.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install">インストール・SSH・ファイヤーウォール</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:4px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="948" height="600" src="https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2.png" alt="" class="wp-image-8990" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2.png 948w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2-500x316.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2-800x506.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2-300x190.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/apache2-768x486.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-apache2">Apache2のインストールと設定</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-red-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="750" height="564" src="https://www.kazuban.com/blog/wp-content/uploads/2024/06/php-mariadb-ssl.png" alt="" class="wp-image-8995" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/06/php-mariadb-ssl.png 750w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/php-mariadb-ssl-500x376.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/php-mariadb-ssl-300x226.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/ssl-php-mariadb">SSL、PHP、MariaDB、Let’s Encrypt証明書でhttps化</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:4px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="684" height="430" src="https://www.kazuban.com/blog/wp-content/uploads/2024/06/wordpress.png" alt="" class="wp-image-8999" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2024/06/wordpress.png 684w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/wordpress-500x314.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2024/06/wordpress-300x189.png 300w" sizes="(max-width: 684px) 100vw, 684px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph">WordPress インストール、バックアップと復元</p>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
