実行環境(CentOS)上にいらないパッケージを色々投入するのも・・・とおもい
※コード記述時:Windows7 上からファイル共有(samba)でCentOS上のファイルを操作
※実行環境(HHVM):CentOS 7(VMでエミュレート)
という環境を構築しきるまでの道のりの記録です。
###必要ソフトを入手
・CentOS 7のディスクイメージ
(実際にDVDに焼くか仮想ドライブでマウントするかは好みです)
https://www.centos.org/
・Oracle VM VirtualBox(CentOS7の起動環境用VM)
https://www.virtualbox.org/
###VirtualBOXにCentOS7をインストール
・メニュー:仮想マシン>新規 を選択して 下記を入力して「次へ」
名前:任意(自分でわかる名前を好きにつけて大丈夫)
タイプ:Linux
バージョン:Red Hat(64 bit)
・メモリーサイズは任意(自分のPCの搭載メモリ量と相談で)
・ハードドライブは「仮想ドライブを作成する(C)」をチェックし「作成」
仮想ドライブの作成ウィザードが起動するのでファイルタイプ(任意)をチェックし
「次へ」(私はVDI形式にしています)
・サイズ選択は可変でも固定任意で大丈夫
(「固定」のほうがパフォーマンスはあがるそうですが制約もあります)
・ファイルの場所とサイズはフォルダアイコンで保存先を選び、
作りたい仮想ドライブの大きさにサイズをセット
・「作成」ボタンで仮想ドライブが作成されます。
###nginxのインストール
・nginx をインストール
[user@centos7 ~]$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
#baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=0
[user@centos7 ~]$ yum -y --nogpgcheck insatall nginx
・nginx.conf をバックアップ
[user@cetnso7 ~]# sudo cp /etc/nginx/nginx.conf /etc/nginx/.nginx.conf.org
[user@centos7 ~]$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
・ファイルを編集
user nginx;
worker_processes 1; # マシンのCPU数に合わせる
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
server {
listen 80;
server_name localhost;
charset uft-8;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
・起動確認
[user@centos7 ~]$ sudo systemctl start nginx
[user@centos7 ~]$ sudo systemctl enable nginx
##HHVMをインストール
[user@centos7 ~]$ cd /etc/yum.repos.d/
[user@centos7 ~]$ sudo wget http:/www.hop5.in/yum/el6/hop5.repo
[user@centos7 ~]$ sudo yum -y --nogpgcheck install hhvm
[user@centos7 ~]$ hhvm --version
Compiler: tags/HHVM-3.1.0-0-
g71ecbd8fb5e94b2a008387a2b5e9a8df5c6f5c7b
Repo schema: 88ae0db264d72ec2e2eb22ab25d717214aee568b
(インストール成功すればこんなのが出力される)
##sambaのインストール
sambaのユーザーはcentos としています。
・sambaアクセス用ユーザー作成
[user@centos7 ~]$ sudo yum -y install samba
[user@centos7 ~]$ sudo useradd centos
[user@centos7 ~]$ sudo passwd centos
Changing password for user centos.
New password: <- パスワード応答
Retype new password: <- パスワード応答(確認)
passwd: all authentucation tokens update successfully.
[user@centos7 ~]$ sudo pdbedit -a centos
new password: <- パスワード応答
retype new password: <- パスワード応答(確認)
startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.
Unix username: centos
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1397570601-503051572-2212552623-2000
Primary Group SID: S-1-5-21-1397570601-503051572-2212552623-2001
Full Name:
Home Directory: \\linux\centos
HomeDir Drive:
Logon Script:
Profile Path: \\linux\centos\profile
Domain: LINUX
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 土, 14 12月 1901 05:45:51 GMT
Kickoff time: 土, 14 12月 1901 05:45:51 GMT
Password last set: 月, 13 12月 2004 16:06:00 GMT
Password can change: 月, 13 12月 2004 16:06:00 GMT
Password must change: 土, 14 12月 1901 05:45:51 GMT
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
・ホームディレクトリ設定
[user@centos7 ~]$ mkdir /etc/skel/samba
[user@centos7 ~]$ vi mkhomedir.sh
#!/bin/bash
for user in `ls /home`
do
id $user > /dev/null 2>&1
[ $? -eq 0 ] && \
[ ! -d /home/$user/samba ] && \
mkdir /home/$user/samba && \
chown $user:$user /home/$user/samba && \
echo "/home/$user/samba create"
done
[user@centos7 ~]$ sh mkhomedir.sh
[user@centos7 ~]$ rm -f mkhomedir.sh
[user@centos7 ~]$ sudo mkdir /home/samba
[user@centos7 ~]$ sudo chown nobody:nobody /home/samba
・smb.conf 編集
[user@centos7 ~]$ sudo vi /etc/samba/smb.conf
[global]
unix charset = UTF-8 <- 追加(Linux側日本語文字コード)
dos charset = CP932 <- 追加(Windows側日本語文字コード)
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = MYGROUP
↓
workgroup = WORKGROUP <- 変更(Windowsのワークグループ名を指定)
; hosts allow = 192.168.1. 192.168.2. 127.
hosts allow = 192.168.1. 127. <- 追加(内部からのみアクセスできるようにする)
# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
; load printers = yes <- 行頭に;を追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合
load printers = no <- 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合
disable spoolss = yes <- 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合
[homes]
comment = Home Directories
path = %H/samba <- 追加(/home/ユーザー名/sambaをホームディレクトリにする)
browseable = no
writable = yes
各ユーザ専用のごみ箱機能追加(ここから)
※ファイル削除時に自動的にごみ箱へ移動されるようにする
vfs objects = recycle <- ごみ箱の有効化
recycle:repository = .recycle <- ごみ箱のディレクトリ名(/home/ユーザ名/.recycle)
recycle:keeptree = no <- ごみ箱へ移動時にディレクトリ構造を維持しない
recycle:versions = yes <- 同名のファイルがごみ箱にある場合に別名で移動
recycle:touch = no <- ごみ箱へ移動時にタイムスタンプを更新しない
recycle:maxsize = 0 <- ごみ箱へ移動するファイルのサイズ上限(0:無制限)
recycle:exclude = *.tmp ~$* <- ここで指定したファイルはごみ箱へ移動せずに即削除する
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
only guest = yes
vfs objects = recycle <- ごみ箱の有効化
recycle:repository = .recycle <- ごみ箱のディレクトリ名(/home/ユーザ名/.recycle)
recycle:keeptree = no <- ごみ箱へ移動時にディレクトリ構造を維持しない
recycle:versions = yes <- 同名のファイルがごみ箱にある場合に別名で移動
recycle:touch = no <- ごみ箱へ移動時にタイムスタンプを更新しない
recycle:maxsize = 0 <- ごみ箱へ移動するファイルのサイズ上限(0:無制限)
recycle:exclude = *.tmp ~$* <- ここで指定したファイルはごみ箱へ移動せずに即削除する
・samba 起動
[user@centos7 ~]$ sudo systemctl start smb
[user@centos7 ~]$ sudo systemctl enable smb
[user@centos7 ~]$ sudo systemctl start nmb
[user@centos7 ~]$ sudo systemctl enable nmb
・SELinux が有効な場合ディフォルトのままでは、
クライアント(Windows)側からアクセスできないのでSELinux の設定を変更する
[user@centos7 ~]$ sudo setsebool -P allow_smbd_anon_write=on <- smbdデーモンによる書き込みを許可
[user@centos7 ~]$ sudo setsebool -P samba_enable_home_dirs=on <- ユーザー毎のホームディレクトリの共有を許可
[user@centos7 ~]$ sudo setsebool -P samba_share_nfs=on <- NFSで共有している場合設定が必要
[user@centos7 ~]$ sudo setsebool samba_export_all_rw=on <- smbdにてすべてのファイルの書き込み / 読み出しを許可する。
! セキュリティが低下するので、個別にディレクトリにラベルをつける方法
[user@centos7 ~]$ chcon -R -t public_content_rw_t /home/samba
[user@centos7 ~]$ chcon -R -t public_content_rw_t /home/centos/samba