AWS日記

AWS ElasticIP使用上限数を増やす申請が必要

1 Mins read

ElasticIPの追加でエラーが出ました。

The maximum number of addresses has been reached.

初期設定としてElasticIPは上限が5個となっています。
増やすには申請が必要です。
30分ぐらいで返信がきます。

申請先リンク:ElasticIP申請先
注意!AWSへログインしてからリンク先押下

■新サービスによりIPが必要

制限緩和のリクエスト 1
サービス: Elastic IPs
リージョン: アジアパシフィック(東京)
制限の名前: EC2-Classic Elastic IP アドレス上限
申請する上限数: 10
------------
申請理由の説明: IP address is required to build a new service
Read more
AWSLinux

Linux Postfix メール送信 エラー 解析

1 Mins read

ひたすら繰り返す

# コンフィグ修正
vi /etc/postfix/main.cf


# プロセス リスタート
systemctl restart postfix

# root宛てテストメール送信
echo testtaro | mail root

# 外部宛てテストメール送信
echo "テストメール" | mail -s "test mail from hoge.jp server." <送信先メアド>

# ログ解析
systemctl status postfix -l
Read more
AWSLinux

AWS EC2 Amazon Linux 2 AMI 2.0インスタンス PHP.ini 日本語 Mailなど初期設定 WordPress

1 Mins read

Amazon Linux 2 AMI 2.0.20181008 x86_64 HVM gp2
Apache 2.4.39
PHP 7.3.6

メール送信するだけならこの設定だけで対応できると思います。中継及びメール受信を考慮していないのでAWSのセキュリティ[In]に25、587の穴を開ける必要もありません。
AWSのVPC内から大量のメール送信や受信を目指す場合、AWSへのメール解除申請など結構な労力を取られます。現時点の情報では24時間200通、1秒に1通まで制限がかからないので管理メールなどの使用意図であれば問題ないでしょう。

mtx確認

# インストールされているmtx確認コマンド 
alternatives --display mta

mta -ステータスは自動です。
リンクは現在 /usr/sbin/sendmail.postfix を指しています。

sendmail.postfixがインストールされていると思いますがない場合はyumなどでインストールする

PHP.ini

; ポートを587へ
smtp_port=587

; mtxパス&コマンド設定
sendmail_path = /usr/sbin/sendmail.postfix -t -i

; 標準文字コード
default_charset = UTF-8

; mbstringデフォルト
mbstring.language = Japanese
; HTTP入力文字のエンコーディングを内部文字のエンコーディングに自動変換しない

mbstring.encoding_translation = Off

; 文字コード自動検出する際の優先順位
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

; タイムゾーンを日本標準時間
date.timezone = Asia/Tokyo

; セキュリテイ向上、PHPのバージョン情報を非表示
expose_php = Off
Read more
日記

AWS ELB ロードバランサー クライアントIP取得 ログ出力方法

1 Mins read

AWS
ELB
EC2
Apache2.4.39

ロードバランサーを使用している場合、ApacheなどのWebサーバーログにはELBのIPのみ出力されてしまい、本来のクライアントIPが出力されない

AWS ELBの場合「X-Forwarded-For」にヘッダーに入っているのでこれをログ出力するようにWebサーバーに設定する必要がある

Apache conf 追加サンプル

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
Read more
AWSWordpress日記

AWS ELB Wordpress SSL https ロードバランサーを使用した構成

2 Mins read

AWS
ELB(ロードバランサー)
SSL
Apache 2.4.39
Wordpress 5.1

■通信環境
クライアントPC

(port:443)

ELB[SSL証明書設定][ELBルールで外部からの80アクセスは443へリダイレクト]

(port:80)

EC2(EC2内は80設定のみでOK)

■事象
・ブラウザからメインhttps(443)へアクセス
・EC2内は80環境として設定しているのでWordpressはhtml生成時にcssなどheader内URLをhttp(80)とする
・ブラウザがheader内URLにメインURLと違うhttp(80)が存在するとセキュリティエラーとして読み込みストップ
・ブラウザ上に正しくhtmlが表示されない

■.htaccessのrewriteのみパターン

# BEGIN K.Miyakoshi

# AWS ELBからのアクセスをHTTPSへ変更する
SetEnvIf X-Forwarded-Proto ^https$ HTTPS=on

# httpアクセスをhttpsへリダイレクトする
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# END K.Miyakoshi

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

■「conf.d」などvhost.confなどでガッツリパターン

#============================================
# ELB 共通ログ対応 K.Miyakoshi
#============================================
# AWS ELB 対応 クライアントIP取得のため[%{X-Forwarded-For}i]追加
LogFormat "%{X-Forwarded-For}i:%{X-Forwarded-Port}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" elb-accesslog
ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %{X-Forwarded-For}i:%{X-Forwarded-Port}i %a] %M% ,\ referer\ %{Referer}i"

# AWS ELB 対応 ヘルスチェックアクセスを通常ログから除外
SetEnvIf User-Agent "ELB-HealthChecker.*" nolog
# AWS ELB 対応 ヘルスチェックアクセスを別ログファイルに出力する設定
SetEnvIf User-Agent "ELB-HealthChecker.*" elb-log
# imgやjsなどログから除外
SetEnvIf Request_URI "\.(gif|jpg|png|ico|jpeg|js|css)$" nolog

# 通常のログ設定
CustomLog logs/access_log elb-accesslog env=!nolog
ErrorLog logs/error_log

#============================================
# ELB WordPress 対策 https(443)→http(80)リダイレクト問題
#============================================
# AWS ELBがhttpsで受けている場合はHTTPSを有効にする
SetEnvIf X-Forwarded-Proto ^https$ HTTPS=on

# httpアクセスはhttpsにリダイレクトする
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

#============================================
# default
# ELBのヘルスチェックに使用(Aliasでも良い)
#============================================
<VirtualHost _default_:80>
	ServerName _default_:80
	ServerAdmin admin@hoge.com

	DocumentRoot "/opt/lampp/htdocs"
	<Directory "/opt/lampp/htdocs">
		AllowOverride All
		Options FollowSymLinks
		Require all granted

		Options +IncludesNoExec
		AddOutputFilter INCLUDES html
	</Directory>

	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/htdocs/access_%Y%m%d.log 86400 540" elb-accesslog env=!nolog
	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/htdocs/elb_%Y%m%d.log 86400 540" elb-accesslog env=elb-log
	ErrorLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/htdocs/error_%Y%m%d.log 86400 540"

</VirtualHost>

#============================================
# taro.hoge.com
#============================================
<VirtualHost *:80>
	ServerName taro.hoge.com
	ServerAdmin admin@hoge.com

	DocumentRoot "/opt/lampp/taro"
	<Directory "/opt/lampp/taro">
		AllowOverride All
		Options FollowSymLinks
		Require all granted
	</Directory>

	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/taro/access_%Y%m%d.log 86400 540" elb-accesslog env=!nolog
	# AWS ELB に[taro.hoge.com]DNSに紐づいて設定せれていればログ出力される
	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/taro/elb_%Y%m%d.log 86400 540" elb-accesslog env=elb-log
	ErrorLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/taro/error_%Y%m%d.log 86400 540"

</VirtualHost>

#============================================
# jiro.hoge.com
#============================================
<VirtualHost *:80>
	ServerName jiro.hoge.com
	ServerAdmin admin@hoge.com

	DocumentRoot "/opt/lampp/jiro"
	<Directory "/opt/lampp/jiro">
		AllowOverride All
		Options FollowSymLinks
		Require all granted
	</Directory>

	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/jiro/access_%Y%m%d.log 86400 540" elb-accesslog env=!nolog
	# AWS ELB に[jiro.hoge.com]DNSに紐づいて設定せれていればログ出力される
	CustomLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/jiro/elb_%Y%m%d.log 86400 540" elb-accesslog env=elb-log
	ErrorLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/jiro/error_%Y%m%d.log 86400 540"

</VirtualHost>

#============================================
Read more