‘linux’ タグのついている投稿
apache設定中の凡ミス
あいかわらずのあるある話。
ssl.conf の設定をいじっておりました
apacheが動いているサーバでssl.confをいじっておりました。
場所はお決まりの /etc/httpd/conf.d/ssl.conf です。
なんとなくオリジナルを退避しておきたくなりました
ファイルを弄る前になんとなくオリジナルを退避しておこうと思ってしまい
# cp ssl.conf ssl.org.conf
とオリジナルをコピーしました。設定終わったら消せばいいや、的な感覚です。
案の定apacheが起動しなくなりました
ssl.confを無事編集完了して、さてさてapache再起動
# service httpd start Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:443 [ OK ]
あれあれ?おかしなメッセージが出るなぁ、どこか間違えたかなぁ?でもOKって出るなぁ、なんて思ってブラウザでアクセスするもつながらない。
# ps ax | grep httpd 25156 pts/0 S+ 0:00 grep httpd
OK出てるけど実際にはhttpdのプロセスはあがってない状態。
原因は明らかな凡ミス
原因はssl.org.confが同じconf.dディレクトリにあったから。apacheが起動時にどちらも読み込んでいるので、重複した設定があってエラーになっていた。ですよねー。
# rm ssl.org.conf # service httpd start Starting httpd: [ OK ]
ボヤッとしてると起こしてしまう恥ずかしい凡ミスの一例。
さくらのVPSにLighttpd+PHPをインストール その2
さくらのVPSにLighttpd+PHPをインストール その1の続き。
FastCGIのインストール
Lighttpdは、PHPを外部のCGIとして実行する。それにFastCGIを使用する。
ソースを、http://www.fastcgi.com/dist/からダウンロードする。インストールした時点での最新版は、2.4.0。
サーバ上で以下の手順を実施。
#tar -zxvf fcgi-2.4.0.tar.gz #cd fcgi-2.4.0 #./configure #make #make install
FastCGIはこれで終わり。
PHPのインストール
せっかくなのでPHPも最新版をソースからインストールした。
CentOSでのインストールなのでhttp://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP#Othersを参照する。
ソースを、http://www.php.net/downloads.phpからダウンロードする。インストールした時点での最新版は、5.3.5。
サーバ上で以下の手順を実施。
#tar -zxvf php-5.3.5.tar.gz #cd php-5.3.5 #./configure \ --enable-mbstring \ --with-pear
ここで、configure: error: xml2-config not found. Please check your libxml2 installation. のエラーが出たので、libxml2,libxml2-develをインストールして再度実行。
#tar -zxvf php-5.3.5.tar.gz #yum install libxml2 #yum install libxml2-devel #./configure \ --enable-mbstring \ --with-pear #make #make install
configureのパラメータが異なっているが、PHP5.3以降では、cgi-phpがデフォルトで作成される。–disable-cgiオプションでFastCGIを有効にする設定となる。
訂正:どうも–disable-cgiがあると、php-cgiが作成されない模様。ちょっと混乱しているので後で調べて書き直す
それ以前のPHPの場合には、http://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP#Othersの例に沿う。
参考:http://www.php.net/manual/ja/install.unix.lighttpd-14.php
Lighttpdの設定
PHP関連の設定は、http://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP#Configurationを参照する。
#vi /etc/lighttpd/conf.d/fastcgi.conf fastcgi.server = ( ".php" => (( "bin-path" => "/usr/local/bin/php-cgi", "socket" => "/tmp/php.socket" ))) #vi /etc/lighttpd/modules.conf include "conf.d/fastcgi.conf" ← #でコメントアウトされているので、コメントアウトをはずす。
ここまでの設定で、ひとまずPHPも動作する、はず。
#service lighttpd restart
さくらのVPSにLighttpd+PHPをインストール その1
今度は、さくらのVPSにLighttpd+PHPをインストールしてみたので、インストール時のメモ。OSは、前回と同じくCentOS5なので、基本的には、WebARENA CLOUD9にLighttpd+PHPをインストール その1の時と同じ。前回は、すでにApache+PHP環境だったのをyum removeしてからのインストールだったのが、今回は、さくらのVPSをセットアップした直後の作業だったので、今回の方が例外が少ないと思う。
参考サイト
Lighttpdのサイトを主に参考にした。ドキュメントは英文だけど、そんなにややこしくないので大丈夫。
Lighttpd – WikiStart – lighty labs
http://redmine.lighttpd.net/wiki/lighttpd
Lighttpdのインストール
ソースを、http://www.lighttpd.net/download/からダウンロードする。インストールした時点での最新版は、1.4.28。
サーバ上で以下の手順を実施。
#tar -zxvf lighttpd-1.4.28.tar.gz #cd lighttpd-1.4.28 #./configure \ --without-zlib \ --without-bzip2 \ --disable-ipv6
ここで、configure: error: pcre-config not found, install the pcre-devel package or build with –without-pcre のエラーが出たので、pcre-develをインストールして再度実行。
#yum install pcre-devel #./configure \ --without-zlib \ --without-bzip2 \ --disable-ipv6 #make #make install
インストール後の設定は、http://redmine.lighttpd.net/wiki/lighttpd/InstallFromSource#Init-scriptの項目に沿って実施する。
サーバがCentOSなので
#sed -e 's/FOO/lighttpd/g' doc/initscripts/rc.lighttpd.redhat > /etc/init.d/lighttpd #chmod a+rx /etc/init.d/lighttpd #cp -p doc/initscripts/sysconfig.lighttpd /etc/sysconfig/lighttpd #mkdir -p /etc/lighttpd #cp -R doc/config/conf.d/ doc/config/*.conf doc/config/vhosts.d/ /etc/lighttpd/ #chkconfig lighttpd on
起動スクリプト中のサーバのパスが /usr/sbin/lighttpd で、実際のインストールパスが /usr/local/sbin/lighttpd なので、シンボリックリンクを作成。
#ln -s /usr/local/sbin/lighttpd /usr/sbin/lighttpd
Lighttpdの設定
後でFastCGIやPHPはインストールするとして、Lighttpdがうまく動くかを確認。色々な仕組みを一緒に使う時は、ひとつひとつ動くことを確認しながら進めると意外とはまらない。設定については、http://redmine.lighttpd.net/wiki/lighttpd/TutorialConfigurationで大まかな設定例があり、それに沿えば良い。
#vi /etc/lighttpd/lighttpd.conf var.log_root = "/var/log/httpd" ←apacheと同じ場所に設定 server.port = 80 ←サーバのポート。apacheがポート80でまだ動いているような場合は別のポートにする必要がある server.username = "nobody" ←デフォルトで lighttp になっているが、ユーザもグループも作っていないので nobody にした server.groupname = "nobody" server.document-root = "/var/www/public_html" ←デフォルトのドキュメントルートを設定
実行ユーザをnobodyにしたので、ログディレクトリ /var/log/httpd がnobodyでアクセス出来るよう設定する。
#chown nobody:nobody /var/log/httpd
ここまでの設定でひとまずLighttpdは動く、はず。
#service lighttpd start
apacheのようにデフォルトページが用意されていないので、最初は何も表示されない。自前でindex.htmlを作ってドキュメントルートにアップして確認する。
さくらのVPSにLighttpd+PHPをインストール その2へ続く。
bashでImageMagickを使った画像縮小バッチ処理
ちょっとした理由で、bashでImageMagickを使った画像縮小バッチ処理を書いた。
perlのImage::Magickを使うのがポピュラーなんだろうけれど、マシンにImageMagickは入れてあるが、Image::Magickモジュールは無いという微妙な状況だったのでbashで書いてみた。ソースは以下のとおり。
#!/bin/bash size=$(identify $1 | cut -d " " -f 3) width=$(echo $size | cut -d "x" -f 1) height=$(echo $size | cut -d "x" -f 2) if [ $width -gt $height ]; then if [ $width -gt 200 ]; then ratio=$((20000/$width))% else ratio=100% fi else if [ $height -gt 200 ]; then ratio=$((20000/$height))% else ratio=100% fi fi convert -geometry $ratio -quality 80 $1 $2 exit 0
resize.sh なんて名前で保存して、実行権限つけて
./resize.sh 縮小前の画像ファイル名 縮小後の画像ファイル名
といった具合で実行する。
上記のソースの例では、縦横大きい方が最大200ピクセルになるように縮小される。ロジックはよくあるもの。
ImageMagickを使うことはたまにあるけれど、大抵はperl上から呼び出している。今回はperlを使えないという一風変わった制限の中での対処となった。画像処理は比較的、負荷が高めなので、バッチで回せるところは出来るだけバッチにしておきたい所。
それだけのためにシェルからperlを呼び出すのであれば、今回のようにシェルの中だけで対応することも可能というサンプル、になっているかな?