软件包管理:
软件包管理
安装/查询/卸载
一、软件的类型
A. 源码包tarball 需要编译
所有的包在初始的时候都是源码的,需先解压再编译,因此安装起来比较慢,但是灵活性高,可以自行配置,经过编译之后变成二进制包
B. 二进制包 已编译
可以直接拿过来就用的,适用于大批量的安装软件时,比如:qq.exe
小知识:常见的二进制包
系统平台 包类型 工具 在线安装(自动解决依赖关系)
RedHat/Centos/Fedora/SUSE RPM rpm,rpmbuild yum
Ubuntu/Debian DPKG dpkg apt
注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!
rpm包是一种已经编译好的二进制包,全名是redhat package standard,是红帽提出的包管理标准,在已编译好的包上面加了一层规则,规定了的指定文件的安装位置,且会将包的信息自动存放到本地的rpm数据库中,查询直接从数据库中查询,删除也是直接将数据库中文件删掉。实际上rpm已经成为了包管理的主流标准。
认识RPM包:
ntfs-3g-2011.4.12-5.el5.x86_64.rpm 套件名 //x86_64的cpu
ntfs-3g-2011.4.12-5.el6.i686.rpm 套件名
yum-rhn-plugin-0.9.1-40.el6.noarch.rpm 套件名
认识源码包需要编译
http://nginx.org/download/nginx-1.10.1.tar.gz
nginx-1.10.1.tar.gz
lftp-3.5.1-2.fc6.src.rpm
软件包名 版本号(Version) 发布版本(Release) 系统平台
ntfs-3g 2011.4.12 5.el6 i386
ntfs-3g 2011.4.12 5.el6 x86_64 //el6和centos6通用
yum-utils 1.1.30 14.el6 noarch //没有架构
查看当前系统是多少位
[root@xiaochen ~]# uname -m
i686
[root@xiaochen ~]# uname -m
x86_64
查看系统发行版本信息
[root@xiaochen ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
[root@xiaochen ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
[root@xiaochen ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
YUM使用官方源
http://mirrors.aliyun.com/
http://mirrors.163.com
基础源
Base/Extras/Updates: 默认(国外源)
[root@tianyun ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
[root@tianyun ~]# yum repolist
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9,363
extras/7/x86_64 CentOS-7 - Extras 449
updates/7/x86_64 CentOS-7 - Updates 2,146
repolist: 11,958
替换为阿里云的镜像源:
http://mirrors.aliyun.com/ ---------->找到centos-------->click 帮助
[root@xiaochen ~]# rm -rf /etc/yum.repos.d/*
[root@xiaochen ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
[root@xiaochen ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d
[root@xiaochen ~]# yum clean all
[root@xiaochen ~]# yum makecache
替换为163的镜像源:
http://mirrors.163.com/ ---------->找到centos---------->点击centos使用帮助
[root@xiaochen ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@xiaochen ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
EPEL源:
EPEL(Extra Packages for Enterprise Linux)是基于Fredora的一个项目,为“红帽系”的操作系统提供额外的软件包,是基础类的包中的扩展的包,适用于RHEL、CentOS系统,也是yum中必备的一个源。 建议把https 替换为 http,解决速度慢的问题。
配置epel源
[root@xiaochen ~]# wget http://mirrors.aliyun.com/repo/epel-7.repo -P /etc/yum.repos.d/
使用epel源
[root@localhost ~]# yum list nginx nagios zabbix puppet
nginx.x86_64 1.0.15-12.el6
作业:学会找不同软件的官方源:
1、nginx
2、mysql
3、zabbix
4、openstack
…
使用YUM管理RPM包
自动解决包的依赖关系
查看可用仓库
[root@xiaochen ~]# yum clean all //清空缓存及其它文件
[root@xiaochen ~]# yum makecache //重建缓存
[root@xiaochen ~]# yum repolist all //查询可用的仓库
安装软件包
#yum -y install httpd vsftpd
#yum -y reinstall httpd //重新安装
#yum -y update httpd //更新
#yum -y install php
#yum -y update //更新整个系统所有软件包
#yum -y groupinstall mariadb //安装软件包组,一组里面可以包含多个软件
查询(从本地 rpm数据库 和 yum源 中查询)
#yum list httpd
#yum list vnc
#yum list |grep vnc
#yum list installed
#yum info httpd
卸载
[root@xiaochen ~]# yum -y remove mariadb
==history
#yum history
#yum history info 4
#yum history undo 4
扩展查询:
例1:查找vsftpd.conf属由哪个包提供?
[root@xiaochen ~]# yum provides *vsftpd/vsftpd.conf
[root@server0 ~]# yum provides */vsftpd.conf
[root@server0 ~]# yum provides */vsftpd.*
例2:查找命令gnuplot属由哪个包提供?
[root@server0 ~]# gnuplot
bash: gnuplot: command not found...
[root@server0 ~]#
[root@server0 ~]# yum provides gnuplot
Loaded plugins: langpacks
gnuplot-4.6.2-3.el7.x86_64 : A program for plotting mathematical expressions and data
Repo : classroom_content_rhel7.0_x86_64_dvd
[root@server0 ~]# pip
bash: pip: command not found...
[root@server0 ~]# yum -y install pip
扩展:
按照关键字搜索,软件名字中含有chinese或者是描述信息中含有chinese都会显示出来
[root@server ~]# yum search chinese
YUM扩展知识
YUM缓存机制
[root@xiaochen ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
只下载,不安装,为了软件之间的依赖关系不相互影响
[root@xiaochen ~]# yum -y install 软件名 --downloadonly
使用RPM工具管理RPM包
需要手动解决包的依赖关系
需要考虑:
1、OS的版本;eg:centos6/7
2、系统架构:eg:i386/x86_64
3、依赖关系:eg:ntfs-3g-devel需要ntfs-3g
安装
rpm -ivh local_path
rpm -ivh url_path
[root@xiaochen ~]# rpm -ivh dos2unix-3.1-37.el6.x86_64.rpm 套件名
-i 安装
-v 显示过程
-h 显示百分比
--force //强制安装软件包
--nodeps //忽略依赖关系
[root@xiaochen ntfs-3g]# rpm -ivh ntfs-3g-2013.1.13-5.el7.x86_64.rpm
error: Failed dependencies:
libc.so.6(GLIBC_2.14)(64bit) is needed by ntfs-3g-2:2013.1.13-5.el7.x86_64
查询
(rpm数据库中记录的是已经安装过的包的信息,需要使用包的全名ntfs-3g)
[root@xiaochen ~]# rpm -q ntfs-3g //查询指定包是否安装
[root@xiaochen ~]# rpm -qa |grep ntfs
[root@xiaochen ~]# rpm -qf /usr/bin/ntfs-3g //查询该文件属于哪个rpm包
[root@xiaochen ~]# rpm -qc ntfs-3g //查询某个包安装的配置文件
卸载
[root@xiaochen ~]# rpm -e ntfs-3g
[root@xiaochen ~]# rpm -e ntfs-3g --nodeps
源码包tarball
源码包的应用场景:定制
一、获得源码包途径
官方网站,可以获得最新的软件包
Apache: www.apache.org ------------->httpd.apache.org/tomcat.apache.org
Nginx: www.nginx.org
Tengine: tengine.taobao.org
Mysql:www.mysql.org
二、安装源码包
准备工作
- 编译环境如gcc、gcc-c++编译器、make
- 准备软件 nginx-1.4.4.tar.gz
部署Nginx
-
nginx
#useradd www //为nginx进程准备运行的用户
#tar xvf nginx-1.4.4.tar.gz -C /usr/local/src/
#cd /usr/local/src/nginx-1.4.4
#./configure --help
#./configure \
–user=www \
–group=www \
–prefix=/usr/local/nginx \
–with-http_stub_status_module \
–with-http_ssl_module \
–with-pcre
注释:
–user指定进程运行的用户
–with-http_stub_status_module启用状态模块功能
–with-http_ssl_module启用加密模块
–with-pcre支持正则表达式
#make //将源码包编译成二进制的形式
#make install //安装编成的二进制的nginx
#/usr/local/nginx/sbin/nginx //启动nginx服务器
打开自己的浏览器,然后在地址栏输入自己的ip地址
源码包安装问题解析:
error1:
checking for PCRE JIT support … found
checking for system md library … not found
checking for system md5 library … not found
checking for OpenSSL md5 crypto library … not found
checking for sha1 in system md library … not found
checking for OpenSSL sha1 crypto library … not found
checking for zlib library … not found
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=
解决方案:
#yum -y install zlib-devel
error2:
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=
解决方案:
#yum -y install openssl-devel
error3:
#./configure --prefix=/usr/local/pcre-8.31
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /bin/mkdir -p
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: in `/root/pcre-8.31’:
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details
解决方案:
#yum -y install gcc gcc-c++
error4:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=
解决方案:
#yum -y install pcre-devel
安装源码的技巧:
README
INSTALL
特例:
Epel yum 源 ,冲突报错仔细看。需将冲突的包使用rpm忽略依赖关系卸载
conflict
总结:
软件包管理
二进制包
yum
仓库/源
基础源,建议用163源
扩展源:epel,aliyun的
下载使用该命令:wget -O 或者 curl -o 都可以实现下载之后保存到文件夹中并且重命名
yum仓库文件必须放到指定目录下:/etc/yum.repos.d,并且名字必须是.repo为结尾
查询可用的仓库:yum repolist
重建缓存:yum makecache
清除缓存:yum clean all
rpm工具使用
安装:-ivh --force
查询:-q -qf -qc -qa
卸载:-e --nodeps
yum工具的使用
安装:install
查询:list
卸载:remove
历史:history
提供:provides
源码包
gcc gcc-c++ make
1、解压
2、./configure 定制功能
3、make
4、make install
系统优化概述:
1、查看系统负载
[root@aliyun ~]# uptime
11:55:16 up 155 days, 20:30, 1 user, load average: 0.07, 0.03, 0.05
2、查看CPU每隔10min的使用情况
[root@server ~]# sar
3、查看cpu的使用情况
[root@aliyun ~]# mpstat
Linux 3.10.0-514.26.2.el7.x86_64 (aliyun.com) 02/24/2019 x86_64 (1 CPU)
11:55:19 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:55:19 AM all 0.68 0.00 0.20 0.04 0.00 0.00 0.00 0.00 0.00 99.09
4、查看进程的io使用情况
[root@server ~]# iotop
5、查看内存的使用情况
[root@aliyun ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 1229284 18140 490008 0 0 0 5 2 3 1 0 99 0 0
[root@aliyun ~]#
6、释放buffer和cache
[root@aliyun ~]# echo 3 > /proc/sys/vm/drop_caches
7、带宽使用情况
[root@aliyun ~]# iftop
8、动态观察进程
[root@aliyun ~]# htop
9、监控网速
[root@aliyun ~]# nload
10、网卡接口统计报告
[root@aliyun ~]# nethogs
11、查看网络进程
[root@aliyun ~]# ss -antup
netstat
12、 dstat命令是一个用来替换vmstat、iostat、netstat这些命令的工具,是一个全能系统信息统计工具
[root@aliyun ~]# dstat -tnv
日志:
循环调度执行cron 用户级
[root@xiaochen ~]# systemctl status crond.service
[root@xiaochen ~]# ps aux |grep crond
root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
crond进程每分钟会处理一次计划任务
语法格式 Job format:
Minutes Hours Day-of-Month Month Day-of-Week Command
Example of job definition:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
- - - - - command
示例:
00 02 * * * ls //每天2:00整
00 02 1 * * ls //每月1号2:00整
00 02 14 2 * ls //每年2月14号2:00整
00 02 * * 7 ls //每周日2:00整
00 02 * 6 5 ls //每年6月的周五2:00整
00 02 14 * 7 ls //每月14号2:00整 或者 每周日2:00整
00 02 14 2 7 ls //每年2月14号2:00整 或者 每周日2:00整
00 02 * * * ls //每天2:00整
- 02 * * * ls //每天2:00中的每一分钟
- - - - ls //每分钟执行ls
4 2 * ls //2月14号的每分钟 1440分钟
- - - ls //每隔5分钟
5,8 * * ls //每月1,5,8号的2:00整
8 * * ls //每月1到8号的2:00整
存储位置:
[root@xiaochen ~]# ls /var/spool/cron/
管理方式:
1、编辑文件管理
#vim /etc/crontab
2、命令行管理(建议使用)
crontab -l List the jobs for the current user.
crontab -r Remove all jobs for the current users.
crontab -e Edit jobs for the current user.
管理员可以使用 -u username, 去管理其他用户的计划任务
练习:
每天的2:15备份/etc/目录到/backup目录中
提示:
1、备份使用打包压缩
2、对于想要完成的工作,字符个数比较多的时候建议使用脚本,记得给执行权限
#vim /root/beifen.sh
if [ ! -d /backup ];then
mkdir /backup
fi
tar -czf /backup/etc_date +%F.tar.gz /etc &>/dev/null
find /backup -mtime +4 |xargs -I {} rm -rf {}
#chmod +x /root/beifen.sh
#chattr +i /root/beifen.sh
#crontab -e
15 02 * * * /root/beifen.sh
日志分类:系统日志,进程日志,应用程序日志
记录日志的用处: 排错,追溯事件,统计流量,审计安全行为
rsyslogd:只负责绝大部分日志记录,和系统操作有关,安全,认证,计划任务…
处理分析日志:1.少量日志使用vim cat tail grep awk这些文档处理程序查看和检索
2.大量日志可以用splunk、elk
日志存放位置:
存放本地 /var/log
日志服务启动:systemctl start rsyslog
日志配置文件:/etc/rsyslog.conf
[root@xiaochen ~]# ps aux |grep rsyslogd |grep -v grep
root 686 0.0 0.0 219752 8436 ? Ssl 16:35 0:00 /usr/sbin/rsyslogd -n
常见的日志文件(系统、进程、应用程序)
#ls /var/log/
#tail /var/log/messages //系统主日志文件
#tail -f /var/log/messages //动态查看日志文件的尾部
#tail -f /var/log/secure //认证、安全
#tail /var/log/cron //crond、at进程产生的日志
#tail /var/log/yum.log //yum
二进制日志:
#w //当前登录的用户即: /var/log/wtmp日志
#last //最近登录的用户 /var/log/btmp
#lastlog //所有用户的登录情况 /var/log/lastlog
进程以自己的方式去记录日志
#tail /var/log/mysqld.log //MySQL进程自己记录的日志
#tail /var/log/httpd/access_log //Apache自己记录的日志
#tail /var/log/xferlog //和访问FTP服务器相关
案例1: 统计登录失败top 2
#grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c|sort -k1 -n -r |head -2
366 140.205.225.186
335 140.205.201.44
案例2: 统计登录成功
#grep 'Accepted' /var/log/secure*
Rsyslog日志管理
注意selinux和iptables
一、集中式日志管理(推送日志)
日志服务器(开启接收功能)
[root@xiaochen ~]# vim /etc/rsyslog.conf
Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
...
local3.* /var/log/local3.log 在下面添加一行日志的存放位置
[root@xiaochen ~]# systemctl restart rsyslog
[root@xiaochen ~]# ss -tunlp |grep :514
udp 0 0 0.0.0.0:514 0.0.0.0:* 13096/rsyslogd
udp 0 0 :::514 :::* 13096/rsyslogd
[root@xiaochen ~]# tail /var/log/local3.log
日志客户端
[root@xiaochen ~]# vim /etc/rsyslog.conf
local3.* @172.16.130.1
[root@xiaochen ~]# systemctl restart rsyslog
[root@xiaochen ~]# logger -p local3.info -t "heihei" "wawa"
实验要求:
1、将老师的服务作为日志的服务器端,使用自己的真机向老师的服务器端推送日志
logrotate日志轮转(切割)
注:针对任何日志文件
logrotate (轮转,日志切割)
-
如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长
-
将丢弃系统中最旧的日志文件,以节省空间
-
本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任务crond每天执行
-
对日志的切割,你只需要给他定义一个规则
[root@kvm1 ~]# rpm -qa |grep logrotate
logrotate-3.7.8-16.el6.x86_64
logrotate 配置文件:
/etc/logrotate.conf (决定每个日志文件如何轮转)
/etc/logrotate.d/*
主配置文件
[root@xiaochen ~]# vim /etc/logrotate.conf
=========全局设置==========
weekly //轮转的周期,一周轮转
rotate 4 //保留4份
create //轮转后创建新文件
dateext //使用日期作为后缀
#compress //是否压缩
#RPM packages drop log rotation information into this directory
#rpm安装的程序,按照下面目录规则进行轮转
include /etc/logrotate.d //包含该目录下的文件
#no packages own wtmp and btmp -- we'll rotate them here
#对于wtmp和btmp这样无主的日志,按照下面配置进行轮转
/var/log/wtmp { //对该日志文件设置轮转的方法
monthly //一月轮转一次
missize 1M //最小达到1M才轮转,即到了规定的时间未达到大小不会轮转
create 0664 root utmp //轮转后创建新文件,并设置权限属主和属组
rotate 1 //保留一份
}
/var/log/btmp {
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
[root@kvm1 ~]# vim /etc/logrotate.d/yum //原有的设置,没有说保存几份,看上面的全局设置
/var/log/yum.log { //yum日志文件
missingok //丢失不提示
notifempty //如果为空,不轮转
size 30k //达到30k就轮转
yearly //达到一年就轮转一次,两者满足一个就轮转
create 0600 root root //创建新文件
}
[root@kvm1 ~]# ls /etc/logrotate.d/
chrony ppp wpa_supplicant syslog yum
日志的轮转规则文件是在安装rpm包时就自动提供的,无需人为手动编写
只有自己创建的日志文件才需要自己编写日志轮转规则文件
[root@kvm1 ~]# yum -y install httpd
[root@kvm1 ~]# ls /etc/logrotate.d/
chrony ppp wpa_supplicant syslog yum httpd
[root@kvm1 logrotate.d]# yum -y install vsftpd
[root@kvm1 logrotate.d]# ls
chrony httpd ppp syslog vsftpd wpa_supplicant yum
说明:
当切割之后创建新文件,新文件有新的inode number
如果希望进程如rsyslog、nginx进程会把新的日志写入新日志文件中,应该在日志切割后,告诉一下rsyslog、nginx进程 reload 或 信号(1 or HUP)
NTPD服务器
Network Time Protocol
作用:为网络中的主机授时,同步的时间在2min-10min,需要看主板上面的硬件的性能
一、时间服务器
#ntpd 123/udp
二、配置时间服务器
#yum -y install ntp
#rpm -q ntp
ntp-4.2.4p8-3.el6.x86_64
NTP Server配置示例:
#vim /etc/ntp.conf //配置文件全部删掉,只要下面三行
#restrict default nomodify //不允许客户端登录,也不允许客户端修改
#server 127.127.1.0 //使用本地的bios时间,自己跟自己同步
#fudge 127.127.1.0 stratum 10 //定义级别,范围0-16,越小越精准
#systemctl restart ntpd
#systemctl enable ntpd
三、配置NTP客户端
#yum -y install ntpdate
#ntpdate -b server_ip //手动时间同步 -b加速初始化同步
#crontab -e
- - - - - ntpdate server_ip
总结:
systemctl 命令的参数
start 启动
stop 停止
restart 重启
status 状态
reload 重新加载配置 kill -1 pid
enable 设置开机自启动
disable 设置开机不启动
crond
设置计划任务:crontab -e
查看:crontab -l
删除:crontab -r
为某一个用户设置查看或者是删除计划任务:crontab -u username
每天两点:00 02 * * *
每周三的两点:00 02 * * 3
每个月的3号的两点:00 02 3 * *
每个月的1、10、15号的两点:00 02 1,10,15 * *
每个月的10-15号的两点:00 02 10-15 * *
每个月的8号的两点和三点:00 02,03 8 * *
每个月的8号的两点的10分,15分和20分:15,10,20 02 8 * *
对/var/lib/mysql目录备份到/back目录下,使用bzip2工具,只保留最近三天
mkdir -p /back
tar -cjf /back/date +%F.tar.bz2 /var/lib/mysql &> /dev/null
find /back/ -mtime +2 |xargs rm -rf
rsyslogd
安全日志文件:/var/log/secure
/var/log/btmp------> last
/var/log/wtmp------> w
/var/log/lastlog----->lastlog
远程日志管理
接收端
1、打开rsyslog的配置文件:
1)开启接收的功能,可使用tcp,也可使用udp
2)定义接收的日志的保存位置 设备.* 保存位置
2、重新加载配置
3、防火墙和selinux一定要关闭
4、rsyslog 514/tcp 514/udp
推送端
1、打开rsyslog的配置文件,定义设备(该设备是接收端定义的设备名).* @@server_ip
2、重新加载配置
3、测试:logger -p 设备.info -t 主题 内容
4、注意防火墙和selinux
注意:接收端的日志文件需要被触发产生
logrotate日志轮转
missingok 丢失不提示
nomissingok 丢失提示
ifempty 如果为空也轮转
notifempty 如果为空不论转
daily 按照天进行轮转
weekly 周
monthly 月
yearly 年
hourly 小时
size 大小
minsize 最小大小
rotate 保留几份
create perm owner group 轮转之后创建新文件,设置权限,设置属主和属组
prerotate/endscript 轮转之前执行的shell命令
postrotate/endscript 轮转之后执行的shell命令
sharedscripts 多个日志文件公用同一个规则文件
compress 压缩
nocompress 不压缩
delaycompress 延迟压缩
dateext 以日期作为轮转下来的文件后缀名
include 包含
ll /var/log/local6
轮转规则文件放到/etc/logrotate.d/目录下
轮转规则文件内容
/var/log/local6 {
prerotate
chattr -a /var/log/local6
endscript
monthly
size 100k
create 640
rotate 4
missingok
postrotate
systemctl reload rsyslog 2>/dev/null
chattr +a /var/log/local6
endscript
}
让我的轮转规则文件在每天的两点的时候执行
#crontab -e
00 02 * * * /root/a.sh
#vim /root/a.sh
#logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.d/local6
NETWORK:
基本的网络测试工具:
ping -f 指定 flood-ping 选项。
-f 是一种快速方式ping。使得ping输出资料包的速度和资料包从远程主计算机返回一样快,或者更快,达到每秒100次。在这种方式下,每个请求用一个句点表示。对于每一个响应打印一个空格键。仅仅 root 用户可以使用这个选项;注意观察ping的延时和波动。
网络诊断工具mtr(ping+traceroute)
[root@aliyun ~]# mtr -r www.baidu.com
Start: Sun Feb 24 14:27:34 2019
HOST: aliyun.com Loss% Snt Last Avg Best Wrst StDev
1.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
2.|-- 11.212.253.77 0.0% 10 3.5 4.0 2.9 8.7 1.6
3.|-- 11.218.131.125 0.0% 10 42.8 47.3 7.1 58.0 14.9
4.|-- 11.218.131.238 0.0% 10 2.6 2.7 2.4 3.6 0.0
5.|-- 119.38.212.110 0.0% 10 4.2 2.9 1.9 6.6 1.3
6.|-- 116.251.113.157 0.0% 10 2.1 2.5 1.8 7.2 1.5
7.|-- 183.2.180.193 0.0% 10 3.1 7.6 3.1 46.7 13.7
8.|-- 183.2.182.129 0.0% 10 3.2 3.5 3.2 5.2 0.5
9.|-- 119.147.222.69 0.0% 10 13.0 6.2 3.8 13.0 3.5
10.|-- 113.96.4.130 0.0% 10 8.1 9.8 6.2 12.4 1.8
11.|-- 113.96.11.74 40.0% 10 8.0 18.5 7.5 69.1 24.8
12.|-- 14.215.32.94 0.0% 10 7.5 7.6 7.5 8.0 0.0
13.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
14.|-- 14.215.177.38 0.0% 10 6.4 6.5 6.4 7.1 0.0
第一列:显示的是IP地址和本机域名,这点和tracert很像
第二列:是显示的每个对应IP的丢包率
第三列:snt:10 设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。
第四列:显示的最近一次的返回时延
第五列:是平均值 这个应该是发送ping包的平均时延
第六列:是最好或者说时延最短的
第七列:是最差或者说时延最常的
第八列:是标准偏差
追踪路由
[root@aliyun ~]# traceroute www.baidu.com
查看网络进程
ports and services
网络服务是通过socket的方式提供服务的,使用ss命令查询常用的选项
[root@www ~]# ss --help
-n 不解析服务的名字
-a 显示所有套接字
-l 显示监听(Listen)的端口
-t 显示tcp的套接字或者是服务
-u 显示udp的套接字或者是服务
-p 显示进程的名字
1、Show TCP sockets(LISTEN)
[root@www ~]# ss -ant //查看所有状态的,包括监听和建立连接的,此时无需l 选项。
[root@www ~]# ss -ant |grep :22
2、Show UDP sockets(所有状态)
udp的协议比较少
[root@www ~]# ss -anu
配置网络:
一、常见的网络接口
lo 本地环回接口
eth0 以太网网卡
enp0s25
virbr0 Kvm中nat模式的接口 <虚拟交换机>
bond0 网卡绑定接口 eth0 eth1
br0 Kvm桥接接口 <虚拟交换机>
vnet0 Kvm虚拟机接口
vmnet1 VMware虚拟机网卡接口
vmnet8 VMware虚拟机网卡接口
二、查看网络信息
IP、网关、DNS、主机名
[root@xiaochen ~]# ip addr //查看IP、掩码、MAC...
[root@xiaochen ~]# ip addr show eth0 //只显示eth0的信息
[root@xiaochen ~]# ip route //内核维护的静态路由表
172.16.113.0/24 dev vmnet1 proto kernel scope link src 172.16.113.1
172.16.80.0/24 dev eth0 proto kernel scope link src 172.16.80.245
172.16.127.0/24 dev vmnet8 proto kernel scope link src 172.16.127.1
default via 172.16.80.254 dev eth0 //默认网关,默认路由
路由表,达到某一个目标所走的路线,用来选路的,如果没有路线就找default via,默认路由/默认网关。
metric:是路由算法用以确定到达目的地的最佳路径的计量标准,如路径长度
[root@physical ~]# cat /etc/resolv.conf //查看DNS
nameserver 202.106.0.20
nameserver 8.8.8.8
三、修改网络信息
IP/掩码/默认网关:/etc/sysconfig/network-scripts/ifcfg-enp025
==动态(通过DHCP服器分配)
NAME="enp0s25" 名字自定义,建议和网卡名一致,可有可无
DEVICE=enp0s25 设备名必须是ip a看到真实以太网网卡的名字
BOOTPROTO=**dhcp** 启动协议,这里是动态
ONBOOT=yes
==静态(手工)
NAME="enp0s25" 连接名
DEVICE=enp0s25 设备名
BOOTPROTO=**none** 启动协议: static | none | dhcp
ONBOOT=yes 是否随服务启动而启动,不开启他相当于没有网卡
IPADDR=172.16.80.2 IP
PREFIX=24 子网掩码。NETMASK=255.255.255.0
GATEWAY=172.16.80.254 默认网关
DNS1=114.114.114.114 DNS,域名解析
[root@xiaochen ~]# systemctl restart network
[root@xiaochen ~]# systemctl restart network
网络优化–链路聚合
GRUB添加kernel参数
修改开机时的引导程序文件
[root@xiaochen 桌面]# vim /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rhgb quiet net.ifnames=0"
[root@a network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg
加载内核是发生在开机的时候,所以需要重启,
[root@a network-scripts]# reboot
================================
bonding配置案例:
-
接口配置文件
[root@install network-scripts]# cat ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.16.8.100
PREFIX=24
IPV6INIT=no
USERCTL=no
[root@install network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
MASTER=bond0
SLAVE=yes
[root@install network-scripts]# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
MASTER=bond0
SLAVE=yes -
bonding参数
[root@install ~]# cat /etc/modprobe.d/bond0.conf
alias bond0 bonding
options bonding mode=0 miimon=100 -
重启网络服务
[root@install ~]# systemctl restart network
[root@install ~]# ip a -
查看文件验证网卡绑定效果
[root@install ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
…down掉eth1
[root@install ~]# ifdown eth1
[root@install ~]# cat /proc/net/bonding/bond0
down掉eth2
[root@install ~]# ifdown eth2
[root@install ~]# cat /proc/net/bonding/bond0
激活eth1
[root@install ~]# ifup eth1
[root@install ~]# cat /proc/net/bonding/bond0
激活eth2
[root@install ~]# ifup eth2
[root@install ~]# cat /proc/net/bonding/bond0
企业中的链路聚合用法,详见脚本
脚本是公司里线上服务器直接可执行的,网卡名称需要为eth0、eth1,不适用于虚拟机 。bond在大型企业中应用非常广泛。小公司没有, 但是有些企业会问,配置很简单。
虚拟机配置bond脚本,学习完shell后可以自己编写。
SSHD/VsFTPd
SSHD服务
作用:提供远程连接 及 文件拷贝
一、sshd概述
注:默认已安装sshd所需的软件并启动
配置文件: /etc/ssh/sshd_config //服务器端配置文件
/etc/ssh/ssh_config //客户端配置文件
端口: 22/tcp
软件包: openssh-server
openssh-clients
[root@xiaochen ~]# systemctl start sshd
[root@xiaochen ~]# ss -tnlp |grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2260/sshd
tcp 0 0 :::22
二、ssh应用
远程连接
ssh:
[root@xiaochen ~]# ssh 172.16.60.84 //以当前用户
[root@xiaochen ~]# ssh alice@192.168.2.104 //以指定用户
#ssh 192.168.2.104 'echo 123 |passwd root --stdin' //在远程主机上执行修改密码
远程拷贝:
scp:
scp不支持增量拷贝,即使文件存在也不询问,scp是基于ssh的,没有装ssh,scp也就用不了
将自己服务器上面的文件推送到其他的主机上面
#scp -r /etc 192.168.5.32:/tmp
将其他主机上面的文件推送到自己的服务器上面
#scp -r 192.168.5.32:/dir1 /root
rsync:
用rsync命令的前提是两端都装了rsync,否则用不了支持增量同步
[root@xiaochen ~]# rsync -vaz /etc root@192.168.5.32:/tmp //同步整个/etc目录
[root@xiaochen ~]# rsync -vaz /etc/ root@192.168.5.32:/tmp //同步整个/etc目录下的文件
[root@node1 tmp]# rsync -va --delete 172.16.100.134:/tmp/ /tmp/ //同步到当前的文件夹中,删除多余的文件
增量推送
[root@xiaochen tmp]# echo 111 > aaa
[root@node1 tmp]# rsync -va --delete 172.16.100.134:/tmp/ /tmp/
和windows之间传输文件
#yum -y install lrzsz
三、使用公钥认证
a. 客户端生成公钥和私钥
[root@xiaochen ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 文件的保存路径,默认的就可以
Enter passphrase (empty for no passphrase): 是否使用密码,要密码的话,每次都要输入密码
Enter same passphrase again: 确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5c:ba:f3:b6:42:f0:95:bf:22:d6:21:00:b8?e9:85 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| . . |
| . . .. |
| . o. oo |
| . +S. . |
| o +.. . |
| E . .oo . . |
|o . +o+ . |
|.. . +oo |
+-----------------+
[root@xiaochen ~]# ls .ssh/
id_rsa (私钥) id_rsa.pub(公钥) known_hosts(记录主机信息,即主机登录其他服务器的相关信息)
b. 将公钥传到所需登录服务器
[root@xiaochen ~]# ssh-copy-id -i 172.16.70.133
生成的authorized_keys文件权限必须是600,敏感文件的权限不能太大,否则不成功
c.实现无密码登录
[root@jyj ~]# ssh-keygen
[root@jyj ~]# ls .ssh/
id_rsa id_rsa.pub known_hosts
[root@jyj ~]# ssh-copy-id -i 172.16.70.133
如果推送公钥之后不能实现使用下面的方法解决:
在Server服务器上加载私钥文件
[root@server .ssh]# ssh-add id_rsa
Identity added: id_rsa (id_rsa)
上面方法如果出现错误,使用下面下面方法解决
[root@server .ssh]# ssh-agent bash
[root@server .ssh]# ssh-add id_rsa
Identity added: id_rsa (id_rsa)
四、其它事项[可选]
-
从windows管理Linux
putty,Xmanager(XShell),winSCP, SecureCRT
xshell不能传目录,可以现将目录打包压缩然后再传 -
指纹不匹配
[root@xiaochen ~]# ssh 172.16.50.240
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
7e:b5:1d:3b:1c:81:d2:6b:d2:96:f7:1a:1f:e8:16:27.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:2
RSA host key for 172.16.50.240 has changed and you have requested strict checking.
Host key verification failed.[root@xiaochen ~]# rm ~/.ssh/known_hosts //删除已建立过连接主机的密钥
ssh暴力破解和防护:
1、为进程添加用户时要使用非登陆shell
2、减少root用户登陆,尽量使用普通用户登陆,使用sudo工具提权
3、进制root用户登陆,开启普通用户登陆的白名单
#vim /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers alice
AllowUsers AllowGroups DenyUsers DenyGroups
4、设置黑名单中的主机IP地址,拒绝所有用户使用sshd,仅仅允许某一些地址使用
[root@localhost ~]# tail -n 2 /etc/hosts.deny
DenyHosts: Thu Aug 20 14:45:00 2015 | sshd: 118.187.17.119
sshd: ALL
设置白名单中的主机IP地址
[root@localhost ~]# echo "sshd: 10.0.112.195" >> /etc/hosts.allow
5、禁用密码登陆,允许公钥方式认证
#vim /etc/ssh/sshd_config
PasswordAuthentication no
6、xshell导出的会话中包含主机的账号密码信息,需要小心保存
7、对grub进行加密码,防止本地破解root用户密码
Vsftpd
FTP Server
作用:提供文件共享服务,可以应用在互联网中,实现外地登录服务器下载公司文件的功能,不区分客户端,在windows和linux中都是可以使用的
一、FTP基础
FTP: 文件传输协议
协议名: ftp
软件包: vsftpd
FTP端口: 控制端口 21/tcp
数据端口 20/tcp
配置文件: /etc/vsftpd/vsftpd.conf (man 5 vsftpd.conf)
注释:
1、控制端口是用来建立连接的,不能传数据
2、主动模式是服务器主动送达,客户端需要提供地址,不安全
3、被动模式是客户端去服务器取
4、主动和被动是由客户端决定的
两种模式的工作原理:
主动模式(端口模式)
C S
1024+x-----------------> 21 (控制端口)
1024+n----------------->
1024+n<---------------- 20 (数据端口)
被动模式(linux默认)
C S
1024+x-----------------> 21
<-------------------- 1024+n
1024+m----------------> 1024+n
1、谁开了什么端口连接谁的什么端口
2、谁开了什么端口告诉谁
3、谁拿着什么端口去谁的什么端口干什么(送、取)
二、vsftpd安装配置
[root@xiaochen ~]# yum -y install vsftpd
[root@xiaochen ~]# systemctl start vsftpd
[root@xiaochen ~]# systemctl enable vsftpd
[root@xiaochen ~]# grep ftp /etc/passwd
从客户端测试:
windows端:
ftp://IP,也可以通过xshell
linux端:
[root@xiaochen ~]# yum -y install lftp //客户端FTP工具
[root@node1 ~]# lftp 172.16.110.1 //匿名用户
lftp 172.16.110.1:~> ls
lftp 172.16.110.1:~> get man.config 下载文件到当前目录
lftp 172.16.110.1:~> get man.config -o /home/ 下载文件(指定路径)
lftp 172.16.110.1:/> mirror soft/ 下载目录
lftp 172.16.110.1:/> cd soft/
lftp 172.16.110.1:/> lcd /tmp/ //local cd
lcd 成功, 本地目录=/tmp
lftp 172.16.110.1:/> !ls
lftp 10.0.112.195:/jobs> exit
扩展:内网共享yum仓库
server端:
1、准备文件夹
[root@server ~]# mkdir /var/ftp/share
2、将需要的rpm包放到文件夹中(我这里是开启了yum缓存,随便装了几个包,缓存下来几个rpm包,工作的时候要根据需求缓存相应的包)
[root@server ~]# cp /var/cache/yum/x86_64/7/base/packages/* /var/ftp/share/
[root@server ~]# ll /var/ftp/share/
total 464
-rw-r--r-- 1 root root 412928 Mar 12 15:43 rsync-3.1.2-4.el7.x86_64.rpm
-rw-r--r-- 1 root root 59968 Mar 12 15:43 traceroute-2.0.22-2.el7.x86_64.rpm
3、将文件夹做成yum仓库,生成关系数据库依赖文件
[root@server share]# createrepo /var/ftp/share
Spawning worker 0 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@server share]# ls
repodata
rsync-3.1.2-4.el7.x86_64.rpm
traceroute-2.0.22-2.el7.x86_64.rpm
4、服务器端给客户端准备好repo文件,客户端下载回去放到指定位置直接可以使用yum仓库
[root@server ~]# cd /var/ftp/
[root@server ftp]# vim share.repo
[root@server ftp]# cat share.repo
[share]
name=share
baseurl=ftp://10.0.112.195/share
gpgcheck=0
[root@server ftp]# client
1、下载指定服务器端给写好的repo文件到指定位置
[root@localhost ~]# wget <ftp://10.0.112.195/share.repo> -O /etc/yum.repos.d/wozijide.repo
--2019-03-12 15:48:54-- <ftp://10.0.112.195/share.repo>
=> ‘/etc/yum.repos.d/wozijide.repo’
Connecting to 10.0.112.195:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD not needed.
==> SIZE share.repo ... 63
==> PASV ... done. ==> RETR share.repo ... done.
Length: 63 (unauthoritative)
100%[===============>] 63 --.-K/s in 0s
2019-03-12 15:48:54 (2.46 MB/s) - ‘/etc/yum.repos.d/wozijide.repo’ saved [63]
2、列出yum仓库
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
- base: mirrors.cqu.edu.cn
- extras: mirrors.tuna.tsinghua.edu.cn
- updates: mirrors.njupt.edu.cn
share | 2.9 kB 00:00
share/primary_db | 3.2 kB 00:00
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,019
extras/7/x86_64 CentOS-7 - Extras 371
share share 2
updates/7/x86_64 CentOS-7 - Updates 1,163
repolist: 11,555
[root@localhost ~]#
vsftpd的被动模式的工作原理
vsftpd服务器端的配置
#yum -y install vsftpd
#systemctl start vsftpd
#systemctl enable vsftpd
#ls /var/ftp 目录下的东西就可以被共享出去
vsftpd客户端的配置
#yum -y install lftp wget
#lftp server_ip
查看ls
切换文件夹 cd
下载文件get
下载文件夹mirror
退出 exit
#wget <ftp://server_ip/xiaochen> -O 下载之后可以重定向并且重命名
-P 下载之后重定向
Web服务器:
HTTP Server(WEB服务器)
任何一个网站都是由多个页面组成的,这些页面根据实现方式不同被分成了两类:静态页面和动态页面
静态网页: 大多以.html为结尾,适用于常年不变化的页面(HTML:HyperText Mark Language 超文本标记语言 )
动态网页: 类似于脚本文件,根据传递的参数不同,返回的页面结果不同。如:同一个网站的购物车每个人登陆之后,整体架构是相似的,但是打开的页面都是不同的。
编写网页常用的三门语言:PHP、Java、Python
1、PHP语言只能用来写web页面,主要是用来编写动态页面,网页以.php为结尾。目前很多个人论坛,都是通过从网上下载下来php语言编写出来的网站模板实现的。
2、Java语言中有JSP框架也是用于实现网站页面编写的,以.jsp为结尾的,安卓手机中很多app都是Java编写的。
3、Python是非常牛的,使用php或者是java或者是c等写出来的程序都能用Python来写,Python通过模块来实现不同的功能,Python中的Django模块就是用来写web页面的,通常是以wsgi为结尾
目前很多页面都是由各种语言相互嵌入的,一个页面中可能同时包含静态和动态的页面的,静态的页面不一定通过html实现,动态的页面也不一定通过php来实现,但是还有其他的可能就是通过其他的语言来写的了,网页的源代码是可以查看的。但是对于客户端来说不需要关注网页的源代码,只需要关注能够访问到网页内容,那么在客户端和服务器之间需要一个媒介来将网页的源代码转换成页面的形式,这个媒介就是浏览器,浏览器在客户端和服务器端的源代码之间起到了一个桥梁的作用。而浏览器其实是通过http协议来完成的。
http协议(hypertext transport protocol):
http0.9 只支持传输文本,也支持超链接,没有图片也没有视频
http1.0 keepalive长连接:服务器端和客户端缓存
MIME机制:Multipurpose Internet Mail Extension,多用途互联网邮件扩展,支持传输非文本。MIME机制就是将非文本数据在传输前重新编码为文本格式,接收方能够用相反的方式将其还原成以前的格式,然后调用本地相应的程序打开此文本。
长连接:超时时间
每个长连接请求文件个数的限制
在访问网站的时候得到的元素其实是一个一个传输的(F12开发者模式----->Network)每一个元素资源都要经过建立连接传输元素和断开连接的过程,而每一个动作都需要cpu和内存和时间的参与,如此对网站的服务器会造成很大的压力,导致效率降低!所以有了长连接。
长连接:客户端和服务器端请求资源时,自建一条连接,无论这个页面上有多少资源,都在这一条连接上进行,传输完成后断开连接,这样避免了频繁建立连接和断开连接的资源消耗,Apache默认长连接是没有开启的(Tengin和nginx是开着的),开启之后需要配置超时时间和每个长连接请求文件个数的限制。
软件介绍:
构建网站服务器的软件介绍:
apache, nginx, Tengine, IIS --------------> www.netcraft.com
apache:代码比较冗长,早期用的比较多一款软件(开源)
nginx:95年俄罗斯人研发,轻量级的一款web服务器,可做反向代理(开源)
Tengine:taobao在nginx的基础上做的二次开发(开源)
IIS:是微软旗下的,适用于一些小型网站,例如卖空间的一些小网站
以上的软件只能解析静态页面,如果要解析动态页面还需要结合一些应用程序软件来实现
应用程序服务器
IIS, Tomcat(JSP,open source), Websphere(IBM,JSP,commodity), Weblogic(Oracle,JSP,commodity)
JBoss(redhat,JSP) Resin
php
python
微软的IIS本身具有处理asp静态页面的功能,已经被淘汰了。tomcat、Websphere、 Weblogic、JBoss Resin 主要是用来处理Java写的动态页面,php写的动态页面需要专门部署php环境来解析。这几款软件中Tomcat、JBoss、Resin、php开源的,WebsphereiBM的,Weblogicoracle是oracle的。
客户端软件
IE, firefox, chrome, google ,opera(欧朋),safari
开源架构:
LAMP: Linux + Apache + MySQL/mariadb + PHP/Perl/Python //php作为Apache的模块
LNMP: Linux + Nginx + MySQL + PHP(php-fpm) //php-fpm进程
Nginx + httpd +Tomcat //取代Apache与Tomcat结合
Nginx的基本使用
1、配置yum源
访问nginx.org官网——》随便点一个nginx的版本,进入到下一个页面——》将滚动条拉到最下面——》找stable and mainline——》——>找到RHEL/Centos——》手动写yum仓库的文件,写法见下:
[root@aliyun ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/releasever/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/releasever/basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
2、安装nginx
[root@aliyun ~]# yum -y install nginx
[root@aliyun ~]# systemctl restart nginx
[root@aliyun ~]# systemctl enable nginx
[root@aliyun ~]# ss -antp |grep :80
LISTEN 0 128 *:80 : users:(("nginx",pid=6627,fd=6),("nginx",pid=6626,fd=6))
ESTAB 0 0 172.16.60.231:56732 100.100.30.25:80 users:(("AliYunDun",pid=16018,fd=22))
LISTEN 0 128 :::80 :::* users:(("nginx",pid=6627,fd=7),("nginx",pid=6626,fd=7))
Nginx的配置文件
[root@aliyun ~]# vim /etc/nginx/nginx.conf
Nginx的网页文件
[root@nginx ~]# echo nginx test first page > /usr/share/nginx/html/index.html
[root@nginx ~]# elinks --dump 192.168.135.160
nginx test first page
部署 LNMP
部署Nginx
一、部署PHP-fpm
[root@nginx ~]# yum -y install php php-fpm php-mysql php-gd gd
[root@nginx ~]# systemctl restart php-fpm
[root@nginx ~]# ss -antp |egrep ':80|:9000'
[root@nginx ~]# ss -ant |egrep ':80|:9000'
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 *:80 *:*
二、配置nginx支持PHP
[root@nginx ~]# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
去掉以下行的注释:
location ~ .php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;
include fastcgi_params;
}
}
[root@nginx ~]# systemctl restart php-fpm
[root@nginx ~]# systemctl restart nginx
三、安装MySQL
[root@nginx ~]# yum -y install mariadb-server
[root@nginx ~]# systemctl start mariadb
[root@nginx ~]# systemctl enable mariadb
[root@nginx ~]# mysqladmin password '123456'
四、登陆
[root@server ~]# mysql -uroot -p123456
MariaDB [(none)]> grant all on *.* to root@'%' identified by '123';
MariaDB [(none)]> exit
Bye
五、php程序测试
-
测试php文件能否执行
<?php phpinfo(); ?>
[root@nginx ~]# cat /usr/share/nginx/html/index.php -
测试php连接MySQL是否正常
<?php $link=mysql_connect('10.0.112.195','root','123'); if ($link) echo "Successfully"; else echo "Failed"; mysql_close(); ?>
[root@nginx html]# vim aaa.php
最后的测试效果
第二个页面的效果
搭建自己喜欢的网站
[root@server web_code]# unzip farm-ucenter1.5.zip
[root@server web_code]# rm -rf /usr/share/nginx/html/*
[root@server web_code]# cp -r upload/* /usr/share/nginx/html/
[root@server web_code]# ls /usr/share/nginx/html/
bbs index.php logo.jpg ucenter
home install qqfarm.sql
[root@server html]# chmod -R 777 /usr/share/nginx/html/*
访问自己ip/index.php
访问之后报错说short_open_tag没有开启,请自行去开启
搭建完成之后,访问自己ip/index.php
找到QQ农场,发现Mysql错误,请使用下面方法解决:
[root@server html]# mysql -uroot -p123 < /usr/share/nginx/html/qqfarm.sql
刷新页面可以访问农场了
NAS远程共享存储:
NAS存储之NFS
NFS:Network File System,Unix系统之间共享文件的一种协议,客户端主要是Linux
支持多节点同时挂载以及并发写入
========================================================
一、NFS服务器(存储端)
通过Linux系统平台来实现NFS存储
- 软件包: nfs-utils
- 端口: 2049/tcp
- 配置文件:/etc/exports
========================================================
[root@xiaochen ~]# yum -y install nfs-utils
[root@xiaochen ~]# systemctl start nfs
[root@xiaochen ~]# systemctl enable nfs-server
案例1:以只读的方式共享
[root@xiaochen ~]# mkdir -p /share/dir1
[root@xiaochen ~]# vim /etc/exports
/share/dir1 *(ro,sync)
[root@xiaochen ~]# exportfs -rv //重新刷新共享
案例2:以读写的方式共享
[root@xiaochen ~]# mkdir -p /share/dir2
[root@xiaochen ~]# vim /etc/exports
/share/dir2 172.16.60.0/24(rw,sync,no_root_squash)
[root@xiaochen ~]# exportfs -rv 重新加载配置文件并输入共享
no_root_squash:不压制root用户称为最小权限的用户nfsnobody
三、NFS客户端
软件包: nfs-utils
- 查看存储端共享
[root@student ~]# showmount -e 172.16.60.1
Export list for 172.16.60.1:
share/dir1 * - 挂载NFS
[root@student ~]# mkdir /mnt/nfs1
[root@student ~]# mkdir /mnt/nfs2
[root@student ~]# vim /etc/fstab
172.16.60.1:/share/dir1 /mnt/nfs1 nfs defaults,_netdev 0 0
172.16.60.1:/share/dir2 /mnt/nfs2 nfs defaults,_netdev 0 0
[root@student ~]# mount -a
[root@student ~]# ls /mnt/nfs1/ /mnt/nfs2
[root@student ~]# cp -rf /etc/hosts /mnt/nfs1/
cp: 无法创建普通文件"/mnt/nfs1/hosts": 只读文件系统
[root@student ~]# cp -rf /etc/hosts /mnt/nfs2
注意:客户端挂载的时候如果报错是文件系统有问题,愿意是本机识别不了nfs的文件系统,解决办法:
#yum -y install nfs-utils
装软件的目的是为了识别nfs的文件系统,无需启动服务
关闭防火墙和selinux: