zoukankan      html  css  js  c++  java
  • 基于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服务实现了网站目录的远程共享服务.


    六 实现效果


     

  • 相关阅读:
    2019-10-14-云之幻-UWP-视频教程
    2019-10-14-云之幻-UWP-视频教程
    2018-2-13-win10-uwp-自定义控件-SplitViewItem
    2018-2-13-win10-uwp-自定义控件-SplitViewItem
    2019-9-19-dotnet-找不到-PostAsJsonAsync-方法
    2019-9-19-dotnet-找不到-PostAsJsonAsync-方法
    2018-5-28-WPF-Process.Start-出现-Win32Exception-异常
    2018-5-28-WPF-Process.Start-出现-Win32Exception-异常
    Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)
    Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)
  • 原文地址:https://www.cnblogs.com/iuskye/p/6798498.html
Copyright © 2011-2022 走看看