Category Archives: Linux

nginx(VirtualDocumentRootもどき)でfastcgi(php-fpm)が動かない

0
Filed under Cent, fastcgi, Linux, nginx, php, WebServer

現在以下のような方法で、VirtualDocumentRootもどきを実装していますが、
PHPのSCRIPT_FILENAMEが正常に取得できないようなので、調査しました。

【変更前】

server {
listen 80;
server_name ~^(.*)\.hoge.com$;
if (!-d /home/hoge.com/$1/web) {
rewrite . http://hoge.com/ redirect;
}

location / {
index index.php;
root /home/hoge.com/$1/web;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/hoge.com/$1/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

上記だと、正常に動きませんでした。
原因としては、以下の部分の「$1」の部分に正しい値が入らないためのようでした。

fastcgi_param SCRIPT_FILENAME /home/hoge.com/$1/web/$fastcgi_script_name;

色々試した結果、$1を別の変数として定義してあげれば動くことを確認しました。
結果、以下のような内容になりました。

【変更後】

server {
listen 80;
server_name ~^(.*)\.hoge.com$;
set $subdomain $1;

if (!-d /home/hoge.com/$subdomain/web) {
rewrite . http://hoge.com/ redirect;
}

location / {
index index.php;
root /home/hoge.com/$subdomain/web;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/hoge.com/$subdomain/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

とりあえず上記の記述方法で正常動作しました。よかったよかった。

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

Nginx(virtualhost)+php-fpmでPHPが動作しない(凡ミス編)

0
Filed under Cent, fastcgi, Linux, nginx, php, WebServer

Nginxでvirtualhostを切ってる状態でphp-fpmを動かそうと頑張っていたんですが、
何故か動かない。
あちこちのサイトで説明されてる内容をそのままやって動かない。

一番下にある洋書のNginxの書籍に書いてある例をやっても動かない。
なんでか悩んでいたんですが、平凡なミスであることがわかりました。

元々の手順としては、nginxが導入されている環境に、

1.PHPとPHP-FPMをyumで簡易インストールする。

yum –enablerepo=remi install php php-fpm

2.一応nginxのメインの設定にphpの設定を書いておく

vi /etc/nginx/nginx.conf

# Add
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

3.自分が作成したVirtualHost用の設定ファイル(/etc/nginx/conf.d/aaa.conf)にも追加する

vi /etc/nginx/conf.d/aaa.conf

server {
listen 80;
server_name test.hoge.com;

location / {
root /home/test.hoge.com/web;
index index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

4.php-fpmの起動ユーザーをnginxユーザにしてみる (※必要に応じて変更するかも)

vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

5.サーバ起動時に自動起動するように起動ファイルのリンク作成

ln -s /etc/rc.d/init.d/php-fpm /etc/rc.d/rc3.d/S87php-fpm

6.サーバ起動させてみる。

/etc/rc.d/init.d/php-fpm start

という手順をしたんですが、htmlファイルは問題なく動作するのですが、phpファイルがうごかない。
真っ白になったり、ダウンロードになったり・・意味がわからない。

結論からいうと、ドキュメントルートの設定がおかしくて、表示したいファイルに到達していなかったという事だった。
どこがダメかというと、上記の「3」に問題があったようだ。

具体的には、

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

ここが問題で、document_root変数の下のfastcgi_script_name変数のファイルをkickするわけだが、
$document_root変数の値が、どうも正しく入っていないようだ。
たぶん、メインの/etc/nginx/nginx.confのrootの値を持ってたりするんじゃなかろうかと思うわけだ。

ということで、以下のように変更して、復旧しました。

fastcgi_param SCRIPT_FILENAME /home/test.hoge.com/web/$fastcgi_script_name;

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

IRCサーバ(ircd-hybrid)をyumを使って簡単に構築する。

1
Filed under Cent, Linux, Network, ルーター, 未分類

時代は、チャットからメッセンジャーそしてIRCにきたようです。
ということで、私もIRCサーバを構築してみようと思うわけです。
なんといっても、手抜きが大好きなので、yumパッケージを探します。

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

上記のリポジトリにIRCサーバ用のソフトが眠ってるようなので、登録します。
release-5-4になってますが、バージョンアップしたら、ここの数字はかわるので、
fedoraのサイトで随時確認してください。

yum install ircd-hybrid

上記のように本丸であるIRCサーバ用パッケージのircd-hybridを
yumで楽々ぶちこみます。
これでインストールされちゃうわけですよ。

cp -irp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf

上記で設定ファイルをコピーするわけですが、cpコマンドにiオプションをつけてるので、
すでに該当ファイルがあるとアラートがでます。上書きしてください。
というか、yumでいれたときに長いファイルができてるんで、絶対アラートでます。

vi /etc/ircd/ircd.conf

name = “irc.aaaaa”;
sid = AAAA;
password = “abcde”;

上記のように設定ファイルをいじくります。
IRCのサーバ名をnameに書き込みます。
次にsidのところに、任意の大文字英数字をぶちこみます。
最後にpasswordはつけてもつけなくてもいいけど、適当に。

/etc/rc.d/init.d/ircd start

上記でIRCサーバが起動するので、めでたしめでたしです。

※デフォルトだと、6667ポートをあけるので、ルータなどで制限してる場合には、あけましょう。

あとは、このままだと、自動起動しないので、以下のようなのもやっとくといいでしょう。

ln -s /etc/rc.d/init.d/ircd /etc/rc.d/rc3.d/S99ircd

S99にしてますが、これは起動順なので、必要な機能があがった後ならいつでもいいです。
Snnでやってください。

linux(CentOS5)でIRCクライアントを利用する

0
Filed under Cent, Linux

linuxでIRCのクライアントを使おうと思ったわけですが、
グーグル先生で調べたところ、xChatが色々と使えてよさそうというのが
書いてあったので、早速いれてみました。

yum install xchat

上部にあるメニューの[アプリケーション]->[インターネット]->[IRC]を指定したら
起動してきます。

あとは、入りたいIRCのサーバ情報やニックネームなどを入力すれば完了っ!!

SambaとSELinuxではまる。の章

0
Filed under Cent, Linux, Samba
Tagged as ,

ローカルエリア上のPCにCentOS5といういわゆるLinux環境があって、
そこにパソコンから接続できるようにSambaをいれようとしたんですが、

Jul 30 04:35:33 hattara smbd[7963]: [2010/07/30 04:35:33, 0] smbd/service.c:make_connection_snum(1013)

Jul 30 04:35:33 hattara smbd[7963]: ‘/home’ does not exist or permission denied when connecting to [haragon.local] Error was 許可がありません

こんな感じのエラーがズラズラとでてくるわけですよ。
こちらをグーグル先生にお問い合わせして調べたところ、
SELinuxというセキュリティ機能が問題なんじゃないかというのがでてきたわけです。

特定ユーザ(Sambaでログインするユーザ)の領域だけを許可するときは、

/usr/sbin/setsebool -P samba_enable_home_dirs 1

を使うようですよ。
たとえば、testというUnixユーザを作ってあって、
そのユーザの領域が/home/testだったら、そこをSamba共有するなら
このコマンドでいいんではなかろうか。
※使ってないので、わからんけど。

で、今回私がやりたいのは、/homeというシステム領域部分を
がっぽりと ぼっこりと共有していきたいので、

/usr/sbin/setsebool -P samba_export_all_rw on

上記のようなコマンドが必要なようだ。
というのが、書いてあったが、ダメだった。。

どうせLAN内で利用するサーバだし勉強用のやつなんで、
とりあえず今回はSELinuxとオサラバすることで、回避しようと思う。

※ちなみに本当にSELinuxが動いてるか確認する場合は

/usr/sbin/getenforce

このコマンドの結果でわかります。


Enforcing なら有効
Permissive なら無効

一時的にSELinuxを無効(オフ)する方法

/usr/sbin/setenforce 0

一時的にSELinuxを有効(オン)する方法

/usr/sbin/setenforce 1

上記の方法でSELinuxの状態を変更することはできるわけだけども、
これは永続的な対策にはならないのです。
サーバを再起動すると、また設定ファイルを読み込んで状態は戻ります。
そこで、永続的に設定を適用したい場合は、以下のようにします。

永続的にSELinuxを無効(オフ)する方法

vi /etc/selinux/config

SELINUX=enforcing
          ↓
SELINUX=disabled

永続的にSELinuxを有効(オン)する方法

vi /etc/selinux/config

SELINUX=disabled
          ↓
SELINUX=enforcing

これでとりあえず大丈夫。
SELinuxを停止したあとは、問題なくSambaにつながりましたとさ。

よかったよかった。
気が向いたら、今度SELinux起動したままどうにかなるか試そうかな。

CentOSで作るUSBLinux

0
Filed under Cent, Linux
Tagged as

最近ちょっと気になりはじめてたんですが、
USBメモリーも安くなってきたし、USB-Linuxなるものを試してみようかと。
どこからともなく、いまさら?と聞こえてきそうですが気にしません。

まずはディストリビューション選び。
まあ、DSL?とかがいいとかUbuntuがいいとかいろいろ書いてありましたが、
男は黙って、CentOSですよね。やっぱり。レッドハットのお膝元ですよ。
(ただ、CentOSを利用する環境になれてるからなのは秘密です。)

まずはインストールするためには、
突っ込むためのツールをGETせんといかんわけです。

fedorahosted さんにある liveusb-creator

を利用しようと思うので、こちらのサイトに伺うわけです。

で、サイトの「Download」のところの「Windows」のところにある
liveusb-creator-3.9.1-setup.exe」なるものをダウンロードしてきて、
Windowsさんにインストールするわけですよ。
※一応このサイトには、Linux用のパッケージについても書いてありました。
 yumでいれりーな と書いてありましたね。
 でも今回はWindowsなんで気にしません。

インストールは、普通どおりExeファイルを実行すればいいんですよ
フォルダを指定して、インストーーーール!!

そしたらかってにソフトが起動してくるわけですよ
「Use existing Live CD」
「Download Fedora」
「Target Device」
「Persistant Storage」
という項目がでてくるわけですよ
とりあえずディストリビューションがないので、そのままにしとく。

先にディストリビューションを探してくることにしましょう。
先ほどいったとおり男はだまってCentOSなので、
http://centos.org/にいきますよ。

「Download: i386」こちらのリンクをおして、
そのご適当なアーカイブ置き場のリンクを選択するわけですよ。
今回は、JAPANのサイトである「
http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.4/isos/i386/
」を利用。
最新版は、5.4っぽいので、これでいきますよ。

こちらにいったら、「CentOS-5.4-i386-LiveCD.iso」なるものを
ダウンロードしてくるわけですよ。

ダウンロードがおわったら、もう一度liveusb-creatorの画面にもどりまして、
「Use existing Live CD」の「Browse」でダウンロードしたisoファイルを指定してあげるわけですよ。
そしたら、下の白いボックスのところに、isoファイルが表示されます。

次に「Target Device」ですが、Windowsのマイコンピュータを開いて、
利用したいUSBのパーティションの英字を確認して、それを選択します。

最後が、「Persistant Storage」なわけですが、よくわからないが書き込みされる領域について質問されているのだろうか。
とりあえず8GBのUSBメモリなので、最大で指定できる「7006MB」にしておく。

あとは、「Create Live USB」ボタンをおしたら、処理が走り始めましたよ。

Cent4&PHP5&Trac&Pythonの甘い罠

0
Filed under Apache, Cent, Linux, php, python, Trac
Tagged as , , , , ,

Cent4(CentOS4)系でTrac(Python&Sqlite)を使う場合に、
PHP5を利用していると、(pdo_sqlite)がconflict?するようで、
TracかPhpかどちらかしか動作しなくなる。

具体的には、yum版のApache2とかだと、
/etc/httpd/conf.d/php.conf とかで以下の記述がある場合、
Tracが動かなくなる。

LoadModule php5_module modules/libphp5.so

具体的には、ブラウザ上では、500エラーになり、
エラーログでは、以下のような出力がたくさんでる。

PythonHandler trac.web.modpython_frontend: DatabaseError: unsupported file format

で、上記のLoadModuleをコメントアウトすると、Phpは動かなくなるが、
Tracは動くようになる。

ということで、PhpでSqliteを使う予定がなければ、
以下のようにpdo_sqlite.iniを適当な名前にリネームしてあげればよし。

mv -i /etc/php.d/pdo_sqlite.ini /etc/php.d/pdo_sqlite.ini_org

その後、Apacheの再起動をお忘れなく。
yum版(rpm)のApacheの場合には、

/usr/sbin/apachectl restart

とかでいいですね。

で、以下のサイトを参考にさせてもらいました。

Ryuzee.com >> CentOS4でPHP4から5にするとTracが動かなくなる

LPI-Japanの「Linux標準教科書(Ver1.0)」について

0
Filed under Linux

直接的に技術に関係はないんだけども、
ちょっと記事をみかけたので、忘れないようにメモしとく。

LPI-Japan

Linuxを基礎から学習するための教材を無料で提供してくれるそうですよ!!
量がすごいらしいです。
これからLinuxを勉強しようとかいう人にはいいかもですね。
電子データみたいですし。

書籍を買う前に無料で使えるものから使ってはどうでしょう。

ダウンロードは以下からできるみたいですね。
でも個人情報の入力がいるようだ。

ダウンロードサイト