zuntan02のはてなブログ

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

【AWS】RDS(MySQL)のUpgradeについて、リードレプリカと本体とどちらを先にUpgradeするか問題

■結論

リードレプリカを先にUpgradeする必要がある。

■検証

→DBインスタンスの変更でマスタ側のみUpgradeしようとすると以下のメッセージ

この DB インスタンスには 1 つまたは複数のリードレプリカがあります。すべての対応するリードレプリカのストレージが DB インスタンスのものと同じ(またはそれ以上)であることを確認してください。また、すべての対応するリードレプリカのエンジンのバージョンが DB インスタンスのものと同じであることも確認してください。<リードレプリカ名>

→そのままDBインスタンスの変更を実施

One or more of the DB Instance's read replicas need to be upgraded: <リードレプリカ名>(Service: AmazonRDS; Status Code: 400; Error Code: DBUpgradeDependencyFailure; Request ID: hogehoge)

リードレプリカを先にUpgradeする必要があることが分かる。

【NewRelic】WindowsServerへのNewRelic監視エージェント インストール

【参考】
docs.newrelic.com

【作業】
■NewRelic Servers for Windows

1)NewRelic-[Servers]-[Add more]-[Choose a platform]でWindowsを選択
 →下にmsiとかのDLリンクが出てくるので必要なものをDL。ここでは
 [NewRelicServerMonitor_x64.msi]をDL

2)上記をWindowsServerでインストール
 インストーラの途中でライセンスキーを聞かれるので用意しておくこと


以上

【AmazonLinux】gitlabのバージョンアップ(8.10.0→9.0.2)メモ

zuntan02.hateblo.jp
この環境がふるくなってきたので最新化したら例によって苦しめられたのでメモ。

# Update前の状態を確認
gitlabのrootログインにて
[管理エリア]-[概要]-[Components]でバージョンを確認

GitLab 8.10.0
GitLab Shell 3.2.0
GitLab API v3
Git 2.7.4
Ruby 2.1.8p440
Rails 4.2.7
PostgreSQL 9.2.17

■Node.jsが入っていない環境だったのでインストール(ないと日本語化パッチ適用中にエラーになった)
# Node.jsのインストール
# 先にnvm(Node Version Manager)をインストールする
su -
cd ~
git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

# パスを通す
. ~/.nvm/nvm.sh
nvm --version
# 0.33.1

# 以下を、~/.bashrc 等に追記して、起動時に読み込むようにしておく
続きを読む

【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/