基于Nfs和Samba的Lamp环境实现
一 系统环境
二 网络文件系统与web环境的结合
三 搭建lamp环境
四 实现nfs服务
五 实现samba服务
六 实现效果
一 系统环境
系统平台:CentOS release 6.8 (Final)
Lamp:httpd-2.2.15 mysql-server-5.1.73 php-5.3.3
Nfs:nfs-utils-1.2.3 rpcbind-0.2.0
Nfs Server IP:172.18.67.1
Samba:samba-3.6.23 samba-client-3.6.23 samba-common-3.6.23
Samba Server IP:172.18.67.1
SELINUX=disabled
二 网络文件系统与web环境的结合
1.企业网站建设必然离不开服务器运维,一个稳定高效的服务器环境是保证网站正常运行的重要前提。本文将会详细讲解Linux系统上如何搭建配置高效的lamp服务环境,并在lamp环境中搭建起企业自己的网站。
2.NFS是Network File System的缩写,即网络文件系统。一种适用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
3.为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大方便。本文简要介绍如何在Linux操作系统上搭建Samba服务器和简单配置。
4.如何将这三项技术完美的组合起来是本文将讨论的重点。
三 搭建lamp环境
在IP地址为172.18.67.2的这台服务器上搭建lamp环境:
1.准备工作:
1).配置防火墙,开启80端口、3306端口
# iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #允许80端口通过防火墙 # iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT #允许3306端口通过防火墙
2).关闭SELINUX
# vim /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq #保存,关闭 # shutdown -r now #重启系统
2.安装:
1).安装httpd:
在安装httpd亲需要安装两个apache的扩展包apr和apr-util:
# yum install -y apr apr-util
接下来安装httpd:
# yum install -y httpd # /etc/init.d/httpd start #启动Apache
注:Apache启动之后会提示错误:
正在启动 httpd:httpd: Could not reliably determine theserver’s fully qualif domain name, using ::1 for ServerName
解决办法:
# vim /etc/httpd/conf/httpd.conf #编辑
找到
#ServerName www.example.com:80
修改为
ServerName www.mrlapulga.com:80 #这里设置为你自己的域名,如果没有域名,可以设置为localhost :wq! #保存退出 # chkconfig httpd on #设为开机启动 # /etc/init.d/httpd restart #重启Apache
2).安装MySQL:
# yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成 # /etc/init.d/mysqld start #启动MySQL # chkconfig mysqld on #设为开机启动 # cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
为root账户设置密码:
# mysql_secure_installation
回车,根据提示输入Y
输入2次密码,回车
根据提示一路输入Y
最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart #重启 /etc/init.d/mysqld stop #停止 /etc/init.d/mysqld start #启动
3).安装PHP:
# yum install php
根据提示输入Y直到安装完成
安装PHP组件,使 PHP5 支持 MySQL
# yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pearphp-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
这里选择以上安装包进行安装
根据提示输入Y回车
# /etc/init.d/mysqld restart #重启MySql # /etc/init.d/httpd restart #重启Apche
4).相关配置:
1>.Apache配置
# vim /etc/httpd/conf/httpd.conf #编辑文件 ServerTokens OS #修改为:ServerTokensProd (在出现错误页的时候不显示服务器操作系统的名称) ServerSignature On #修改为:ServerSignatureOff (在错误页中不显示Apache的版本) Options Indexes FollowSymLinks #修改为:Options i n c l u d es e x e cCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录) #AddHandler cgi-script .cgi #修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行) AllowOverride None #修改为:AllowOverrideAll (允许.htaccess) AddDefaultCharset UTF-8 #修改为:AddDefaultCharset GB2312 (添加GB2312为默认编码) Options Indexes MultiViews FollowSymLinks #修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构) DirectoryIndex index.html index.html.var #修改为:DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var #(设置默认首页文件,增加index.php) KeepAlive Off #修改为:KeepAliveOn (允许程序性联机) MaxKeepAliveRequests 100 #修改为:MaxKeepAliveRequests 1000 (增加同时连接数) :wq! #保存退出 # /etc/init.d/httpd restart #重启 # rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html #删除默认测试页
2>.php配置
# vim /etc/php.ini #编辑 date.timezone = PRC #把前面的分号去掉,改为date.timezone = PRC disable_functions = p a s s t h r u,e x e c,s y s t e m,chroot,scandir,chgrp,chown,shell_e x e c, p r o c _ o p e n,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,pope p a s s t h r u,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname, getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname #列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。 expose_php = Off #禁止显示php版本的信息 magic_quotes_gpc = On #打开magic_quotes_gpc来防止SQL注入 short_open_tag = ON #支持php短标签 open_basedir = .:/tmp/ #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题(例如:织梦内容管理系 统),可以注销此行,或者直接写上程序的目录/data/www.osyunwei.com/:/tmp/ :wq! #保存退出 # /etc/init.d/mysqld restart #重启MySql # /etc/init.d/httpd restart #重启Apche
测试:
# cd /var/www/html # vim index.php #输入下面内容 <?php phpinfo(); ?> :wq! #保存退出
在客户端浏览器输入服务器IP地址,可以看到如下图所示相关的配置信息!
其他:
后续安装PDO_MySQL拓展模块,只需要: yum install php-mysql
手动安装会出现错误(configure: error: mysql_query missing!?)
四 实现nfs服务
在IP地址为172.18.67.1的这台服务器上搭建nfs:
1).安装nfs:
# yum install -y nfs-util rpcbind # service nfs start
2).Server端配置:
# mkdir /data
将下载好的wordpress解压至/data
# vim /etc/exports /data/wordpress 172.18.67.2(rw,async) :wq #保存退出 # /etc/init.d/nfs start #启动服务
3).在172.18.67.2这台服务器上编辑/etc/fstab追加如下内容:
# vim /etc/fstab 172.18.67.1:/data/wordpress /var/www/html nfs defaults 0 0 :wq #保存退出 # reboot #重启系统
4).以上只是配置了nfs的最基本的功能,接下来详细介绍nfs的Server端配置文件:
/etc/exports或 /etc/exports.d/* /PATH/TO/SOME_DIR clients1(export_options, ...) clients2(export_options, ...) clients: single host:ipv4, ipv6: #FQDN network:address/netmask #同时长短格式的掩码 wildcards: #主机名通配,例如:*.magedu.com; netgroups: #NIS域内的主机组;@group_name; anonymous: #使用*通配所有主机; General Options(常用选项): ro: #只读 rw: #读写 sync: #同步模式,内存数据实时写入磁盘 async: #异步模式,把内存中的数据定期写入磁盘 User ID Mapping(用户映射选项): root_squash: #压缩root用户,一般指将其映射为nfsnobody, 这个选项不允许 root 用户访问挂载上来的 NFS 卷 no_root_squash: #不压缩root用户,这个选项允许 root 用户访问挂载上来的 NFS 卷。 all_squash: #压缩所有用户,这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。 anonuid and anongid: #这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。
注意:
每个共享文件系统需要独立定义一行
客户端主机之间需要使用空格隔开
客户端主机的定义可以是一个网段,单台主机,主机名
服务器端:
# exportfs -ar #全部重新挂载配置文件里面的到内核,也可以理解为测试文件 # exportfs -au #全部卸载配置文件,即便客户端已经挂载 # export -u FS: #关闭指定的导出的文件系统
服务器端查看:
# showmount -a #显示被客户端加载的文件系统以及ip # showmount -d #显示被客户端加载的目录 # exportfs #可以直接查看被挂载的文件系统
5).此时我们已经利用nfs服务实现了网站目录的远程共享服务.
五 实现samba服务
在IP地址为172.18.67.1的这台服务器上搭建samba:
1).安装samba:
# yum install -y samba samba-common
2).samba的配置:
samba的配置:
/etc/samba/smb.conf
两类配置段:
全局配置 [global] Network-Related Options workgroup = server string = interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 hosts allow = 127. 192.168.12. 192.168.13. hosts allow = 127. 192.168.12. 192.168.13. 白名单:允许那些ip使用访问 网络,空格隔开 127. 192.168.12. 192.168.13. hosts deny= 黑名单:禁止哪些用户访问 Logging Options:日志选项 log file = /var/log/samba/log.%m #日志文件 max log size = 50 #日志最大大小,满额就会新建日志文件 Standalone Server Options security = user #安全级别 设定安全级别:取值有四个; share:匿名共享; user:使用samba服务自我管理的账号和密码进行用户认证;用户必须是系统用户,但密码非为/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb backend进行定义; server:由第三方服务进行统一认证; domain:使用DC进行认证;基于kerberos协议进行; passdb backend = tdbsam #用户账户放到tdbsam加密的文件里面 Printing Options(打印选项): load printers = yes #是否加载打印机 cups options = raw #通用unix打印服务的选项接口,默认都是raw Domain Members Options(域控制选项,无需修改): Domain Controller Options(域控制选项,无需修改): Browser Control Options(浏览器控制选项,默认值即可):
共享文件系统配置
[SHARED_NAME]
有三类:
[homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录;
[printers]:定义打印服务;
[shared_fs]:定义共享的文件系统;
常用指令:
[shared_name] path = /path/to/share_directory #开放路径 comment = Comment String #描述信息,注释 guest ok = {yes|no} #是否允许来宾用户访问 public = {yes|no} #是否公开给所有人访问 browseable = no #如果和用户属主属组无关的时候,是否允许看到目录内容 writable = {yes|no} #共享权限,是否拥有写权限,还需要本地文件系统的权限 read only = {yes|no} #是否可以写入 write list = +GROUP_NAME #拥有写权限的用户、组列表 +groupname 组名 @groupname 组名 username 用户名字
3).将主机172.18.67.2与samba服务联系起来,需如下配置:
# vim smb.conf [mysqldata] comment = mysql data directory path = /data/wordpress public = yes browseable = yes writeable = yes write list = mrlapulga :wq #保存退出
检测:testparm
重启:
# /etc/init.d/smb restart
4).建立相应目录并授权:
# mkdir -p /data/eordpress
赋予本地权限:
# chmod a+w /data/wordpress
5).创建samba账号:
# useradd -d /data/wordpress mrlapulga # chown R mrlapulga:mrlapulga /data/wordpress # smbpasswd -a mrlapulga
接着输入两次密码
6).启动samba:
# /etc/init.d/smb start # /etc/init.d/nmb start
7).在172.18.67.2这台服务器上安装samba客户端并实现访问172.18.67.1:
安装samba:
# yum install -y samba-client
客户端实现连接:
# smbclinet -L 172.18.67.1 -U mrlapulga Enter mrlapulga's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba Server Version 3.6.23-33.el6) mrlapulga Disk Home Directories Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6] Server Comment --------- ------- Workgroup Master --------- -------
也可实现挂载连接:
# mount -t cifs //172.18.67.1/data/wordpress /var/www/html/ -o username=mrlapulga,password=******
6).此时我们已经利用samba服务实现了网站目录的远程共享服务.
六 实现效果