apache2.4でhttpsアクセスを行う設定まとめ
検索するとたくさん出てきますが、 自分用にまとめました。
必要なモジュールインストール
yum install mod_ssl -y yum install openssl -y
vhostsに設定したい場合
vi /etc/httpd/conf.d/mydomain.test.conf ---------- #http用の設定 #中略 #以下をvhostsファイルに追加 <VirtualHost *:443> DocumentRoot /var/www/html/mydomain/ ServerName mydomain.test ErrorLog logs/secure_error_log CustomLog logs/secure_access_log combined SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key <Directory /var/www/html/mydomain> AllowOverride All </Directory> </VirtualHost> ----------
この場合、証明書を発行している場合は、
SSLCertificateFile
SSLCertificateKeyFile
この二つはおいてある場所をちゃんと指定する。
デフォルトのダミーキーは、mod_sslをインストールすると自動で作られる、
/etc/httpd/conf.d/ssl.conf
のファイル内に書いてあるので、それを指定する。
※ssl.confのvhost設定はコメントアウトしておく
デフォルトのまま設定する場合
vhostsとか使ってない場合は、
mod_sslを設定したときに作られた、ssl.confファイルを変更する
vi /etc/httpd/conf.d/ssl.conf ---------- #この個所を発行した証明書の場所に変更 SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key #以下の項目をhttpの通信でやっている用に変更 DocumentRoot ServerName ErrorLog CustomLog <Directory> </Directory> ----------
ssl.confはvhosts用のvhostsファイルなので、vhostsの時と同じように書き換えればok
MongoDB Ver.2系のログローテート
MongoDBでのログローテートがいまいちうまくいかなかったのでメモ。 以下の設定では一応動いた。 公式のドキュメント通りに killall -SIGUSR1 mongod これを使うとクラッシュしてしまったので、対応。(3系なら killall -SIGUSR1 も動くのかも)
/var/log/mongo/mongod.log { weekly missingok rotate 4 compress notifempty create postrotate /usr/bin/pkill -USR1 mongod rm /var/log/mongo/mongod.log.????-??-??T??-??-?? endscript }
SELinux有効時にapache管理下の場所でファイルをアップロードしたときにForbidden等になってアクセスできないときの対処法
SELinuxを有効にしているwebサーバーで、 新しいファイルをアップロードすると、アクセスができなくなってしまいはまったのでメモ。
まずどんなラベルがついているかチェック。
ls -Z -rwxrwxrwx. apache apache system_u:object_r:httpd_sys_content_t:s0 index.html -rwxrwxrwx. apache apache unconfined_u:object_r:admin_home_t:s0 new.html
この場合、index.htmlはアクセスできていたのだが、
新しくアップロードしたnew.htmlはアクセスができなかった。
同様のラベルをnew.htmlにもつけてあげることにより解決する。
sudo chcon system_u:object_r:httpd_sys_content_t:s0 new.html -rwxrwxrwx. apache apache system_u:object_r:httpd_sys_content_t:s0 index.html -rwxrwxrwx. apache apache system_u:object_r:httpd_sys_content_t:s0 new.html
auditログでdeniedになっている個所をチェックするとはまりポイントがわかる
less /var/log/audit/audit.log | grep denied
apache2.4でリバースプロキシ配下での.htaccessでIP制限をかけるときの書き方
apache2.2の時とは書き方が違っていてハマったのでメモ。
index.htmlを192.168.0系のIPアドレスのみ許可する場合。
#192.168.0.1/24 SetEnvIF X-Forwarded-For "^192\.168\.0\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$" AllowIP <Files index.html> <RequireAny> Require env AllowIP </RequireAny> </Files>
ちなみにapache2.2の時は以下のように書く
#192.168.0.1/24 SetEnvIF X-Forwarded-For "^192\.168\.0\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$" AllowIP <Files index.html> order deny,allow deny from all allow from env=AllowIP </Files>
MongoDBでpidファイルが作成されないときの対処法
mongoDBをmonitでpidの監視していたが、
時々monitが暴走してmongoDBの再起動コマンドを何度も繰り返してしまうので、
原因を調べたら、pidが作成されていなかった。
・mongodb 2.4
・rpmにてインストール
less /etc/init.d/mongod ---------- # processname: mongod # config: /etc/mongod.conf # pidfile: /var/run/mongo/mongod.pid DBPATH=`awk -F= '/^dbpath=/{print $2}' "$CONFIGFILE"` PIDFILE=`awk -F= '/^dbpath\s=\s/{print $2}' "$CONFIGFILE"` mongod=${MONGOD-/usr/bin/mongod} ----------
/var/run/mongo がデフォルトだけども、 mongod.confファイルの設定から呼び出される模様。
less /etc/mongod.conf ---------- # location of pidfile pidfilepath = /var/run/mongodb/mongod.pid ----------
/var/run/mongodb下に作られる模様。
cd /var/run/ ll mkdir /var/run/mongodb chown mongod:mongod /var/run/mongodb service mongod restart
/var/run/下にmongodbフォルダがなかったので作成。
その後再起動したら無事にpidファイルが作成された。
yumでインストールしても/var/run下に pidファイルを置くためのフォルダが作られないようなので注意。
linuxでコマンドが打てないときに確認するメモ
rootとかでは普通にコマンドが打てるのに、
なぜかPHPなどプログラムなどではコマンドが実行できないときにハマったので、
メモ。
mysqlコマンドを「/usr/local/mysql/bin/mysql」に入れてて、それにパスを通していた場合
まずPath確認。
echo $PATH /usr/local/bin:/bin:/usr/bin:/usr//usr/local/mysql/bin/mysql
このユーザーは実行できるが、webプログラムのphpが実行できない場合、
apacheなどにパスが追加されていないことがある。
だいたいどのユーザーも通っている/usr/bin/下にシンボリックリンクを通し、実行できるようにする。
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
これでapacheもmysqlコマンドを実行できるようになる。
ソースから入れた場合や、ダウンロードしてきた場合は注意。