多臺服務器聯合工作之samba+wordpress
首先安裝並配置samba
在日常工作中我們可能經常會遇到在Linux和Windows系統之間相互傳遞文件的事情,像這種情況我們可以使用類似於FileZila這種軟件,但是如果我們有很多的Windows系統,那麽就需要在所有的Windows系統中安裝這種軟件。為了解決這個問題,我們可以在Linux系統中安裝samba軟件。當然這個軟件的功能還有很多,要想詳細了解可以到百度百科:
https://baike.baidu.com/item/samba/455025?fr=aladdin
一、進行軟件安裝
進行samba的安裝,首先要配置好yum源,然後使用以下命令:
~]# yum install samba
然後啟動下面這兩個服務,其中nmb.service是NetBios協議,這是一個簡短的主機名解析協議,如果這個服務沒有開啟的話,就不能識別別人的主機名;smb.service是Service Message Block——服務消息塊。這兩個服務必須全部開啟才能進行正常的訪問:
~]# systemctl start nmb.service ~]# systemctl start smb.service
二、配置文件含義
在安裝完成之後會在“/etc/samba”下自動生成兩個配置文件——lmhosts和smb.conf,其中lmhosts是針對主機進行解析,但是只有在使用samba的時候生效,和“/etc/hosts”是兩個不沾邊的東西;另外一個配置文件smb.conf則是samba這個軟件的配置文件,這個配置文件中所有的配置信息分成了兩類,第一類是全局配置信息,這部分負責設置samba服務的整個工作環境,第二類是共享定義,分別由下圖中這兩個東西隔開:
在全局配置中又分出了三個更加詳細的部分,分別是:
Network Related Options 在這裏配置網絡的接口信息 Logging Options 在這裏配置日誌信息 Standalone Server Options 在這裏配置安全等信息
在Network Related Options中有以下幾個參數:
workgroup = MYGROUP 設置工作組名(一般保持和windows中一致)
server string = Samba Server Version %v 設置服務器名字
netbios name = MYSERVER 設置當在Windows中訪問時所用到的名字
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 設置網絡接口信息
hosts allow = 127. 192.168.12. 192.168.13. 設置允許訪問此服務器的IP地址範圍
在Logging Options中有以下兩個參數:
log file = /var/log/samba/log.%m 設置日誌文件保存位置
max log size = 50 設置日誌最大條數
在Standalone Server Options中有以下幾個參數
security = user 設置samba服務的安全級別,取值有四個,分別是:
share級別:匿名共享,允許所有人以來賓用戶身份匿名訪問所有的共享目錄
user級別(主流、默認):使用samba服務自我管理的賬戶和密碼進行用戶認證;用戶賬戶必須首先是系統用戶,但是密碼並非為/etc/shadow中的密碼,而是由samba自行管理的數據庫文件中存放的密碼;存放密碼的文件的格式由passdb backend指令進行定義
server級別:由第三方服務器進行統一用戶身份認證
domain級別:使用域控制器進行用戶身份驗證;基於kerberos協議進行
passdb backend = tdbsam 設置即用戶後臺,有三種後臺,分別是:
smbpasswd,tdbsam,dapsam(在這裏著重記住smbpasswd和tdbsam,後面還會提到)
以上為全局配置信息,在沒有必要的時候一般不需要去更改,而我們經常做的操作是修改共享的配置信息,即Share Definitions,在這裏邊又分為了三類,分別是:
[homes]——為每個samba用戶定義其是否可以通過samba訪問自己的家目錄
[printers]——定義共享打印機
[share_fs]——定義共享目錄或文件系統
在共享配置中經常使用到的指令有以下幾種:
comment:註釋信息
path:定義當前共享的目錄的路徑,建議使用絕對路徑
browseable:是否可以被瀏覽,其實指的是是否能夠在訪問的頁面裏直接被看到(雖然看不到,但是有可能訪問的到)
public:是否將共享的目錄公開給所有的用戶訪問,一般與“share”安全級別同時使用
guest ok:是否允許來賓賬戶訪問
註:public = yes 相當於 guest ok = yes
writable:對共享目錄是否有“寫”共享權限;針對於所有的合法用戶
read only:對共享目錄是否有“只讀”共享權限;針對於所有的合法用戶
註意:writable = yes 相當於 read only = no
write list(這個才是真正控制訪問的) = username @groupname +groupname:允許哪些用戶或組對此共享目錄有“寫”共享權限
valid users = username @groupname +groupname:定義哪些用戶或組為此共享目錄的有效訪問用戶
註意:
writable = yes +valid users = username @groupname +groupname 相當於write list = username @groupname +groupname
create mode = 0644:通過共享方式創建的文件的默認權限
dir mode = 0755
directory mode = 0755(和上面的是一樣的)
上述兩個指令的意思是:通過共享方式創建的文件的默認權限
上面所說的這些配置信息在“/etc/samba/smb.conf”都可以查看到,如果英語好可以直接使用man命令查看幫助:
~]# man smb.conf
當然,上面所列舉的配置參數並不全,如果想了解更多可以訪問:
http://linux.chinaunix.net/techdoc/system/2006/02/14/927715.shtml
在說完配置信息之後,我們再回頭看全局配置信息的第二行,有個%v,如圖:
這是samba的配置文件中使用的宏,一些常用的宏如下(全部的宏也可以通過man手冊查看):
%v:samba程序的版本號
%m:客戶端主機的NetBIOS名稱
%H:當前用戶的家目錄的路徑
%U:當前用戶的用戶名
%g:當前用戶的屬組的組名
%h:當前samba主機的HOSTNAME
%I:當前的系統日期和時間
三、進行配置
在修改配置文件的時候其實並不用修改很多,只需要在其中加入自己的配置信息即可,像現在,我需要將“/myshare”文件進行共享,允許IP號為172.16.0.0掩碼為16的主機通過在組mytest中的mytest用戶訪問,只需要將下面的信息寫入“/etc/samba/smb.conf”中最後面即可:
[myshare]
comment = my shared directory for LAN
hosts allow = 172.16.
path = /myshare
public = no
browsable = yes
write list = @mytest mytest (@後面跟的是組名,另一個是用戶名)
create mask = 0644
dir mask = 0755
添加之後保存退出即可,但是現在我們還不能開啟服務,因為samba要求登陸的用戶和組必須在系統中真實存在,所以我們要先建立對應的組和賬戶(也可以創建一個用戶,然後添加到相應的組中):
~]# useradd mytest ~]# passwd mytest
然後我們創建要共享的目錄並修改其屬組、屬主和權限:
[[email protected] ~]# mkdir /myshare [[email protected] ~]# chmod 1777 /myshare [[email protected] ~]# chown mytest:mytest /myshare/
在添加了系統賬號以後還需要將這個賬號作為samba的賬號,使用的命令會根據配置文件的不同而有所不同,還記得上面提到後面還會說的那個參數麽,就是“passdb backend”,如果他的參數是smbpasswd就使用smbpasswd命令:
smbpasswd:
-a:添加samba用戶
-x:刪除samba用戶
-d:禁用samba用戶
-e:啟用被禁用的samba用戶
而如果參數是tdbsam的時候就使用pdbedit命令:
pdbedit:
-L:列出所有被成功添加的samba用戶
-a,--create:添加samba用戶
-u username:指明要管理的用戶面積大幅海南板塊vde
-x,--delete:刪除samba用戶
-t,--password
在進行配置的時候我並沒有修改這個參數,所以它依然保持默認的“tdbsam”:
所以下面我要用pdbedit命令來添加賬戶到samba中:
添加完成之後可以使用“-L”選項查看是否添加成功:
四、開啟服務
到此,一個基於samba的文件共享配置就完成了,下面開啟此服務即可(可以使用testparm命令測試配置文件的語法是否正確)(如果是CentOS 6使用service進行開啟):
[[email protected] ~]# systemctl start smb.service [[email protected] ~]# systemctl start nmb.service
下面就在windows系統中進行遠程連接,首先到我的電腦中,在空白處右鍵-->添加一個網絡位置
然後一直下一步,直到這一步:
在這裏輸入的格式為“\\剛才進行配置的主機IP\剛才寫到配置文件中第一行[]中的內容”:
然後再點擊下一步就會跳出要輸入賬號密碼的彈框(如果沒有跳出來請檢查上面的步驟是否做錯或者剛才進行配置的主機上防火墻和SELinux是否關閉),賬號是mytest,密碼是mytest的密碼:
之後一路點擊下一步至結束,返回我的電腦就可以看到如下圖所示的圖標:
然後我們就可以通過這個文件夾來進行windows系統和linux系統之間的文件共享了。
samba與wordpress
將samba和wordpress放到一起只是為了舉這麽一個例子,在有的時候web頁面的開發人員已經將開發後的web頁面上傳到服務器上開始運行,但是在過了一段時間之後,發現這個頁面有了點小問題需要修改,於是就要在自己的電腦上進行修改,修改的時候還需要記住修改了哪裏,然後到服務器上通過軟件再修改一遍,這無疑是大大增加了開發人員的工作量。而如果我們將服務器上存放網頁的那個目錄通過samba的方式掛載到開發人員的電腦上,那麽開發人員只需要修改一次就好了。
一、上傳軟件
首先將從網上下載到的wordpress壓縮包拷貝到分享目錄中(下載地址參考前幾篇博客):
然後鼠標右鍵點擊解壓到當前文件夾:
在解壓完成之後就會看到如下圖所示的wordpress文件夾:
回到xshell中使用命令查看,發現剛才上傳的文件的屬組和屬主都是“mytest”:
二、進行配置
在文件上傳完畢之後就要開始配置了,由於在這臺主機上我已經配置過wordpress,所以現在直接復制一份配置文件:
~]# cp /etc/httpd/conf.d/vhost-mywebwordpress{,bysamba}.conf
將配置文件中的內容修改為:
NameVirtualHost *:80 <VirtualHost *:80> ServerName myshare.wordpress.com DocumentRoot /myshare/wordpress ErrorLog logs/wordpress-error_log CustomLog logs/wordpress-access_log combiend <Directory "/myshare/wordpress"> Options None AllowOverride None Require all granted </Directory> </VirtualHost>
然後再從原來配置好的wordpress中復制一份配置文件(如果之前沒有配置過,那麽可以到下面這個鏈接查看):
(http://11142243.blog.51cto.com/11132243/1964468)
~]# cp /myweb/wordpress/wp-config.php /myshare/wordpress/
最後重新載入配置文件(如果失敗的話有可能是httpd服務還沒有開啟,要先開啟服務-將reload改成start):
~]# systemctl reload httpd
此時,samba+wordpress就構建完成了,但是在使用的過程中,我發現不能上傳圖片:
原來使用wordpress登陸的時候默認使用的是apache賬戶,而“wp-content/uploads”這個目錄對於其他用戶沒有“w”權限,所以才會報錯,解決這個問題的方法有很多,在這裏我就直接使用以下命令來給其賦予“w”權限:
~]# chmod o+w /myshare/wordpress/wp-content/
到這裏,samba+wordpress的配置就完成了:
掛載的方式使用
上面已經完成了基礎的wordpress+samba的配置,但是這只是在同一臺機器上,畢竟一臺機器的資源是有限的,所以我們可以將wordpress部署在一臺機器上,然後通過掛載的方式掛載到剛才配置的主機上,這樣就能實現簡單的負載均衡,避免了一臺主機過於忙碌而掛掉的事情。下面就進行相關的部署:
一、準備另外一臺主機安裝並配置Samba
在我的虛擬機上正好有一臺IP為172.16.7.101的主機,我現在就在這臺主機上部署samba,使用到的命令如下(詳細的過程上面已經說過了,就不再重復了):
yum install samba #安裝samba vim /etc/samba/smb.conf #修改配置文件(到上面去看) mkdir /myshare #創建要分享的文件 useradd mytest #添加系統賬戶 systemctl start smb.service #開啟服務 systemctl start nmb.service pdbedit -a mytest #添加samba用戶 chown mytest:mytest /myshare/ #修改要分享的目錄的屬主和屬組 setenforce 0 #關閉SELinux防火墻 iptables -F #清空防火墻列表(全部放行)
當上面的命令全都運行一遍之後,samba服務器就布置好了,在這裏我們可以在windows系統中使用另一種方法連接:使用Win+R打開運行對話框,對話框中輸入IP地址和目錄,如圖所示:
如果前頭都沒有出錯,那麽稍等一會就會跳出如下圖所示的對話框:
在輸入密碼之後就會跳出如下圖所示的文件夾(這種方式不會在我的電腦中創建快捷方式,適合臨時使用或者測試):
二、復制文件並掛載使用
到了這一步,相信你也能猜到下一步該幹什麽了,就是將剛才在172.16.7.100主機上的wordpress所有文件復制到這個共享目錄中,使用以下命令復制並修改屬組和屬主:
scp -r [email protected]:/myshare / chown mytest:mytest /myshare/ -R
為了避免出現意外,現在將172.16.7.100主機上原來的wordpress改個名字:
~]# mv /myshare/wordpress{,.bak}
改完名字之後再去訪問http://myshare.wordpress.com/網址發現已經找不到了:
接下來我們要做的就是將172.16.7.101上共享的目錄掛載到172.16.7.100的共享目錄上,替換掉原來的wordpress,在172.16.7.100上使用以下命令完成掛載:
~]# mount.cifs -o username="mytest",password="123456" //172.16.7.101/myshare /myshare
但是這種方式不安全,因為密碼被明文顯示,所以我們可以將密碼寫到一個文件中,然後調用這個文件完成掛載:
mount.cifs -o credentials=/root/passwd //172.16.7.101/myshare /myshare
然後文件中寫入以下內容:
username=mytest password=123456
或者將掛載信息寫到“/etc/fstab”中實現開機自動掛載,但是不推薦這種方式,因為如果172.16.7.101這臺主機在172.16.7.100這臺主機開機之前沒能正常開啟samba服務,那麽172.16.7.100這臺主機有可能會啟動失敗。掛載信息:
//172.16.7.101/myshare /myshare cifds defaults,credentials=/root/passwd 0 0
在掛載完成之後回到剛才的網頁再刷新,發現又可以連接了
多臺服務器聯合工作之samba+wordpress