服务应用的测试: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