2011年12月24日土曜日

LAMP of CakePHP on VMware:構築後のデザート~Samba導入

超豚足でお送りしている当シリーズ。CakePHPに関してはインストールと簡単な動作確認を行った以外は何も書かずに早8ヶ月。
月日の移ろいとは残酷なもので、この間の僕はお陰様でRubyやPythonにも携わる機会があり、正直PHPへの興味は薄れてきました…。前述の言語や、SIer時代にメインで使ってきたJavaと比べると、言語としての力の差(※1)やスタイルの一貫性(※2)とかでどうしても見劣りを感じてしまうんだよな。まぁそんな偉そうなこと言えるほど使い込んではないですけど。

まあそれでも需要が高い言語ではあるし、メモしておきたい事は溜まっているので、追々書いていきます。ちなみに今日もPHPではありません。今回はSambaの導入です。
尚、OSはCentOSです(5.4以降で確認済)。

試した環境

CentOS 5.4以降

本題に入るその前に、VMにLAN内の別マシンからアクセスするには

デフォルトの「NAT」だとVMを動かしているマシン上からしかアクセスできないので、同一ネットワーク内の他のマシンからもアクセスできるようにネットワークアダプタ設定を変更。
仮想マシン設定の「ハードウェア」→「ネットワーク アダプタ」の「ネットワーク接続」欄の「ブリッジ」を選択。

Sambaパッケージインストール

# yum install samba

Sambaアクセス用ユーザー作成

sambaユーザーを使用する例。
「pdbedit」コマンドはsambaパッケージと共にインストールされる。アクセス用パスワードを聞かれるので入力する。
# useradd samba
# passwd samba
# pdbedit -a samba
new password:
retype new password:

Samba設定

smb.confファイルを編集。最低限以下を設定しておけば大丈夫でしょう。
各設定項目の意味は何となく分かると思うので割愛。
# vim /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
hosts allow = 127. 192.168. 
dos charset = CP932
unix charset = UTF-8
display charset = UTF-8

# 任意の名前をどうぞ
[share]
comment = "share"
path = /home/samba/share
pubilc = no
writable = yes

ファイアウォール設定

Sambaで使用するポートはUDP137・138とTCP139。
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
# /sbin/service iptables restart

デーモン起動

ついでに自動起動設定もやっちゃいましょう。
# /etc/init.d/smb start
# /sbin/chkconfig smb on

アクセス確認

Windowsのエクスプローラーのアドレスバーに「\\IPアドレス」と入力してアクセス。アカウント情報を入力すると、晴れて共有ディレクトリに入場できます。

ディレクトリ一覧は表示されるが「権限がありません」的なエラーが発生してディレクトリに潜れない場合
SELinuxを無効化してみてください。
setenforceコマンドで無効にし、再起動時に有効にならないよう設定ファイルを編集。
# setenforce 0
# vim /etc/sysconfig/selinux 
SELINUX=disabled

参考

関連エントリ


※1
仕事しててPHPでイマイチだなと思わざるをえなかった点は以下。
  • マルチスレッド機構
    Javaライクなやつ。curl_multiはもちろん知ってるけど、あれってスレッド間通信できます?
  • Selenium WebDriverで、Javaみたいにスタンドアロンで動かせない。
    PHPからはPHPエクステンション形式以外のCプログラム使えない事に起因?

※2
関数の引数の順番(in_array()では検索キーが第一引数だけどstrpos()では第二)とか、クラスや関数の名称がアンスコ区切りだったりキャメルケースだったり…
PEARの「HTTP_Request」とかの命名規則って何て言うの?

0 件のコメント: