一 系统环境
二 网络文件系统与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服务实现了网站目录的远程共享服务.

六 实现效果

基于Nfs和Samba的Lamp环境实现的更多相关文章

  1. 基于CentOS7的服务器搭建(LAMP环境)

    基于CentOS7的服务器环境搭建(LAMP环境) 一.安装MySQL组件 1.由于在CentOS7中,默认yum安装库中不含有mysql,我们可以下载mysql的分支MariaDB,如果必须要下my ...

  2. 【转存】阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3

    阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3  Posted on 2016年2月10日 by  学院君 1.Apache 配置 —————————————————– vi / ...

  3. •搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机

    本节所讲内容: 实战:搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机 LAMP架构:??? Linux+Apache+Mysql+PHP Linux+Apache+Mysql/MariaDB ...

  4. CentOS7.X基于LAMP环境搭建cacti

    1.搭建好LAMP环境 2.登录数据库创建cacti create database cacti default character set utf8; 创建cacti的账户密码 grant all ...

  5. LAMP环境CentOS6.4 PHP5.4随笔未整理

    首先安装一些辅助的软件或者说是依赖的关系包. 1.安装libxml2: libxml是一个用来解析XML文档的函数库.它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH.C#, Py ...

  6. LAMP环境搭建实现网站动静分离[转]

    目录: 1.环境概述 2.动静分离拓扑图 3.各服务器功能规划 4.各服务器基础环境配置 5.httpd安装配置 6.php安装配置及启用opcache加速功能 7.mysql安装配置 8.wordp ...

  7. lamp环境应用实践

    LAMP之apache2.4.33 apache工作模式 apache 常用工作模式有2种,区别在于 worker模式 1. 线程模式 2. 占用资源少 3. 稳定性略差 4. 并发大 prefork ...

  8. 7. LAMP环境搭建

    一.准备工作 1.安装编译工具gcc.gcc-c++ 注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源-- 1)编辑yum配置文件: # mount /dev/cdrom / ...

  9. CentOS 6.6 yum 搭建LAMP环境

    CentOS 查看操作系统版本 [root@oa ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final) 参考linux centos yum安装L ...

随机推荐

  1. 【Python那些事儿之十】range()和xrange()

    by Harrison Feng in Python 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>> fo ...

  2. WSL安装xfce4

    参考:https://github.com/Microsoft/WSL/issues/637 安装组件 1. win10 上安装 Xming https://sourceforge.net/proje ...

  3. Node.js小白开路(一)-- 全局变量篇

    全局内容是有点类似于我们在浏览器编程的时候的window对象的,当时在node之中虽然我们编写的变量会自动的给出上下文环境(模块),但是全局变量的存在还是大大的帮助了我们编程时候的便捷性.我们可以在任 ...

  4. 5天不再惧怕多线程——第一天 尝试Thread

    随笔 - 218  文章 - 1  评论 - 3819 5天不再惧怕多线程——第一天 尝试Thread   原本准备在mongodb之后写一个lucene.net系列,不过这几天用到多线程时才发现自己 ...

  5. react_webpack.prod.config

    const path = require('path'); const webpack = require('webpack'); const jquery = require('jquery'); ...

  6. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop

    no-loop 定义当前的规则是否不允许多次循环执行,默认是 false,也就是当前的规则只要满足条件,可以无限次执行.什么情况下会出现规则被多次重复执行呢?下面看一个实例: package com. ...

  7. js 获取服务器当前时间

    //获取服务器时间 function getNowDate(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttp ...

  8. HihoCoder 1158 : 质数相关 (最大独立集)

    质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关 ...

  9. remoting与socket、web service的比较及实例

    remoting基础 一种分布式处理方式,可以说是DCOM的一种升级 跨过应用程序域,与另外的应用程序域进行通信,即穿越边界 在remoting中是通过通道(channel)来实现两个应用程序域之间对 ...

  10. LG3195 [HNOI2008]玩具装箱TOY

    题意 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为\(1\cdots N\) ...