zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【Mattermost】3.6.1→3.7.3にUpdateしたメモ

前に
zuntan02.hateblo.jp

これで構築した環境のバージョンアップ作業メモ。

■事前作業

# Upgradeガイド確認
https://docs.mattermost.com/administration/upgrade.html

バックアップ

AWS EC2だったのでのスナップショット取得で。
MySQL dumpとかしたほうがいいかもしれないけども面倒なので)

パッケージを取得・展開
cd /usr/local/src/
wget https://releases.mattermost.com/3.7.3/mattermost-3.7.3-linux-amd64.tar.gz
tar xvzf mattermost-3.7.3-linux-amd64.tar.gz
サービスの停止~設定ファイル・データのコピー~サービス再開
/etc/init.d/mattermost stop
/etc/init.d/mattermost status

# 設定ファイル(config.json)の差し替え
cd /usr/local/src/mattermost/config
mv config.json config.json_org
cp -p /home/tcmobile/config.json ./

# ローカルストレージ(./data)のコピー
cp -rp /opt/mattermost/bin/data /usr/local/src/mattermost/bin/

# 所有者変更
chown -R mattermost:mattermost /usr/local/src/mattermost/

# アプリケーションディレクトリの新旧差し替え
mv /opt/mattermost /opt/mattermost_old
mv /usr/local/src/mattermost /opt/

# 再開
/etc/init.d/mattermost start
/etc/init.d/mattermost status
システムコンソール_サーバーログでログ確認

OK

【さくらのレンタルサーバ+WordPress】異なるバージョンのPHPを利用している時の注意点

【メモ】

qiita.com

上記設定の際、.htaccessによりphp.cgi が読み込まれるようになるので、Wordpressを丸ごとバックアップ(BackWPupなど)してから戻したときはUpLoad後にphp.cgiの権限に実行権をつけること。

【ハマり状況1】WordpressサイトがInternal Server Error

BackWPupで取得したWordpressの環境を別ディレクトリに戻してみたらInternalServerError!
php.cgiの権限に実行権を付ける
→既存のものに合わせて、0715としたら動いた。

【ハマり状況2】BacWPupがToo Many Redirects

上記Wordpressは動いたものの、BackWPupが動かなくなった

  • SNI SSL化している
  • http→httpsへの301リダイレクト処理では「wp-cron.php」をredirectの対象外としている(つもり)

→情報を見るとToo Many Redirectsとなっており、「ジョブが開始されましたが、10秒間応答しません。」となる

【解決】
.htaccessのRewriteCondの条件を以下のようにする

# for BackWPup
RewriteCond %{REQUEST_URI} !.*wp-cron.php$

※ !^/wp-cron.php$だと変更後のPHP(/php.cgi)の処理が挟まるときにマッチしない模様

全体としてはこんな感じ

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# for BackWPup
RewriteCond %{REQUEST_URI} !.*wp-cron.php$

# http to https
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
</IfModule>

以上、何かの参考になれば。

Qualys SSL LABS [SSL Server Test]でのSSLサイト評価

Qualys SSL LABSの「SSL Server Test」はSSLサイトチェックの定番。
www.ssllabs.com

f:id:zuntan02:20170327105824p:plain

★テスト先を一覧に晒したくない場合は
□Do not show the results on the boards
にはチェックを入れておきましょう。

f:id:zuntan02:20170327105846p:plain

Webサーバー nginx における SSL証明書設定の安全性向上 ~SSL Server Test で A+ 判定を目指して~ | SaintSouth.NET

上記などを参考に、A+を目指して頑張りましょう。

AmazonLinuxにRoundCube1.2.4入れたメモ

MySQL

su -
yum install -y mysql56-server.x86_64 mysql56-devel.x86_64
service mysqld start
/usr/libexec/mysql56/mysql_secure_installation
---------
Enter current password for root (enter for none):そのままEnter
Change the root password? [Y/n]Y
NewPassword:ぱすわーど
Remove anonymous users? [Y/n]Y
Disallow root login remotely? [Y/n]Y
Remove test database and access to it? [Y/n]Y
Reload privilege tables now? [Y/n] Y
---------
chkconfig mysqld on
chkconfig --list mysqld

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Apache2.4

su - 
yum install httpd24 httpd-devel24 mod24_ssl

service httpd configtest
service httpd start
ps aux | grep http
  • バーチャルホスト設定追記
cd /etc/httpd/conf.d
vi roundcube.conf
  • apache2.4は「Require all granted」してやらないと外部からのアクセスができない
<VirtualHost *:80>
     ServerName   roundcube.hogehoge.jp

     (省略)

  <Directory "/">
    Options FollowSymLinks Includes
    AllowOverride All

    Require all granted
  </Directory>

</VirtualHost>

PHP5.6

yum install php56 php56-mysqlnd php56-mbstring php56-devel php56-fpm

- ログディレクトリ作成
mkdir /var/log/php/
chmod 755 /var/log/php/

- error_logディレクトリの所有者をapacheに変更
chown apache:apache /var/log/php/

- 設定ファイル変更
cp -p /etc/php.ini /etc/php.ini.org
vi /etc/php.ini
- 以下を設定
date.timezone = Asia/Tokyo

# ログローテーション設定を追加
# 日次、24週(6ヶ月)保存、圧縮

echo '/var/log/php/*.log {
    daily
    rotate 24
    compress
    missingok
    notifempty
}' > /etc/logrotate.d/php

RoundCube インストール

# 手順書:https://github.com/roundcube/roundcubemail/wiki/Installation
# RHEL系はこちらのスクリプトが参考になる
# https://gist.github.com/rcubetrac/cc85589b837d58680a86e7b5cbb09a4f#file-centos_rhel_install-sh

# Get Roundcube!
cd /usr/local/src/
wget -O rndcb-1.2.4-complete.tar.gz https://github.com/roundcube/roundcubemail/releases/download/1.2.4/roundcubemail-1.2.4-complete.tar.gz
tar xvzf rndcb-1.2.4-complete.tar.gz

# 配置
mkdir /var/www/
mkdir .rndcb
mv /usr/local/src/roundcubemail-1.2.4 /var/www/html/roundcube 
chown root:root -R /var/www/html/roundcube 
chmod 777 -R /var/www/html/roundcube/temp/ 
chmod 777 -R /var/www/html/roundcube/logs/

# RoundCube インストール用に MySQL ユーザーとデータベースを作成する
mysql -A -uroot -p
mysql> CREATE DATABASE roundcubemail;
mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost IDENTIFIED BY 'ぱすわーど';
mysql> flush privileges;


# データベースを初期化
cd /var/www/html/roundcube 
mysql -p roundcubemail < SQL/mysql.initial.sql

WebUIからセットアップを続行します

http://ドメイン/installer/

【AWS】Route53にてワイルドカードドメインを使用したときの優先順位を確認

Route53のRecord Set

Name Type Value
*.hogehoge.com A ALIAS(ELBへのエイリアス
fuga.hogehoge.com A xxx.xxx.xxx.1

このとき、fuga.hogehoge.comはワイルドカードドメイン(ELBへのエイリアス)に食われないで設定値をちゃんと返すか不安だったので確認した。

テスト結果

nslookup hogehoge.com
→Address: ELBのIPが返る

nslookup fuga.hogehoge.com
→Address: xxx.xxx.xxx.1:設定されたIPが返る。ワイルドカードドメインには食われていない

nslookup aaa.hogehoge.com
→Address: ELBのIPが返る:ワイルドカードドメインが効いている

→他のネームサーバ同様、ワイルドカードドメインサブドメインに設定されていない「その他」が来たときのみキャッチする模様。

【AWS】EC2からのメール送信には、上限緩和申請とDNSの逆引きの登録申請が必要

【概要】

初期状態の EC2 インスタンスでは Eメールを送信する際に利用する SMTP ポート 25番の通信に制限が設けられています。
EC2からのメール送信には、上限緩和申請とDNSの逆引きの登録申請が必要。
サーバ構築当初はmailコマンドでメールが遅れていたのに、気が付くと送れなくなってた、みたいのはこれ。
緩和申請しないと、25番ポートが閉じられてメールが送れなくなる→メール送信しようとするとSMTPタイムアウトエラーとなる。
詳細は以下
EC2 インスタンスのポート 25 の抑制を解除する

【参考URL】

blog.ybbo.net
例によって上記まんまです。

【作業メモ】

※Root Account Required なので、IAMではなくルートアカウントでAWSにログインします
サービスの上限緩和を申請 »
から開始。

[ケースの作成]

  • 内容:サービス制限の増加
  • 制限タイプ:EC2 Email

→日本語対応画面が無いので表示されるリンクから英語の画面に遷移

  • Email Address*:ログインしていれば自動で記入されています。
  • Use Case Description*:Entry confirmation email of campaign site.など、ある程度正確な内容を書かないとハネられるようになってきました(前はテキトーでも通ってた……)
  • Elastic IP Address 1
  • Elastic IP Address 2

→メール送信元となるEC2につけている、 EIP(グローバルIP)を記入。事前に正引き設定(mail.hoge.comなど後述する逆引きと呼応できれば良い)がされていること。

  • Reverse DNS Record for EIP 1
  • Reverse DNS Record for EIP 2

→先ほどのEIPの逆引きレコードの指定(mail.hoge.comなど)

これでSubmitすれば完了です。

■翌日以下の様なメールが届いた

Your AWS Inquiry
====
We've reviewed and approved your request for the removal of the EC2 e-mail sending limitations on your Amazon Web Services account. There are no longer limitations on your account for any IPs and instances under your account. If you requested removal of e-mail sending limits on Amazon Elastic IPs, they've also been removed.
====

OK

WordPress(Nginx+php-fpm)でのマルチドメイン運用

複数ドメイン:hogehoge.jp fugafuga.jp hogefuga.com を一つのWordPressで運用する場合のメモ。

【サマリ】

Wordpressのマルチサイト機能を利用し、かつ
- サブディレクトリ型
- サブドメイン
- 複数ドメイン
のうち、複数ドメイン型を作成する。

【参考サイト】

www.templateking.jp
基本的には上記情報に従います。
上記との違いとして、主にnginxのconfの書き方について以下にメモしておきます

1)WordPressのインストール

普通に管理画面にアクセスできるところまで。
※ドキュメントルート直下にインストールしてください

2)wp-config.phpの編集

以下を追記します

/** マルチサイト機能 */
define('WP_ALLOW_MULTISITE', true);
3)ネットワークの設定

WP管理画面-[ダッシュボード]-[ツール]-[ネットワークの設置]-[WordPress サイトのネットワークの作成]で、「サブドメイン」を選択し、「インストール
→"サイトネットワーク作成機能を有効化するには、次の手順を実行します。"として、wp-configの修正ファイルおよびapache用の設定が表示されます。

4)ネットワークの有効化作業

上記画面の作業を実行します。

  • wp-config.phpへの追記
/srv/www/hogehoge/ にある wp-config.php ファイルの
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
という行の上に、次の内容を追加
==========
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'hogehoge.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
==========

※この際、先に設定していた
> define('WP_ALLOW_MULTISITE', true);
は削除する。重複しないように。

  • nginxのconfへの追記

ドメイン型の場合は不要。
※nginxについてはhttps://wpdocs.osdn.jp/Nginx にサブディレクトリ型マルチサイト向けの記述がある。
/hogehoge/wp-admin/hoge.phpなどへのアクセスがあった場合に、/hogehoge/を消してアクセスしてるような。
今回はドメインベースなので以下はいらないですが、念のためメモしておきます。

  # Rewrite multisite '.../wp-.*' and '.../*.php'.
  if (!-e $request_filename) {
    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
    rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
5)サイトネットワーク管理者での設定

「サイトネットワーク管理者」メニューが追加されていることを確認。
言語など初期設定をしておく

6)サイトの追加

サイトの新規追加で各ドメイン用のサイトを追加する。
※サイトのアドレスは後で変更するので適当に。

7)プラグインのインストール

マルチドメイン対応プラグインを追加します
WordPress MU Domain Mapping:インストール

8)プラグインの設定

プラグインが正常にインストールされると、「サイトネットワーク管理者」の「設定」メニューに「Domain Mapping」と「Domains」という項目が追加されます。初期画面で表示されるメッセージに従って作業を行います。

Please copy sunrise.php to /srv/www/hogehoge/wp-content/sunrise.php and ensure the SUNRISE definition is in /srv/www/hogehoge/wp-config.php
# →上記をコピーする
cp /srv/www/hogehoge/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /srv/www/hogehoge/wp-content/sunrise.php


→再読み込みすると次は以下のメッセージ

Please uncomment the line define( 'SUNRISE', 'on' ); or add it to your /srv/www/hogehoge/wp-config.php

# wp-config.phpに以下を追記
-----
/** WordPress MU Domain Mapping */
define( 'SUNRISE', 'on' );
-----
9)ドメインマッピング

[サイト]-[すべてのサイト]でURLを選択するとid=xxとサイトIDが表示されるので、こちらをメモ、
[設定]-[Domains]で上記でメモしたSiteIDとドメインマッピングします。

10)リンクの設定

[サイトネットワーク管理]-[サイト]で各サイトを編集し、サイトアドレス (URL)をそれぞれの期待するドメインに変更して保存します。

11)各ドメインをnginxで受けるようにしておく

nginxのserver_nameにエイリアスを追加して流入できるようにしておくのを忘れずに

ex.

  server_name hogehoge.jp fugafuga.jp hogefuga.com;

以上。