天天看点

dns,lamp,文件共享服务为基础的三个示例

一、建立samba共享,共享目录为/data,要求: 

1)共享名为shared,工作组为MYDATA,可以被浏览; 

2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; 

3)添加samba用户gentoo,centos和ubuntu,密码均为 “samba”; 

4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问; 

5)此samba共享服务仅允许来自于192.168.1.0/24网络的主机访问;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<code># 说明,以下所有的配置都是在同一它机器中完成的,CentOS6.5系统</code>

<code># 一、安装软件</code>

<code> </code><code>yum </code><code>install</code> <code>samba -y </code>

<code># 二、准备用户</code>

<code> </code><code>groupadd develop</code>

<code> </code><code>useradd</code> <code>-G develop gentoo</code>

<code> </code><code>useradd</code> <code>-G develop centos</code>

<code> </code><code>useradd</code> <code>ubuntu</code>

<code> </code><code>echo</code> <code>"gentoo"</code> <code>| </code><code>passwd</code> <code>gentoo --stdin</code>

<code> </code><code>echo</code> <code>"centos"</code> <code>| </code><code>passwd</code> <code>centos --stdin</code>

<code> </code><code>echo</code> <code>"ubuntu"</code> <code>| </code><code>passwd</code> <code>ubuntu --stdin</code>

<code> </code><code>echo</code> <code>-e </code><code>"samba\nsamba"</code> <code>| smbpasswd  -a gentoo -s </code>

<code> </code><code>echo</code> <code>-e </code><code>"samba\nsamba"</code> <code>| smbpasswd  -a centos -s </code>

<code> </code><code>echo</code> <code>-e </code><code>"samba\nsamba"</code> <code>| smbpasswd  -a ubuntu -s </code>

<code> </code><code>setfacl -m g:develop:rwx </code><code>/data/</code>

<code> </code><code># 三、samba服务器配置,主要参数如下:</code>

<code># 配置文件时 /etc/samba/smb.conf</code>

<code>[global]</code>

<code>    </code><code>workgroup = MYDATA</code>

<code>    </code><code>server string = Samba Server Version %</code><code>v</code>

<code>    </code><code>log </code><code>file</code> <code>= </code><code>/var/log/samba/log</code><code>.%m</code>

<code>    </code><code>max log size = 50</code>

<code>    </code><code>idmap config * : backend = tdb</code>

<code>    </code><code>hosts allow = 192.168.1.</code>

<code>    </code><code>cups options = raw </code>

<code>[homes]</code>

<code>    </code><code>comment = Home Directories</code>

<code>    </code><code>read</code> <code>only = No</code>

<code>    </code><code>browseable = No </code>

<code>[printers]</code>

<code>    </code><code>comment = All Printers</code>

<code>    </code><code>path = </code><code>/var/spool/samba</code>

<code>    </code><code>printable = Yes</code>

<code>    </code><code>print ok = Yes</code>

<code>[shared]</code>

<code>    </code><code>comment = Public Share</code>

<code>    </code><code>path = </code><code>/data</code>

<code>    </code><code>guest ok = Yes</code>

<code># 四、启动服务</code>

<code>/etc/init</code><code>.d</code><code>/nmb</code> <code>start;</code><code>/etc/init</code><code>.d</code><code>/smb</code> <code>start</code>

<code># 五、测试结果</code>

<code># 可以使用 smbclient -L 192.168.1.77 -U centos 来查看共享的文件</code>

<code># ubutu 没有权限建立文件夹(windoes为测试客户端)</code>

<a href="http://s3.51cto.com/wyfs02/M00/46/3F/wKioL1PwhODzTEh1AAEP6XvSCMQ264.jpg" target="_blank"></a>

<code># centos 具有权限创建目录</code>

二、架设FTP服务器,要求: 

1)可以让匿名用户访问; 

2)通过基于mysql的虚拟用户为ftp1和ftp2提供文件共享服务;且ftp1可以上传文件、创建目录、删除文件和下载文件,但ftp2只能下载文件; 

3)FTP服务仅允许192.168.1.0/24中的主机访问; 

4)开启ftp服务的传输日志,日志文件为/var/log/vsftpd.log;

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

<code># 一、安装所需的软件</code>

<code># 注意:pam_mysql 是epel源提供的,也可自己源码编译安装</code>

<code> </code><code>yum </code><code>install</code> <code>vsftpd mysql mysql-server pam_mysql -y</code>

<code># 二、创建虚拟用户所用的数据库和表</code>

<code>mysql&gt; CREATE DATABASE vsftpd;</code>

<code>mysql&gt; USE vsftpd;</code>

<code>Database changed</code>

<code>mysql&gt; CREATE TABLE ftpuser (</code>

<code>    </code><code>-&gt; </code><code>id</code> <code>TINYINT PRIMARY KEY AUTO_INCREMENT,</code>

<code>    </code><code>-&gt; user VARCHAR(30) BINARY NOT NULL, </code>

<code>    </code><code>-&gt; password CHAR(48) BINARY NOT NULL</code>

<code>    </code><code>-&gt; );</code>

<code>mysql&gt; GRANT SELECT ON vsftpd.* TO </code><code>ftp</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'ftp'</code><code>;</code>

<code>mysql&gt; INSERT INTO ftpuser(user,password) VALUES(</code><code>'ftp1'</code><code>,PASSWORD(</code><code>'ftp1'</code><code>));</code>

<code>mysql&gt; INSERT INTO ftpuser(user,password) VALUES(</code><code>'ftp2'</code><code>,PASSWORD(</code><code>'ftp2'</code><code>));</code>

<code># 三、创建虚拟用户对应的系统用户和家目录</code>

<code> </code><code>useradd</code> <code>-s </code><code>/sbin/nologin</code> <code>-d </code><code>/var/ftproot/</code> <code>vuser</code>

<code> </code><code>chmod</code> <code>og+x </code><code>/var/ftproot/</code>

<code># 四、编辑配置文件</code>

<code># cat /etc/vsftpd/vsftpd.conf | grep "^[^#]"</code>

<code>anonymous_enable=YES</code>

<code>local_enable=YES</code>

<code>write_enable=YES</code>

<code>local_umask=022</code>

<code>dirmessage_enable=YES</code>

<code>xferlog_enable=YES</code>

<code>connect_from_port_20=YES</code>

<code>xferlog_file=</code><code>/var/log/vsftpd</code><code>.conf</code>

<code>xferlog_std_format=YES</code>

<code>listen=YES</code>

<code>pam_service_name=vsftpd-mysql</code>

<code>guest_enable=YES</code>

<code>guest_username=vuser</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vuser</code>

<code>userlist_enable=YES</code>

<code>tcp_wrappers=YES</code>

<code># 五、创建用户认证文件、虚拟用户权限限制文件</code>

<code># 用户认证文件参数可参照 /usr/share/doc/pam_mysql-0.7/README</code>

<code>#创建 /etc/pam.d/vsftpd-mysql 文件,文件内容如下:</code>

<code>auth required </code><code>/lib/security/pam_mysql</code><code>.so user=</code><code>ftp</code> <code>passwd</code><code>=</code><code>ftp</code> <code>host=localhost db=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=2</code>

<code>account  required </code><code>/lib/security/pam_mysql</code><code>.so user=</code><code>ftp</code> <code>passwd</code><code>=</code><code>ftp</code> <code>host=localhost db=vsftpd table=ftpuser usercolumn=user passwdcolumn=password crypt=2</code>

<code>mkdir</code> <code>/etc/vsftpd/vuser</code>

<code>touch</code> <code>/etc/vsftpd/vuser/ftp1</code> <code>/etc/vsftpd/vuser/ftp2</code>

<code># cat /etc/vsftpd/vuser/ftp1 </code>

<code>anon_mkdir_write_enable=YES</code>

<code>anon_upload_enable=YES</code>

<code># cat /etc/vsftpd/vuser/ftp2</code>

<code>anon_mkdir_write_enable=NO</code>

<code>anon_upload_enable=NO</code>

<code># 六、添加防火墙规则</code>

<code> </code><code>iptables -t filter -A INPUT -s 192.168.1.0</code><code>/24</code>  <code>-p tcp --dport 21 -j ACCEPT</code>

<code> </code><code>iptables -t filter -A INPUT  -p tcp --dport 21 -j DROP </code>

<code> </code><code>iptables -t filter -A OUTPUT -s 192.168.1.77  -p tcp --sport 21 -j ACCEPT</code>

<code> </code> 

<code># 七、测试结果</code>

<code># ftp1用户允许上传</code>

<a href="http://s3.51cto.com/wyfs02/M00/46/3E/wKiom1PwkG7zX1fWAAG74EZNnWw529.jpg" target="_blank"></a>

<code> </code><code># ftp2 不允许上传</code>

<a href="http://s3.51cto.com/wyfs02/M01/46/3F/wKioL1PwhaLRvXOsAAEuJmdJAnY229.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/46/3D/wKiom1PwhIvguENvAAE7ZpL3vrY716.jpg" target="_blank"></a>

三、两台web服务器,共享关系型数据库,共享NFS服务器,利用DNS记录轮询提供负载均衡,实现wordpress;

试验拓扑图如下:

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270384BfJ1.jpg" target="_blank"></a>

在192.168.1.77:

<code>一、配置DNS服务</code>

<code> </code><code>yum </code><code>install</code> <code>bind -y  </code><code># 安装软件</code>

<code># cat /etc/named.conf 配置文件 </code>

<code>options {</code>

<code>    </code><code>directory     </code><code>"/var/named"</code><code>;</code>

<code>}; </code>

<code>logging {</code>

<code>        </code><code>channel default_debug {</code>

<code>                </code><code>file</code> <code>"data/named.run"</code><code>;</code>

<code>                </code><code>severity dynamic;</code>

<code>        </code><code>};</code>

<code>zone </code><code>"."</code> <code>IN {</code>

<code>    </code><code>type</code> <code>hint;</code>

<code>    </code><code>file</code> <code>"named.ca"</code><code>;</code>

<code>include </code><code>"/etc/named.rfc1912.zones"</code><code>;</code>

<code># 在 "/etc/named.rfc1912.zones"添加:</code>

<code>zone </code><code>"wordpress.org"</code> <code>IN {</code>

<code>    </code><code>type</code> <code>master;</code>

<code>    </code><code>file</code> <code>"wordpress.org.zone"</code><code>;</code>

<code>};</code>

<code># 创建对应的库解析文件</code>

<code>touch</code> <code>wordpress.org.zone</code>

<code>chown</code> <code>.named wordpress.org.zone </code>

<code># cat /var/named/wordpress.org.zone </code>

<code>$TTL 3600</code>

<code>@    IN    SOA    ns.wordpress.org.    admin.wordpress.org. (</code>

<code>    </code><code>20140616</code>

<code>    </code><code>2H</code>

<code>    </code><code>5M</code>

<code>    </code><code>1H</code>

<code>    </code><code>1D</code>

<code>)</code>

<code>@    IN    NS    ns</code>

<code>ns    IN    A    192.168.1.77</code>

<code>www    IN    A    192.168.1.66</code>

<code>www    IN    A    192.168.1.99</code>

<code>###################################################</code>

<code>/etc/init</code><code>.d</code><code>/named</code> <code>start </code><code># 启动服务</code>

<code>##################### 测试结果如下:</code>

<a href="http://s3.51cto.com/wyfs02/M01/46/40/wKioL1Pwkg_zEtVdAAE7ZpL3vrY271.jpg" target="_blank"></a>

<code>二、配置nfs服务: </code>

<code> </code><code>yum </code><code>install</code> <code>nfs-utils -y </code><code># 安装软件 </code>

<code> </code><code>mkdir</code> <code>/wpdata</code>  <code># 创建共享目录</code>

<code># cat /etc/exports </code>

<code>/wpdata</code> <code>192.168.1.0</code><code>/24</code><code>(rw,no_root_squash) </code>

<code>setfacl -m u:48:rwx </code><code>/wpdata/</code> <code># (id 48是apache用户的id号)</code>

<code>/etc/init</code><code>.d</code><code>/nfs</code> <code>start   </code><code># 启动服务 </code>

<code>三、配置数据库: </code>

<code>yum </code><code>install</code> <code>mysql mysql-server -y </code><code># 安装软件# 创建 wordpress 工作用到的账户和数据库mysql&gt; </code>

<code>mysql&gt; CREATE DATABASE wp;</code>

<code>mysql&gt; GRANT ALL ON wp.* TO wordpress@</code><code>'192.168.1.%'</code> <code>IDENTIFIED BY </code><code>'wordpress'</code><code>;</code>

<code>mysql&gt; FLUSH PRIVILEGES;</code>

在192.168.1.66: 

<code>yum </code><code>install</code> <code>php httpd php-mysql -y </code>

<code># 二、编辑配置文件,添加以下内容</code>

<code># 配置文件 /etc/httpd/conf/httpd.conf </code>

<code>#DocumentRoot "/var/www/html"</code>

<code>NameVirtualHost *:80</code>

<code>&lt;VirtualHost *:80&gt;</code>

<code>    </code><code>ServerAdmin [email protected]</code>

<code>    </code><code>DocumentRoot </code><code>/web/vhosts/wordpress</code>

<code>    </code><code>ServerName www.wordpress.org</code>

<code>    </code><code>ErrorLog logs</code><code>/wordpress</code><code>.org-error_log</code>

<code>    </code><code>CustomLog logs</code><code>/wordpress</code><code>.org-access_log common</code>

<code>&lt;</code><code>/VirtualHost</code><code>&gt;</code>

<code># 三、创建虚拟主机站点并挂载数据目录、做好安装wordpress前的准备</code>

<code> </code><code>mkdir</code> <code>/web/vhosts/wordpress</code> <code>-p</code>

<code> </code><code>mount</code> <code>-t nfs 192.168.1.77:</code><code>/wpdata</code> <code>/web/vhosts/wordpress/</code> <code>-o rsize=4096,wsize=4096</code>

<code> </code><code>unzip </code><code>/root/wordpress-3</code><code>.3.1-zh_CN.zip -d </code><code>/web/vhosts/wordpress/</code>

<code> </code><code>chown</code> <code>apache.apache </code><code>/web/vhosts/wordpress/wordpress/</code> <code>-R </code>

<code> </code><code>cp</code> <code>/web/vhosts/wordpress/wordpress/wp-config-sample</code><code>.php </code><code>/web/vhosts/wordpress/wordpress/wp-config</code><code>.ph</code>

<code># 修改配置文件 /web/vhosts/wordpress/wordpress/wp-config.php 以下内容,与数据库对应</code>

<code>define(</code><code>'DB_NAME'</code><code>, </code><code>'wp'</code><code>); </code>

<code>define(</code><code>'DB_USER'</code><code>, </code><code>'wordpress'</code><code>); </code>

<code>define(</code><code>'DB_PASSWORD'</code><code>, </code><code>'wordpress'</code><code>); </code>

<code>define(</code><code>'DB_HOST'</code><code>, </code><code>'192.168.1.77'</code><code>);</code>

<code># 四、安装wordpress:</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start </code><code>#启动服务</code>

<code># 在安装的客户端,提供解析主机名的配置</code>

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270391IDdu.jpg" target="_blank"></a>

<code># 安装完成后,记得的192.168.1.77上将root的权限去掉</code>

<code>/wpdata</code> <code>192.168.1.0</code><code>/24</code><code>(rw)</code>

<code> </code><code>exportfs -ar    </code><code># 重新导出</code>

在192.168.1.99:

<code># 这里配置比较简单,只需要以下几个步骤</code>

<code>scp</code> <code>192.168.1.66:</code><code>/etc/httpd/conf/httpd</code><code>.conf </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

<code>mkdir</code> <code>/web/vhosts/wordpress</code> <code>-p</code>

<code>mount</code> <code>-t nfs 192.168.1.77:</code><code>/wpdata</code> <code>/web/vhosts/wordpress/</code> <code>-o rsize=4096,wsize=4096</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start</code>

完成这些后,开始测试:

# 在192.168.1.99服务器上上传文章

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270396DuLR.jpg" target="_blank"></a>

# 在192.168.1.66 服务器上上查看:

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270402qmxE.jpg" target="_blank"></a>

测试成功后,使用我们自己的DNS服务器,来实现简单的DNS轮询的负载均衡。

# 访问客户端是windows主机,将dns服务器的指向我们配置好的地址

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270405EIFH.jpg" target="_blank"></a>

# 测试,可以正常访问

<a href="http://guoting.blog.51cto.com/attachment/201408/17/8886857_1408270409mH6M.jpg" target="_blank"></a>

    over.

本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1541310,如需转载请自行联系原作者