• 服务应用的测试:ftp | lftp | dns | dhcp | msyql,mariadb,redis等 | lamp搭建 | pxe搭建


    一.FTP:

    环境,CentOS 7.4

    #1.安装服务及启动ftp

    yum install -y vsftpd

    systemctl enable vsftpd.service

    systemctl start vsftpd.service

    systemctl stop vsftpd.service

    systemctl status vsftpd.service

    安装包及安装生成文件;


    开启服务,开机启动;关闭防护墙,开机不启动;


    #2.配置ftp

    #打开配置文件
    vim /etc/vsftpd/vsftpd.conf
    
    #显示行号
    :set number
    
    #修改配置 12 行
    anonymous_enable=NO
    
    #修改配置 33 行
    anon_mkdir_write_enable=YES
    
    #修改配置48行
    chown_uploads=YES
    
    #修改配置72行
    async_abor_enable=YES
    
    #修改配置83行
    ascii_upload_enable=YES
    
    #修改配置84行
    ascii_download_enable=YES
    
    #修改配置87行
    ftpd_banner=Welcome to blah FTP service.
    
    #修改配置101行chroot_local_user=YES
    
    #添加下列内容到vsftpd.conf末尾
    use_localtime=YES
    listen_port=21
    idle_session_timeout=300
    guest_enable=YES
    guest_username=vsftpd
    user_config_dir=/etc/vsftpd/vconf
    data_connection_timeout=1
    virtual_use_local_privs=YES
    pasv_min_port=40000
    pasv_max_port=40010
    accept_timeout=5
    connect_timeout=1allow_writeable_chroot=YES
    

    #3.建立用户文件

    #创建编辑用户文件
    vim /etc/vsftpd/virtusers
    #第一行为用户名,第二行为密码。不能使用root作为用户名
    lftp
    sbt123456
    

    #4.生成用户数据文件

    db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
    
    #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
    
    chmod 600 /etc/vsftpd/virtusers.db
    

    #5.修改 /etc/pam.d/vsftpd 文件

    # 修改前先备份 
    cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
    
    vi /etc/pam.d/vsftpd
    #先将配置文件中原有的 auth 及 account 的所有配置行均注释掉
    auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
    account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
    # 如果系统为32位,上面改为lib
    


    #6.新建系统用户vsftpd,用户目录为/home/vsftpd

    #用户登录终端设为/bin/false(即:使之不能登录系统)
    useradd vsftpd -d /home/vsftpd -s /bin/false
    chown -R vsftpd:vsftpd /home/vsftpd
    

    #7.建立虚拟用户个人配置文件

    mkdir /etc/vsftpd/vconf
    cd /etc/vsftpd/vconf
    
    #这里建立虚拟用户lftp配置文件
    touch lftp
    #编辑leo用户配置文件,内容如下,其他用户类似
    vim lftp
    
    local_root=/home/vsftpd/lftp/
    write_enable=YES
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    #建立lftp用户根目录
    mkdir -p /home/vsftpd/lftp/
    

    #8.防火墙设置

    IPtables 的设置方式:vim /etc/sysconfig/iptables
    #编辑iptables文件,添加如下内容,开启21端口
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT
    firewall未关闭状态 的设置方式:
    firewall-cmd --zone=public --add-service=ftp --permanentfirewall-cmd --zone=public --add-port=21/tcp --permanent
    firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent
    

    #9.重启vsftpd服务器

    systemctl restart vsftpd.service
    

    #10.连接测试:ftp://192.168.108.101/

    但这个时候,使用ftp的工具连接时,我们发现是可以连接的。传输文件的时候,会发现文件上传和下载都会出现

    500、503 、200等问题。这个时候,可以进行以下操作:

    1.SELINUX不对vsftp不做任何限制

    setsebool -P ftpd_connect_all_unreserved 1
    

    2.再次确认用户的ftp目录权限,设置一下操作权限

    chown -R vsftpd:vsftpd /home/vsftpd
    systemctl restart vsftpd.service
    


    #参考博客链接

    https://www.cnblogs.com/leoxuan/p/8329998.html

    ============================================================

    二.客户端LFTP使用:

    环境,CentOS 7.6

    lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。lftp的界面非常像一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。


    lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]

    ============================================================

    三.DNS:

    环境,主DNS:CentOS 7.6;从DNS:CentOS 7.4




    #1.dns基础

    DNS:Domain Name Service 域名解析服务,工作在应用层,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS监听在TCP和UDP端口53。

    FQDN:全称域名,如 www.baidu.com

    www是主机名
    baidu.com是域名
    

    实现名称到IP解析的有三种方式:

    分散式解决方案:/etc/hosts,不易管理
    集中式解决方案:NIC,如果主机太多,对单一服务的压力太大
    分布式解决方案:DNS,解决了上俩个方式的不足
    

    权威的DNS服务器:

    记录主机名到IP的DNS服务器叫做权威的DNS服务器
    

    主从DNS服务器:主服务器记录发生变化,会同步到从服务器,(主从复制),实现容错机制

    序列号:解析库版本号,主服务器解析库变化时,其序列递增
    刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    过期时长:从服务器联系不到主服务器时,多久后停止服务
    

    DNS的查询类型:

    递归查询:服务器从根开始去找一级一级的找到目标主机,直到找到,负责到底
    迭代查询:根服务器给了主机所在的域的IP,并没有直接给出结果
    

    DNS的解析类型:

    正向解析:FQDN --> IP
    
    反向解析:IP ---> FQDN 如邮件服务器需要用到反向解析技术
    

    DNS服务器的类型:

    主服务器:管理和维护所负责解析的域内解析库的服务器
    从服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
    缓存服务器
    

    DNS的工作原理:

    1.客户端向离它最近的DNS服务器发起了查询请求,一般是由运营商提供
    2.如果代理DNS服务器有记录则直接可以返回给客户端;如果没有记录则去根DNS服务器请求,根DNS并不会存储所以的主机名对应IP的记录,它只会记录它的子域的IP,例如.com等后缀的域,代理DNS服务器会拿到.com域的DNS服务器IP
    3.然后再将请求发往.com.域的DNS服务器,如果还是没有找到主机,则再往它的下一级找,直到找到具体的主机,把IP返回给客户端,同时代理DNS服务器也会缓存一份到本地
    

    一次完整的查询请求经过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

    DNS域名:

    根域:目前有13个根集群服务器,美国10台,日本1台,荷兰1台,瑞典1台
    一级域名:Top Level Domain: tld com, edu, mil, gov, net, org, int,arpa 组织域、国家域(.cn, .ca, .hk, .tw)、反向域 等
    二级域名
    三级域名
    最多127级域名
    

    ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

    DNS服务管理工具:

    dig:只用于测试dns系统,不会查询hosts文件进行解析
    
      -x IP :测试反向解析
      -t axfr ZONE_NAME @SERVER :模拟区域传送
      -t NS . @a.root-servers.net :查询所有的根DNS服务器
    
    host
    
      -t:指定查询记录类型
      host www.dongfei.tech 192.168.0.7 :向192.168.0.7查询www.dongfei.tech这个域名
    
    rndc
    
      reload: 重载主配置文件和区域解析库文件
      reload zonename: 重载区域解析库文件
      retransfer zonename: 手动启动区域传送,而不管序列号是否增加
      notify zonename: 重新对区域传送发通知
      reconfig: 重载主配置文件
      querylog: 开启或关闭查询日志文件/var/log/message
      trace: 递增debug一个级别
      trace LEVEL: 指定使用的级别
      notrace:将调试级别设置为 0
      flush:清空DNS服务器的所有缓存记录
    
    named-checkconf:检查配置文件的语法
    
    named-checkzone "dongfei.com" /var/named/dongfei.com.zone :查询区域数据库文件的语法
    

    #2.安装DNS




    几个主要配置文件


    软件包名:bind

    服务名:named

    提供的服务:DNS域名解析

    主配置文件:/etc/named.conf


    #3.named.conf配置简要说明

    named.conf是named默认加载的配置文件,该配置文件中使用"#"或"/**/"或"//"作为注释符号,每个非注释语句都必须使用分号";"结束。
    该配置文件中只能有一个options,在这里面用于配置全局项。
    
    options {
      directory "/var/named";
    };
    
    
    除了option,还必需有区域的配置。zone关键字后面接的是域和类,域是自定义的域名,IN是internet的简称,是bind 9中的默认类,所以可以省略。
    type定义该域的类型是"master | slave | stub | hint | forward"中的哪种,file定义该域的区域数据文件(区域数据文件的说明见下文),
    因为这里是  相对路径db.longshuai.com,它的相对路径是相对于/var/named的,也可以指定绝对路径/var/named/db.longshuai.com。
    
    zone "longshuai.com" IN{
      type master;
      file "db.longshuai.com"
    };
    
    
    
    
    除此外,在每个named.conf中还应该配置几个必须的区域。
    
    (1).根域名"."的区域配置。
    
    zone "." IN {
      type hint;
      file named.ca;
    }
    
    type hint表示该区域"."类型为hint。回顾dns解析流程,在客户端让dns服务器迭代查询时,迭代查询的第一步就是让dns服务器去找根域名服务器。
    但是dns服务器如何知道根域名服务器在哪里?这就是hint类型的作用,它提示dns服务器根据其区域数据文件named.ca中的内容去获取根域名地址,
    并将这些数据缓存起来,下次需要根域名地址时直接查找缓存即可。
    
    由于根域名地址也是会改变的,有了根区域的提示,就可以永远能获取到最新的根区域地址。其实也可以手动下载这些数据,
    地址为:https://www.internic.net/domain/named.root
    因此,只有根区域"."才会设置为hint类型。
    
    
    
    
    (2)."localhost"域名(用于解析localhost为127.0.0.1)和127.0.0.1的方向查找区域。这两个没有定义在named.conf中,
    而是定义在/etc/named.rfc1912.zones中,然后在named.conf中使用include指令将其包含进来。
    
    include "/etc/named.rfc1912.zones";
    
    其中named.rfc1912.zones中部分内容:
    
    
    zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
    };
    
    zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
    };
    
    当然,反向查找区域可以定义为域而不是直接定义成主机。例如:
    
    zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
    };
    
    但这样的话,就需要相对应地修改/var/named/named.loopback文件。
    其实根域名"."和"localhost"以及"1.0.0.127.in-addr.arpa"完全没必要去改变,照搬就是了。
    
    所以,/etc/named.conf的内容如下:
    
    options {
      directory "/var/named";
    };
    
    zone "longshuai.com" {
      type master;
      file "db.longshuai.com";
    };
    
    zone "." IN {
      type hint;
      file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    
    
    到此并没有结束,因为/etc/named*的属组都是named,且权限要为640。如下:
    
    chown root:named /etc/named.conf
    chmod 640 /etc/named.conf
    
    然后使用/usr/sbin/named-checkconf命令来检查下/etc/named.conf文件的配置是否正确,如果不返回任何信息,则表示配置正确。
    


    配置好主配置文件后,接下来要书写域相关数据库——区域数据文件。


    #4.区域数据文件配置说明

    区域数据文件即named.conf中zone关键字定义的域的数据文件,由zone中的file指令指定文件名,例如上面定义的"db.longshuai.com",
    说明longshuai.com这个zone的区域数据文件为/var/named/db.longshuai.com。
    
    区域数据文件中很多地方都可以使用缩写,如果不使用缩写的书写方式,那么每一条记录中的域名或主机名都要写全,即要写到根域"."。
    
    假设longshuai.com域内有3台主机ftp、www和mydb,它们的ip分别为192.168.108.{101,102,103},还有一台DNS服务器主机名为dnsserver,其ip为192.168.108.90。
    
    测试环境      系统版本    IP
    dns主节点    CentOS 7.6  192.168.108.90
    ftp    CentOS 7.4  192.168.108.101
    www    CentOS 7.4  192.168.108.102
    mariadb	CentOS 7.4  192.168.108.103
    
    于是,longshuai.com这个区域的数据文件可以如下书写:区域数据文件中使用分号";"来注释。
    
    vim /var/named/db.longshuai.com
    
    $TTL 6h
    longshuai.com.              IN  SOA dnsserver.longshuai.com.   xyz.longshuai.com. (
                           1     ; serial num
                           3h    ; refresh time 
                           1h    ; retry time 
                           1w    ; expire time
                           1h )  ; negative time
    
    longshuai.com.              IN  NS  dnsserver.longshuai.com.
    
    dnsserver.longshuai.com.    IN  A   192.168.108.90
    ftp.longshuai.com.          IN  A   192.168.108.101
    www.longshuai.com.          IN  A   192.168.108.102
    mydb.longshuai.com.         IN  A   192.168.108.103
    
    www1.longshuai.com.         IN  CNAME  www.longshuai.com.
    
    
    其中第一行的"$TTL 6h"表示缓存周期,即查询该域中记录时肯定答案的缓存时间长度。例如本地查询www.baidu.com时,
    本地将缓存baidu.com域的相关查询结果,缓存时间长度由baidu.com这个域的区域数据文件中定义的$TTL的值决定。
    
    在区域数据文件中,"$TTL"的定义表示其后的记录都以此TTL为准,直到遇到下一个"$TTL"。也就是说,两个$TTL之间的所有记录都以前面的$TTL为准。  
    不过大多数时候,一个区域数据文件中只会在第一行定义一个$TTL值,表示该文件中所有记录都使用该缓存周期值。
    
    第二行定义的是SOA记录,每个区域文件中的第一个资源记录定义行都要是SOA记录。在该行中除了指定了master dns服务器,
    还指定了一些附加属性,包括序列号为1,还有各种时长等信息。
    
    第二个资源记录行定义的是NS记录,NS记录行表示该行定义的主机"dnsserver.longshuai.com."是这个域"longshuai.com."内的dns服务器。
    
    接下来的几个资源记录行定义的都是A记录,分别定义了"{dnsserver,www,ftp,mydb}.longshuai.com."这几个主机对应的ip地址为
    192.168.108.{101,102,103}。A记录中存储的是主机名和IP地址之间的映射关系,在为外界主机提供主机名查询服务时,就是从A记录中获取对应的ip地址。
    
    最后一个资源记录行定义的是CNAME记录,它存储的是canonical name所对应的别名。例如此处定义的是"www.longshuai.com."的别名为"www1.longshuai.com."。
    
    
    然后修改/var/named/db.longshuai.com文件的属组和权限。
    chown root:named /var/named/db.longshuai.com
    chmod 640 /var/named/db.longshuai.com
    
    
    然后使用named-checkzone命令检查区域数据文件是否书写正确。例如,要检查"longshuai.com"区域,其区域数据文件为/var/named/named.conf。
    named-checkzone longshuai.com /var/named/db.longshuai.com
    
    实际上,应该对所有的区域都进行检查,使用named-checkzone一个一个进行手动检查,显得非常繁琐。
    在CentOS 6上,支持使用"service named configtest"来检查,CentOS 7上没有对应的功能。
    但无论是CentOS 6还是CentOS 7上,在启动named服务的时候,都会自动检查配置文件的正确性。
    
    
    回到区域数据文件的配置说明上。在上面的配置过程中,完全没有使用缩写,但其实很多地方都能使用缩写的书写方式。
    以下是区域数据文件中的一些书写规则,包括缩写规则:
    
    (1)."$"符号:定义宏。最常见的是"$TTL"、"$ORIGIN"。origin的的意思是起点,可以自行定义$ORIGIN的值。
    
    例如:"$ORIGIN ."表示定义的$ORIGIN的起点值为根域符号,"$ORIGIN longshuai.com."表示$ORIGIN的值为"longshuai.com.",
    未定义$ORIGIN时,值为zone "domain"的domain部分。
    
    (2).fqdn自动补齐:在区域数据文件中,没有使用点号"."结尾的,在实际使用的时候都会自动补上域名,使其变为fqdn。
    
    例如区域"longshuai.com.",以下是完全格式的资源记录:
    dnsserver.longshuai.com.    IN  A   192.168.108.90
    
    可以缩写为:
    dnsserver    IN    A   192.168.108.90
    
    因为dnsserver后没有点,所以会补齐整个域名"longshuai.com."。实际上,自动补齐的部分是$ORIGIN的值,只不过默认没定义$ORIGIN时,
    $ORIGIN的值为zone定义的域名,所以默认是自动补齐域名。
    
    
    
    (3)."@"符号:可以使用@符号来缩写$ORIGIN的值。
    
    由于自定义的区域数据文件中,一般不会主动定义$ORIGIN的值,而第一个资源记录一般都是SOA记录,
    所以此时SOA记录中的第一列就可以使用@符号,其它地方只要值为$ORIGIN,都可以使用@符号缩写。例如:
    
    @     IN  SOA  dnsserver  xyz. ( 1 3h 1h 1w 1h )
    @     IN  NS   dnsserver
    
    
    
    (4).重复最近一个名称:区域数据文件中的第一列可以使用空格或制表符使该列继承上一行的第一列的值。
    
    例如第一行定义的是SOA记录,第一列是"longshuai.com.",那么第二行定义的NS记录中,其第一列就可以留空来继承第一行第一列
    的"longshuai.com."。不止第一行和第二行,第三行也可以继承第二行的第一列,第n+1行也可以继承第n行的第一列,只要它们的值一样即可。
    
    所以,/var/named/db.longshuai.com这个文件完全缩写后的结果如下:
    
    vim /var/named/db.longshuai.com
    
    $TTL 6h
    @            IN  SOA    dnsserver   xyz ( 1 3h 1h 1w 1h )
    @            IN  NS     dnsserver
    
    dnsserver    IN  A      192.168.108.90
    ftp          IN  A      192.168.108.101
    www          IN  A      192.168.108.102
    mydb         IN  A      192.168.108.103
    
    www1         IN  CNAME  www
    
    
    是否缩写正确,可以使用named-checkzone来检查下,还可以使用named-compilezone命令对区域数据文件进行编译,并输出编译后的结果。
    named-compilezone  -o  -  longshuai.com  /var/named/db.longshuai.com
    "-o"选项表示将编译后的结果输出到指定文件中,"-"表示输出到标准输出。
    
    
    
    
    在/etc/named.conf中,还定义了3个区域,分别是"."、"localhost"和"1.0.0.127.in-addr.arpa",
    它们的区域数据文件分别是/var/named/{named.ca,named.localhost,loopback}。
    
    /var/named/named.ca 文件中记录了获取根区域的方法:dig +bufsize=1200 +norec @a.root-servers.net。
    
    
    
    至此,配置文件和区域数据文件都已经配置结束了,可以启动named服务。
    systemctl start named.service
    netstat -tnlup | grep named
    



    	区域数据库文件:
    		资源记录:Resource Record,简称rr
    			记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
    		
    		SOA:Start Of Authority,起始授权记录;一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
    		NS:Name Server,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
    		A:Address,地址记录,FQDN --> IPv4;
    		AAAA:地址记录,FQDN --> IPv6;
    		CNAME:Canonical Name,别名记录;
    		PTR:Pointer,IP --> FQDN;
    		MX:Mail eXchanger,邮件交换器;
    			优先级:0-99,数字越小,优先级越高;
    		
    	
    	资源记录的定义格式:
    		语法:name	[TTL]	IN	RR_TYPE		value
    	
    	SOA:
    		name:当前区域的名字;例如:longshuai.com.
    		value:有多部分组成
    			1.当前区域的区域名称(也可以使用主DNS服务器名称)
    			2.当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
    			3.主从服务协调属性的定义以及否定答案的TTL
    				例如:
    					longshuai.com.	86400	IN	SOA		longshuai.com.		admin.longshuai.com.	(
    									2022051801	;serial
    									2H			;refresh
    									10M			;retry
    									1W			;expire
    									1D			;negative answer ttl
    					)
    					
    					
    					
    	NS:
    		name:当前区域的区域名称
    		valux:当前区域的某DNS服务器的名字,例如dns.longshuai.com.
    			注意:一个区域可以有多个ns记录
    		例如:
    			longshuai.com.	86400 	IN	NS	ns1.dns.longshuai.com.
    			longshuai.com.	86400 	IN	NS	ns2.dns.longshuai.com.
    			
    			
    			
    	MX:
    		name:当前区域的区域名称
    		value:当前区域某邮件交换器的主机名
    			注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级
    		例如:
    			longshuai.com.	86400 	IN	MX	10	ms1.dns.longshuai.com.
    			longshuai.com.	86400 	IN	MX	20	ms2.dns.longshuai.com.
    			
    			
    			
    	A:
    		name:某FQDN,例如:www.longshuai.com.
    		value:某IPv4地址
    		例如:
    			www.longshuai.com.	86400 	IN	A	1.1.1.1
    			www.longshuai.com.	86400 	IN	A	1.1.1.2
    			www.longshuai.com.	86400 	IN	A	1.1.1.3
    			
    			
    			
    	AAAA:
    		name:FQDN
    		value:IPv6
    		
    		
    		
    		
    	PTR:
    		name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录写为4.3.2.1.in-addr.arpa.
    		value:FQDN
    		例如:
    			4.3.2.1.in-addr.arpa.	86400	IN	PTR		www.longshuai.com.
    			
    			
    			
    			
    			
    	CNAME:
    		name:FQDN格式的别名
    		value:FQDN格式的正式名字
    		例如:
    			web.longshuai.com.	86400 	IN	CNAME	www.longshuai.com.
    			
    			
    			
    			
    			
    	注意:
    		1.TTL可以从全局继承
    		2.@表示当前区域的名称
    		3.相邻的两条记录其name相同时,后面的可省略
    		4.MX,NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录
    

    #5.测试DNS的解析

    vim /etc/resolv.conf

    vim /etc/sysconfig/network-scripts/ifcfg-ens33


    测试www.baidu.com




    测试www.longshuai.com






    rndc远程控制命令工具


    正向区域解析与反向区域解析

    	配置解析一个正向区域:
    		1.定义区域
    			在主配置文件中或主配置文件辅助配置文件中实现;
    				zone "ZONE_NAME" IN {
    					type {master|slave|hint|forward}
    					file "ZONE_NAME.zone"
    				}
    				
    				注意:区域名字为域名
    				
    		2.建立区域数据文件(主要记录为A AAAA记录)
    			在/var/named目录下建立区域数据文件;
    		3.让服务器重载配置文件和区域数据文件
                          前提:权限及语法检查OK
    			rndc reload
    			或
    			systemctl reload named.service
    	
    	
    	
    
    	配置解析一个反向区域:
    		1.定义区域
    			在主配置文件中或主配置文件辅助配置文件中实现;
    				zone "ZONE_NAME" IN {
    					type {master|slave|hint|forward}
    					file "ZONE_NAME.zone"
    				}
    				
    				注意:反向区域的名字
    					反写的网段地址.in-addr.arpa
    					例如:108.168.192.in-addr.arpa
    				
    		2.建立区域数据文件(主要记录为PTR)
    			在/var/named目录下建立区域数据文件;
    		3.让服务器重载配置文件和区域数据文件
                          前提:权限及语法检查OK
    			rndc reload
    			或
    			systemctl reload named.service		
    
    
    测试:
    vim /var/named/192.168.108.zone
    
    $TTL 3600
    $ORIGIN 108.168.192.in-addr.arpa.
    @       IN      SOA     dnsserver.longshuai.com.        xyz ( 1 3h 1h 1w 1h )
            IN      NS      dnsserver.longshuai.com.
    90      IN      PTR     dnsserver.longshuai.com.
    101     IN      PTR     ftp.longshuai.com.
    102     IN      PTR     www.longshuai.com.
    103     IN      PTR     mydb.longshuai.com.
    
    修改权限:
    chgrp named /var/named/192.168.108.zone
    chmod o= /var/named/192.168.108.zone
    
    检查配置文件:
    named-checkconf
    named-checkzone 108.168.192.in-addr.arpa /var/named/192.168.108.zone
    
    配置无误,重载:
    rndc reload
    

    #6.配置"仅缓存"dns服务器

    以后补充


    #7.配置dns转发服务器

    以后补充


    #8.配置主、从dns服务器

    	主从服务器:
    		注意:从服务器是区域级别的概念
    		
    		一.在从服务器192.168.108.101:
    			1.在从服务器上安装bind
    			yum install bind -y
    			2.在/etc/named.conf配置文件:
    			options {
    				listen-on port 53 { 127.0.0.1; 192.168.108.101; };
    			}
    			
    			3.在/etc/named.rfc1912.zones配置文件
    			zone "longshuai.com" IN {
    				type slave;
    				file "slaves/db.longshuai.com";
    				masters {192.168.108.90; };
    			};
    			
    			4.检查配置文件
    				named-checkconf
    		
    			
    		二.在主服务器192.168.108.90:
    			1.在/var/named/db.longshuai.com配置文件
    			$TTL 6h
    			@            IN  SOA    dnsserver   xyz ( 2 3h 1h 1w 1h )
    			@            IN  NS     dnsserver
    			@            IN  NS     dnsserver1
    
    			dnsserver    IN  A      192.168.108.90
    			dnsserver1	IN	A		192.168.108.101
    			ftp          IN  A      192.168.108.101
    			www          IN  A      192.168.108.102
    			mydb         IN  A      192.168.108.103
    
    			www1         IN  CNAME  www
    			
    			增改地方:
    				xyz ( 2 3h 1h 1w 1h )	【loaded serial 2:序列号:解析库版本号,主服务器解析库变化时,其序列递增】
    				@            IN  NS     dnsserver1	【增加一个NS记录】
    				dnsserver1	IN	A		192.168.108.101	【增加一个A记录】
    			
    			2.检查配置文件
    				named-checkzone db.longshuai.com /var/named/db.longshuai.com
    			3.重载配置
    				rndc reload
    		
    		三.在从服务器上重载配置
    				rndc reload
    				
    		测试.
    		dig -t A www.longshuai.com @192.168.108.101
    			
    			
    		配置一个从区域:
    			On Slave
    			1.定义区域:
    				定义一个从区域:
    					zone "ZONE_NAME" IN {
    						type slave;
    						file "slaves/ZONE_NAME.zone";
    						masters {MASTER_IP;};
    					};
    				
    				配置检查:named-checkconfig
    			2.重载配置
    				rndc reload
    				或者
    				systemctl reload named.service
    


    #9.配置子域

    以后补充


    #10.参考博客链接

    https://www.cnblogs.com/f-ck-need-u/p/7367503.html#auto_id_35

    https://www.cnblogs.com/L-dongf/p/9118111.html

    ============================================================

    四.DHCP:

    环境:
    	Server:CentOS 7.6	双网卡:NAT模式,仅主机模式【	NAT:192.168.108.90	仅主机:192.168.142.66	】
    	Client:CentOS 7.4	双网卡:NAT模式,仅主机模式【	NAT:192.168.108.101	仅主机:192.168.142.128-254动态分配	】
    

    #1.dhcp基础

    简介:动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。


    #2.配置实验环境

    1.给虚拟机添加一块网卡为VMnet1 + 关闭VMware的dhcp服务


    2.安装与配置dhcp服务

    给新添的网卡配置IP

    重启网络,查看IP


    配置dhcp服务

    yum install dhcp -y

    vim /etc/dhcp/dhcpd.conf

    #
    # DHCP Server Configuration file.
    #   see /usr/share/doc/dhcp*/dhcpd.conf.example
    #   see dhcpd.conf(5) man page
    #
    ddns-update-style none;
    ignore client-updates;
    subnet 192.168.142.0 netmask 255.255.255.0 {
      range 192.168.142.128 192.168.142.254;
      option subnet-mask 255.255.255.0;
      option routers 192.168.142.2;
      option domain-name "dhcp-test";
      option domain-name-servers 192.168.142.2;
      default-lease-time 21600;
      max-lease-time 43200;
    }
    

    配置文件解析

    ddns-update-style none; # 设置DNS服务不自动进行动态更新
    
    ignore client-updates; # 忽略客户端更新DNS记录
    
    subnet 192.168.142.0 netmask 255.255.255.0 # 作用域为192.168.142.0/24网段
    
    range 192.168.142.128 192.168.142.254; # IP地址池为192.168.142.128-254(约127个IP地址)
    
    option subnet-mask 255.255.255.0; # 定义客户端默认的子网掩码
    
    option routers 192.168.142.2; # 定义客户端的网关地址
    
    option domain-name "linuxprobe.com"; # 定义默认的搜索域
    
    option domain-name-servers 192.168.142.2; # 定义客户端的DNS地址
    
    default-lease-time 21600; # 定义默认租约时间(单位:秒)
    
    max-lease-time 43200; # 定义最大预约时间(单位:秒)
    

    在真实的主机系统上查看DHCP配置

    为真实计算机分配固定的IP地址

    vim /etc/dhcp/dhcpd.conf

    host dhcp-test {       #再原来的基础上添加这四行!!!!!!!!
      hardware ethernet 00-50-56-C0-00-01;    #这是上方要记录的物理地址,只需将 "-" 装化为 ":"
      fixed-address 192.168.142.200;     #自定以分配IP,再dhcpIP范围内即可
    }
    

    简单了解,以后补充

    ============================================================

    五.MySQL,MariaDB,Redis,NoSQL等数据库安装

    环境:
    
    关系型数据库
    DB2	CentOS 7.4      192.168.108.101
    mysql	CentOS 7.4	192.168.108.102
    mariadb	CentOS 7.4      192.168.108.103
    SQL Server  Win2012R2   192.168.108.71
    
    非关系型数据库		
    MongoDB	CentOS 7.4	192.168.108.101
    Memcaced  CentOS 7.4	192.168.108.102
    Redis	CentOS 7.4	192.168.108.103
    

    #1.安装MySQL服务

    以源码包在CentOS7.4[192.168.108.102]上安装mysql-5.7.38

    1.下载地址:

    https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
    

    2.卸载mariadb:

    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
    

    3.增加mysql用户和组,数据库安装在此用户下:

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    

    4.准备数据目录:以/abcs/data为例,建议使用逻辑卷[测试没使用]

    mkdir -p /abcs/data/mysql/datadir
    chown mysql.mysql /abcs/data/mysql/datadir
    chmod 750 /abcs/data/mysql/datadir
    

    5.准备二进制文件:

    cd /abcs/data
    tar xvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
    	
    cd /usr/local
    ln -sv /abcs/data/mysql-5.7.38-linux-glibc2.12-x86_64 mysql
    

    6.初始化MySQL:

    cd /usr/local/mysql
    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/abcs/data/mysql/datadir
    其中–basedir mysql基础目录 –datadir mysql数据存放目录,并创建了root用户的临时密码:yZIdRZ5lEo#o
    


    7.开启ssl连接:

    bin/mysql_ssl_rsa_setup
    bin/mysql_ssl_rsa_setup --datadir=/abcs/data/mysql/datadir
    

    8.编辑配置文件,保存退出:

    vim /etc/my.cnf
    	
    [mysqld]
    # GENERAL
    
    datadir=/abcs/data/mysql/datadir
    socket=/abcs/data/mysql/datadir/mysql.sock
    user=mysql
    default-storage-engine=InnoDB
    
    [mysqld_safe]
    log-error=/abcs/data/mysql/datadir/mysql-error.log
    pid-file=/abcs/data/mysql/datadir/mysqld.pid
    
    [client]
    socket=/abcs/data/mysql/datadir/mysql.sock
    

    9.启动MySQL:

    bin/mysqld_safe --user=mysql &
    

    10.配置环境变量:

    vim /etc/profile
    
    #添加下面一行
    export PATH=$PATH:/usr/local/mysql/bin
    
    # source /etc/profile
    

    11.设置开机启动:

    cp support-files/mysql.server /etc/init.d/mysql.server
    chkconfig --add mysql.server
    

    12.测试登录成功:

    mysql -uroot -p
    


    #2.安装MariaDB服务

    以源码包在CentOS7.4[192.168.108.103]上安装mariadb-10.2.6

    1.下载地址:

    https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
    

    2.卸载系统自带的yum源版本mariadb-5.5.68:

    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
    

    3.增加mysql用户和组,数据库安装在此用户下:

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    

    4.准备数据目录:以/abcs/data为例,建议使用逻辑卷[测试没使用]

    mkdir -p /abcs/data/mariadb/datadir
    chown mysql.mysql /abcs/data/mariadb/datadir
    chmod 750 /abcs/data/mariadb/datadir
    

    5.准备二进制文件:

    cd /abcs/data
    tar xvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
    	
    cd /usr/local
    ln -sv /abcs/data/mariadb-10.2.6-linux-glibc_214-x86_64 mariadb
    

    6.初始化MariaDB:

    cd /usr/local/mariadb
    ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/abcs/data/mariadb/datadir
    其中–basedir mariadb基础目录 –datadir mariadb数据存放目录,并创建了root用户的临时密码:new-password
    


    7.拷贝最小的配置文件:

    cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
    

    8.制作启动脚本设为开机启动,并启动服务:

    cp support-files/mysql.server /etc/init.d/mariadb
    
    vim /etc/init.d/mariadb
    //定义basedir、datadir、conf以及启动参数
    basedir=/usr/local/mariadb
    datadir=/abcs/data/mariadb/datadir
    conf=$basedir/my.cnf
    
    在定义conf后,还需要在 启动命令下面指定下——>在一般模式下,搜索 /start 启动命令
    在 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &中,增加--defaults-file="$conf",
    最后为
    
    $bindir/mysqld_safe --defaults-file="$conf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
    
    
    chkconfig --add mariadb
    chkconfig --list
    
    /etc/init.d/mariadb start
    

    9.查看启动状态,测试登录:

    ps aux | grep mariadb
    netstat -lntp | grep mysqld


    #3.安装Redis服务

    以源码包在CentOS7.4[192.168.108.103]上安装redis-4.0.9

    1.下载地址:

    http://download.redis.io/releases/redis-4.0.9.tar.gz
    

    2.检查yum源版本redis,gcc环境是否存在:

    rpm -qa | grep redis
    gcc -v
    
    gcc 环境安装
    yum install gcc-c++ -y
    


    3.准备二进制文件,解压,make编译安装:

    mkdir -p /abcs/data2
    上传redis-4.0.9.tar.gz
    cd /abcs/data2
    tar xvf redis-4.0.9.tar.gz
    mv redis-4.0.9 redis
    	
    cd /abcs/data2/redis/
    make PREFIX=/usr/local/redis install
    
    检查返回值:
    echo $?
    检查安装目录:
    ll /usr/local/redis/bin/
    

    /usr/local/redis/bin 目录介绍:
    redis-benchmark:Redis 测试工具
    redis-check-aof:Redis 的 aof 文件检查工具
    redis-check-rdb:Redis 的 rdb 文件检查工具
    redis-cli:Redis 的客户端工具
    redis-sentinel:Redis 的一个监控工具
    redis-server:Redis 的服务端工具
    

    4.安装并启动redis服务:

    切换到源码的 utils 目录下,并执行 install_server.sh
    cd /abcs/data2/redis/utils/
    ./install_server.sh	
    

    执行 ./install_server.sh 文件后,会相应的配置很多文件,比如端口号、配置文件的目录、日志文件的目录、数据文件的目录、Redis 服务的文件。
    这些文件都将其放在了 Redis 的安装目录下,即 /usr/local/redis/ 路径下。
    
    配置完成后,会自动启动 Redis 服务。
    	
    后续启动:
    /etc/init.d/redis_6379 start	或者	redis-server /usr/local/redis/conf/6379.conf
    

    5.查看服务的启动状态,用客户端尝试连接::

    ps -fe | grep redis
    
    cd /usr/local/redis/bin/
    ./redis-cli
    


    6.添加 Redis 目录到环境变量:

    在第 4 步编译安装生成了五个二进制文件,每次要执行该文件都要输入全路径,很不方便,
    为了能在任何路径下执行该二进制文件,可以对其进行环境变量的配置。
    
    vim /etc/profile
    
    在文件的末尾追加如下两行配置
    export REDIS_HOME=/usr/local/redis
    export PATH=$PATH:$REDIS_HOME/bin
    
    保存配置文件,重新加载配置
    source /etc/profile
    

    7.关闭redis,注意事项:

    /etc/init.d/redis_6379 stop
    
    注意事项
    没有安装 gcc,直接在Redis解压目录下执行make 命令,会发现缺少编译器gcc,这时候通过 yum install gcc-c++ 命令安装gcc,然后接着执行 make 命令,但是发现还是报错:
    
    jemalloc/jemalloc.h:没有那个文件或目录
    
    原因:这次报错是因为第一次执行 make 命令有一些残存的文件没有清除干净,这时候需要执行 make distclean 命令后,再执行 make 命令即可。
    

    #4.安装DB2服务

    以源码包在CentOS7.4[192.168.108.101]上安装db2 v9.7版本

    ibm注册用户,下载免费的包,未成功;后继续补充。


    #5.安装MongoDB服务

    以源码包在CentOS7.4[192.168.108.101]上安装Mongodb-4.0版本

    1.官网下载:

    https://www.mongodb.com/try/download/community
    
    mongodb-linux-x86_64-rhel70-4.0.28.tgz
    

    2.准备数据目录:以/abcs/data为例,建议使用逻辑卷[测试没使用];上传二进制文件,解压,创建软链接:

    mkdir -p /abcs/data
    上传mongodb-linux-x86_64-rhel70-4.0.28.tgz
    
    cd /abcs/data
    tar -zxvf mongodb-linux-x86_64-rhel70-4.0.28.tgz
    mv mongodb-linux-x86_64-rhel70-4.0.28 mongodb
    	
    cd /usr/local
    ln -sv /abcs/data/mongodb mongodb
    

    3.创建db目录和日志文件,mongodb.conf文件:

    cd /usr/local/mongodb/
    
    mkdir -p ./data/db
    mkdir -p ./logs
    touch ./logs/mongodb.log
    
    vim mongodb.conf
    
    #端口号
    port=27017
    #db目录
    dbpath=/usr/local/mongodb/data/db
    #日志目录
    logpath=//usr/local/mongodb/logs/mongodb.log
    #后台
    fork=true
    #日志输出
    logappend=true
    #允许远程IP连接
    bind_ip=0.0.0.0
    

    4.启动测试:

    1)启动
    ./bin/mongod --config mongodb.conf
    
    2)连接
    ./bin/mongo
    
    3)测试
    


    5.配置mongodb服务可以使用systemctl命令:

    cd /lib/systemd/system
    
    
    
    cat >>mongodb.service<<"EOF"
    [Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    
    
    
    
    然后设置mongodb.service权限
    chmod +x mongodb.service
    
    systemctl命令可以用了:
    #启动服务
    systemctl start mongodb.service     
    
    #查看服务状态
    systemctl status mongodb.service
    
    #停止服务
    systemctl stop mongodb.service
    
    #重启服务
    systemctl restart mongodb.service
    
    #添加开机自启动
    systemctl enable mongodb.service
    
    #禁止开机自启动
    systemctl disable mongodb.service
    


    6.添加环境变量的三种方法,选择一种即可:

    1)直接用export命令:
    export PATH=$PATH:/usr/local/mongodb/bin
    
    
    
    2)修改profile文件:
    
    cat >>/etc/profile<<"EOF"
    export PATH="$PATH:/usr/local/mongodb/bin"
    
    EOF
    
    #刷新配置
    source /etc/profile
    
    
    3)修改.bashrc文件:
    
    cat >>/root/.bashrc<<"EOF"
    export PATH="$PATH:/usr/local/mongodb/bin"
    
    EOF
    
    
    上述执行完毕,环境变量配置完成!
    
    重启服务器,输入mongo 回车就有了。
    

    7.推荐一款mongodb可视化工具:

    Robo 3T :https://robomongo.org/


    #6.安装Memcaced服务

    以源码包在CentOS7.4[192.168.108.102]上安装Memcaced-v1.4.15版本

    1.官网下载:

    https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
    libevent-2.0.21-stable.tar.gz
    
    https://github.com/memcached/memcached/wiki/ReleaseNotes1415
    memcached-1.4.15.tar.gz
    

    2.环境检查:

    关闭防火墙
    systemctl stop firewalld && setenforce 0
    
    安装gcc编译环境包
    yum install gcc gcc-c++ make openssl-devel -y
    

    3.准备数据目录:以/abcs/data为例,建议使用逻辑卷[测试没使用];上传二进制文件,解压,创建软链接:

    mkdir -p /abcs/data2
    上传libevent-2.0.21-stable.tar.gz
    上传memcached-1.4.15.tar.gz
    
    cd /abcs/data2
    tar -zxvf libevent-2.0.21-stable.tar.gz
    tar -zxvf memcached-1.4.15.tar.gz
    mv memcached-1.4.15 memcached
    	
    cd /usr/local
    ln -sv /abcs/data2/memcached memcached
    

    4.安装libevent和memcached:

    1)安装libevent
    cd /abcs/data2/libevent-2.0.21-stable
    ./configure --prefix=/usr/local/libevent
    make && make install
    
    2)安装memcached
    cd /usr/local/memcached
    ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
    make && make install
    
    安装目录:/usr/local/memcached/bin/memcached
    


    5.设置环境变量:

    cat >>/etc/profile<<"EOF"
    export MEMCACHED_ROOT=/usr/local/memcached
    export PATH=$MEMCACHED_ROOT/bin:$PATH
    EOF
    
    
    source /etc/profile
    

    6.运行Memcached并测试:

    1)配置并启动Telnet
    yum install telnet-server.x86_64 telnet.x86_64 xinetd.x86_64 -y
    
    systemctl enable xinetd.service
    systemctl enable telnet.socket
    
    systemctl start telnet.socket
    systemctl start xinetd
    
    
    2)运行Memcached
    /usr/local/memcached/bin/memcached -p 11211 -m 64M -u root -d
    
    3)Telnet命令测试
    telnet localhost 11211
    
    (输入quit退出)
    
    4)查看Memcached运行状态
    echo stats | nc 127.0.0.1 11211
    
    到此Memcached及其依赖库libevent均已安装成功!
    



    #7.安装SQL Server服务

    1.win2012R2安装framework3.5 , JRE-9.0.4 和 SQL Server2016补丁KB5001092:

    安装framework3.5
    1)系统默认安装了.NET Framework 4.5,现在安装framework3.5,安装失败;接下来指定备用源路径安装;
    
    2)ISO镜像加载到光盘;复制ISO中 sources目录下的 sxs 目录到C盘下;
    
    3)重新安装,填写备用源路径为C:\sxs
    
    
    安装JRE-9.0.4
    1)下载JRE
    https://www.oracle.com/cn/java/technologies/javase/javase9-archive-downloads.html
    
    2)安装JRE
    
    
    安装SQL Server2016补丁KB5001092
    1)下载KB5001092
    https://www.catalog.update.microsoft.com/Search.aspx?q=KB5001092
    
    2)安装KB5001092
    






    2.SQLServer2016安装过程:

    1)下载sql server 2016 ISO镜像;
    
    文件名  en_sql_server_2016_enterprise_x64_dvd_8701793.iso
    SHA1  2A0CA91876772274F3604F629785954C632EB76E
    文件大小  2.05GB
    发布时间  2016-06-01
    ed2k://|file|en_sql_server_2016_enterprise_x64_dvd_8701793.iso|2206040064|27794AA7BAE8C5F6436EC41CAE628F00|/
    
    下载完成
    
    
    2)ISO镜像加载到光盘;,"setup"安装,打开安装向导;
    
    
    3)安装实例界面,实例功能选择;其他默认方式,一路点击,有添加当前用户的对话框加上当前用户;最后,等待安装完成
    



    3.安装SQL Server Management Studio (SSMS):

    1)下载SQL Server Management Studio (SSMS) 18.11.1;
    https://aka.ms/ssmsfullsetup
    
    2)安装SSMS,重启系统;
    
    3)打开SSMS,输入用户名和密码后登陆数据库
    



    六.LAMP+LNMP:

    测试搭配:
    
    Linux  +  Apache【httpd】  +  MySQL  +  PHP
    Linux  +  Nginx  +  MariaDB  +  PHP
    

    1.Linux + Apache【HTTP】 + MySQL + PHP

    #1.环境检查选择:

    有上述,选择安装MySQL的CentOS 7.4【192.168.108.102】环境,需要的包下载到服务器:

    https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
    
    http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.53.tar.gz
    https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz	apr可以理解成一个通用的函数库,主要为上层应用提供支持
    https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
    
    http://cn2.php.net/distributions/php-5.6.32.tar.bz2
    

    #2.安装httpd:

    mkdir /usr/src/apache_tar_gz
    
    1)安装依赖
    yum -y install make gcc gcc-c++ kernel-devel m4  ncurses-devel openssl-devel expat-devel
    
    2)安装apr
    cd /usr/src/apache_tar_gz
    tar zxf apr-1.7.0.tar.gz
    cd ./apr-1.7.0
    ./configure --prefix=/usr/local/apr
    make && make install
    
    3)安装apr-util
    cd /usr/src/apache_tar_gz
    tar zxf apr-util-1.6.1.tar.gz
    cd ./apr-util-1.6.1
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    make && make install
    
    4)安装zlib
    cd /usr/src/apache_tar_gz
    wget https://zlib.net/fossils/zlib-1.2.11.tar.gz
    tar zxf zlib-1.2.11.tar.gz
    cd ./zlib-1.2.11
    ./configure --prefix=/usr/local/zlib
    make && make install
    
    5)安装pcre
    cd /usr/src/apache_tar_gz
    wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
    tar zxf pcre-8.44.tar.gz
    cd ./pcre-8.44
    ./configure --prefix=/usr/local/pcre
    make && make install
    
    6)安装openssl
    cd /usr/src/apache_tar_gz
    wget https://ftp.openssl.org/source/openssl-1.1.1j.tar.gz
    tar zxf openssl-1.1.1j.tar.gz
    cd ./openssl-1.1.1j
    ./config -fPIC --prefix=/usr/local/openssl enable-shared
    make && make install
    
    7)安装httpd
    cd /usr/src/apache_tar_gz
    tar zxf httpd-2.4.53.tar.gz
    cd ./httpd-2.4.53
    cp -r ../apr-1.7.0 srclib/apr
    cp -r ../apr-util-1.6.1 srclib/apr-util
    
    ./configure --prefix=/usr/local/httpd \
      --enable-so \
      --enable-cgi \
      --enable-cgid \
      --enable-ssl \
      --with-ssl=/usr/local/openssl \
      --enable-rewrite \
      --with-pcre=/usr/local/pcre \
      --with-z=/usr/local/zlib \
      --with-apr=/usr/local/apr \
      --with-apr-util=/usr/local/apr-util \
      --enable-modules=most \
      --enable-mods-shared=most \
      --enable-mpms-shared=all \
      --with-mpm=event \
      --enable-proxy \
      --enable-proxy-fcgi \
      --enable-expires \
      --enable-deflate \
      --with-included-apr
    
    make && make install
    
    ln -s /usr/local/httpd/bin/* /usr/local/bin
    
    cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
    
    echo "# chkconfig: 35 85 85
    # description: apache 2.4.53" >> /etc/init.d/httpd
    
    chkconfig --add httpd
    


    #3.安装PHP:

    cd /usr/local/src
    bzip2 -d php-5.6.32.tar.bz2
    tar xf php-5.6.32.tar
    
    yum install -y epel-release
    yum install -y gcc gcc-c++ libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel
    
    
    cd /usr/local/src/php-5.6.32
    
    export MYSQL_LIB_DIR=/usr/local/mysql/lib/
    
    ./configure \
    --prefix=/usr/local/php \
    --with-apxs2=/usr/local/httpd/bin/apxs \
    --with-config-file-path=/usr/local/php/etc \
    --with-libxml-dir \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-iconv-dir \
    --with-zlib-dir \
    --with-bz2 \
    --with-openssl \
    --with-mcrypt \
    --enable-soap \
    --enable-gd-native-ttf \
    --enable-mbstring \
    --enable-sockets \
    --enable-exif
    
    
    make && make install
    

    正在解决报错:

    已解决报错:

    编译安装结束:


    #4.配置httpd支持PHP:

    1)复制配置文件
    cp /usr/local/src/php-5.6.32/php.ini-production /usr/local/php/etc/php.ini
    
    2)httpd的主配置文件为 /usr/local/httpd/conf/httpd.conf,编辑这个文件
    搜索Servername,把#ServerName www.example.com:80前面的#号删除;
    
    <Directory />
    	AllowOverride none
    	Require all denied
    </Directory>
    
    修改成:修改该行的目的是,允许所有的请求。
    
    <Directory />
    	AllowOverride none
    	Require all granted
    </Directory>
    
    
    继续搜索下面这一行:删除前面的#
    #AddType application/x-gzip .tgz
    在该行的下面添加一行:
    AddType application/x-httpd-php .php
    
    
    接着找到下面这一段:
    <IfModule dir_module>
    	DirectoryIndex index.html
    </IfModule>
    
    修改为:
    
    <IfModule dir_module>
    	DirectoryIndex index.html index.php
    </IfModule>
    

    #5.测试LAMP是否搭建成功

    启动httpd之前需要检验配置文件是否正确
    /usr/local/httpd/bin/apachectl -t
    
    配置正确则会显示“Syntax OK”;否则继续修改配置文件httpd.conf
    systemctl start httpd
    
    netstat -tnlup | grep httpd
    



    2.Linux + Nginx + MariaDB + PHP

    #1.环境检查选择:

    有上述,选择安装MariaDB的CentOS 7.4【192.168.108.103】环境,需要的包下载到服务器:
    
    https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
    
    http://nginx.org/download/nginx-1.8.0.tar.gz
    
    http://cn2.php.net/distributions/php-5.6.32.tar.bz2
    

    #2.安装PHP:

    1)创建账号,来运行php-fpm服务
    useradd -s /sbin/nologin php-fpm
    
    2)解压,安装依赖
    cd /usr/local/src
    bzip2 -d php-5.6.32.tar.bz2
    tar xf php-5.6.32.tar
    
    yum install -y epel-release
    yum install -y gcc gcc-c++ libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel curl curl-devel
    
    
    3)编译安装
    cd /usr/local/src/php-5.6.32
    
    export MYSQL_LIB_DIR=/usr/local/mariadb/lib/
    
    ./configure \
    --prefix=/usr/local/php-fpm \
    --with-config-file-path=/usr/local/php-fpm/etc \
    --enable-fpm \
    --with-fpm-user=php-fpm \
    --with-fpm-group=php-fpm \
    --with-mysql-sock=/tmp/mysql.sock \
    --with-libxml-dir \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-iconv-dir \
    --with-zlib-dir \
    --with-mcrypt \
    --enable-soap \
    --enable-gd-native-ttf \
    --enable-ftp \
    --enable-mbstring \
    --enable-exif \
    --disable-ipv6 \
    --with-pear \
    --with-curl \
    --with-openssl
    
    make && make install
    已成功编译安装
    
    
    4)修改配置文件
    
    cp /usr/local/src/php-5.6.32/php.ini-production /usr/local/php-fpm/etc/php.ini
    
    把下面的内容填入到该文件中
    vim /usr/local/php-fpm/etc/php.ini
    
    
    [global]
    pid = /usr/local/php-fpm/var/run/php-fpm.pid
    error_log = /usr/local/php-fpm/var/log/php-fpm.log
    [www]
    listen = /tmp/php-fcgi.sock
    listen.mode = 666
    user = php-fpm
    group = php-fpm
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 20
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    rlimit_files = 1024
    
    #end
    
    cp /usr/local/php-fpm/etc/php-fpm.conf.default /usr/local/php-fpm/etc/php-fpm.conf
    
    检验配置
    /usr/local/php-fpm/sbin/php-fpm -t
    
    
    5)启动php-fpm
    cp /usr/local/src/php-5.6.32/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod 755 /etc/init.d/php-fpm
    service php-fpm start
    
    
    6)其他
    设置开机启动
    chkconfig php-fpm on
    查看php-fpm启动进程
    ps aux | grep php-fpm
    



    #3.安装Nginx:

    1)Nginx源码包解压,配置编译选项并安装
    cd /usr/local/src/
    tar zxvf nginx-1.8.0.tar.gz
    
    cd nginx-1.8.0/
    ./configure --prefix=/usr/local/nginx
    make && make install
    
    
    2)编写Nginx的启动脚本,并加入系统服务
    vim /etc/init.d/nginx
    
    
    //脚本文件内容
    
    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 30 21
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /usr/local/nginx/conf/nginx.conf
    # pidfile:     /usr/local/nginx/logs/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    
    
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
      # make required directories
      user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
      if [ -n "$user" ]; then
        if [ -z "`grep $user /etc/passwd`" ]; then
          useradd -M -s /bin/nologin $user
        fi
        options=`$nginx -V 2>&1 | grep 'configure arguments:'`
        for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
        done
    fi
    }
    
    start() {
      [ -x $nginx ] || exit 5
      [ -f $NGINX_CONF_FILE ] || exit 6
      make_dirs
      echo -n $"Starting $prog: "
      daemon $nginx -c $NGINX_CONF_FILE
      retval=$?
      echo
      [ $retval -eq 0 ] && touch $lockfile
      return $retval
    }
    
    stop() {
      echo -n $"Stopping $prog: "
      killproc $prog -QUIT
      retval=$?
      echo
      [ $retval -eq 0 ] && rm -f $lockfile
      return $retval
    }
    
    restart() {
      configtest || return $?
      stop
      sleep 1
      start
    }
    
    reload() {
      configtest || return $?
      echo -n $"Reloading $prog: "
      killproc $prog -HUP
      retval=$?
      echo
    }
    
    force_reload() {
      restart
    }
    
    configtest() {
    $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
      status $prog
    }
    
    rh_status_q() {
      rh_status >/dev/null 2>&1
    }
    
    case "$1" in
      start)
          rh_status_q && exit 0
          $1
          ;;
      stop)
          rh_status_q || exit 0
          $1
          ;;
      restart|configtest)
          $1
          ;;
      reload)
          rh_status_q || exit 7
          $1
          ;;
      force-reload)
          force_reload
          ;;
      status)
          rh_status
          ;;
      condrestart|try-restart)
          rh_status_q || exit 0
          ;;
      *)
          echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
          exit 2
    esac
    
    
    
    
    更改权限
    chmod 755 /etc/init.d/nginx
    chkconfig --add nginx
    
    加入开机启动
    chkconfig nginx on
    
    
    
    
    3)把nginx.conf的配置文件清空,并重新写入
    # vim /usr/local/nginx/conf/nginx.conf
    //配置文件内容:
    
    
    user nobody nobody;
    worker_processes 2;
    error_log /usr/local/nginx/logs/nginx_error.log crit;
    pid /usr/local/nginx/logs/nginx.pid;
    worker_rlimit_nofile 51200;events
    {
      use epoll;
      worker_connections 6000;
    }http
    {
      include mime.types;
      default_type application/octet-stream;
      server_names_hash_bucket_size 3526;
      server_names_hash_max_size 4096;
      log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
      ' $host "$request_uri" $status'
      ' "$http_referer" "$http_user_agent"';
      sendfile on;
      tcp_nopush on;
      keepalive_timeout 30;
      client_header_timeout 3m;
      client_body_timeout 3m;
      send_timeout 3m;
      connection_pool_size 256;
      client_header_buffer_size 1k;
      large_client_header_buffers 8 4k;
      request_pool_size 4k;
      output_buffers 4 32k;
      postpone_output 1460;
      client_max_body_size 10m;
      client_body_buffer_size 256k;
      client_body_temp_path /usr/local/nginx/client_body_temp;
      proxy_temp_path /usr/local/nginx/proxy_temp;
      fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
      fastcgi_intercept_errors on;
      tcp_nodelay on;
      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 8k;
      gzip_comp_level 5;
      gzip_http_version 1.1;
      gzip_types text/plain application/x-javascript text/css text/htm
      application/xml;   server
      {
        listen 80;
        server_name localhost;
        index index.html index.htm index.php;
        root /usr/local/nginx/html;       location ~ \.php$
        {
          include fastcgi_params;
          fastcgi_pass unix:/tmp/php-fcgi.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
        }
      }
    }
    
    
    检查配置
    /usr/local/nginx/sbin/nginx -t
    
    
    
    4)开启Nginx服务
    //注意:apache服务不可同时打开,否则有报错
    service nginx start
    
    service nginx status
    
    
    
    5)创建测试文件,检验是否解析正常
    vim /usr/local/nginx/html/2.php
    
    <?php
    echo "test php scripts.\n"
    ?>
    
    curl localhost/2.php
    


  • 相关阅读:
    java中字符串类型的比较
    iOS 检测是否插入耳机
    Model-View-Controller (The iPhone Developer's Cookbook)
    Spring Animation
    CoreImage 自动增强滤镜 以及 系统滤镜查询
    UIView Animation
    CoreImage 查询系统滤镜
    CoreImage 的人脸检测
    Smarty 模板操作
    smarty转载(1)
  • 原文地址:https://www.cnblogs.com/yachengmuCC/p/16276531.html
Copyright © 2020-2023  润新知