php

WordPressから移行しなくても良いかも

Notoも書いてなければBlogも書いていないのですがTwitterとDiscordには生息しているりっくんです。

去年の2月にこんな記事を書いていました。

「移植」って表現が正しいか?とは思っていますが、記事の中に書いてあるとおり少し表示が遅かったりいい加減WordPressに固執する必要も無いので今どきっぽい感じにしてもいいかも?という内容を書いた記憶があります。

移行したい記事書いたかのサマリー

  • 環境がSAKURAのVPS メモリー2GBプランでその上にKusanagiのDockerコンテナを建てている構成
  • Nginx+PHP-FPM+MariaDB
  • やけにアクセスに時間がかかっていて、メモリー使用量がやばかったから原因はメモリーかなと思っていた
  • ついでに、AWS Lightsailの4GBプランを移行用に契約までした

しなくていいかもの経緯

ちょっと前に、Next.jsのテンプレートに、WordPressからデータをフェッチしてきて静的サイトを生成する物があると知った。
ということは、静的サイト化できるじゃないか!爆速じゃん!ということで、すごい簡単にできそうだから試してみたんだけども、「WPGraphQL」プラグインがPHPのバージョン7.2以上じゃないと動かないとエラーが出てしまった。

実際に見てみたらPHP7.0系のPHP-FPMを使っていたのと、PHP8にしたほうがいいよ!的なメッセージが書いてあったから
「まぁWordPressだしPHP8くらい動くだろ!」
と、安易な気持ちでPHP8のイメージに差し替えたらテーマとプラグインが全滅して全くアクセスできなくなってしまった。

ちょっとだけなら直そうと思ったが延々と出てくるエラーに耐えきれず、

  • PHP7.4のイメージに変更して
  • WordPressも6系までバージョンアップして動かし
  • 無事WPGraphQLをインストールして
  • 実際にNext.jsの設定をして
  • Buildして動くところまではローカルで確認した

で、Next.js自体は正常に動いたんだけど(一部、next/Image関係のエラーは吐いていたけど簡単に直せるレベル)そもそもこの辺のバージョンアップをしたらそもそものWordPressがすごい速くなってしまったんですよ。

スコアも91で良い感じ

一部対応はしたけどそれでも高速化したので、あれ、移行する必要がなくない?という感じになってしまったというのがこの記事の趣旨です。

なんで遅かったの

結局メモリーが悪いのではないかというのは自分の思い込みだったのですが、PHP-7.2にした部分は多少影響があるのかなぁというの、WordPressのバージョン上げたのは・・・あるのかなぁ。

プラグインとかもあまり入れていないので思えば異常な遅さだったのですが、これ以上は掘り下げないと思います。

まぁそもそも7.2からもっと上げないとサポート的にはよろしくないのでテーマも標準にしちゃおうかな・・・、もうBlogのデザインに対するこだわりは無くなってきたので。

Kusanagiを使っていて

別にKusanagiである必要は全然ないのですが、標準的な環境でこの速度のWordPressになるのかは少し気になっています。

ただし、Dockerで動かすことのメリットは今回非常に感じていて、試しにPHP8化できたということは今後Kusanagiがメンテされている限りはPHPのバージョンに合わせて環境を上げていくこともできるのは非常に良い環境だなと思っています。
※普通にaptとかで入れちゃうと地味にバージョンアップめんどくさいので・・・

移行も楽なので、現在はAmong UsのDiscordプレイ用Botを動かすためだけに置いてあるLightsailのサーバーは、何かの時に遊べるサーバーとして動かしっぱなしにしておく予定です。

終わりに

ということで、無事高速化を果たしたのでBlogを更新したのでした。という記事でした。

Uploader

GoogleがGoogleTalkをハングアウトとして新しくアプリを公開したようで、とりあえずインスコして使ってみておりますりっくんですこんにちは。Android版の雑感としては、割りと通知バーに更新が来るのめんどくさいって感じです。LINEのあの通知方法、はじめはうぜぇとか思ってましたけど慣れると便利なんですね・・・。まぁそもそもの問題はG+でつながってる人が少なすぎる事なので、移行してくれればやるけどそうでないならつかわないかもなぁというところ。

Uploader

さて本題。
個人的な目的の為に画像アップローダーを作りました。一応完成図したのはこんな感じ。スクリーンショット_2013-05-21_13.38.44その辺にあるのを鯖に入れようと思いもしたんですが、結構自分が欲しいと思ってるものがなかったのと、いい加減一度DBと心を触れ合わせないとなぁと思ってたから作った感じですかね。作りたい欲もあった。

自分が欲しかった機能は

  • 少数ユーザーのみがログインでき、閲覧アップロードができる、誰がアップしたかわかる
  • ドラッグアンドドロップでアップロードすいすい
  • 開いた瞬間とりあえず今相手に見せたい画像が表示されている

なんかうまく言い表せないけどこんな感じ。
状況としては、Twitterにアップするにはちょっと人目につきすぎるとか、Google+はそもそもやってないとかの現状があって、そういう微妙な部分に対応できるアップローダーを作りたかった。俺用のな!現在は一緒にVCやってる人たち用に公開している感じ。

完成してみて

まだバグが残ってたり、UI上の問題(だと思われる部分)が残ってるんだけど、使ってみてかなりしっくりしたものができたと思ってる。そりゃ、自分用に作ったんだから希望通りにならないといけないとは思うんだけどw使ってくれる人(2,3人)からの評価も悪く無いと勝手に思ってる。悪くないよね・・・?w
あ、上のスクリーンショット、僕の画像ばかりなのはダミーを表示してるからですよ????w 他の人の画像は一応許可とらんと非公開にしてる意味がないので・・・! 一応他にもアップする人いるんだよ!

んでまぁ、もうちょっとデザインやることあるかなぁと思ったんだけど、いざ画像を並べてみると結構綺麗に見えてしまって。ヘッダー部分も仮ってレベルでとりあえず作ったものをそのまま流用しちゃってて・・・。でも最低限見られるというかシンプルというか。ちょっと殺風景かもしれないけど。

作ってる時

まず今回はPHPさんにボコボコにされた感じですね。
なんとなく覚えてる範囲で、どんな感じに作ったか(つまづきまくって時間がかかったか)書いていきます。

  1. Twitterでログインできるサービスを作る。
    ドットインストールさんを利用して作ったのですが、ログインに使うPHPのCordbirdがすでに別物になってて躓く。動画見ながらだとできなくてGithub見たらすぐ動くという、あっち見てやるべきだね・・・。
  2. アップしたファイルをログインユーザーのみが公開できるようにする
    ApacheのModを使ってやってる。Apacheの罠に引っかかり(Pathの指定方法)1日丸々使った気がする、アホ
  3. ドラッグアンドドロップでアップロードできるようにする
    いろいろ試してどこかからコードをリスペクト。
  4. 画像をリサイズできるようにする
    なんだっけPHPのWideImageっていうものを使ってリサイズ、クリッピングをかけてる。結構便利。でもコレも使ってみる1日目とちゃんと配置する2日目があった。
  5. 画像管理用のDBを作る
    MySQLってWordpressを入れる時くらいしかつかってなかったからますSQL文を書くのに四苦八苦。あとPDO。
  6. 削除とかそのへんもろもろ
    削除機能をつける、まぁ上のDB周りの応用だったので楽ちん。
  7. デザイン
    並べたらかっこよくなった!!!!!

だいたいこんな感じでしょうか。でも今回はいろいろ助言も頂きましたが、かなりの部分を一人で作れた事にはもう満足感がすごい。

ただし、すげー時間かかっちゃったのでこのへんはなんとかしたいなぁ。いや、次はいける・・・!気がする。

そしてPHPちゃんと結構仲良く慣れた気がします。でもまだJavaScript書いてる時のほうが楽しいのですけど・・・。あんなにPHPで書くとき苦労してたのに、Ajax的な部分を書くのはすんなりなのがぐぬぬと言わざるを得ない。PHP力が足りない。

サーバーサイドは別の言語も使ってみたいなぁ、Pythonとか。そういえばうちのVPSにはPython動かせるようにしてない気がする。なんか次作りたいものができたらPythonも視野に入れようそうしよう。

ってことで8割くらいかんせいして よかった 。

WordPressのコメント欄ちょいといじり。

一応自分用メモをかねて。

WPデフォルトだと、コメントするときに名前とメールアドレスを求められます。設定でいじれるのはその両方ともを無しにする選択肢のみ。

個人的に、名前がないのはつらいけど、メールアドレスを求められるとコメントするのを躊躇してしまうと思います。ってことで早速WPのコメント欄のメールアドレスの項を無くして、必須項目を名前だけにしちゃおうと思います。

参考にしたサイト:For the mind

 

私の現在の環境はWP3.0.4 テーマはwp.vicuna 2.03です。
まずメールアドレスが無くてもコメント投稿出来るように弄ります。

 

if ( get_option('require_name_email') && !$user->ID ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		wp_die( __('Error: please fill the required fields (name, email).') );
	elseif ( !is_email($comment_author_email))
		wp_die( __('Error: please enter a valid email address.') );
}

WPディレクトリ直下にある”wp-comments-post.php“を変更します。上のコードは変更前の76~です。
↓↓↓↓

 

if(!$user->ID){
    if ('' == $comment_author)
        wp_die('名前を入力して下さい。');
}

このように変更します。これで終わりです。
これだけいじっておけば、メールアドレスがなくてもコメントを受けるけるようになります。しかし、メールアドレスが不要ならテーマのメールアドレス記入欄もいらないので、そっちもいじっておきます。

 

wp.vicunaでの設定なのであしからず。

WPのディレクトリ/wp-content/themes/wp.vicuna 内にある”comments.php“を弄ります。

 

<dt><label for="comment-email"><?php _e('Mail address', 'vicuna')?> (<?php _e('will not be published', 'vicuna')?>)<?php if ($req) printf('(%s)', __('required', 'vicuna'))?></label></dt>
<dd><input type="text" class="inputField" size="20" id="comment-email" name="email" value="" /></dd>

34,35行目の部分です。
この部分を削除します。ついでにこのcomments.php、URLを記入する欄なんかもあるのでソレもいらないと思ってる人がいたら消しちゃってもいいんじゃないですかね。

 

ってことで現在のコメント欄完成。
URL欄もいらない感じがしてくるけどまぁいいか。ってことでメモ。