1. 前提
    • AWS / EC2, Certificate Manager, Route 53
    • Amimoto
  2. さらに読む

1.環境
  AWS Linux、nginx、php-frm、WP

2.インスタンスをコピー
  イメージの作成でAMIを作ってそこから起動
  セキュリティグループに 22を追加して後で塞いでおく

3.PHP バージョンアップ

yum -y remove php-*
yum -y remove httpd-tools
yum clean all
yum install php73 php73-cli php73-common php73-fpm php73-imap php73-json php73-mbstring
yum install php73-mysqlnd php73-opcache php73-pdo php73-process php73-xml php73-gd
e /etc/php-fpm-7.3.conf
service php-fpm restart
service nginx restart

gdをインストールし忘れて後からインストールするとき、libwebpを1回削除してからいれること
(curlのバージョンも上げておく)

yum remove libwebp
yum –disablerepo=epel –enablerepo=amzn-updates install libwebp
yum install php73-gd
yum install curl

php-frm の設定ファイル(/etc/php-fpm.d/www.conf)の内容をコピー
listen.owner = nginx
listen.group = nginx
ここはエラー(WARNING: [pool www] ACL set, listen.owner = ‘nginx’ is ignored)になるので、
コメントアウトすること。

WordPressを管理画面で立ち上げるとエラーになるときは、ログを確認
tail /var/log/nginx/error.log

Slider Revolutionのバージョンが古く、立ち上がらなかったので、FTPでプラグインフォルダを削除して
公式サイトから最新版をダウンロードして入れ替えたら動いた

続く・・・かも

サーバーパネル>SSH設定>ONにする

SSHでの接続ポートは【10022】
サーバーパネル>SSH設定>公開鍵認証用鍵ペアの生成
パスフレーズを設定
keyファイルができる

さらに読む

1.Javaのバージョンを確認する

# java -version

java version "1.7.0_151"
OpenJDK Runtime Environment (amzn-2.6.11.0.74.amzn1-x86_64 u151-b00)
OpenJDK 64-Bit Server VM (build 24.151-b00, mixed mode)

2.yumを更新する(yumリポジトリの更新)

# sudo yum update -y

3.Java8をインストールする

# sudo yum install -y java-1.8.0-openjdk-devel.x86_64

4.Javaコマンドのバージョンを切り替える

# alternatives –config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

5.Javaのバージョンを確認する

# java -version

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

# javac -version

javac 1.8.0_151

6.AWS(EC2)のセキュリティグループ(インバウンド)で 7134ポートを開く

カスタム TCP ルール TCP 7134 0.0.0.0/0
カスタム TCP ルール TCP 7134 ::/0

7.SERPOSCOPEをダウンロードして動作させる

# mkdir /var/www/serposcope
# cd /var/www/serposcope
# wget https://serposcope.serphacker.com/download/2.9.0/serposcope-2.9.0.jar
# java -jar /var/www/serposcope/serposcope-2.9.0.jar

8.起動時に自動実行させる

# cd /etc/init.d/
# nano application-starter

#!/bin/sh
# chkconfig: 345 99 10
# description: start shell
case "$1" in
  start)
    sudo java -jar /var/www/serposcope/serposcope-2.9.0.jar
       ;;
  stop)
       echo "stop!"
       ;;
  *) break ;;
esac

# chmod +r application-starter
# chkconfig –add application-starter
# chkconfig application-starter on
# chkconfig –list

いろいろ訳あって、WordPressのサイトを丸ごと別のサーバーへ移すことになりました。
また訳あって、現在のサーバーには、http(80)はアクセスできますが、その他ポートがすべて塞がれています。
SSH(22)も FTP(21)も https(443)も全部です。

そういう環境で、まずは WordPressの環境を丸ごとバックアップしなければなりません。
WordPressには、Duplicatorという優秀なプラグインがあります。
Duplicator – WordPress Migration Plugin(作成者: Snap Creek)

これをまず入れます。
有効化したら、すべてそのままで実行します。
大抵1か所くらいは Noticeが出ると思いますが、そのまま使うわけではないので、詳細はパスです。
Duplicator > Create New > Next > Yes. Continue with the build process! > Build

もしファイルが大きくてエラーになる場合は、まず、Databaseのみバックアップします。
Duplicator > Create New > Files > Archive Only the Database >・・・> Build

次に画像ファイル以外を取ります。
Duplicator > Create New > Files > Enable File Filters > [wp-uploads] >・・・> Build

画像ファイルは、Website Explorer(WordPressのプラグインではない)でバックアップします。
Website Explorer > ツール > フォルダ・ダウンロード

すべてのバックアップが終わったら、Archiveファイルをダウンロードします。
この中に大切なものが全部入っています。

新しい方のサーバーに WordPressを入れておきます。
Amimotoを使っている場合は、wp-setup hogehoge.com でいいでしょう。
入れ物だけが必要です。(すでに入っている場合は消しておきましょう)

# rm /opt/local/hogehoge.com.json
# rm /opt/local/createdb-hogehoge.com.sql
# mysql -u root -p
drop database hogehoge_com;
# wp-setup hogehoge.com

ACM(Amazon Certificate Manager)で、*.hogehoge.com(別名で hogehoge.comも登録しておくこと)を取ってる場合は、ロードバランサーのリスナー(証明書)に追加しておきます。
また、テスト段階では、hostsに ロードバランサー(の片方)の URLを登録しておきましょう。(下の例では 1.1.1.55)
# vim C:\Windows\System32\drivers\etc\hosts
1.1.1.55 hogehoge.com
1.1.1.55 www.hogehoge.com

http://hogehoge.com にアクセスすると、WordPressインストールが始まるはずなので、EC2のインスタンスコードを入れて進めます。
WordPressシステムの更新やプラグイン、テーマなどを最新にします。
それから先ほど取ったバックアップファイルから手動で必要なファイルを FTPでコピーします。

/wp-content/themes/
/wp-content/plugins/ (標準でインストールされなかったものだけ)
/wp-content/uploads/

Website Explorerで画像のバックアップを取った場合は、PC環境で使われているファイルのみ保存されていますので、スマホは小さいサイズの画像を使うようなテンプレートの場合は、Regenerate Thumbnails などのプラグインでサムネイル画像の再構成をしておいた方がいいでしょう。

念のため、mysqldump でこの時点のバックアップを取っておきます。
# mysqldump -u root -p -h localhost hogehoge_com > hogehoge_com.sql;

さて、Archiveファイルの database.sql を書き換えます。
必ず修正するところは2か所だけ。(ここを書き換えないとリダイレクト地獄になります)

INSERT INTO `wp_options` VALUES (1,’siteurl’,’https://www.hogehoge.com’,’yes’);
INSERT INTO `wp_options` VALUES (2,’home’,’https://www.hogehoge.com’,’yes’);

あとは、httpを取るか、httpsに書き換えます。
http://hogehoge.com/wp-content/uploads/ ⇒ /wp-content/uploads/
http://hogehoge.com/ ⇒ https://hogehoge.com/

保存したファイルを FTPでアップして(とりあえず db1.sqlに保存)、mysqlで実行します。
# mysql -u root -p
use hogehoge_com;
source /var/www/vhosts/hogehoge.com/db1.sql;

で、新しいサーバーにまったく同じサイトが構築できました。
Route 53 の Alias Targetを書き換えて完了です。
テストで書き換えた hostsも戻すのを忘れずに。

Ubuntu(10.04)の postfix(2.7.0)に STLS/STARTTLSを導入する手順。
※ Ubuntuのバージョンは「cat /etc/lsb-release」で取得できる。
  postfixのバージョンは「/usr/sbin/postconf | grep mail_version」で取得。

  1. postfixのSASLは設定済み(とする)
    $ sudo nano /etc/postfix/main.cf
    # SMTP-Auth setting
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth-dovecot
    smtpd_sasl_authenticated_header = yes
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    broken_sasl_auth_clients = yes
    
  2. dovecot側のSASLも同様(設定済みとする)
    $ sudo nano /etc/dovecot/dovecot.conf
      socket listen {
        client {
          path = /var/spool/postfix/private/auth-dovecot
          mode = 0660
          user = postfix
          group = postfix
        }
      }
    
  3. TLS の設定。認証局を作成してくれるスクリプトの保存先を demoCAから postfixCAへ変更。
    $ cd /usr/lib/ssl/misc
    $ sudo nano CA.pl
    
    #$CATOP="./demoCA";
    $CATOP="./postfixCA";
    
    $ sudo nano /usr/lib/ssl/openssl.cnf
    
    #dir            = ./demoCA              # Where everything is kept
    dir             = ./postfixCA           # Where everything is kept
    
  4. private keyを作る。(一部伏字)
    $ sudo ./CA.pl -newca
    CA certificate filename (or enter to create)    # 空Enterキー
    
    Making CA certificate ...
    Generating a 1024 bit RSA private key
    ............................++++++
    .........................++++++
    writing new private key to './postfixCA/private/cakey.pem'
    Enter PEM pass phrase:                    # パスワードを入れる
    Verifying - Enter PEM pass phrase:    # もう1回パスワード
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:JP
    State or Province Name (full name) [Some-State]:Kanagawa-ken
    Locality Name (eg, city) []:Yokosuka-shi
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Satake Studio,LPC.
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:Mamoru Satake
    Email Address []:mam@x-xx.jp
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:                   # 入れなくてよい
    An optional company name []:
    Using configuration from /usr/lib/ssl/openssl.cnf
    Enter pass phrase for ./postfixCA/private/cakey.pem:   # パスワードを入れる
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number:
                xx:ee:33:xx:6b:xx:59:xx
            Validity
                Not Before: Jul 11 21:43:17 2011 GMT
                Not After : Jul 10 21:43:17 2014 GMT
            Subject:
                countryName               = JP
                stateOrProvinceName       = Kanagawa-ken
                organizationName          = Satake Studio,LPC.
                commonName                = Mamoru Satake
                emailAddress              = mam@x-xx.jp
            X509v3 extensions:
                X509v3 Subject Key Identifier:
                    xx:20:xx:93:xx:86:xx:55:xx:9C:xx:6F:xx:2C:xx:C7:xx:E3:xx:15
                X509v3 Authority Key Identifier:
                    keyid:xx:20:xx:93:xx:86:xx:55:xx:9C:xx:6F:xx:2C:xx:C7:xx:E3:xx:15
                    DirName:/C=JP/ST=Kanagawa-ken/O=Satake Studio,LPC./CN=Mamoru Satake/emailAddress=mam@x-xx.jp
                    serial:xx:EE:xx:AE:xx:F8:xx:F1
    
                X509v3 Basic Constraints:
                    CA:TRUE
    Certificate is to be certified until Jul 10 21:43:17 2014 GMT (1095 days)
    
    Write out database with 1 new entries
    Data Base Updated
    
  5. もう1回 private keyを作る。(なんでだ?)
    $ cd postfixCA/
    $ sudo openssl req -new -nodes -keyout postfix-key.pem -out postfix-req.pem -days 365
    
    Generating a 1024 bit RSA private key
    ..........++++++
    ..............++++++
    writing new private key to 'postfix-key.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:JP
    State or Province Name (full name) [Some-State]:Kanagawa-ken
    Locality Name (eg, city) []:Yokosuka-shi
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Satake Studio,LPC.
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:Mamoru Satake
    Email Address []:mam@x-xx.jp
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    
  6. CSR に認証局の証明書で署名。
    $ sudo sh -c "echo '00' > serial"
    $ cd /usr/lib/ssl/misc
    $ sudo rm postfixCA/index.txt*   # 「TXT_DB error number 2」エラー対策
    $ sudo touch postfixCA/index.txt
    $ sudo openssl ca -out postfix-cert.pem -infiles postfixCA/postfix-req.pem
    
    Using configuration from /usr/lib/ssl/openssl.cnf
    Enter pass phrase for ./postfixCA/private/cakey.pem:          # パスワードを入れる
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number: 0 (0x0)
            Validity
                Not Before: Jul 12 00:02:50 2011 GMT
                Not After : Jul 11 00:02:50 2012 GMT
            Subject:
                countryName               = JP
                stateOrProvinceName       = Kanagawa-ken
                organizationName          = Satake Studio,LPC.
                commonName                = Mamoru Satake
                emailAddress              = mam@x-xx.jp
            X509v3 extensions:
                X509v3 Basic Constraints:
                    CA:FALSE
                Netscape Comment:
                    OpenSSL Generated Certificate
                X509v3 Subject Key Identifier:
                    xx:E3:xx:32:xx:D4:xx:EF:xx:2A:xx:35:xx:4C:xx:DC:xx:AD:xx:D5
                X509v3 Authority Key Identifier:
                    keyid:xx:B2:xx:88:xx:4E:xx:B4:xx:73:xx:DF:xx:5A:xx:72:xx:55:xx:33
    
    Certificate is to be certified until Jul 11 00:02:50 2012 GMT (365 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    
  7. ファイルの配置&postfixリスタート
    $ sudo cp postfix-cert.pem /etc/ssl/certs/
    $ sudo cp postfixCA/postfix-key.pem /etc/ssl/private/
    $ sudo  chmod 644 /etc/ssl/certs/postfix-cert.pem
    $ sudo  chmod 400 /etc/ssl/private/postfix-key.pem
    $ sudo service postfix restart
    
     * Stopping Postfix Mail Transport Agent postfix
       ...done.
     * Starting Postfix Mail Transport Agent postfix
       ...done.
    
  8. これでOK(のはず)