タグ: centos

PHP5.3 インストール

Cent5入れるときにボーっとしているとPHP5.1.6が入ってしまう。
これだといろいろと都合が悪いので5.3系に入れなおす。

yum remove php*

で既存のPHPをアンインストール。
その後、

yum install php53*

で5.3系をインストールする。
インストール後、httpdを再起動するとページが「Internal Server Error」になることがある。
そのときは
ln -s /lib/php/hoehoe.so /etc/lib/php/hoehoe.so
見たいな感じでリンクをはる。

miniDLNA

2013/11/12追記
stable version 1.1.0 が出てます。
ダウンロードアドレスは
http://jaist.dl.sourceforge.net/project/minidlna/minidlna/1.1.0/minidlna_1.1.0_static.tar.gz
メッセージファイルが増えていたりしますが、
インストール方法・設定ファイルの変更は変わりません。
下記方法で CentOS 6.4 にもインストールOKでした。

ubuntuなら「apt-get install minidlna」で入るのですが、今回はCentOS6.3。
世の中そんなにうまく出来てません。

[root@localhost]# yum install minidlna
 Loaded plugins: fastestmirror
 Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
 base | 3.7 kB 00:00
 extras | 3.0 kB 00:00
 updates | 3.5 kB 00:00
 Setting up Install Process
 No package minidlna available.
 Error: Nothing to do

CentOS5.5+PT2にminiDLNAを入れて、.TSファイルをBRAVIAで見られる様にする。

ここを参考に進めていきます。

本家はhttp://minidlna.sourceforge.net/
日本語版はhttp://sourceforge.jp/projects/sfnet_minidlna/

とりあえずwgetでダウンロードします。

wget http://sourceforge.net/projects/minidlna/files/minidlna/1.0.25/minidlna_1.0.25_static.tar.gz/download

tarで解凍。解凍先はルートディレクトリで。
上書きが怖い場合は -k オプションつけとくといいみたい。

[root@localhost ~]# tar -zxvf minidlna_1.0.25_static.tar.gz -C /
 usr/sbin/minidlna
 usr/share/locale/sv/LC_MESSAGES/minidlna.mo
 usr/share/locale/fr/LC_MESSAGES/minidlna.mo
 usr/share/locale/nl/LC_MESSAGES/minidlna.mo
 usr/share/locale/es/LC_MESSAGES/minidlna.mo
 usr/share/locale/da/LC_MESSAGES/minidlna.mo
 usr/share/locale/it/LC_MESSAGES/minidlna.mo
 usr/share/locale/de/LC_MESSAGES/minidlna.mo
 usr/share/locale/nb/LC_MESSAGES/minidlna.mo
 usr/share/locale/ja/LC_MESSAGES/minidlna.mo
 etc/minidlna.conf

中身はこの11ファイルだった。
なんだか日本語のメッセージファイルも同梱されているみたいだけど、どこで使えばいいのかわかりません。
使う必要があるのかもわかりません。

vi /etc/minidlna.conf

で、minidlna.confを編集。と言っても1箇所2箇所なので。
詳細なマニュアルはUbuntu Manpage:minidlna.confあたりに。ubuntu用だけど。

# set this to the directory you want scanned.
# * if have multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to a specific content type, you
#   can prepend the type, followed by a comma, to the directory:
#   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)
#   + "V" for video  (eg. media_dir=V,/home/jmaggard/Videos)
#   + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
#media_dir=/opt
media_dir=V,/mnt/D/video
media_dir=V,/mnt/E/video2

# set this if you want to customize the name that shows up on your clients
#friendly_name=my DLNA Server
friendly_name=miniDLNA Server

11行目から13行目あたりに書いてあるようにDLNAサーバに公開したいディレクトリを設定する。
 ディレクトリが複数にある時は上記のように複数行記述する。
19行目あたりのfriendly_nameを適当に書き換えてコメントアウトを外す。
35行目のinotifyはyesになっているならそのまま。
49行目のnotify_intervalも900(15分)のままで大丈夫な気がする。

[root@localhost ~]# /usr/sbin/minidlna

で起動します。
これでPS3からメディアサーバとして認識されます。

mkvファイルが「未対応データ」になっちゃうのはmediatombの時も同じだっけ・・・?

samba

まず、SAMBA用ユーザー追加

adduser katz

でユーザ追加。

passwd katz

でパスワードを設定しておく。

yum install samba

SAMBAインストール。今回入ったのは3.5.10。

pdbedit -a katz

でsamba用ユーザの追加とパスワード設定。

vi /etc/samba/smb.conf

[D]
comment = D Drive
path = /mnt/D
browseable = yes
writable = yes
valid users = katz
force directory mode = 0777
force create mode = 0777

設定。

/etc/init.d/smb start

でスタートさせる。

初期設定

全体に共通するような項目はここに。

resolv.conf でDNSの指定

vi /etc/resolv.conf

で以下を設定。

nameserver 192.168.1.1

1行、DNSサーバアドレスを入力して保存。

ping www.yahoo.co.jp

で名前解決をしてPINGが帰ってくることを確認して終了。
追加で

search katzplus.com

とか書いておくと、「www」だけ入力してエンター押しちゃった時に「katzplus.com」を補完して探してくれるかもしれない。

logrotate を hourly でまわす

なんでこんな事しなきゃいけないかというと、MySQLでクエリログをちょっと長時間で取る必要があったから。
1時間で100M越えるんだもんなー

と、愚痴ってもしょうがないのでサクサク進める。
やってることは簡単。「/etc/cron/daily/logrotate」を「/etc/cron/hourly/logrotate」にコピーする。
それだけ。

cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate

以上。

ユーザとグループの確認

ユーザリストを確認したい時は

/etc/passwd

でリストが出るのでこれで確認する。
ユーザが所属しているグループは

id [ユーザ名]

で出てくる。

id

だけ打つと自分の所属しているグループが確認できる。

ユーザの追加は

adduser [ユーザ名]

で。
これはMySQLやsambaのユーザ追加とは別なので注意。

userdel [ユーザ名]

だとユーザ削除。

HDDを増設

gnomeなりxfceなり動作していればこんな手間はかからないような。
コンソールのみの環境だからか、いろいろと作業が必要になります。

  1. まず、接続されたHDDがサーバに認識されているか確認する。
    dmesg | grep sd*

    辺りで確認できる、はず。
    接続したHDD上にがSATAではなく、PATAの場合は

    dmesg | grep hd*

    となるらしい。
    ここでは「/dev/sdb」にディスクが見つかった体で進みます。

  2. HDD上にパーティションを作成する。
    fdisk /dev/sdb

    で、対話モードのディスクユーティリティに入ります。
    helpを確認すると「n」で新しいパーティションを作成できるようなので、これで進みます。
    拡張 or 基本パーティション → p(基本パーティション)
    パーティション番号 → 1
    先頭シリンダと最終シリンダ → 全領域を使用するので両方ともエンターキーのみ
    最後に「w」で今まで設定した項目を書き込んで確定、ということになります。

  3. 作成したパーティションをフォーマットする。
    mkfs.ext4 /dev/sdb1

    でext4形式でフォーマットします。
    /dev/sdb1は/dev/sdbにあるディスクの1番目のパーティションという意味のようです。
    2TBで1時間ぐらいかかった、かな?

  4. フォーマットされたパーティションをマウントする。
    ここから先はいつもどおり。
    事前に

    mkdir /mnt/D
    chmod 777 /mnt/D

    でHDDのマウントポイントを作成しておきます。

    vi /etc/fstab

    で、fstabに

    /dev/sdb1 /mnt/D ext4 defaults 0 0

    ぐらいで書き込み、終わったら

    mount -a

    で、fstabを再読み込み。

    df

    で、サーバに認識されているか確認します。

squid

yum install squid

で普通にインストール。

vi /etc/squid/squid.conf

を書き換える。

#http_port 3128
http_port 8080 transparent

#cache mem 8M
cache mem 32M

ポート番号をデフォルトの3128から8080に変更して透過型にする。
キャッシュサイズも多少あげておく。

aclを書く。

acl locals src 192.168.1.0/255.255.255.0
acl passlist dstdomain "/etc/squid/passlist.txt"
acl blocklist dstdomain "/etc/squid/blocklist.txt"

dstdomainでファイルを指定する。
ファイルの中身は
.google.co.jp
.google.com
katzplus.com
のようなドメインの羅列。

「特定ドメインの特定ディレクトリのみ」というような指定をする場合は

acl regex_passlist url_regex "/etc/squid/regex_passlist.txt"

というように「url_regex」で指定する。
regex_passlist.txtの中身は正規表現で記入する。
^http://mail\.google\.com($|/|:)
^http://[^/]*\.katzplus\.com($|/|:)

aclを書いたらそれぞれの許可・拒否を指定していく。
aclは上から順番に照合して、合致したものがあるとそこから先のルールは照合されないので、順番には気をつける。

http_access allow localhost
・・・
http_access deny !locals
http_access deny blocklist
http_access allow passlist
・・・
http_access deny all
# ↑ですべてのアクセスを拒否しているのでここから下は何を書いても意味がない。

先にblocklistで拒否してから次にpasslistを許可すると、両方に書いてあるドメインはとりあえず拒否が先に合致するので拒否される。

書き終わったら保存して終了。

/etc/init.d/squid start

で起動するか確認。
起動したら

chkconfig --level 35 squid on

で自動起動するようにしておく。

iptableを書き換えて80番ポートで来たものを8080番ポートに転送するようにしておく

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

さらにIP Forwardingを有効にするため、

vi /etc/sysctl.conf

を書き換える。

net.ipv4.ip_forward = 0
↓
net.ipv4.ip_forward = 1

ここまでやったらネットワークの再起動

/etc/init.d/network restart

msgfmt のバージョンを上げる

poファイルをmoファイルに変換するときに
『キーワード “msgctxt” は知りません』
とか言われて処理を打ち切られるとき。

msgfmt -V

で確認すると

msgfmt (GNU gettext-tools) 0.14.6

・・・
ってことで古いんだよそれ。

msgfmt は gettext に含まれているものなので

yum update gettext

でアップデートかけます。

msgfmt (GNU gettext-tools) 0.17

わぁい

ちなみに
『メッセージが二重に定義されています』
にも効果アリでした。

Distribution のバージョン確認

このサーバはCentのいくつ入れてたっけ?
という時には

lsb_release -a

を使う。

LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final

こんなカンジで答えてくれる。
lsb_releaseが入っていない場合は

cat /etc/issue

CentOS release 5.5 (Final)
Kernel \r on an \m

こんな答えが出てくる。

cat /etc/redhat-release

でも

CentOS release 5.5 (Final)

こんなカンジで。

ただし、

uname -a

だと

Linux katzplus.com 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:40 EST 2010 i686 i686 i386 GNU/Linux

のような答えになってカーネルのバージョンしかわからない。

DocumentRoot変更時の注意(selinux無効化)

DocumentRootを var/www/html から変更して別のところにしただけなのに

/etc/init.d/httpd restart
httpd を停止中:                                            [失敗]
httpd を起動中: Syntax error on line 293 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
                                                          [失敗]

となる・・・

SELinuxが有効になっているとこうなるらしいので無効にする。

setenforce 0

これだけだと一時的にしか無効にならないらしいので

vi /etc/selinux/config

で中身を編集する。

SELINUX=enforcing

SELINUX=permissive

に。
これで万事おっけーです。いまのところは。

詳しくは SELinuxを無効化する | Smart -Web Magazine を参照のこと。