茨の道も一歩から

インフラ構築からプログラミング(Python・JavaScript)までITに関するブログです。

AWS入門:wp-cli を使用して WordPress のサイト URL を変更するには

ヘルプ! パブリック DNS 名が変更されたため、ブログが壊れました

  • WordPress のインストールは、EC2 インスタンスのパブリック DNS アドレスを使用して自動的に設定されます。インスタンスを停止および再開した場合、パブリック DNS アドレスが変更され (Elastic IP アドレスに関連付けられている場合を除く)、ブログが存在しなくなった (または別の EC2 インスタンスに割り当てられた) アドレスにあるリソースを参照することになるため、ブログは機能しなくなります。

参考サイト

wp-cli を使用して WordPress のサイト URL を変更するには

SSH を使って EC2 インスタンスに接続します。

インスタンスの古いサイト URL と新しいサイト URL を書き留めます。古いサイト URL は、WordPress をインストールした時点での EC2 インスタンスのパブリック DNS 名と考えられます。新しいサイト URL は、EC2 インスタンスの現在のパブリック DNS 名です。古いサイト URL が不明な場合、次のコマンドで curl を使用して調べることができます。

[ec2-user ~]$ curl localhost | grep wp-content

古いパブリック DNS 名への参照が出力に表示されます。次に例を示します (古いサイト URL は赤色になっています)。

<script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>

次のコマンドを使って wp-cli をダウンロードします。

[ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

次のコマンドを使って、WordPress インストールの古いサイト URL を検索し、置き換えます。 EC2 インスタンスの古いサイト URL と新しいサイト URL、および WordPress のインストールパス (通常は /var/www/html または /var/www/html/blog) を置き換えます。

[ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid

ウェブブラウザで、WordPress ブログの新しいサイト URL を入力し、サイトが再び正しく動作していることを確認します。

パスワードのリセット

ユーザ名およびIDの確認

[ec2-user ~]$ php wp-cli.phar user list --path=/path/to/wordpress/installation

パスワードの更新

[ec2-user ~]$ php wp-cli.phar user update 1 --user_pass=NewPassword --path=/path/to/wordpress/installation

Python入門:OpenCVで顔検出

OpenCVで顔検出

仮想環境を構築する

pipでインストール

pip install opencv-python

画像から顔検出

from pathlib import Path
import cv2

# 検知器のパス
CASCADE_BASE_DIR = Path("./Lib/site-packages/cv2/data/")
cascade_files = [file for file in CASCADE_BASE_DIR.glob('*.xml')]
print(f'{"-"*50}\n 検知器一覧\n{"-"*50}')
[print(f'{i} : {file.name}') for i,file in enumerate(cascade_files)]
cascade_path =  cascade_files[5]
print('-' * 50)

# 顔画像のパス
img_path = "./images/ai_face_001.jpg"
src = cv2.imread(img_path, 1) # 0: gray, 1: color(default), -1: original

cascade = cv2.CascadeClassifier(str(cascade_path))
rect = cascade.detectMultiScale(src)
print(f'検出範囲:{rect}')

bgr = (0, 255, 0) # (B, G, R)
if len(rect) > 0:
    for x, y, w, h in rect:
        cv2.rectangle(src, (x,y), (x+w,y+h), bgr)

cv2.imshow('FaceDetect', src)
cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果

f:id:sireline:20210118151655p:plain

--------------------------------------------------
 検知器一覧
--------------------------------------------------
0 : haarcascade_eye.xml
1 : haarcascade_eye_tree_eyeglasses.xml
2 : haarcascade_frontalcatface.xml
3 : haarcascade_frontalcatface_extended.xml
4 : haarcascade_frontalface_alt.xml
5 : haarcascade_frontalface_alt2.xml
6 : haarcascade_frontalface_alt_tree.xml
7 : haarcascade_frontalface_default.xml
8 : haarcascade_fullbody.xml
9 : haarcascade_lefteye_2splits.xml
10 : haarcascade_licence_plate_rus_16stages.xml
11 : haarcascade_lowerbody.xml
12 : haarcascade_profileface.xml
13 : haarcascade_righteye_2splits.xml
14 : haarcascade_russian_plate_number.xml
15 : haarcascade_smile.xml
16 : haarcascade_upperbody.xml
--------------------------------------------------
検知器Path: Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml
検出範囲:[[ 63  51 154 154]]

カメラから顔検出

from pathlib import Path
import cv2

# 検知器のパス
CASCADE_BASE_DIR = Path("./Lib/site-packages/cv2/data/")
cascade_files = [file for file in CASCADE_BASE_DIR.glob('*.xml')]
print(f'{"-"*50}\n 検知器一覧\n{"-"*50}')
[print(f'{i} : {file.name}') for i,file in enumerate(cascade_files)]
cascade_path =  cascade_files[7]
print('-' * 50)
print(f'検知器Path: {cascade_path}')

cascade = cv2.CascadeClassifier(str(cascade_path))
bgr = (0, 255, 0)

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    rect = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=2, minSize=(30, 30))
    if len(rect) > 0:
        for x, y, w, h in rect:
            cv2.rectangle(frame, (x,y), (x+w,y+h), bgr)
    cv2.imshow('FaceDetect', frame)
    key = cv2.waitKey(1)
    if key == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()