<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Wordpress on ララジャパン</title>
        <link>https://www.larajapan.com/categories/wordpress/</link>
        <description>Recent content in Wordpress on ララジャパン</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sat, 25 Mar 2023 08:37:18 +0900</lastBuildDate><atom:link href="https://www.larajapan.com/categories/wordpress/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>WordPress（ワードプレス）から静的ページに移行！</title>
        <link>https://www.larajapan.com/2023/03/25/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%97%E3%83%AC%E3%82%B9%E3%81%8B%E3%82%89%E9%9D%99%E7%9A%84%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%88%E6%94%BB%E6%92%83%E3%83%95%E3%83%AA%E3%83%BC%EF%BC%89%E3%81%AB%E7%A7%BB/</link>
        <pubDate>Sat, 25 Mar 2023 08:37:18 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2023/03/25/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%97%E3%83%AC%E3%82%B9%E3%81%8B%E3%82%89%E9%9D%99%E7%9A%84%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%88%E6%94%BB%E6%92%83%E3%83%95%E3%83%AA%E3%83%BC%EF%BC%89%E3%81%AB%E7%A7%BB/</guid>
        <description>&lt;p&gt;自営業の私は、いつも勉強姿勢。自分でAWSのアカウントを持ち、EC2マシンを立ち上げ、自分でDBサーバーやウェブサーバーを設定して、さらにWordPressを使いこなしてブログ書く、という面倒なことをしています。みな自分の勉強のためと思って（実際は非常にケチ）。しかし、このWordPress、とにかく攻撃がひどい！ついこの間までは１週間に必ず１度はすべてのサービスを落として再スタートしなければ、CPUがほとんど100%近い状態。このサイトに来てくれる人に申し訳ない。ということでWordPressから脱却して静的ページに移行しました。さて、どう移行したか？　ヒント：実はまだ裏ではWordPressを使っています。&lt;/p&gt;
&lt;h2&gt;ヘッドレスWordPress&lt;/h2&gt;
なんかマジックのようなこと書きましたが、なんのことはない同じWordPressを違うサイトに移動して、それを作業サイトとしてそこで今までのようにブログを書いて、プラグインを使って、そこから本サイトのために静的ページを生成します。静的ページはプログラムでないから、攻撃されてもなにも影響なく、しかもPHPとかDBとかのお世話にならないので非常に軽いのです。おかげさまでここ何週間とCPUは50%を超えることなく快適です。
&lt;p&gt;しかし、記事のタグとかカテゴリとかのページもすべて静的ページとなるから、生成後の総ファイル数は1600以上にもなりました。生成にかかる時間は11分くらいです。ちなみにEC2のt3.smallのマシンを使用しています。&lt;/p&gt;
&lt;p&gt;もちろん、すべての人向けというわけではないですが、興味のあるお方のためにこれを可能にした素晴らしいプラグインを&lt;a href=&#34;https://wordpress.org/plugins/simply-static/&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;Simple Static&lt;/a&gt;を紹介します。でもそのための準備やらなんやで結構いろいろ過程があります。もちろん、これらはこのブログの読者であるあなただからできることです（忠告）。&lt;/p&gt;
&lt;h2&gt;静的ページへの道&lt;/h2&gt;
プラグインのことをどこかで読み、試行錯誤で始めた私はつっかえたところたくさんありました。その経験を生かして、まず移行作業のプランをします。動的WordPressサイトから静的ページサイトへの変換のステップとして以下あります。
&lt;ul&gt;
	&lt;li&gt;作業WordPressサイトを構築&lt;/li&gt;
	&lt;li&gt;Simple Staticのプラグインを設定&lt;/li&gt;
	&lt;li&gt;Simple Staticで静的ページを生成&lt;/li&gt;
	&lt;li&gt;使えなくなった機能を補う&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;作業WordPressサイトを構築&lt;/h2&gt;
作業WordPressサイトは、基本的に現WordPressサイトのコピーサイトです。しかし、WordPressは同じドメインでも記事のリンクや画像のリンクをドメイン入りURLでDBにばんばんと収納するので、単にサイトのファイルとデータをコピーで終わりとはなりません。それらを作業サイトのホスト名への変更も必要です。ということで、以下のような処理が必要となります。
&lt;ul&gt;
	&lt;li&gt;WordPressの作業サイトを用意する。作業サイトのホスト名は、例えば、現在サイトが&lt;strong&gt;www.example.com&lt;/strong&gt;なら、&lt;strong&gt;icecream.example.com&lt;/strong&gt;とかわからない名前にすること勧めます。作業サイトが攻撃されたら意味ないです。もちろん、Lets Encryptでセキュア認証も取得して、ウェブサーバーの設定も必要です。ここではすべて説明しません。&lt;/li&gt;
	&lt;li&gt;WordPressが使用しているDBのデータをmysqldumpでエクスポートしてファイルに落とす。一応これがバックアップにもなります。&lt;/li&gt;
	&lt;li&gt;作業サイトが使用する新規のDBを作成して、先のデータをインポートする。&lt;/li&gt;
	&lt;li&gt;DBのデータを作業サイトのドメインに変換する。以下mysqlのコマンドラインで実行します。
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt; wp_options &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; option_value &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;replace&lt;/span&gt;(option_value, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;www.example.com&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;icecream.example.com&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; option_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;home&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; option_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;siteurl&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt; wp_posts &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; guid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;replace&lt;/span&gt;(guid, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;www.example.com&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;icecream.example.com&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt; wp_posts &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; post_content &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;replace&lt;/span&gt;(post_content, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;www.example.com&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;icecream.example.com&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
	&lt;li&gt;既存のWordPressのファイルをすべて作業サイトの新規のディレクトリにコピーする。rsyncあるいはtarを使うかな。&lt;/li&gt;
	&lt;li&gt;作業サイトにアクセスしてみる。ここで問題なくアクセスできればハッピーですが、使用しているプラグインで問題になるかもしれません。私の場合はGoogle Site KitやW3 Total Cacheを使っていてそれらを無効化にする必要ありました。ここの対応はケースバイケースです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Simple Staticのプラグインを設定&lt;/h2&gt;
作業サイトが構築されたところで、次は本サイトの静的ページ生成のためのプラグインのインストールです。作業サイトのWordPressの管理画面で、以下のように、プラグインを検索してインストールします。
&lt;p&gt;&lt;a href=&#34;static1.png&#34;&gt;&lt;img src=&#34;static1.png&#34; alt=&#34;&#34; width=&#34;1041&#34; height=&#34;509&#34; class=&#34;alignnone size-full wp-image-7523&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上の画面でのインストール後には、「有効化」ボタンが出るのでそれもクリックします。&lt;/p&gt;
&lt;p&gt;次は、以下のようにプラグインで静的ページの生成かの診断を実行します。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;static3-diagnotics.png&#34;&gt;&lt;img src=&#34;static3-diagnotics.png&#34; alt=&#34;&#34; width=&#34;967&#34; height=&#34;969&#34; class=&#34;alignnone size-full wp-image-7524&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここで１つでも赤字のエラーがあるなら、解決する必要あります。同画面の一番下に診断のデバッグログの生成のチェックボックスあるので活用してみてください。&lt;/p&gt;
&lt;p&gt;次は設定です。ここではデフォルトの&lt;strong&gt;配送方法&lt;/strong&gt;はzipとなっています。新作業サイト現サイトと同じマシンに物理的に存在するので、以下のように&lt;strong&gt;ローカルディレクトリ&lt;/strong&gt;を選択し、そのパスを入力します。そして「変更を保存」します。もちろん、現サイトのディレクトリにはWordPressのファイルがあるので、最初は違うディレクトリとして生成後にディレクトリをスワップした方がよいです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;static4.png&#34;&gt;&lt;img src=&#34;static4.png&#34; alt=&#34;&#34; width=&#34;1221&#34; height=&#34;1035&#34; class=&#34;alignnone size-full wp-image-7528&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Simple Staticで静的ページを生成&lt;/h2&gt;
&lt;p&gt;さて、いよいよ静的ページの生成です。以下の画面で「静的ファイルを生成する」ボタンを押します。ボタンの下の「アクティビティログ」にメッセージが出てきてページ生成の開始をします。私のケースではなぜかいつもボタンを２回クリックしないとスタートしませんでした。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;static5.png&#34;&gt;&lt;img src=&#34;static5.png&#34; alt=&#34;&#34; width=&#34;1169&#34; height=&#34;810&#34; class=&#34;alignnone size-full wp-image-7533&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;生成が完了したら、「ログのエクスポート」としていろいろなメッセージがリストされます。これが結構重要です。特にエラーとなる、
3xxや4xxや5xxの部分です。&lt;/p&gt;
&lt;p&gt;私の場合は、3xxのリダイレクトのエラーに問題があり、生成されたホームページがおかしくなり表示できない問題ありました。上のログには問題のページのメモが記されているのでそれを手がかりに解決する必要あります。もちろん解決したら再度「静的ファイルを生成する」必要あります。&lt;/p&gt;
&lt;h2&gt;使えなくなった機能を補う&lt;/h2&gt;
&lt;p&gt;さて、上の作業をすべて完了して成功して問題なければハッピーですが、そうは問屋です。静的ページに変換することにより使えなくなった機能があります。私のケースでは、以下の解決すべき問題ありました。まだ解決できてないものもあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プラグインのGoogle Site Kitは現サイトでは、Google Analyticsのスクリプトを自動的に埋め込んでくれます。しかし作業サイトは本サイトと違うドメインであり、Google Site Kitでは違うドメインを対応することできません。それゆえに手動で「外観」のテーマに埋め込みました。&lt;/li&gt;
&lt;li&gt;以前は、お問い合わせの画面では、Contact Form 7を使用していました。しかしそれはPHPのプログラムのゆえに静的ページでは使えなく、mailtoを使用することにしました。Simple Static Proを買えば、どうかしてContact Form 7が使えるようですが、有料なゆえに足踏み。&lt;/li&gt;
&lt;li&gt;以前はテーマの機能として検索機能がありました。DB内のデータ検索です。しかし、静的ページゆえにそれを使うことはできません。現在は本サイトには検索機能はありません。不便です。&lt;a href=&#34;https://www.algolia.com/&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;Algolia&lt;/a&gt;を使うことを考えているので、完成したら説明のブログ書く予定です。&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        
    </channel>
</rss>
