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コマンドを実行できるようになる。
ソースから入れた場合や、ダウンロードしてきた場合は注意。
apacheでつくる503メンテページ
環境:AmazonLinux(CentOS6でも下記やり方できます)
すべてrootユーザーで作業
apacheインストール
sudo yum install httpd
メンテナンスページ作成
vi /var/www/html/maintenance.html ------------------- now maintenance -------------------
mod_rewriteと.htaccess許可
vi /etc/httpd/conf/httpd.conf ------------------------------------------------- <Directory "/var/www/html"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> LoadModule rewrite_module modules/mod_rewrite.so -------------------------------------------------
.htaccess設定
vi /var/www/html/.htaccess ------------------------------------------------- ErrorDocument 503 /maintenance.html RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html #RewriteCond %{REMOTE_ADDR} =IPアドレス RewriteRule ^.*$ - [R=503,L] ------------------------------------------------- sudo service httpd start sudo chkconfig httpd on
IPアドレスにアクセスして、メンテナンスページが表示されて、503が返されていればOK