CentOS 6.8安裝Samba 4作Windows共享服務器

在某些狀況下爲了實現Windows多臺服務器負載均衡,須要使用共享來作圖片及附件的上傳空間。html

這個時候就須要使用到Samba、IIS虛擬目錄等相關技術node

Web服務器使用upload做爲上傳的目錄,如今須要使用2臺服務器作負載均衡,後臺使用一臺Samba服務器做爲文件共享存儲web

1.創建Samba文件服務器bash

卸載舊的samba組件,CentOS 6默認安裝的是3.6的版本服務器

for a in `rpm -qa|grep samba`; do rpm -e --nodeps $a;done

2.安裝Samba 4負載均衡

yum -y install samba4 samba4-common samba4-client

3.創建共享用戶
ide

說明:因爲Windows在IIS中站點下是不能直接經過磁盤映射的方式做爲站點路徑,必須使用原始的\\192.168.10.2\sns\upload這樣的目錄,而此時訪問共享的用戶就是應用程序池的用戶。測試


這個時候就能夠2種選擇:spa

a.samba使用匿名訪問可讀寫unix

b.修改站點應用程序池用戶爲訪問samba用戶


第一種:使用匿名方式訪問共享

爲共享建立系統用戶及組

groupadd -g 8800 smbgroup

useradd -g smbgroup -s /sbin/nologin -d /dev/null smbuser

建立共享目錄

mkdir /data/share

chown -R smbuser.smbgroup /data/share

chmod -R 755  /data/share


4.配置Samba

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = FileServer
        #hosts allow = 127. 192.168.10
        log file = /var/log/samba/log.%m
        max log size = 50
        
        security = user
        passdb backend = tdbsam
        map to guest = bad user
        guest account = smbuser
        
        create mask = 0775
        force create mode = 0775
        directory mask = 0775
        force directory mode = 0775
        
        unix charset = cp936
        dos  charset = cp936
        
        use sendfile=yes
        write raw = yes
        read raw = yes
        max xmit=65535
        aio read size = 16384
        aio write size = 16384
[upload]
        comment = sns
        path = /var/www/html/upload
        browseable = no
        guest ok = yes
        writable = yes
        #valid users = @smbgroup

說明:在samba 4版本里面security這個值已經廢棄了share,server。所以配置匿名訪問就須要

        security = user
        map to guest = bad user


5.測試samba

[root@gz17img40 samba]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[upload]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        dos charset = cp936
        unix charset = cp936
        server string = FileServer
        security = USER
        map to guest = Bad User
        guest account = smbuser
        log file = /var/log/samba/log.%m
        max log size = 50
        max xmit = 65535
        idmap config * : backend = tdb
        create mask = 0775
        force create mode = 0775
        directory mask = 0775
        force directory mode = 0775
        aio read size = 16384
        aio write size = 16384
        use sendfile = Yes


[upload]
        comment = sns
        path = /var/www/html/upload
        read only = No
        guest ok = Yes
        browseable = No


6.設置啓動服務及開機啓動

/etc/init.d/nmb start
/etc/init.d/smb start
chkconfig nmb on
chkconfig smb on


第二部分:Windows IIS使用共享做爲路徑

舉例:

我須要在站點的SignPDF路徑下創建PDF虛擬路徑

1.點擊「站點」--》對應的SignPDF目錄,右擊「SignPDF」,選擇「創建虛擬目錄」



wKioL1fAAubi488tAABKWHQp_Ww911.png

2.輸入別名,咱們這裏輸入「PDF」,而後選擇對應的物理路徑。

wKiom1fAA2qy5LSdAAAV2EfHiEI649.png

注意:

  1. 這裏的物理路徑,若是使用共享的話,不能使用磁盤映射的路徑,好比我將共享映射爲Z盤,這裏選擇Z盤是無效的,必須使用共享的全路徑

  2. 若是Samba不是使用匿名訪問的話,這裏就須要選擇「鏈接爲」,設置對應的用戶及密碼,這裏的用戶須要自行到Windows系統中進行添加,而且用戶名密碼可訪問共享。


第二種:採用用戶名和密碼的方式訪問共享

爲共享建立系統用戶及組

groupadd -g 8800 smbgroup

useradd -g smbgroup -s /sbin/nologin -d /dev/null smbuser

建立共享目錄

mkdir /data/share

chown -R smbuser.smbgroup /data/share

chmod -R 755 smbuser.smbgroup /data/share

建立smb訪問帳號及密碼,smb帳號要在系統中有同名帳號,不然建立失敗

smbpasswd -a smbuser

輸入密碼123456


4.配置Samba

/etc/samba/smb.conf

[global]
        workgroup = WORKGROUP
        server string = FileServer
        #hosts allow = 127. 192.168.10
        log file = /var/log/samba/log.%m
        max log size = 50
        
        security = user
        passdb backend = tdbsam
        #map to guest = bad user
        #guest account = smbuser
        
        create mask = 0775
        force create mode = 0775
        directory mask = 0775
        force directory mode = 0775
        
        unix charset = cp936
        dos  charset = cp936
        
        use sendfile=yes
        write raw = yes
        read raw = yes
        max xmit=65535
        aio read size = 16384
        aio write size = 16384
[upload]
        comment = sns
        path = /var/www/html/upload
        browseable = no
        #guest ok = yes
        writable = yes
        valid users = @smbgroup

這裏對比上面匿名訪問的註釋了

                #map to guest = bad user
        #guest account = smbuser
        
        在共享的時候修改了
        #guest ok = yes
                valid users = @smbgroup


5.測試samba

[root@gz17img40 samba]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[upload]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        dos charset = cp936
        unix charset = cp936
        server string = FileServer
        security = USER
        log file = /var/log/samba/log.%m
        max log size = 50
        max xmit = 65535
        idmap config * : backend = tdb
        create mask = 0775
        force create mode = 0775
        directory mask = 0775
        force directory mode = 0775
        aio read size = 16384
        aio write size = 16384
        use sendfile = Yes


[upload]
        comment = sns
        path = /var/www/html/upload
        read only = No
        browseable = No
        valid users = @smbgroup

這個時候就能夠經過訪問\\192.168.10.20\upload,輸入用戶名密碼smbuser,123456


6.設置啓動服務及開機啓動

/etc/init.d/nmb start
/etc/init.d/smb start
chkconfig nmb on
chkconfig smb on


第二部分:Windows IIS使用共享做爲路徑

舉例:

我須要在站點的SignPDF路徑下創建PDF虛擬路徑

1.在系統中建立smbuser,密碼必定要與上面建立的smbuser的密碼一致也爲123456

2.點擊「站點」--》對應的SignPDF目錄,右擊「SignPDF」,選擇「創建虛擬目錄」



wKioL1fAAubi488tAABKWHQp_Ww911.png

3.輸入別名,咱們這裏輸入「PDF」,而後選擇對應的物理路徑,並點擊「鏈接爲」,輸入帳號smbuser密碼123456

wKiom1fA_AvBm-jZAAAYomSK488146.png


4.如今就能夠正常訪問共享裏的文件及內容了,可是你會發現沒法上傳。這是由於須要在web.config中定義用戶名密碼,在<system.web>下增長

<identity impersonate="true" userName="smbuser" password="123456" />

如今就能夠正常上傳圖片了



問題:

1.在配置Samba後發如今A節點創建的目錄,B節點沒法寫入,這是由於2個用戶是一致的可是用戶的組不一致。好比A服務器主機名爲ServerA,B服務器的主機名爲ServerB,所以在Samba中的A節點對應的權限就是ServerA\smbuser,B服務器對應的權限就是ServerB\smbuser,這就是形成2臺服務器權限不一致的問題。

在smb.conf中添加

        create mask = 0775
        force create mode = 0775
        directory mask = 0775
        force directory mode = 0775

再重啓服務便可


2.根據上面處理後仍然沒法寫入,就多是對.NET臨時目錄沒有設置寫入權限

將上面的smbuser給下列目錄

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files

寫入權限便可

相關文章
相關標籤/搜索