Nginxでのメンテナンスページ表示設定について
アクセスされるURLに関係なく、メンテナンス用のページを表示させるための設定を記載します。
前提知識
サイトのメンテナンス時にはステータスコード「503」で返すことが作法となりますので、以下のサイトを参考にご注意ください。
【事例】メンテナンス時はステータスコード503にしないとすごいことになる | Next Generation SEO
メンテナンス設定の有効化
Nginxのコンフィグファイルに以下の内容を記載し、ドキュメントルート下の[/usr/share/nginx/html/maintenance]にメンテナンス時に表示させたいページを配置します。(503.htmlがメンテ時に表示される。)
※メンテナンス用の設定部分のみ記載しております
server { listen 443; root /usr/share/nginx/html; #ここのスイッチを [true] or [false] でメンテの切り替え可能 set $go_maintenance "true"; if ($uri ~ "^/maintenance/.*") { set $go_maintenance "false"; } error_page 404 503 /maintenance/503.html; location /maintenance/ {} if ($go_maintenance = "true") { return 503; } }
使い方
一番最初の [set $go_maintenance "true";] を"true"に変更し、Nginxをリロードします。
# service nginx reload
JODConverterのためのLibreOfficeのインストール/サービス登録手順
JavaでOfficeファイルをPDFに変換するための変換エンジンとしてLbreOfficeを使う場合のインストール手順、プロセスの自動起動設定をメモします。
注意事項
日本語のOfficeファイルを変換すると日本語が文字化けしてしまうので、日本語パッケージをあらかじめインストールしておいてください。
# yum groupinstall "Japanese Support"
LibreOfficeインストール
# wget http://download.documentfoundation.org/libreoffice/stable/4.2.4/rpm/x86_64/LibreOffice_4.2.4_Linux_x86-64_rpm.tar.gz
# tar -xzvf LibreOffice_4.2.4_Linux_x86-64_rpm.tar.gz
# cd LibreOffice_4.2.4.2_Linux_x86-64_rpm/RPMS/
# yum install --nogpgcheck lib*
# yum install libXinerama
# yum install cups-libs
自動起動設定
自動起動のためのShellを作ります。
# vi /etc/init.d/libreoffice-headless
#!/bin/sh # # libreoffice-headless - this script starts and stops the soffice daemon # # chkconfig: 345 20 80 # description: init.d scruot for headless libreoffice # processname: libreoffice-headless # Source function library. . /etc/rc.d/init.d/functions libreoffice="/opt/libreoffice4.2/program/soffice.bin" libreoffice_args='--accept="socket,host=127.0.0.1,port=8100;urp" --headless --nologo --norestore --nodefault --invisible' prog=$(basename $libreoffice) sysconfig="/etc/sysconfig/$prog" lockfile="/var/lock/subsys/libreoffice-headless" pidfile="/var/run/${prog}.pid" start() { echo -n $"Starting $prog: " daemon "$libreoffice $libreoffice_args &" retval=$? echo [ $retval -eq 0 ] && touch $lockfile pidof soffice.bin > $pidfile return $retval } stop() { echo -n $"Stopping $prog: " killproc -p $pidfile $prog retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { stop start } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) rh_status_q || exit 0 $1 ;; status) rh_status || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 2 esac
# chmod +x /etc/init.d/libreoffice-headless
# chkconfig --add libreoffice-headless
これで自動起動登録とserviceコマンドで制御可能となります。
ぼのぼの新刊発売!!
この頃、仕事がきついので、ぼのぼので癒されよう。
癒されたい方にぼのぼのはオススメです♪
- 作者: いがらしみきお
- 出版社/メーカー: 竹書房
- 発売日: 2014/05/30
- メディア: 新書
- この商品を含むブログ (3件) を見る
- 作者: いがらしみきお
- 出版社/メーカー: 竹書房
- 発売日: 2014/05/30
- メディア: 新書
- この商品を含むブログ (1件) を見る
Apache + Passenger 開発環境整備
Apache + Passenger の環境設定手順を記載します。
passenger インストール準備
# yum install gcc
# yum install gcc-c++
# yum install curl-devel
# yum install openssl-devel
# yum install zlib-devel
# yum install sqlite-devel
passenger インストール
# gem install passenger
# passenger-install-apache2-module
# vi /etc/httpd/conf.d/passenger.conf# Passengerの基本設定
LoadModule passenger_module /usr/lib64/ruby/gems/2.0.0/gems/passenger4.0.38/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/lib64/ruby/gems/2.0.0/gems/passenger-4.0.38
PassengerDefaultRuby /usr/bin/ruby
</IfModule># Passengerが追加するHTTPヘッダを削除するための設定
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"# Passengerのチューニング
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0
※環境により違いが出るので、「passenger-install-apache2-module --snippet」で確認
Apache 追加設定
<VirtualHost *:80>
ServerName xxxx.hogehoge.com
RailsEnv development
DocumentRoot /opt/rails/public
<Directory /opt/rails/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
テスト
# mkdir /opt/
# cd /opt/
# rails new rails
# cd rails
# vi Gemfilegem 'therubyracer' ※追記
# bundle install
Apacheを起動し、http://xxxx.hogehoge.com/にアクセスして、正常に表示されればOKです。
Ruby 2.0 + unicorn 開発環境整備
Ruby 2.0 + Unicorn 開発環境の設定手順について記載します。
※Nginxのインストール/設定はまた後日
Rubyのrpmパッケージ作成
下記サイトを参考に、Rubyのrpmパッケージを作成します。
CentOS 6での Ruby 2.0.0 rpm 作成方法 - @naitohの日記
epelリポジトリ登録
# yum install wget
# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm --import RPM-GPG-KEY-EPEL-6
# rm -f RPM-GPG-KEY-EPEL-6
# vi /etc/yum.repos.d/epel.repo[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0
必要関連パッケージのインストール
# yum --enablerepo=epel install libyaml-devel
# yum install sqlite-devel
# yum install gcc-c++
# rpm -ivh ruby-2.0.0.xxxxxxxx.el6.x86_64.rpm #rpmパッケージを作ったバージョンを指定
unicorn/railsインストール
※先にやっておいた方がいいこと。
gemでのインストールはかなり時間がかかるので、デフォルトでドキュメントをインストールしないようにしておくことを推奨します。
RubyGemsでgemのインストール時に--no-ri --no-rdocをデフォルトにする - アインシュタインの電話番号
# gem update --system
# gem install rubygems-update
# gem install bundler --no-ri --no-rdoc
# gem install unicorn
# gem install rails
rbenvインストール/設定
複数バージョンのRubyを使い分けしたい場合は、rbenvをインストールしておく。
rbenvの使い方を簡単にまとめてみた - Axross.log
# yum install git
# cd /usr/local
# git clone git://github.com/sstephenson/rbenv.git rbenv
# git clone git://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# vi /etc/profile.d/rbenv.shexport RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"# source /etc/profile.d/rbenv.sh
Tomcat7 メモリチューニング
簡単にTomcat7のメモリ設定箇所を記載します。
使用量の確認などは、jstatで確認するが、それはまた後日。
http://thinkit.co.jp/story/2011/03/25/2054/page/0/1
■参考
Javaパフォーマンス改善 - Full GCの原因とその解決方法について - Java入門
Tomcat7の場合、/etc/tomcat7/tomcat7.conf を変更して、以下の設定を有効とする。
JAVA_OPTS 環境変数を変更し、起動時のオプションとして以下を設定可能
基本的にはアプリケーションの使用メモリで設定することとなるが、
大まかな目安としては↓の値にしてみる。()
メモリ最大使用量(-Xmx)搭載メモリの半分程度。
メモリ初期使用量(-Xms)Xmxで指定した数値の半分位。
GCログの出力を有効にしておき、Full GCされたことは確認できるようにしておくことを推奨
例) JAVA_OPTS="-Xms2048m -Xmx4096m -verbose:gc"
-Xms ヒープ領域の初期値
-Xmx ヒープ領域の最大値。一般的に、-Xmsと同値にする
-Xmn NEW領域(Eden、From、To)の初期値
-XX:NewSize New 領域の初期値。同-Xmn
-XX:MaxNewSize New 領域の最大値。一般的に、-XX:NewSizeと同値にする
-XX:PermSize Permanent 領域の初期値
-XX:MaxPermSize Permanent 領域の最大値。一般的に、-XX:PermSizeと同値にする
-XX:NewRatio New 領域と Old 領域の比率
-XX:SurvivorRatio New 領域と Survivor 領域の比率。SurvivorRatio=Eden÷Survivor
-verbose:gc(-Xloggc:出力先) GCログ出力指定
-XX:+PrintGCTimeStamps GCログにタイムスタンプ(Java起動時からの経過時間)出力
-XX:+PrintGCDetails 詳細なGCログを出力
-XX:+PrintClassHistogram SIGQUITシグナル(kill -3 pid)受信時にヒープ統計情報を出力。-verbose:gc(-Xloggc:出力先)と併用必須
-XX:+HeapDumpOnOutOfMemoryError OutOfMemoryError発生時にヒープダンプを出力 (JDK1.5+)
-XX:+UseParallelGC マルチコアCPUまたは複数CPUの場合は、パラレルGCをマルチスレッドで実行を有効にする
※-XX:PermSize/-XX:MaxPermSize:-Xms/-Xmx範囲に含まれないことをご理解ください
ちょっと余談で、ログのタイムスタンプが日本時間にならない場合も軌道オプションを変更
JAVA_OPTSに追記で、日本時間で記載されるようになる。
- Duser.timezone=Asia/Tokyo
Windows イベントログのCSVエクスポート
WindowsのイベントログをCSVでエクスポートする要件が出たので、PowerShellのGet-EventLogでエクスポートを考えていたのですが、Message部分に改行が含まれて、1イベントで1行になってくれないため、後々集計しづらくなってしまう。
それを避けるため、「PsTools」の「PsLogList.exe」を使って実現しました。
使い方
PsToolsをダウンロードし、解答すると以下のexeファイルが展開されるので、以下のように実行する。
PsLogList.exe system -s >> EventLog_System.csv
・オプション
-s:このスイッチを指定すると、PsLogList では、イベント ログのレコードを 1 行に 1 つずつ出力します (区切り記号にはコンマを使用します)。この形式は、文字列を検索する場合 (例、psloglist /i <文字列>、findstr /i <文字列>) や出力を Excel ブックにインポートする場合に便利です。