rsyslog 日志服务

一、主配文件:
/etc/rsyslog.conf # 其他配置文件后需要重启
二、主配文件解释:
$UDPServerRun 514 # 接受514端口用UDP协议转发过来的日志
$InputTCPServerRun 514 # 接受514端口使用tcp协议转发过来的日志
kern. # 内核类型的所有日志
.info;mail.none;authpriv.none;cron.none
#所有类型info级别的日志,除了邮箱,安全,定时任务
authpriv. # 安全类型的所有级别日志
mail.
# 邮箱类型的所有级别日志
cron. # 周期定时任务级别的日志
local7.
# 开机时显示的信息

  1. 日志输入的规则

.info # 大于等于info级别的日志
.= # 只记录等于某个级别的日志
.! # 除了某个级别以外的所有日志
.none # 不记录某个类型的日志

logretate 日志切割

  1. 主配文件: /etc/logrotate.conf

备注:logretate由crond服务调用,调用脚本在/etc/cron.daily/logratate

  1. 主配文件解释:

weekly # 每周执行日志切割
rotate # 日志切割后保留离现在最近的几份
create # 指定创建所属组,所属者
dateext # 使用日期为后缀的回滚文件
局部变量:
/var/log/wtmp{ # 指定日志的文件和路径
missingok # 如果文件丢失,将不报错
monthly # 每月轮换一次
create 0664 root utmp # 设置日志文件的权限,属主,属组
minsize 1M # 文件超过1M就进行切割
rotate 1 # 日志切割后历史最多保存一份
}
局部变量其他参数:
monthly :日志文件每月切割一次,其他可以用’daily’,’weekly’,’yearly’
compress : 在切割任务完成后,对切割后文件进行归档并使用gzip格式
delaycompress :指定不要将最近的归档压缩,压缩将在下一轮训周期进行
missingok : 切割时忽略所有错误
notifempty : 如果日志文件为空,则不会进行轮询
sharedscripts : 所有日志切割完毕后统一执行一次脚本
postrotate/endscript : 脚本开始结束指令,将执行里面指定命令
/var/lib/logrotate/status 默认记录上次日志切割的时间

  1. 使用方法:

    logrotate 参数 配置文件
    使用参数:
    -d # 预演,实际不轮训
    -v # 执行详细结果
    -f # 强制执行

    sshd 远程登录服务

  2. 主配文件:/etc/ssh/sshd_config # 服务配置

    1. /etc/ssh/ssh_config # 客户端配置<br />默认端口:22<br />
  3. 安装方法: yum -y install openssh openssh-clients openssh-server


  4. 使用方法:

ssh 用户名@ip
使用参数:
-p # 指定端口 -l # 指定用户名

  1. 主配文件解释:

Port 22 # 指定ssh端口
ListenAddress 0.0.0.0 # 指定ipv4登录端口
ListenAddress :: # 指定ipv6 登录端口
LoginGraceTime 2m # 输入密码到一定时间内,则自动断开ssh链接,如果没有单位,默认秒
PasswordAuthentication yes # 是否开启密码验证,如果为no只能通过公钥登录
PermitEmptyPassword no # 是否允许空密码的用户登录
PrintLastLog yes # 是否显示上次登录信息,默认为yes

  1. 防止暴力破解方法一

思路:1.密码复杂 2.修改默认端口 3.禁止root登录 4.不允许密码登录

  1. 生成公钥方法:

ssh-keygen # 生成公钥
ssh-copy-id ip地址 # 给指定ip分配公钥,分配后指定ip可以免密登录

  1. 防止暴力破解方法二

思路:使用开源软件来防护安全(fail2ban)
主配文件:/etc/fail2ban/jail.conf

  1. 确认py版本(需要大于2.4):python -V
  2. 安装fail2ban: yum -y install epel-release

    1. yum -y install fail2ban
  3. 主配文件解释(单独sshd服务,局部变量):

[sshd] # 局部变量服务名,如果有重复配置,局部变量优先级大于全局
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s # 上面为默认配置,不用修改
加入以下内容:
enabled = true # 是否激活此项
filter = sshd # 过滤规则的名字
action=iptables[name=SSH,port=(写ssh端口,如果默认22则写ssh),protocol=tcp] # 动作相关参数
sendmail-whois[name=SSH,dest=2664872539@qq.com,sender=fail2ban@example.com,sendername=”Fail2Ban”] # 触发邮件报警人
logpath = /var/log/secure # 检测的系统的登录日志文件,这里要写sshd服务日志文件
bantime = 3600 # 禁止ip访问一个小时,以秒为单位
findtime = 300 # 在5分钟内出现规定次数就禁止登录
maxretry = 3 # 最大尝试次数,3次后禁止登录

  1. 开启服务并设置开机启动: systemctl enable fail2ban —now
  2. 清空日志并重启fail2ban: > /var/log/secure

systemctl restart fail2ban

  1. 验证,fail2ban服务启动成功,iptables会多个规则: iptables -L -n
  2. 查看fail2ban监控情况: fail2ban-client status
  3. 查看fail2ban中sshd服务监控状态: fail2ban-clients status sshd
  4. 取消fail2ban 中黑名单的ip: fail2ban-clients set sshd unbanip ip地址

注意:如果iptables清空了规则,需要重启fail2ban

  1. 升级ssh服务

yum升级:yum update -y openssh
源码升级:

  1. 首先安装telnet服务: yum -y install xinetd telnet-server
  2. 修改配置文件(如果没有无需配置): vim /etc/xinetd.d/telnet

改 disable=no 为 yes

  1. 配置telnet登录终端类型:vim /etc/securetty

加入:
pts/0
pts/1
pts/2
pts/3

  1. 配置开启自启并启动telnet : systemctl enable xinetd —now

systemctl start telnet.socket

  1. 将源码包导入到主机内
  2. 使用telnet登录主机,安装依赖:

    yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pam-devel libselinux-devel

  3. 备份现有ssh配置文件: mkdir /opt/sshbak

    mv /etc/ssh/* /opt/sshbak

  4. 解压源码包: tar xf 压缩包 -C 指定路径

  5. 进入到源码包,并配置openssh源码配置:

./configure —with-md5-passwords —with-pam —with-selinux —with-privsep-path=/usr/local/sshd/ —sysconfdir=/etc/ssh

  1. 复制配置文件: cp -a 源码包目录/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
  2. 复制开机脚本: cp -a 源码包目录/contrib/redhat/sshd.init /etc/init.d/sshd
  3. 编译并安装: make -j 4 && make install
  4. 修改配置文件: /etc/ssh/sshd_config

改 #PermitRootLogin prohibit-password 为 PermitRootLogin yes
把 #PubkeyAuthentication yes 去掉注释
把 #UseDNS no 注释去掉

  1. 加入开机启动: chkconfig —add sshd

    systemctl enable sshd

  2. 删除之前开机启动项: mv /usr/lib/systemd/system/sshd.service /opt/sshbak

  3. 启动:chkconfig ssh on

    /etc/init.d/sshd restart

  4. 检测端口: ss -anutp | grep 22

  5. 启动ssh: systemctl start sshd
  6. 查看版本: ssh -V
  7. 禁用telnet服务

    rsync 数据备份

  8. 主配文件:主配文件: /etc/rsyncd.conf

默认端口:873

二、rsync命令: rsync 选项 源文件 目标文件
选项:
-a,—archive(存档) # 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数
-rlptgoD
-v # 显示 rsync 过程中详细信息。
-r,–recursive # 对子目录以递归模式处理
-l,—links # 表示拷贝链接文件
-p , —perms # 表示保持文件原有权限
-t , —times # 表示保持文件原有时间
-g , —group # 表示保持文件原有属用户组
-o , —owner # 表示保持文件原有属主
-D , —devices # 表示块设备文件信息
-z , —compress # 表示压缩传输
-H # 表示硬连接文件
-A # 保留 ACL 属性信息
-P # 显示传输进度
—delete # 删除那些目标位置有而原始位置没有的文件
—password-file # 指定密码文件进行备份

三、非系统用户备份
1.主配文件解释:
全局参数:
port # 监听端口
address # 监听ip
uid # 指定模块传输文件时守护进程具有uid
gid # 指定模块传输文件时守护进程具有的gid
max connections # 最大并发的连接数
lock file # 指定支持max connections的锁文件,默认是/var/run/rsyncd.lock
motd file # 指定一个文件,客户连接时,显示这个文件中内容
log file # 指定日志文件,指定后,日志不会发送到默认的syslog
pid file # 指定rsync的pid文件,通常指定为”/var/run/rsyncd.pid
hosts allow # 允许某个ip或网段来访问
局部模块参数:
Comment # 给模块一个描述
path # 指定模块备份的目录
read only # 是否为只读模式,true无法上传写入
exclude # 用来指定多个由空格隔开的文件或目录,指定的目录和文件不会进行备份
exclude from # 指定一个exclude模式的文件名
include # 用来指定备份的某个文件到某个目录下
include from # 指定一个include模式的文件
auth users # 允许备份的用户
secrets file # 指定一个包含定义用户:密码的文件
hosts allow # 允许访问的网段

  1. 写指定用户密码文件:vim /指定文件路径

格式: 用户名:密码

  1. 修改密码文件权限600或者700: chmod 600 指定文件路径
  2. 启动服务: systemctl start rsyncd
  3. 通过配置文件启动: rsync —daemon —config=/etc/rsyncd.conf
  4. 同步文件方法: rsync -avzP 本地文件 用户名@ip::模块名
  5. 创建密码文件:vim rsync.passwd

    只用写入密码即可,用来密码文件无交互备份

  6. 使用方法: rsync -avP 用户名@ip::模块名 本地目录 —password-file=文件路径


    四、实时备份文件目录
    思路:rsync+sersync

  7. 下载或者导入sersync包到服务器中:

    wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

  8. 切换到目录中,并备份配置文件:cp xx/confxml.xml xx/confxml.xml.bak

  1. 更改配置文件如下:








  2. 后台启动同时备份命令:./sersync2 -d -r -o ./confxml.xml

ftp 文件共享

  1. 主配文件:/etc/vsftpd/vsftpd.conf

默认端口:20 21 ps:21用来传输指令、20用来传输文件

  1. 安装方法:yum -y install vsftp (服务端)

yum -y install lftp (客户端)

  1. 使用匿名登录ftp:

1.修改配置文件:/etc/vsftpd/vsftpd.conf
anonymous_enable=YES # 允许匿名登录
anon_upload_enable=YES # 允许匿名用户上传
anon_mkdir_write_enable=YES # 允许匿名用户读的权限
anon_other_write_enable=YES # 允许匿名用户写的权限(需要手动添加)

  1. 修改文件的权限: chown ftp.ftp 指定目录
  2. 重启服务: systemctl restart vsftpd
  1. 使用指定用户访问ftp:
  2. 创建用户: useradd -M -s /sbin/nologin 用户名
  3. 设置密码:echo “xx” | passwd —stdin 用户名
  4. 修改配置文件:vim /etc/vsftpd/vsftpd.conf 修改如下:

    将之前匿名上传、读写功能全部备注,将anonymous_enable改成no
    local_enable=YES # 允许本地用户登录
    local_root=/var/www/html/ # 指定用户的目录
    chroot_list_enable=YES # 开启指定用户登录
    chroot_list_file=/etc/vsftpd/chroot_list # 指定用户登录文件
    allow_writeable_chroot=YES # 指定登录用户可以写

  5. 写入用户列表文件: vim /etc/vsftpd/chroot_list

    格式:只用写用户名,一个用户一行

  6. 查看登录shell : cat /etc/shells

    查看是否有/sbin/nologin/如果没有则手动添加

  7. 使用lftp登录测试: lftp ip地址 -u 用户名,密码

  1. 使用openssl证书进行加密传输
  2. 生成证书: openssl req -new -x509 -nodes -out vsftpd.pem -keyout

vsftpd.pem -days 3650
代码解释:
req #是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
x509 #X.509 证书数据管理。
days #定义证书的有效日期。
newkey #指定证书密钥处理器。
keyout #设置密钥存储文件。
out #设置证书存储文件,注意证书和密钥都保存在一个相同的文件

  1. 修改配置文件让vsftpd支持ssl证书:/etc/vsftpd/vsftpd.conf

ssl_enable=YES #启用 SSL 支持。
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES # 上面四行force表示匿名用户强制使用ssl登录
ssl_tlsv1=YES # 指定支持TSL v1
ssl_sslv2=YES # 指定支持 SSL v2
ssl_sslv3=YES # 指定支持 SSL v3
require_ssl_reuse=NO # 不重用SSL会话,安全配置项
ssl_ciphers=HIGH # 允许用于加密ssl连接的ssl算法
rsa_cert_file=xxx # 定义证书文件位置
rsa_private_key_file=xx # 定义密钥文件位置
注意:上面添加到配置文件最后,配置后不能有多余空格

  1. 使用windos中ftp工具FileZilla客户端登录,跳出证书确认则成功

    nfs 文件共享

  2. 主配文件:/etc/exports

默认端口: 2049

  1. 安装方法: yum -y install rpcbind nfs-utils
  1. 挂载目录:
  2. 启动服务: systemctl start rpcbind

systemctl start nfs-server

  1. 写入配置文件:/etc/exports

写法: 共享目录 允许访问ip或网段(权限)
配置文件参数:
ro #只读访问。
rw #读写访问。
sync #资料同步写入到内存与硬盘当中。
async #资料会先暂存于内存当中,而非直接写入硬盘。
secure #NFS 通过 1024 以下的安全 TCP/IP 端口发送。
insecure #NFS 通过 1024 以上的端口发送。
wdelay #如果多个用户要写入 NFS 目录,则归组写入(默认)。
no_wdelay #如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。
hide #在 NFS 共享目录中不共享其子目录。
no_hide #共享 NFS 目录的子目录。
subtree_check #如果共享/usr/bin 之类的子目录时,强制 NFS 检查父目录的权限(默认)。
no_subtree_check #和上面相对,不检查父目录权限。
all_squash #共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。
no_all_squash #保留共享文件的 UID 和 GID(默认)。
root_squash #root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)。
no_root_squash #root 用户具有根目录的完全管理访问权限。

  1. 同步配置文件: exportfs -rv
  2. 显示可挂载文件: showmount -e ip地址
  3. 挂载文件: mount -t nfs ip地址:挂载文件 本地挂载目录
  4. 开机挂载写法:

ip地址:挂载文件 本地挂载目录 nfs defaults 0 0

  1. 参数优化
  2. NFS 客户端挂载参数的优化:

NFS 高并发环境下的服务端重要优化(mount -o 参数)。
async:异步同步,此参数会提高 I/O 性能,但会降低数据安全(除非对性能要求很高,对数 据可靠性不要求的场合。一般生产环境,不推荐使用)。
noatime:取消更新文件系统上的 inode 访问时间,提升 I/O 性能,优化 I/O 目的,推荐使用。
nodiratime:取消更新文件系统上的 directory inode 访问时间,高并发环境,推荐显式应用该选项,提高系统性能。
intr:可以中断不成功的挂载。
rsize/wsize:读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响 客户端与服务端传输数据的缓冲存储量。

  1. 内核优化: 修改/etc/sysctl.conf,在文件最后添加如下:

net.core.wmem_default = 8388608 #内核默认写缓存
net.core.rmem_default = 8388608 #内核默认读缓存
net.core.rmem_max = 16777216 #内核最大读缓存
net.core.wmem_max = 16777216 #内核最大写缓存
注意:使用 sysctl.conf 文件内的参数生效,执行命令输出的结果中的参数代表生效。

apache web服务

  1. 主配文件:/etc/httpd/conf/httpd.conf

默认端口: http:80 https:443

  1. 安装方法:yum -y install httpd
  1. 配置文件解释:/etc/httpd/conf/httpd.conf

ServerRoot “/etc/httpd” # httpd服务的根目录
Listen 80 # 监听端口
Include conf.modules.d/*.conf # 指定路径下带.conf结尾的配置文件也生效
User apache # 以哪个用户身份运行
Group apache # 以哪个组的身份运行
ServerAdmin root@localhost # 管理员邮箱
DocumentRoot “/var/www/html” # 默认主目录如果改动,局部模块也要改动

Options Indexes FollowSymLinks # 允许访问主页
AllowOverride None # 忽略.htaccess文件
LogLevel warn # 日志等级
AddDefaultCharset UTF-8 # 默认字符集

  1. 修改httpd主页:
  2. 先备份文件: cp /etc/httpd/conf/httpd.conf{,.bak}
  3. 修改配置文件如下:

ServerAdmin 2664872539@qq.com # 配置邮箱
ServerName 192.168.1.187:80 # 配置主服务监听端口
DocumentRoot “/var/www/html” # 网站根目录页面
# 模块声明
Options Indexes FollowSymLinks # 如果没有首页允许显示列表
# 模块结尾
DirectoryIndex index.html index.php # 设置主页显示
AddDefaultCharset UTF-8 # 修改编码格式

  1. 取消默认欢迎界面:vim /etc/httpd/conf.d/welcome.conf

模块全部注释

  1. 重启访问验证: systemctl restart httpd

curl ip:80

  1. 配置网站根目录以及访问权限
  2. 创建文件并将网页文件复制到目录下:mkdir /var/www/html/test

cp /var/www/html/index.html /var/www/html/test/

  1. 修改配置:vim /etc/httpd/conf/httpd.conf

DocumentRoot “/var/www/html/test” # 修改默认主页路径
# 声明模块
Options Indexes FollowSymLinks # 目录浏览
将允许访问注释 # Require all granted,写入如下:
# 权限模块声明
Require ip 192.168.1.63 # 允许ip访问
Require not ip 192.168.1.103 # 拒绝ip访问

apache 2.4 访问权限其他参数(httpd -v 看版本):
Require all granted #允许所有
Require all denied #拒绝所有
Require method http-method [http-method] … #允许,特定的 HTTP 方法
Require user userid [ userid ] … #允许,特定用户
Require group group-name [group-name] … #允许,特定用户组
Require valid-user #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定 IP 和网段
Require not ip 10 172.20 192.168.2 #不允许 特定 IP 和网段

  1. 重启服务并测试: systemctl restart httpd
  1. 使用别名,引用网站根目录以外的其他目录
  2. 创建文件: mkdir /opt/httpdtest/
  3. 复制一个网页: cp /var/www/html/index.html /opt/httpdtest/
  4. 修改配置: vim /etc/httpd/conf/httpd.conf

语法:AliasURL 访问路径 真实路径
Alias /httpdtest /opt/httpdtest # 虚拟目录
# 虚拟目录模块
Options Indexes FollowSymLinks # 没有主页允许显示目录
AllowOverride None # 忽略.htaccess文件
Require all granted # 允许所有访问

  1. 重启httpd,让配置生效: systemctl restart httpd
  1. apache实现用户认证
  2. 创建一个新的网站跟目录:mkdir - p /var/www/html/usertest/
  3. 复制网页文件: cp /var/www/html/index.html /var/www/html/usertest/
  4. 写入配置文件: vim /etc/httpd/conf/httpd.conf

Alias /usertest “/var/www/html/usertest/“ # 虚拟目录
# 模块声明
Options Indexes FollowSymLinks # 没有主页显示目录
AllowOverride None # 忽略.htaccess文件
#Require all granted # 允许所有人访问(需要注释)
authtype basic # 认证类型
authname “my web site” # 输入账号密码时显示消息
authuserfile /etc/httpd/conf/passwd.secret # 指定用户名密码文件
require valid-user # 文本中指定用户才能登录

  1. 用httpd自带模块创建账号密码: htpasswd -cm /etc/httpd/conf/passwd.secret 用户名

注意: 第二次创建不用带-c

  1. 重启httpd: systemctl restart httpd
  1. 虚拟主机三种搭建方式
  2. 创建一个临时ip: ifconfig ens33:1 192.168.1.62 netmask 255.255.255.0
  3. 编写配置文件: vim /etc/httpd/conf.d/test.conf
# 指定ip端口
ServerAdmin webmaster@dummy-host.example.com # 指定管理员邮箱
DocumentRoot /var/www/html/ # 指定目录
ServerName dummy-host.example.com # 指定域名
ErrorLog logs/dummy-host.example.com-error_log # 指定错误日志
CustomLog logs/dummy-host.example.com-access_log common #日常日志


ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/usertest/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
  1. 重启服务并验证: systemctl restart

注意:三种方法:
第一种修改ip: 修改上面配置文件ip选项,重启即可
第二种修改DNS: 修改上面配置文件中servername,重启即可
第三种修改端口: 修改上面配置文件中ip后面的端口,重启即可





cobbler 无人值守安装系统

  1. 配置文件详情:

/etc/cobbler # 配置文件目录
/etc/cobbler/settings # 主配文件

  1. 安装方法: yum -y install epel-release


  2. 安装无人值守

  3. 启动程序httpd和cobbler : systemctl enable —now cobblerd httpd
  4. 使用验证文件来验证问题:cobbler check
  5. 修改配置文件: /etc/cobbler/settings

将server: 127.0.0.1 后面的ip改成自己主机ip
将next_server: 127.0.0.1 后面的ip也改成自己主机ip

  1. 修改tftp服务被xinetd服务管理: vim /etc/xinetd.d/tftp

改 disable = yes 后面的yes为no

  1. 启动xinetd和tftpd服务:systemctl enable —now xinetd tftp
  2. 下载系统引导文件:cobbler get-loaders
  3. 启动rsyncd : systemctl enable rsyncd —now
  4. 生成账号密码加密:openssl passwd -1 -salt ‘root’ ‘123456’
  5. 修改默认账号密码: vim /etc/cobbler/settings

将 default_password_crypted: 后面的改成刚才生成的加密

  1. 配置DHCP服务:vim /etc/cobbler/dhcp.template

将option routers修改为正确的网关
将 option domain-name-servers 修改为正确的DNS

  1. 修改cobbler管理DHCP服务: vim /etc/cobbler/settings

将manage_dhcp 后面的数字改成 1

  1. 重启cobbler服务: systemctl restart cobblerd
  2. 同步配置文件: cobbler sync

注意:主要查看dhcp服务是否启动

  1. 检查错误: cobbler check
  2. 挂载镜像:mount /dev/sro /mnt
  3. 导入镜像: cobbler import —path=镜像路径 —name=名字 —arch=版本
  4. 查看镜像导入是否成功:cobbler list

注意:上面是镜像名字,下面是启动菜单

  1. 同步配置: cobbler sync
  1. 自定义装机内容
  2. 查看默认ks文件: cobbler report
  3. 到默认目录: cd /var/lib/cobbler/kickstarts
  4. 上传文件到目录
  5. 查看当前启用项:cobbler profile list
  6. 添加选项: cobbler profile edit —name 名字 —kickstart=ks文件路径
  7. 通过内核传参,修改网卡名为eth0:cobbler profile edit —name centos7.6-x86_64 —

kopts=’net.ifnames=0 biosdevname=0’

  1. ks文件配置解释:


    Install #安装系统
    url —url=$tree #url 地址为 cobbler 内置变量
    text #文本方式安装,修改为图形界面则为 Graphical
    lang en_US.UTF-8 #语言
    keyboard us #键盘
    zerombr #该参数用于清除引导信息,需要让其生效可以在参数后添加 yes 即可。
    bootloader —location=mbr —driveorder=sda —append=”crashkernel=auto rhgb quiet”
    #指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.
    #Network information
    $SNIPPET(‘network_config’) #该参数表示使用下方%pre 中的脚本来配置网络,相关脚本
    存放于/var/lib/cobbler/snippets
    #如果不需要脚本配置可启用以下配置
    #network —bootproto=dhcp —device=eth0 —onboot=yes —noipv6 —hostname=CentOS7
    timezone —utc Asia/Shanghai #时区
    authconfig —enableshadow —passalgo=sha512 #加密 shadow
    rootpw —iscrypted $default_password_crypted #设置 root 密码
    clearpart —all —initlabel #—all 删除所有分区,后者将磁盘标签初始化为缺省值设
    置。
    part /boot —fstype xfs —size 1024 #boot 分区大小
    part swap —size 1024 #swap 分区大小
    part / —fstype xfs —size 1 —grow #根分区大小
    firstboot —disable #决定是否在系统第一次引导时启动”设置代理”.禁用
    selinux —disabled #在系统里设置 SELinux 状态.
    firewall —disabled #在系统狸设置而防火墙状态
    logging —level=info #这个命令控制安装过程中 anaconda 的错误日志.它对
    安装好的系统没有影响。
    reboot #安装后重启
    %pre #pre 中定了前面使用的具体脚本名称。
    $SNIPPET(‘log_ks_pre’)
    $SNIPPET(‘kickstart_start’)
    $SNIPPET(‘pre_install_network_config’)
    # Enable installation monitoring
    $SNIPPET(‘pre_anamon’)
    %end
    %packages #自定义安装内容,这里可以可以自行生成 ks 文件然后把对应的配置复制到这里。当前配置为最小化安装,以及安装系统常用工具。
    @additional-devel
    @development
    @platform-devel
    bash-completion
    chrony
    dos2unix
    kexec-tools
    lrzsz
    sysstat
    tree
    vim
    wget
    git
    net-tools
    %end
    %post #安装后执行操作,可以执行脚本也可以直接执行命令。
    systemctl disable postfix.service
    %end

  2. 定制cobbler引导菜单: vim /etc/cobbler/pxe/pxedefault.template

修改如下:
ONTIMEOUT 安装名 # 调整20秒后默认安装
9. 更新配置文件: cobbler sync

  1. 图形界面

访问:ip/cobbler-web

  1. 使用 cobbler 对现有服务器进行重装系统
  2. 安装服务: yum -y install epel-release

    yum -y install koan

  3. 查看镜像列表: koan —server=ip地址 —list=profiles -looking for Cobbler ai http://ip:80/cobbler_api

  4. 查看主机列表: koan -server=ip地址 —list=systems
  5. 重装系统:koan -r —server=ip地址 —profile=镜像名字
  6. 重启

iptables 防火墙

  1. 主配文件: /etc/sysconfig/iptables
  1. 安装方法: yum -y install iptables iptables-services
  1. 四表五链:

ilter 负责过滤数据包,包括的规则链有,input,output 和 forward;
nat 则涉及到网络地址转换,包括的规则链有,prerouting,postrouting 和 output;
mangle 表则主要应用在修改数据包内容上,用来做流量整形的,给数据包打个标识,默认的规则有:
INPUT,OUTPUT、 forward,POSTROUTING,PREROUTING;
raw 表优先级最高(不常用),只使用在 PREROUTING 链和 OUTPUT 链上,会跳过 NAT 表。

input 匹配目标 IP 是本机的数据包。
output 出口数据包,一般不在此链上做配置
forward 匹配流经本机的数据包,
prerouting 用来修改目的地址,用来做 DNAT。如:把内网中的 80 端口映射到路由器外网端口

postrouting 用来修改源地址用来做 SNAT。 如:内网通过路由器 NAT 转换功能实现内网 PC 机
通过一个公网 IP 地址上网


raw表(一般不用):PREROUTING,OUTPUT
mangle表: PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD
nat表:PREROUTING,POSTROUTING,OUTPUT
filter表:INPUT,FORWARD,OUTPUT

  1. 使用方法:

语法:
iptables -t 表名 管理选项 链名 匹配条件 -j 目标动作或跳转

管理选项:
操作命令:
-A # 添加规则
iptables -t filter -A INPUT -j DROP

-R # 替换
iptables -t filter -R INPUT 8 -j ACCEPT

-I # 插入
iptables -t filter -I INPUT 6 -j DROP

-D # 删除
iptables -t filter -D INPUT 6

-P # 设置默认策略
iptables -t filter -P INPUT ACCEPT

-F # 清空规则链
iptables -t filter -F

-Z # 将封包计数器归零,封包计数器使用来计算同一封包出现次数
iptables -t filter -Z INPUT
查看命令:

-L # 列出规则
iptables -L

-n # 以数字显示,必须搭配L使用
-v # 显示信息
iptables -nvL

匹配条件:
-i # 匹配数据进入的网络接口
-i ens33 # 从ens33网卡流入进来的数据

-o # 匹配数据流出的网络接口
-o ens33 # 从ens33网卡发出的数据

-s # 来源地址
-s 192.168.1.100 # 从192.168.1.100发送到本机的数据

-d # 目的地址
-d 192.168.1.100 # 从本机发送到192.168.1.100的数据

-p # 协议类型 有TCP UDP ICMP

—sport # 来源地端口匹配,必须配合-p使用
—sport 1000 # 匹配源端口为1000的数据包
—sport 1000:3000 # 匹配源端口为1000-3000的数据包
—sport :3000 # 匹配源端口为3000以下的数据
—sport 1000: # 匹配源端口为1000以上的数据

—dport # 目的地端口匹配,必须配合-p使用
—dport 1000 # 匹配目的端口为1000的数据包
—dport 1000:3000 # 匹配目的端口为1000-3000的数据包
—dport :3000 # 匹配目的端口为3000以下的数据
—dport 1000: # 匹配目的端口为1000以上的数据

端口匹配:
-p udp —dport 53 # 匹配网络中目的端口是53的UDP协议包
地址匹配:
-s 10.10.0.0/24 -d 172.17.0.0/16
# 匹配来自10.10.0.0/24 去往 172.17.0.0/16的数据包
端口和地址联合匹配:
-s 192.168.0.1 -d www.abc.com -p tcp —dport 80
#来自192.168.0.1去往www.abc.com的80端口的tcp协议包

iptables动作(处理方式)
-j ACCEPT #允许数据包通过不拦截
iptables -t filter -A INPUT -j ACCEPT
-j DROP # 阻止数据包通过并丢弃
iptables -t -A FORWARD -s 192.168.80.39 -j DROP
-j SNAT —to IP[-IP]:端口-端口
# 源地址端口转换
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT —to 1.1.1.1
-j DNAT —to IP[-IP]:端口-端口
# 目的地址端口转换
iptables -t nat -A PREROUTING -i ens33 -p tcp —dport 80 -j DNAT —to 192.168.0.1
-j MASQUERADE(动态ip的情况下使用) # 动态源地址伪装
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
按包的状态匹配:
-m state —state 状态
状态: NEW、RELATED、ESTABLISHED、INVALID
NEW: 第一次接收到的数据包
ESTABLISHED: 连接态,已经连接且有应答的链接
RELATED: 衍生态,和一条连接态有关系的链接都是衍生态
INVALID: 无法识别是某个连接或者状态
iptables -AINPUT -m state —state RELATED,ESTABLISHED -j ACCEPT

按来源MAC匹配:
-m mac —mac-source MAC
iptables -A FORWARD -m mac —mac-source xx:xx:xx:xx -j DROP

按包速率匹配:
-m limit —limit 匹配速率 [—burst 缓冲数量]
iptables -A FORWARD -d 192.168.0.1 -m limit -limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP

多端口匹配:
-m multiport <—sport/dport/ports> 端口1,端口2
iptables -A INPUT -p tcp -m multiport —dports 22,25,21 -j ACCEPT
注:必须和-p参数一起使用

保存配置:
service iptables save

重新加载配置:
service iptables reload

selinux 安全上下文

  1. 配置文件:/etc/sysconfig/selinux


    二、执行模式:
    enforcing # 强制模式,只要 selinux 不允许,就无法执行;
    permissive # 警告模式,你可以执行,但你所做事件全部记录;
    disabled # 关闭 selinux

    三、使用方法:
    查看文件上下文: ls -Z 文件名
    查看当前selinux状态: getenforce
    临时开启selinux: setenforce 1
    临时关闭selinux: setenforce 0

firewalld 动态防火墙

一、区域:
firewalld有9大区域,解释如下:
drop(丢弃)
任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制)
任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
public(公共)
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的
连接。
external(外部)
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您
的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区)
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选
择的连接。
work(工作)
用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home(家庭)
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连
接。
internal(内部)
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连
接。
trusted(信任)
可接受所有的网络连接。
指定其中一个区域为默认区域是可行的。当接口连接加入了 NetworkManager,它们就被分配为
默认区域。安装时,firewalld 里的默认区域被设定为公共区域。

  1. 服务

在/usr/lib/firewalld/services/目录下,还保存了另外一类配置文件,每个文件对应一项具体的网络 服务,与之对应的配置文件中记录了各项服务所使用的tcp/udp端口,当默认提供的服务不够用或 者需要自定义某项服务的端口时,我们需要将service配置文件放置在/etc/firewalld/services目录 中
/etc/firewalld/ 存放修改过的配置(优先查找,找不到再默认的配置)
/usr/lib/firewalld/ 默认的配置
哦9

  1. 常用命令:

firewall-cmd —version # 查看版本
firewall-cmd —help # 查看帮助
firewall-cmd —state # 显示状态
firewall-cmd —get-active-zones # 查看区域信息
firewall-cmd —get-zone-of-interface=ens33 # 查看网卡所属区域
firewall-cmd —reload # 更新防火墙规则
firewall-cmd —get-zones # 查看所有支持的区域
firewall-cmd —get-default-zone # 查看默认区域
firewall-cmd —set-default-zone=public # 设置接口默认区域
firewall-cmd —zone=public —add-interface=ens33 # 将网卡添加到区域
firewall-cmd —zone=dmz —list-ports # 查看所有打开的端口
firewall-cmd —zone=dmz —add-port=8080/tcp —permanent # 永久加入一个端口到区域
firewall-cmd —zone=work —add-service=smtp # 添加服务到区域
firewall-cmd —zone=work —remove-service=smtp # 删除区域中的服务
firewall-cmd —panic-on # 开启应急模式
firewall-cmd —panic-off # 关闭应急模式
firewalld-config # 图形化界面

LAMP编译安装

  1. 编译安装apache

1.安装依赖: 源码包 pcre arp arp-utils
2.安装编译依赖: yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel
3.解压源码包apr: tar xf apr-1.7.0.tar.gz -C /usr/local/src/
4.进入到目录后,配置: ./configure —prefix=安装目录
5.检验是否成功: echo $?
6.编译安装: make -j 4 && make install
7.解压源码包apr-utils: tar xf apr-util-1.6.1.tar.gz -C /usr/local/src/
8.进入解压目录:,配置文件: ./configure —prefix=/usr/local/apr-util —with-apr= apr编译目录/bin/apr-1-config
9.编译并安装: make -j 4 && make install
10.解压pcre源码包: tar xf pcre-8.44.tar.gz -C /usr/local/src/
11.进入到解压目录并配置: ./configure —prefix=安装目录
12.编译安装: make -j 4 && make install
13.解压httpd源码: tar xf httpd-2.4.43.tar.gz -C /usr/local/src/
14.到解压目录配置httpd: ./configure —prefix=安装目录 —enable-so —enable-rewrite \
—enable-ssl —with-apr=apr源码安装目录 —with-apr-util=apr-util源码安装目录 \
—with-pcre=pcre源码安装目录 —enable-modules=most —enable-mpms-shared=all —with-mpm=event
15.检验: echo $?
16.编译安装: make -j 4 && make install
17.查看版本信息: 安装目录/bin/apachectl -V
18.生成启动脚本: cp 安装目录/bin/apachectl /etc/init.d/ && chmod +x /etc/init.d/apachectl
19.编写系统服务脚本: vim /usr/lib/systemd/system/apache.service
[Unit]
Description=apache
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.targe
20.给754权限: chmod 754 /usr/lib/systemd/system/apache.service
21. 创建apache用户,并验证: useradd -M -s /sbin/nologin apache && id apache
22.修改配置文件: vim apache安装目录/conf/httpd.conf
将运行用户和组改成apache
23.修改文件权限: chown -R apache:apache 编译安装目录
24.启动apache: systemctl start apache.service
25.检测: ps -aux |grep apache
二、安装mysql数据库
1.移除mariadb: yum -y remove mariadb mysql
2.解压数据库二进制包: tar xf 二进制mysql-5.7.30-el7-x86_64.tar.gz
3.移动解压文件: mv mysql-5.7.30-el7-x86_64/ /usr/local/src/
4.创建数据文件: mkdir -p /data/mysql
5.创建日志: touch /var/log/mysqld.log
6.创建配置文件: vim /etc/my.cnf
[mysqld]
port = 端口
user = mysql
socket = /data/mysql/mysql.sock
basedir = mysql目录
datadir = mysql数据保存目录
log-error=日志目录
7.创建用户: useradd -M -s /sbin/nologin mysql && id mysql
8.更改权限: chown -R mysql:mysql /usr/local/mysql/ /data/mysql/ /var/log/mysqld.log
9.添加环境变量: vim /etc/profile.d/mysql.sh
MYSQL_HOME=mysql安装目录
export PATH=$PATH:$MYSQL_HOME/bin
10.生效: source /etc/profile
11.切换到目录: cd /usr/local/mysql/bin/
12.初始化目录: ./mysqld —initialize —user=mysql —basedir=/usr/local/mysql —datadir=/data/mysql
13.查看初始密码: grep password /var/log/mysqld.log
14.开机启动: cp mysql安装目录/support-files/mysql.server /etc/init.d/mysqld
15.授权: chmod 755 /etc/init.d/mysqld
16.添加开机启动: chkconfig —add mysqld
17.验证: chkconfig —list mysqld
18.启动数据库: mysql -uroot -p初始密码
19.修改密码: set password for root@localhost = password(‘123456’);
flush privileges;
20.运行初始化脚本: mysql_secure_installation
三、编译安装php
1.解压php源码包: tar xf php-7.2.31.tar.gz -C /usr/local/src/
2.安装依赖包: yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf \
freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl \
curl-devel re2c php-peara
3.切换到php目录,配置: ./configure —prefix=安装目录 \
—with-apxs2=apache安装目录/bin/apxs —enable-mbstring —with-curl —with-gd \
—enable-fpm —enable-mysqlnd —with-pdo-mysql=mysqlnd —with-config-file-path=/usr/local/php/etc/ \
—with-mysqli=mysqlnd —with-mysql-sock=/var/lib/mysql/mysql.sock —enable-maintainer-zts
4.安装目录: make -j 4 && make install
5.生成配置文件: cp 源码包/php.ini-production /usr/local/php/etc/php.ini
6.编辑apache文件: vim apache安装目录/conf/httpd.conf 在394行添加如下
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
7.重启apache: systemctl restart apache.service
8.写入测试页面访问: echo “<?php phpinfo() ?>” > /usr/local/apache/htdocs/index.php
9.写入测试连接数据页面:
<?php
try {
$dbh = new PDO(“mysql:host=127.0.0.1;mysql”, ‘root’, ‘123456’); //初始化一个 PDO对象
} catch (PDOException $e) {
die (“Error!: “ . $e->getMessage() . “
“);
}
echo “php env successful”
?>

LNMP编译安装

  1. 编译安装nginx

1.安装nginx依赖: yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
2.创建用户: useradd -M -s /sbin/nologin nginx && id nginx
3.解压源码包: tar xf nginx-1.18.0.tar.gz -C /usr/local/src/
4.配置nginx: ./configure —prefix=安装目录 —user=nginx —group=nginx —with-http_ssl_module —with-http_realip_module —with-http_gzip_static_module —with-http_dav_module —with-http_stub_status_module —with-http_addition_module —with-http_sub_module —with-http_flv_module —with-http_mp4_module —with-pcre
5.编译并安装: make -j 4 && make install
6.修改nginx文件配置: cp 安装目录/conf/nginx.conf{,.bak} && vim 安装目录/conf/nginx.conf
将用户修改为nginx,开启php支持,取消65到71的注释并将69修改为: fastcgi_param SCRIPT_FILENAME 安装目录/html$fastcgi_script_name;
7.启动nginx: 安装目录/sbin/nginx
8.配置nginx环境并生效: vim /etc/profile.d/nginx.sh && source /etc/profile
export PATH=安装目录/sbin:$PATH
9.编写nginx脚本 : vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 2
PROG=”安装目录/sbin/nginx”
PIDF=”安装目录/logs/nginx.pid”
case “$1” in
start)
$PROG
;;
stop)
kill -3 $(cat $PIDF)
;;
restart)
$0 stop &> /dev/null
if [ $? -ne 0 ] ; then continue ; fi
$0 start
;;
reload)
kill -1 $(cat $PIDF)
;;
)
echo “Userage: $0 { start | stop | restart | reload }”
exit 1
esac
exit 0
10.给予权限: chmod +x !$
11.开机启动: chkconfig —add nginx && chkconfig nginx on
12.查看版本和编译信息: nginx -v && nginx -V
13.检测配置文件是否错误: nginx -t
14.重载nginx配置文件: nginx -s reload
二、源码安装mysql 5.7.19
1.卸载mariadb: yum -y remove mysql mariadb-

2.卸载boost低版本: yum -y remove boots-
3.创建mysql用户: useradd -M -s /sbin/nologin -r mysql && id mysql
4.解压源码包: tar xf boost_1_59_0.tar.gz -C /usr/local/src/
tar xf mysql-5.7.19.tar.gz -C /usr/local/src/
5.创建安装目录和数据目录: mkdir -p /var/lib/mysql/data
6.授权: chown -R mysql:mysql /var/lib/mysql/
7.安装依赖: yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel
8.切换到数据库源码目录并配置: cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql \
-DMYSQL_DATADIR=数据库文件存放目录 \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=数据库目录/mysql.sock \
-DMYSQL_TCP_PORT=端口 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/boost_1_59_0
9.myslq编译需要占用大量资源: make -j 4 && make install
10.编辑配置文具如下: vim /etc/my.cnf
[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
port=3306
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
11.添加mysql环境变量: echo “export PATH=mysql安装目录/bin:$PATH” > /etc/profile.d/mysql.sh && source /etc/profile.d/mysql.sh
12.生成服务启动脚本: cp 安装目录/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql
13.初始化目录: 安装目录/bin/mysqld —initialize-insecure —user=mysql —basedir=安装目录 —datadir=数据库存放目录
如果报错,需要先清空数据库存放目录下的文件: rm -rf 存放目录/

14.启动数据库: /etc/init.d/mysql start
15.修改数据库密码: mysql
set password for root@localhost = password(‘123456’);
flush privileges;
三、安装php
1.解决依赖: yum -y install php-mcrypt libmcrypt libmcrypt-devel php-pear libxml2 libxml2-devel curl curl-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype-devel
2.解压源码: tar xf php-7.2.31.tar.gz -C /usr/local/src/
3.到解压目录配置: ./configure —prefix=/usr/local/php —with-config-file-path=/usr/local/php —enable-fpm \
—with-fpm-user=nginx —with-fpm-group=nginx —with-mysqli=mysqlnd —with-pdo-mysql=mysqlnd \
—with-iconv-dir —with-freetype-dir —with-jpeg-dir —with-png-dir —with-zlib —with-libxml-dir=/usr \
—enable-xml —disable-rpath —enable-bcmath —enable-shmop —enable-sysvsem —enable-inline-optimization \
—with-curl —enable-mbregex —enable-mbstring —enable-ftp —with-gd —with-openssl —with-mhash —enable-pcntl \
—enable-sockets —with-xmlrpc —enable-zip —enable-soap —without-pear —with-gettext —disable-fileinfo —enable-maintainer-zts —disable-phar
4. 编译并安装: make -j 4 && make instll
5. 生成php配置文件: cp 源码包/php.ini-production 安装路径/php.ini
6. 生成php-fpm文件:cp 源码路径/etc/php-fpm.d/www.conf.default 安装路径/etc/php-fpm.conf
7. 生成启动脚本: cp 源码包/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod +x /etc/init.d/php-fpm
8. 启动php-fpm并设置开机自启: /etc/init.d/php-fpm start && chkconfig php-fpm on
9. 写入测试页面: echo “<?php phpinfo(); ?>” > /usr/local/nginx/html/index.php

tomcat web服务

  1. 配置tomcat
    1. 检查是否安装了openjkd: java -version || yum -y remove java-*
    2. 解压jdk包: tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/
    3. 写入环境配置: vim /etc/profile.d/jkd8.sh

export JAVA_HOME=/usr/local/jdk1.8.0_191
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

  1. 让配置生效: source !$
  2. 解压tomcat: tar xf apache-tomcat-8.5.35.tar.gz -C /usr/local/src/
  3. 把文件夹改名: mv /usr/local/src/apache-tomcat-8.5.35/ /usr/local/src/tomcat
  4. 编写启动脚本: vim /etc/init.d/tomcat

!/bin/bash
#
# tomcat startup script for the Tomcat server
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
JAVA_HOME=/usr/local/jdk1.8.0_191
export JAVA_HOME
CATALANA_HOME=/usr/local/src/tomcat
export CATALINA_HOME
case “$1” in
start)
echo “Starting Tomcat…”
$CATALANA_HOME/bin/startup.sh
;;
stop)
echo “Stopping Tomcat…”
$CATALANA_HOME/bin/shutdown.sh
;;
restart)
echo “Stopping Tomcat…”
$CATALANA_HOME/bin/shutdown.sh
sleep 2
echo
echo “Starting Tomcat…”
$CATALANA_HOME/bin/startup.sh
;;
*)
echo “Usage: $prog {start|stop|restart}”
;;
esac
exit 0

  1. 给文件权限: chmod +x /etc/init.d/tomcat
  2. 开启tomcat: service tomcat start
  3. 开机自启: chkconfig —add tomcat && chkconfig tomcat on
  4. 验证: netstat -anutp | grep 8080

二、搭建tomcat虚拟主机
1. 编辑配置文件: vim /usrl/local/src/tomcat/conf/server.xml
在末尾上面写入






2.创建目录: mkdir -p /var/www/html/web{1,2}
3.重启tomcat: service tomcat restart
4.写入首页测试: echo “www.test1yinzijian.com” > /var/www/html/web1/index.html
echo “www.test2yinzijian.com” > /var/www/html/web2/index.html
三、安装tomcat-native
1.安装依赖: yum -y install apr-devel gcc gcc-c++ openssl-devel openssl
2.到tomcat目录下复制: cp /usr/local/src/tomcat/bin/tomcat-native.tar.gz /usr/local/src/
3.解压: tar xf tomcat-native.tar.gz
4.配置: /usr/local/src/tomcat-native-1.2.18-src/native/configure —with-apr=/usr/ —with-java-home=/usr/local/jdk1.8.0_191 —with-ssl
5.编译安装: make -j 4 && make install
6.添加库文件: vim /etcld.so.confg 添加: /usr/local/apr/lib
7.生效配置:ldconfig
8.加入开机项: echo “ldconfig” >> /etc/rc.local
9.添加环境变量: vim /etc/profile.d/jdk8.sh && source /etc/profile.d/jdk8.sh
最后一行添加即可: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
10.编辑主服务文件,指定处理协议为apr: vim +69 /usr/local/src/tomcat/conf/server.xml
修改为: 12.引用apr: vim +253 /usr/local/src/tomcat/bin/catalina.sh
在下面添加: JAVA_OPTS=”$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib”
13.重启服务生效: service tomcat restart
14.查看日志看apr是否生效: cat /usr/local/tomcat/logs/catalina.out | grep Native 注: 出现native版本就成功
四、配置 mysql-connector-java 使用 jsp 连接mysql
1. 安装mariadb: yum install mariadb mariadb-server -y
2. 启动数据库: systemctl start mariadb
3. 登录数据库并授权: grant all on . to tomcat@localhost identified by ‘tomcat’;
4. 创建测试数据库
5. 测试是否能登录: mysql -utomcat -ptomcat
6. 安装数据库工具: tar xf mysql-connector-java-8.0.13.tar.gz -C /usr/local/src/tomcat/lib/ 注: 解压放到tomcat目录下的lib就行
7. 重启tomcat: service restart tomcat
8. 建立测试页面: vim /usr/local/tomcat/webapps/ROOT/mysql.jsp
<%@ page contentType=”text/html;charset=utf-8”%>
<%@ page import=”java.sql.“%>


<%
Class.forName(“com.mysql.cj.jdbc.Driver”).newInstance();
String url =”jdbc:mysql://localhost/tomcat?user=tomcat&password=tomcat&useUnicode=true&characterEncoding=utf-8”;
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql=”select
from 表名”;
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){%>
step:<%=rs.getString(1)%>
context:<%=rs.getString(2)%>


<%}%>
<%out.print(“Congratulations!!! JSP connect MYSQL IS OK!!”);%>
<%rs.close();
stmt.close();
conn.close();
%>

ansible 自动化运维

  1. 安装部署ansible

  2. 安装epel源: yum -y install epel-release
    2. 安装ansible: yum -y install ansible
    3. 验证: ansible —version
    二、基本命令
    1. ansible语法:
    ansible -i 主机文件 -f 组名 -m 模块名 -a 模块参数
    -i 指定主机文件 -m 指定使用模块的名字 -a 指定模块参数 -C 测试命令,不会真正执行
    2. 文档查询方法: ansible-doc -l | grep 模块名
    3. 主机文档: vim /etc/ansible/hosts
    [主机组名]
    主机ip
    4. 测试是否能通(需要提前做好ssh免密登录): ansible -i 主机文件 组名 -m ping
    5. 远端执行shell命令: ansible -i 主机文件 组名 -m shell 命令
    6. 远端执行本地shell脚本: ansible -i 主机文件 组名 -m script -a 命令
    7. 把主机文件拷贝到远端: ansible -i 主机文件 主机组 -m copy -a ‘src=本地路径 dest=远端路径 owner=所属者 group=所属组 mode=权限’
    8. 修改文件属性: ansible -i 主机文件 主机名 -m file -a “path=文件路径 mode=权限”
    9. 远程安装 ansible -i 主机文件 主机名 -m yum -a “name=安装包 state=版本状态”
    10. 远程获取文件信息: ansible -I 主机文件 主机名 m stat -a “path=文件路径”