wordpress でメディアのアップロードができないときの対処

wordpress でメディアのアップロードができないときの対処

投稿で画像を挿入するため
ファイルをアップロードしようとしたら

Unable to create directory wp-content/uploads/2018/12. Is its parent directory writable by the server?

となってしまい
ファイルのアップロードができない状況に

wordpressの画像アップロードできないを
解決する方法としては
権限変更以外だと

【WordPress】画像がアップロードできない場合はプラグインを疑え!
にあるように
EWWW Image Optimizerプラグインの停止
もしくは
WordPressで画像ファイルがアップロードエラーする場合の2つの解決法

にあるように
キャッシュの削除

そして
WordPress : Permissionがあっているのに画像をアップロード出来ない件 heteml

にあるように
ファイルアップロードパスが合ってない

ということになるらしい

最初によくでてくるパーミッションの変更で
[WordPress]画像アップロードエラー「web-content/uploads/に移動できませんでした」+「ファイルサイズ0KB」の対処法

であるように

web-content/uploads
の権限を 755 などに変更してダメで

ファイルアップロードのサイズに関しても問題なし

Webサーバの空き容量に関しては
50GBあるため、こちらも該当せず

このため
EWWW Image Optimizer 関連から調べることに

メディアを調べてみると
Change the Media Library to List mode for additional image optimization information and actions
と表示されていたため

まずはプラグインの停止をしてみたけど
結果は変わらず

いろいろ試した結果
WordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう
を参考に
wordpress のディレクトリに移動して

chmod -R 707 wp-content/uploads/

で権限を変更するとアップロードすることができるようになりました

wordpress プラグイン適用その2

wordpress プラグイン適用その2

画像圧縮プラグインは導入できたので
引き続き必要になりそうなプラグインをいれることに

ブログの趣旨としては
いろいろ実践したものを書いていきたいので
必要となるものは
画像圧縮
ソースコードの表示
Google Adsense の表示
スマホ対応
ぐらい

あとは購入してよかったものを
Amazon とかアフィリエイトで紹介するのは
そのままコードを貼り付けでできるので

今回は
スマホ対応にするために
WPTouch をインストール

Plugins > Add New で WPtouch で検索し
Install Now をクリック後 Activate をクリック

これでスマホ対応ができたので

次にソースコードの表示のためのプラグインをインストール

Plugins > Add New で
SyntaxHighlighter Evolved で検索し
Install Now をクリック

インストール後は Activate を忘れずに

AdSense Manager はすでに古いらしく
AdSense Managerはもう使えない?代わりのプラグインは?

によれば最終更新は5年前とのこと

また最近では Google Adsense で自動広告が使えるようになり
これを機に別のものを使うことに

WordPressでGoogle AdSense 自動広告を設定する方法

を参考に
Ad Inserterプラグインをインストール

ダッシュボードにログインして
Plugin > Add New で
Ad Inserter で検索し Install Now をクリック

インストールすると
Install Now が Activate になるので
これをクリック

エラーが表示されますが、気にせず次の操作へ進みます

次に設定をするので
Plugin > Installed Plugins で
Ad Inserter の Settings をクリック

次に Adsense にログインし
広告 > 自動広告

自動広告をクリックし
表示されたソースをコピーして

wordpress のダッシュボードで
Settings > Ad Inserter で

歯車アイコンをクリックして
Header をクリックし
ここへ貼付け後に
有効化アイコンをクリックし緑色になったら
Save Settings をクリックし設定を反映

これで自動広告が表示されるようになります

wordpress プラグイン適用

wordpress プラグイン適用

wordpress 引っ越しに伴い、適用するプラグインも変更

EWWW Image Optimizer
画像を自動圧縮するプラグイン
これを使えば過去にアップロードした画像も圧縮可能

Plugins > Add New
EWWW Image Optimizer
で検索し
Install Now をクリック

インストール後に Activate するのを忘れずに
使い方については
EWWW Image Optimizerの設定方法と使い方【2018年最新版】

を参考に

なお、最新版は英語

使用するには
PHPライブラリの GDと Imagick が必要なので

LaravelにImageMagick(最新版)をインストールして使用する

を参考にインストール

yum install https://rpmfind.net/linux/mageia/distrib/cauldron/x86_64/media/core/release/lib64openjp2_7-2.3.0-2.mga7.x86_64.rpm
yum install fftw3
yum install libXt
yum install libtool-ltdl

しかし

yum install http://springdale.math.ias.edu/data/puias/computational/7/x86_64/openjpeg2-devel-2.1.0-7.sdl7.x86_64.rpm

でエラーになるため

yumでPHP7をインストールする方法(CentOS7)

を参考に remi リポジトリでインストール

yum --enablerepo=remi-php71 install php php-cli php-devel php-common php-mbstring php-mysqlnd php-pear php-pecl-xdebug

このまま ImageMagick をインストールしても

ERROR: `/var/tmp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick=imagick' failed

となるので

PECL ImageMagick(PHP)インストール手順

を参考に

yum install ImageMagick-devel
yum install php-devel

で必要なライブラリをインストールしてから

pecl install imagick

を実行

途中で

Please provide the prefix of Imagemagick installation [autodetect] : 

とでるので

PHPでの画像処理【ImageMagick編】

を参考に
imagic
と入力

インストールが完了したら

Build process completed successfully
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/lib64/php/modules/imagick.so'
install ok: channel://pecl.php.net/imagick-3.4.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

と表示されるので

vim /etc/php.ini

でファイルを開き
最終行に

extension=imagick.so

と追記

最後に設定反映のため

systemctl restart httpd

でApache を再起動します

これでページをリロードすると
EWWW Image OptimizerのConvert 機能が使えるので

Settings > EWWW Image Optimizer
Convert タグで
Hide Conversion Links
でチェックがついているのを確認し
Save Changes をクリック

設定ができたら
Media > Bulk Optimize

Scan for unoptimized images
をクリックすれば
最適化されていない画像のスキャンができます

スキャン完了後に Start optimizing をクリックすれば
最適化されます

wordpress ssl変換後のアフィリエイトコード変更

wordpress ssl変換後のアフィリエイトコード変更

wordpress 自体をSSL変換しても
アフィリエイトコードが https 対応していないと
セキュリティの警告がでます

まずは
https化(SSL変換)後のアフィリエイトコードの変更作業について

を参考に

まずは A8.net
A8の場合、2016年7月26日に既に各アフィリエイトコードは全てhttps化に対応
とのこと

ただしそれ以前は http なので
これを書き換える必要がありそう

まずはA8.net にログインして
登録情報 > サイト情報の登録、修正
をクリック

修正したいサイトで修正をクリックし
URLの部分を https に変更

ダッシュボードにログインして
Tools > Seach Regex

Seach pattern に
a8.net

Seach して
リストアップされた記事の edit をみて
新しいバナーに張り替えていきます

注意点としては
wordpress のテンプレやサイドバーなどの
アフィリエイトコードも対象となっているので
この場合

英語テーマなら
Appearance > Customize

Widgets > Sidebar
として
Text の部分を編集することで
サイドバーのバナーの張替えが可能になります

できたら
Published をクリックすることで更新できます

なお、リンク切れのアフィリエイトコードは消しておきましょう

次に Amazon アソシエイトのURLも変更するので

SSL化httpsにしたらAmazonアソシエイトが表示されない対処法

を参考に

Tools > Seach Regex で
Search pattern で
Seach して Replace & Save で保存

これでOK

wordpress の SSL 対応(Let’s Encript)

wordpress の SSL 対応(Let’s Encript)

無事に wordpress を GMO クラウドから
ConoHa VPS に移行できたので
次に wordpress のSSL対応にします

ssh でログインしたら

su -

で管理者権限になり

使用するドメインは
wp.developapp.net
なので

/usr/local/certbot/certbot-auto certonly --webroot -w /var/www/html/wp.developapp.net -m メルアド-d wp.developapp.net --agree-tos

で証明書ファイルを発行

 vim /etc/httpd/conf.d/wp.developapp.net.conf 

で設定ファイルを開き

<VirtualHost *:443>
        ServerName wp.developapp.net:443
        DocumentRoot "/var/www/html/wp.developapp.net"
        ErrorLog logs/ssl-wp.developapp.net-error_log
        CustomLog logs/ssl-wp.developapp.net-access_log combined env=!no_log
        SSLCertificateFile /etc/letsencrypt/live/wp.developapp.net/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/wp.developapp.net/privkey.pem       
        SSLCertificateChainFile /etc/letsencrypt/live/wp.developapp.net/chain.pem

        SSLProtocol all -SSLv2 -SSLv3
        SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        SSLHonorCipherOrder on
        Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

を追記

なお、HTTPでアクセスしてきたものを HTTPS にするには

    RewriteEngine on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]


80 番ポートのところに追記します

<VirtualHost *:80>
    ServerName wp.developapp.net
    DocumentRoot /var/www/html/wp.developapp.net
    ErrorLog logs/wp.developapp.net-error_log
    CustomLog logs/wp.developapp.net-access_log combined env=!no_log

    RewriteEngine on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

</VirtualHost>

設定反映のため

systemctl restart httpd

で Webサーバを再起動

これで SSL対応はできるけど
これから書く記事に対してはOKだけど
過去記事に関しては
リンクが http のため
このままだと
一部は安全ではありません
と表示されることに

wordpress letsencrypt 一部安全ではありません
で検索し
WordPressサイトをSSL化した時注意すること

を参考に

まず、ダッシュボードにログインし
Settings > general

WordPress Adress(URL)

Site Address(URL)
の部分の
http を https に変更

次に過去記事のメディアなどのURLの置き換え
これはプラグインのSearch Regexで可能なので

Plugin > AddNew

Search Regexで検索し
Activate で有効化

Tools > Search Regex

Search pattern に 
http://wp.developapp.net
というようにSSLする前のドメインを
Replace pattern には
https://wp.developapp.net/
というように SSL対応したあとのドメインを入力し
Seach をクリック

これで該当する部分がでるので
Replace & Save
で置き換えと保存

しかし、まだダメなので
アフィリエイトサイトの場合ASPのトラッキング用のリンクなどが
影響しているため、一度使用しているアフィリエイトのリンクを確認

これらのリンクに対しては今後対応することに

wordpress の引っ越し作業で画面真っ白の対処

wordpress の引っ越し作業で画面真っ白の対処

mysql データを MariaDB へインポートできたので
次にvirtualhost の設定

vim /etc/httpd/conf.d/wp.developapp.net.conf

というように
ドメイン名.conf
というファイルを作成

内容は

<VirtualHost *:80>
    ServerName wp.developapp.net
    DocumentRoot /var/www/html/wp.developapp.net
    ErrorLog logs/wp.developapp.net-error_log
    CustomLog logs/wp.developapp.net-access_log combined env=!no_log
</VirtualHost>

保存したら

systemctl restart httpd

で apache を再起動

しかし
お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

と表示される

エラーで検索し
CentOS7 PHP7.1.2 お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

を参考に

php -m | grep mysql

を実行しても何もでないので

yum install yum-utils
yum-config-manager --enable remi-php71
yum install php-mysqlnd

で必要なパッケージをインストール後

php -m | grep mysql

を実行し

mysqli
mysqlnd
pdo_mysql

がでたのを確認したら

systemctl restart httpd

で apache を再起動したけどかわらず

おそらく wordpress のバージョンが古すぎることが原因

とりあえず

wget http://ja.wordpress.org/latest-ja.zip

で最新のwordpress をダウンロード

mv wordpress /var/www/html/wp.developapp.net
chown -R apache:apache /var/www/html/wp.developapp.net/
cd /var/www/html/wp.developapp.net/
cp wp-config-sample.php wp-config.php
vim wp-config.php
systemctl restart httpd

今度は
データベース接続確立エラーになった

ログインユーザに問題があるとおもい
wordpress ユーザで mysql でログインしようとしてもできないので
サーバー移動による hostname があやしいと思い

root で mysql にログインして調べたら

select host,user from mysql.user;

を実行すると
host が % になっている

念の為

 show variables like 'hostname';

で hostname もみてみたら
やはり違っている

このあたりから調べることに
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user ‘snowpool’@’localhost’ (using password: YES) in /var/www/html/wp.developapp.net/wp-includes/wp-db.php on line 1531

つまり ユーザに問題がありそう

MariaDB(MySQL)の基本的なユーザー系コマンド

で調べ

SELECT user,host FROM mysql.user;

でユーザ一覧をみたら

ユーザは存在しているけど
root 以外は

SHOW GRANTS FOR ''@'hostname';

で権限を確認しても

ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host 'hostname'

となるし

ログインしようとしても

ERROR 1045 (28000): Access denied for user 'snowpool'@'localhost' (using password: YES)

となってしまう

Hostを指定しないで作ったuser1はHostが「%」になっているので
とあるので
https://teratail.com/questions/45324

MySQLの権限の確認や外部からのアクセス

に権限について載っているのをみると

どうやら、host の指定をしていないのが原因っぽい

とりあえず権限の確認

show grants;

で現在のユーザの権限が確認できる

root ユーザに関してはログインしてコマンド実行することでみれたけど
wordpress のユーザはログインすることができかったため

DBの破損の確認をしたいので

テーブルが壊れているかと思ったので、mysqlcheckで修復したときのメモ

を参考に

mysqlcheck -c -u root -p --all-databases

を行ったところ
すべてOKで破損はなし

SELECT user,host FROM mysql.user;

でユーザ一覧をだしてみたけど
host が % になっているのでたぶんこれが原因っぽい

一度、移行前のサーバーへ ssh ログインし

show grants for 'snowpool'@'%';

では権限確認できるのに対し

インポート先の MariaDBで

show grants for 'snowpool'@'%';

だと

ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host '%'

となる

MySQL] MySQL5でHostに’%’があるとリモート接続できない?

によれば
host に % にするのは mysql のワイルドカードで
どこからの接続でも許可するというもの

今使っているDBが MariaDB
最初は権限やセキュリティの仕様が違うのかとおもったけど
マシンのホスト名やOSが違うため

slaveの再設定、追加(オンラインバックアップ)

をみてみたら

別サーバーで、レプリケーションが行われているmysqlからダンプして
フルバックアップファイルを利用して、slaveを設定しなおす場合に、
mysqlの接続アカウント情報も書き変わってしまう。

そのため、元々masterに設定されていた接続アカウントと
ダンプファイルのアカウント情報が違う場合には、アカウント情報を再設定してあげる必要がある。

とのこと

ということで再度アカウントを別のもので作成して実験

grant all privileges on wp_my_wordpress* to snowpool@localhost identified by "password";

これで wp-config.php の設定を変更したけど画面が真っ白

念の為

mysqldump -u root -p wp_my_wordpress > wordpress.sql

でバックアップを作成しておく

なお復旧させるときには

create database wordpress;

で新規作成

 mysql -u root -p wordpress < wordpress.sql 

でインポートすれば復旧可能

 mysqlcheck -c wordpress -u root -p

で破損をチェックしOKを確認するのも忘れずに

なお、画面が真っ白になった原因は
最新のwordpress にした場合、該当するテーマがないため
wp-config.php での設定をせず
ドメインにアクセスし、ブラウザからインストールし
ダッシュボードへログインしてテーマ設定をすれば
wordpress の表示がされるようになります

conoha vps で wordpress の構築

conoha vps で wordpress の構築

GMOクラウドで wordpress を運用していましたが
料金を抑え、さらにSSDで早いと聞いた
ConoHa で wordpress を運用するようにします

CentOS7 複数ドメイン(バーチャルホスト)でSSL

を参考に構築を行います

なお、初期設定については
ConohaサーバーへWordPressをインストールするまでの全行程(1)Conohaサーバーの立ち上げ

を参考に

ちなみに、アカウントと root パスワードは決めたものの
root パスワードを忘れ
ログインできない状態になり
https://www.conoha.jp/faq/troubleshooting/
で調べたけど
rootパスワードやVPS内で作成したアカウント情報ついて弊社側では確認ができません。サーバー再構築やシングルユーザモード・レスキューモードにてパスワードの再設定をご検討ください
とのことなので

ConoHa さくら VPSでのrootパスワード再設定

を参考に実践

Conoha にログインし
仮想サーバを選択して
コンソールをクリック

次に
特殊キーで ctrl + alt + delete をクリック
再起動するので
キーボードの上下キーをおすとカーネル選択画面になるので
一番上を選んで e をクリック

すると編集モードになるが、編集するべき場所がみつからないので

一度削除し再度作成

Conoha コンソールでIPアドレスを確認し

ssh root@IPアドレス

でログイン

次にアップデート

yum -y update

次に一般ユーザの設定

ConohaサーバーへWordPressをインストールするまでの全行程(2)サーバーのセキュリティを強化する

を参考に実践

useradd ユーザ名

で一般ユーザを追加し

passwd ユーザ名

で一般ユーザにパスワードを付与

 usermod -G wheel  ユーザ名

でユーザを wheel グループに追加

なお、セキュリティに関してはポート変更よりも

ConohaサーバーへWordPressをインストールするまでの全行程(5)SSH接続を公開鍵認証で行う

を参考に公開鍵認証に変更します

なお、新規にサーバを選ぶときには
https://www.conoha.jp/guide/vps_sshkey.php
にあるように公開鍵認証を設定できるようです

一度ログアウトし
作成した一般ユーザで ssh でログインします
[shel]
ssh 一般ユーザ名@IPアドレス
[/shell]

ログインできたら

ssh-keygen -t rsa

で鍵を作成

id_rsa.pubのファイル名をauthorized_keysに変更するので

cd .ssh/
mv id_rsa.pub authorized_keys

次に権限の変更

sudo chmod 700 ../.ssh/
 sudo chmod 600 ../.ssh/authorized_keys 

次に scp コマンドで秘密鍵をローカルへ移動します
一度ログアウトして
ubuntu 側で

scp 一般ユーザ名@IPアドレス:/home/一般ユーザ名/.ssh/id_rsa /home/自分のユーザ名/.ssh/

これで再度 sshで接続すると
今度はパスワードを入力することなくログインできるようになります

次にせっかく公開鍵認証にしたのでパスワードによるログインは禁止します

sudo vim /etc/ssh/sshd_config 

でファイルを開き

38行目の

PermitRootLogin yes

PermitRootLogin no

としてRootログインを拒否

63行目の

PasswordAuthentication yes

PasswordAuthentication no

へ変更してパスワード認証を拒否

なお
RSAAuthentication の項目がみあたらないので調べたら
sshd_config に RSAAuthentication no を設定する必要はもうない

にあるように設定は不要のようです

Conoha の一般ユーザーで公開鍵認証を使用してSSHログインする

でもこの部分はなくなっていました

あとは

sudo systemctl restart sshd.service 

でサービスを再起動して変更を反映しておきます

次にファイアウォールの設定
https と http を開いておくので

sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https

次に再起動してもそのままの設定になるように

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

次に
ConohaサーバーへWordPressをインストールするまでの全行程(3)Apache MariaDB PHP7のインストール

を参考に
PHP7 のインストール

まず Remi リポジトリの追加

sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

リポジトリ追加の確認は

 ls -l /etc/yum.repos.d/

で確認可能

次に PHP7 のインストール

sudo yum install --enablerepo=remi-php71,remi-safe php p
hp-mbstring php-pear php-mysql php-mcrypt php-gd

これで依存関係で Apache もインストールされます

PHPのヴァージョン確認は

php --version

次に MariaDB のインストール

 sudo yum -y install mariadb mariadb-server

そして MariaDB の起動

systemctl start mariadb.service

起動確認には

sudo systemctl list-units | grep mariadb

次に再起動したときにも自動起動するように設定

systemctl enable mariadb.service 

実行するとユーザパスワードを求められるので入力

登録状態の確認には

systemctl list-unit-files | grep mariadb

次にMariaDB の初期設定

 mysql_secure_installation 

実行するとセキュリティ設定でいくつか質問がでてきます

Enter current password for root (enter for none):
では Enter を押します

Set root password? [Y/n]
で root パスワードを設定するか聞かれるので y

New password:
で新しいパスワードを設定

Re-enter new password:
で確認のためもう一回入力

Remove anonymous users? [Y/n]
では匿名ユーザを削除するか なので y

Disallow root login remotely? [Y/n]
で root をリモートでログインを禁止するかなので y

Remove test database and access to it? [Y/n]
でテストDB削除なので y

Reload privilege tables now? [Y/n]
でテーブルの再読み込みするかなので y

これで設定完了

次に MariaDB を再起動することで設定を反映

systemctl restart mariadb

参考サイトでは wordpress 用DB作成しているけど
別サイトから引っ越しするので
これは保留し
Apache 関連の設定

最初に Apache の起動

systemctl start httpd.service 

起動しているかを確認

systemctl list-units | grep httpd

次に再起動してもApache が起動するよう設定

systemctl enable httpd.service 

設定の確認には

systemctl list-unit-files | grep httpd

次に Apache の設定

CentOS7 複数ドメイン(バーチャルホスト)でSSL

を参考に

ラズパイ3へ wordpress 設定

ラズパイ3へ wordpress 設定

以前 Ubuntu14.04 へ wordpress を設置し
EPUBを kindle 本に変換したので
今回は ラズパイ3で実践するために
まずは wordpress を設定

参考サイトは

Raspbian Stretchでサーバー構築! PHP7.0 Apache2 / インストール編

これは検索すると php5 が多かったので
wordpress ラズパイ3 php7
で検索しました

まず php7と phpの mysql接続モジュールインストール

sudo apt install php7.0 php7.0-mysql

次に apache2 と php接続モジュールをインストール

sudo apt install apache2 apache2-mod-php7.0

ここからは
Raspberry Pi 3 に WordPress をインストール

を参考に設定しようとして

sudo apt-get -y install mysql-server php7.1-mysql

としたけど

E: パッケージ php7.1-mysql が見つかりません
E: 'php7.1-mysql' に一致するパッケージは見つかりませんでした
E: 正規表現 'php7.1-mysql' ではパッケージは見つかりませんでした

となってしまうため、よくみたらOSバージョンが違っていたので

Raspbian Lite (Stretch)にWordPressを設定してみました

を参考に設定

sudo apt install php7.0 php7.0-fpm php7.0-mysql php7.0-mbstring php7.0-xml php7.0-gd php7.0-curl libapache2-mod-php

で必要なパッケージをインストール

今回はDBとして mariaDBをインストール

sudo apt install mariadb-server

MariaDB の場合rootだけアクセス可能ということで
sudo をつけて 実行しないとダメ

sudo mysql -u root -p

として
pi ユーザのパスワードを入力
デフォルトなら raspberry

MariaDB [(none)]> 

というようになったら

create database wordpress;

でDB作成

grant all privileges on wordpress.* to 'wpadmin'@'localhost' identified by 'password';

として
ユーザ名とパスワードを設定

exit

でDBコンソールから抜けます

次に wordpress 最新版のダウンロード

wget https://ja.wordpress.org/latest-ja.tar.gz

次に tar コマンドで解凍

tar zxvf latest-ja.tar.gz

これで wordpress というフォルダが作成されます

次に設定ファイルの作成

cd wordpress/
cp wp-config-sample.php wp-config.php 
chmod 600 wp-config.php 

これで
wp-config-sample.php から
wp-config.php を作成し
ファイル権限を chmod コマンドで変更しています

Linux の権限については
<a href="https://qiita.com/shisama/items/5f4c4fa768642aad9e06" title="https://qiita.com/shisama/items/5f4c4fa768642aad9e06" target="_blank">Linuxの権限確認と変更(超初心者向け)</a>
を参考に


次にファイルの編集

vim wp-config.php 

でファイルを開いて

29行目の

define('DB_NAME', 'database_name_here');


データベース名にするので

define('DB_NAME', 'wordpress');

へ変更

32行目の

define('DB_USER', 'username_here');


データベースユーザ名にするので

define('DB_USER', '');

へ変更

35行目の

define('DB_PASSWORD', 'password_here');


データベースユーザのパスワードにするので

define('DB_PASSWORD', 'password');

へ変更

ここまでできたら保存し

cd ..

で1つ上のディレクトリに移動

sudo mv wordpress/ /var/www/html/

でwordpress ディレクトリを公開ディレクトリに移動

sudo chown -R www-data:www-data /var/www/html/wordpress

でユーザとグループを www-data へ変更

ここまでできたらブラウザで
ラズパイのIP/wordpress
へアクセスするとインストール画面になるので
サイト名
ユーザ名
メールアドレスを入力
ちなみにパスワードは自動生成してくれます

piwp

今回は
サイト名 ランチマップ
ユーザ名 Snowpool
パスワード Zh61C!CLKLUQz3y8EA
としてあとは自分のメルアドをいれました

今後は
ランチマップのkindle 本を作成していきたいので
PriPreプラグインをいれておき
ある程度ページができたら
投稿記事をEPUBにした後に
Amazon が提供する kindlegen を使って
kindle対応ファイルに変換して出版していきます

piwp2

Amazon Linux へ wordpress設定とHTTPS対応

Amazon Linux へ wordpress設定とHTTPS対応

Amazon Linux へ let’s encript設定

で Let’s encript の設定ができたので
続いて wordpress の設定

まずDBの作成

今回は mysql の -e オプションで
コマンドから直接SQLを実行します

参考サイトは
Let’s Encryptを使ってEC2(Amazon Linux)に構築したWordPressを無料でhttps(SSL)対応してみる


mysql コマンドのオプションについては
mysql コマンドオプション

を参考に

ちなみに、mysql のファイルを sqlファイルで作成し
コマンドで実行するなら

mysql -uユーザ名 -pパスワード DB名 < SQLファイル名

で実行可能

mysql -uroot -pパスワード -e 'CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8'

でwordpressDBを作成し
文字コードを utf8 へ設定

mysql -uroot -pパスワード -e "GRANT ALL ON wordpress.* TO 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード'"

これで wordpress のユーザとパスワードを設定し
権限付与

 mysql -uroot -pパスワード -e "FLUSH PRIVILEGES;

で設定反映

次に wordpress の取得と設置

wget https://wordpress.org/latest.tar.gz

で最新版を取得

tar -xzf latest.tar.gz

で解凍

cp -r wordpress/* /var/www/html/

でwordpress の構成ファイルをコピー

これで取得したドメインへブラウザでアクセスすると
インストール画面になります

まず let’s go をクリック

aws-wp-1

次にDatabase Name には
データベース名

username にはユーザ名

Password にはパスワード

これらは mysql で設定した wordpres DB のものを
入力し
submit をクリック

awsw-wp2

次に
Run the instalation
をクリック

aws-wp3

次にサイトの設定になるので
Site Title にはサイト名

Username には管理ユーザ

Pasword にはパスワード

Your Email には連絡用 メルアドを入力

aws-wp4

これでインストールすると確認画面になり
ログインできるようになります

aws-wp5

ただ、このままだとまだセキュリティに問題があるため
設定をしていきます

まず .htaccess を使えるように 設定変更

sudo vim /etc/httpd/conf/httpd.conf

で設定ファイルを開き

151行目あたりの

AllowOverride None

AllowOverride All

へ変更し保存

サブドメインの www.ドメイン名でも
Let’s Encritpt の証明書が有効になるように

sudo vim /etc/httpd/conf.d/ssl.conf 

で設定ファイルを開き

104行目あたりに

 SSLCertificateFile /etc/letsencrypt/live/www.ドメイン名/fullchain.pem

を追記し

114行目あたりに

SSLCertificateKeyFile /etc/letsencrypt/live/www.ドメイン名/privkey.pem

を追記

なお、fulchain.pem なのは
apache 2.4.8 以降だと
chani.pem ではなく、こっちを使うことになります

参考サイトは
Let’s encrypt運用のベストプラクティス

設定ができたら、

sudo service httpd restart

で apache2 の再起動

これで https でアクセスしても警告がでなくなります

次に
wordpressサイト自体のURLを
https でアクセスするよう設定

ログインして Settings > General で
Wordpress Address(URL)

Site Address(URL)

http://
の部分を
https://
に書き換え保存

wp-ssl

これで、wordpress のリンクがhttpsになります

ただ、これだけだと http でアクセスしてくると
https になっていないため
リダイレクト処理を追加します

参考サイトは
WordPressサイトをHTTPS化する手順

sudo vim /var/www/html/.htaccess 

でファイルを開き

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

をファイル先頭に追記し保存
RewriteCond は条件式で
今回はhttpアクセスなら RwriteRule を実行

RewirteRule では https から始まって
ホスト名とリクエストURLを書き換えて
https でリダイレクトという処理

なお

# BEGIN WordPress

# END WordPress

の間に書いてしまうと
wordpress により自動更新されるので
ここ以外に書かないとダメ

これでスマホなどで http でアクセスしても
https にリダイレクトされるのが確認できました

wordpress でDB接続エラーの解決方法

先週あたりから wordpress でDB接続エラーとなり
先日ようやく復旧できたので
解決策のメモです

なお、使用しているサーバはGMOクラウド public になります

まれにDB接続エラーになることがいままであり
そのときにはネットワークの再構築をすれば復旧していました

しかし、今回はこれでも復旧できなかったので数日かかってしまいました

原因は ディスク容量がいっぱいになり、それが原因で mysql の起動ができなかったため
というものです

以下、今回の対処方法のメモログになります

DB接続エラーが表示され、サイトにアクセスできないため
ssh でログインし

mysql -u root -p

で一度DBを確認しようとしたところ

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

となっていたので

mysqlが突然起動しなくなる 第二幕
を参考に

mysqld_safe 

としたところ

mysqld_safe Number of processes running now: 0

となってしまった

このエラーで検索したところ
mysqldが落ちてた時の対応メモ
によれば
によれば
mysql が落ちているらしい

less /var/log/mysqld.log 

でログを確認

InnoDB: Initializing buffer pool, size = 128.0M
とあったので
これで検索し

MySQLが「Fatal error: cannot allocate memory for the buffer pool」となり起動しない問題

にれよれば
buffer pool のメモリ割り当てが小さいのが原因になることがあるらしいので

vim /etc/my.cnf 

でファイルを開き

[mysqld]

の下へ

innodb_buffer_pool_size = 512M

を追記

しかしこれだと

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)

となってしまう

エラーをみると mysql.sock がないのが原因と思い
これを作成することに

MySqlのソケットエラーを解決する
を参考にしたところ、
mysql.sock は
mysqlを再起動すると、/var/lib/mysql/mysql.sockが自動的に作成される
とのこと

しかし、mysql を再起動しようとすると

ERROR! MySQL server PID file could not be found!

というエラーになり mysql の起動に失敗

このため mysql が起動できないということで検索した結果
MySQLが起動できない
によれば
ディスクがいっぱいの場合、mysql の起動がエラーになるとのこと

これで検索してみると
mysqlが起動しないのは容量がいっぱいだからかも。
にも書かれていました

コマンドでエラーを再度確認するためログファイルを
tail コマンドで表示します

tail -n 40 /var/log/mysqld.log

なお、tail コマンドについては
【 tail 】 ファイルの末尾を表示する
が参考になります

これでみると

mysql Errcode: 28

と表示されています

ということで

 df -h 

で調べたところ Available のところが 0% ….

このため、ディスク容量を追加することにしました

なお、使用するディスクの追加については
GMOクラウド public の場合
ディスク容量の編集(拡大/縮小)
に画像入りで説明があるので
これを元にディスクを追加したところ
再起動後に無事にサイトが復旧しました