- 前提
- AWS / EC2, Certificate Manager, Route 53
- Amimoto
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でプラグインフォルダを削除して
公式サイトから最新版をダウンロードして入れ替えたら動いた
続く・・・かも
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」で取得。
- 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
- dovecot側のSASLも同様(設定済みとする)
$ sudo nano /etc/dovecot/dovecot.conf
socket listen { client { path = /var/spool/postfix/private/auth-dovecot mode = 0660 user = postfix group = postfix } }
- 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
- 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
- もう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 []:
- 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
- ファイルの配置&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.
- これでOK(のはず)