[WordPress]BogoとYoast Duplicate Postの問題

【現象】

多言語対応としてBogoを使っているが、翻訳済みの投稿をコピーして別の投稿を作ったところ、元の投稿の翻訳リンクが新しいページとなってしまった。

画面上からは解決する方法は無いようなので、投稿を削除して作り直すか、DBを手で直すしかない。投稿を作り直すのも面倒なので、DBパッチで直したので、参考まで。

【解決方法の調査】

Bogoのソースを見て、どのようにDBを使っているかを調べる。

https://github.com/takayukister/bogo/blob/71897a24c0897bcf0ecdb4d7d412573c94c2b3f8/includes/query.php#L236

メタテーブル(※)の、キー項目’_original_post’と’_locale’を使っていることが分かる。

※??_postmetaテーブル(??:WordPressインストール時の設定による。wpとか)

【対応内容】

DBのメタテーブルのレコード状態を見ておかしいものを直せばいい。自分の状態では、以下を対応した。

  1. コピー先の投稿のメタテーブルに、コピー元を指す余分な‘_original_post’があったので、このレコードを削除。
  2. コピー元の’_original_post’の値を修正。

CertbotによるSSL証明書(CentOS Stream9)

CentOS Stream9 でnginxにLet’s encrypt でSSL証明書を設定した時のメモ。

Certbotの本家ページは以下。

https://certbot.eff.org/

SoftwareでWebサーバーを、SystemでOSを選べばいいのだが、本日時点で、CentOS Stream9は対象にないので、とりあえずCentOS8で。

https://certbot.eff.org/instructions?ws=nginx&os=centosrhel8

1.snapdのインストール

https://snapcraft.io/docs/installing-snap-on-centos

1)EPELの登録(既に登録済みだった)

sudo dnf install epel-release
sudo dnf upgrade

2)インストール

sudo dnf install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

※この後、一度ログアウトして再ログイン。

2.snapdのバージョン確認と更新

sudo snap install core
sudo snap refresh core

3.Certbotのインストール

sudo snap install --classic certbot

4.Certbotコマンドの設定

コマンドにシンボリックリンクをはる。

sudo ln -s /snap/bin/certbot /usr/bin/certbot

5.証明書の設定

/etc/nginx/nginx.confのserver_nameにドメインが設定されていることが前提。以下コマンドを実行して、server_nameに設定されているドメインを選択する。

sudo certbot --nginx

6.証明書の自動更新の設定

自動更新の確認は以下。

certbot renew --dry-run

スケジューリングは、以下コマンドで確認できる。

sudo systemctl list-timers

Windows11タスクバーからのVPN接続

Windows11にアップデートしたら、タスクバーのWiFiマークをクリックしてもVPN接続が出てこない。以前はWiFiアクセスポイントのリストの上にVPN接続先が表示されていたのだが、これは不便。

Windows11_taskbar_wifi
Windows11のタスクバーWiFiクリック

もしかしてと、右クリックしてみたら、オプションで追加できるよう。

右クリックで、[クイック設定の編集]をクリックして、下の[+追加]をクリックして[VPN]を追加する。

Windows11_add_vpn_to_taskbar
クイックメニューVPNを追加

これで、タスクバーからVPN接続ができるようになる。

Windows11_taskbar_menu_vpn
Windows11のタスクバーWiFi(VPN追加状態)

これでマシになったといえ、以前は1)タスクバーのWiFiマークをクリックで、2)VPNの接続ができたのが、1)タスクバーのWiFiマークをクリック、2)VPNをクリック、3)VPNの接続となっている。MicroSoftは、なんでアップデートで前より使いにくくするのかな・・・

SQLServerExpressの設定

SQLServerExpressインストール後に、最初に構成マネージャー等で設定すること。

1.TCP/IPの有効化

[SQL Server ネットワークの構成] - [SQLEXPRESS のプロトコル]で、[TCP/IP]を右クリックして、[有効にする]に設定。

2.ポートの変更

[TCP/IPのプロパティ] - [IPアドレス]タブで、下の[IP ALL]のポートを任意のポートを設定して、ファイアウォールで指定IPからの接続許可を設定する。

設定後に、 SQLEXPRESSを再起動する。

3.SSMSのインストール

ManageMentStudioをダウロードしてインストールする。

https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

「使用できる言語」のところで、「日本語」を選んでダウンロードする。

1)DB復元

ManageMentStudio からDBを復元する方法については、以下。

https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/restore-a-database-to-a-new-location-sql-server?view=sql-server-ver15

2)外部からの接続

外部PCからのDB接続には、saユーザーのログインを許可するか別のログインユーザーを作成する。

SQLServerの[プロパティー]-[セキュリティ]の[サーバ認証]で、[SQL Server認証モード と Windows認証モード]に設定して再起動し、SQLServer認証を有効にする。

接続先は2.で3ポートを変更しているので、ManageMentStudio でポート指定をIPアドレスの後にカンマ区切りで指定する。

4.ODBC設定

古い32Bitサーバーアプリを動かすために、32BitのODBCの設定が必要。

https://docs.microsoft.com/ja-JP/troubleshoot/sql/connect/odbc-tool-displays-32-bit-64-bit

32Bit用のODBCコマンドは以下にある。

c:\Windows\SysWOW64\odbcad32

サーバーでポート指定をすること。

Windowsサーバー設定

VPSでWindowsサーバー追加時に設定ことのメモ

1.リモートデスクトップのポート変更

以下レジストリの値を変更したいポートにする。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber

ファイアウォールに上記ポートについて、指定IP(VPN)からのみ許可する設定を追加して、再起動

2.ファイアウォールの設定

リモートデスクトップ用ポートの許可を追加する。不要な設定は、無効にする。

3. リモートログイン時 のメール通知

3.1 SMTP

1)サーバーマネージャーの「役割と機能の追加」から「SMTPサーバー」を追加

2)サービス「簡易メール転送プロトコル」のスタートアップの種類を「自動」に

3)迷惑メール対策として、追加サーバーのSFPレコードを設定

3.2タスクスケジュラー設定

タスクスケジューラで、[トリガー: ユーザーセッションへの接続時]にメール通知するように設定。以前はタスクスケジューラからメール送信設定できたが、現在は使えないようなので、PowerShellで以下のようなコマンドを組む。

# 使用するSMTPサーバを指定します
$smtp = "127.0.0.1"
# 差出人アドレスを指定します
$from = "admin@XXXXX.com"
# 宛先アドレスを指定します
$to = "yourmail@XXXX.com"
# 件名を指定します
$subject = "Login(xxxxserver)"

# メール送信のためのSmtpClientクラスをインスタンス化
$cli = New-Object Net.Mail.SmtpClient($smtp)

# メール送信のためのMailMessageクラスをインスタンス化
$mail = New-Object Net.Mail.MailMessage($from, $to)
$mail.Subject = $subject
$mail.Body = "Did you login?"
$mail.SubjectEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")
$mail.BodyEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")

# メールを送信します
$cli.Send($mail)

タスクスケジューラの[操作]で、以下のように設定する。

  • 操作:プログラムの開始
  • プログラム/スクリプト:powershell.exe
  • 引数の追加:-Command “コマンドファイルのフルパス”

4.WindowsUpdateの手動化

勝手にUpdateされると困るので、sconfigコマンドから、手動更新に変設して、サーバー再起動する。

5.自動ログオン

サービス化されていない古いアプリサーバーのために、起動時に自動ログインするように設定する。

https://docs.microsoft.com/ja-jp/troubleshoot/windows-server/user-profiles-and-logon/turn-on-automatic-logon

上記では、レジストリにパスワードを平文で保存することになるので、以下のAutoLogonツールを入れるほうがいい。

https://docs.microsoft.com/ja-jp/sysinternals/downloads/autologon

6.アプリケーションエラーの通知

タスクスケジューラで、[トリガー:イベント]で、以下の場合にメール通知するように設定。 メールの送信方法は3と同様。

  • ログ:Application
  • ソース:Application Error
  • イベント ID:1000