软件包管理:

软件包管理

安装/查询/卸载

一、软件的类型

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/72、系统架构:eg:i386/x86_643、依赖关系: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.orgNginx: www.nginx.orgTengine: tengine.taobao.orgMysql:www.mysql.org

二、安装源码包

准备工作

  1. 编译环境如gcc、gcc-c++编译器、make
  2. 准备软件 nginx-1.4.4.tar.gz

部署Nginx

  1. 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=option.

解决方案:

#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=option.

解决方案:

#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=option.

解决方案:

#yum -y install pcre-devel

安装源码的技巧:

READMEINSTALL

特例:

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 ~]# uptime11: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 st2  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 -ncrond进程每分钟会处理一次计划任务
语法格式 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 ];thenmkdir /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 -2366 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 (轮转,日志切割)

  1. 如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长

  2. 将丢弃系统中最旧的日志文件,以节省空间

  3. 本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任务crond每天执行

  4. 对日志的切割,你只需要给他定义一个规则

    [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 {

prerotatechattr -a /var/log/local6endscriptmonthlysize 100kcreate 640 rotate 4missingokpostrotatesystemctl reload rsyslog 2>/dev/nullchattr +a /var/log/local6endscript

}

让我的轮转规则文件在每天的两点的时候执行

#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 StDev1.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.02.|-- 11.212.253.77              0.0%    10    3.5   4.0   2.9   8.7   1.63.|-- 11.218.131.125             0.0%    10   42.8  47.3   7.1  58.0  14.94.|-- 11.218.131.238             0.0%    10    2.6   2.7   2.4   3.6   0.05.|-- 119.38.212.110             0.0%    10    4.2   2.9   1.9   6.6   1.36.|-- 116.251.113.157            0.0%    10    2.1   2.5   1.8   7.2   1.57.|-- 183.2.180.193              0.0%    10    3.1   7.6   3.1  46.7  13.78.|-- 183.2.182.129              0.0%    10    3.2   3.5   3.2   5.2   0.59.|-- 119.147.222.69             0.0%    10   13.0   6.2   3.8  13.0   3.510.|-- 113.96.4.130               0.0%    10    8.1   9.8   6.2  12.4   1.811.|-- 113.96.11.74              40.0%    10    8.0  18.5   7.5  69.1  24.812.|-- 14.215.32.94               0.0%    10    7.5   7.6   7.5   8.0   0.013.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.014.|-- 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配置案例:

  1. 接口配置文件
    [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

  2. bonding参数
    [root@install ~]# cat /etc/modprobe.d/bond0.conf
    alias bond0 bonding
    options bonding mode=0 miimon=100

  3. 重启网络服务
    [root@install ~]# systemctl restart network
    [root@install ~]# ip a

  4. 查看文件验证网卡绑定效果
    [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-serveropenssh-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)

四、其它事项[可选]

  1. 从windows管理Linux
    putty,Xmanager(XShell),winSCP, SecureCRT
    xshell不能传目录,可以现将目录打包压缩然后再传

  2. 指纹不匹配
    [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、为进程添加用户时要使用非登陆shell2、减少root用户登陆,尽量使用普通用户登陆,使用sudo工具提权3、进制root用户登陆,开启普通用户登陆的白名单#vim /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers alice
AllowUsers  AllowGroups DenyUsers DenyGroups4、设置黑名单中的主机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.allow5、禁用密码登陆,允许公钥方式认证#vim /etc/ssh/sshd_config
PasswordAuthentication no6、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.cnshare                             | 2.9 kB     00:00     share/primary_db                    | 3.2 kB   00:00     repo id                 repo name                  statusbase/7/x86_64           CentOS-7 - Base            10,019extras/7/x86_64         CentOS-7 - Extras             371share                   share                           2updates/7/x86_64        CentOS-7 - Updates          1,163repolist: 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.comapache:代码比较冗长,早期用的比较多一款软件(开源)nginx:95年俄罗斯人研发,轻量级的一款web服务器,可做反向代理(开源)Tengine:taobao在nginx的基础上做的二次开发(开源)IIS:是微软旗下的,适用于一些小型网站,例如卖空间的一些小网站以上的软件只能解析静态页面,如果要解析动态页面还需要结合一些应用程序软件来实现

应用程序服务器

IIS, Tomcat(JSP,open source), Websphere(IBM,JSP,commodity), Weblogic(Oracle,JSP,commodity) JBoss(redhat,JSP) Resin    phppython微软的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.160nginx 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程序测试

  1. 测试php文件能否执行
    [root@nginx ~]# cat /usr/share/nginx/html/index.php

    <?php phpinfo(); ?>

  2. 测试php连接MySQL是否正常
    [root@nginx html]# vim aaa.php

    <?php $link=mysql_connect('10.0.112.195','root','123'); if ($link) echo "Successfully"; else echo "Failed"; mysql_close(); ?>

最后的测试效果

第二个页面的效果

搭建自己喜欢的网站

[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存储

  1. 软件包: nfs-utils
  2. 端口: 2049/tcp
  3. 配置文件:/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

  1. 查看存储端共享
    [root@student ~]# showmount -e 172.16.60.1
    Export list for 172.16.60.1:
    share/dir1 *
  2. 挂载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:

Linux软件包管理和系统网络3相关推荐

  1. linux系统软件包分类,Linux软件包管理和编译安装

    软件包介绍 开源软件最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件.用户急需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一 ...

  2. 车载系统linux软件,车载娱乐系统(Linux、Can中间层)

    车载娱乐系统(Linux.Can中间层) 0 68 2020-12-22 00:34 项目描述:主要通过Can来现实上层以及中间层到底层的交互. 开发工具: 软件- Ubuntu 14.02.Orac ...

  3. mikrotik运行其他Linux软件,MikroTik ROS系统的几种安装方法

    这里简单介绍下几种ROS的安装方法,以及适用于哪些设备,这里我们先提供一个ROS6.0全系列版本的下载链接 常见的ROS硬件一般分为: X86架构(也是最常用的) mipsbe(欧米tik,部分RB系 ...

  4. 【从零开始的嵌入式生活】LinuxC语言——软件包管理和shell

    前言 今天是2021年的第一天,刚好开了新坑,这次不能断更了呀. 今天是新年的第一天,刚好开始进入稍微深入一点的应用讲解,希望大家可以跟随我的脚步一起学习进步! 三连即可提高学习效率0.0

  5. linux软件可以在所有发行版运行吗,Linux通用的跨发行版的3大软件包管理器

    前言 本文主要介绍Linux系统上通用的跨发行版的3大软件包管理器. Linux系统上的软件包管理可能非常令人困惑,尤其是对于新手,因为不同的Linux发行版使用不同的包管理系统.在大多数情况下,最令 ...

  6. android系统电量优化,基于Android系统网络耗电量优化方法的.pdf

    基于Android系统网络耗电量优化方法的 2012年第10期,第 45卷 通 信 技 术 Vol.45,No.10,2012 总第250期 Communications Technology No. ...

  7. 给Linux系统/网络管理员的nmap的29个实用例子

    Nmap亦称为Network Mapper(网络映射)是一个开源并且通用的用于Linux系统/网络管理员的工具.nmap用于探查网络.执行安全扫描.网络核查并且在远程机器上找出开放端口.它可以扫描在线 ...

  8. Linux系统网络性能实例分析

    由于TCP/IP是使用最普遍的Internet协议,下面只集中讨论TCP/IP 栈和以太网(Ethernet).术语 LinuxTCP/IP栈和 Linux网络栈可互换使用,因为 TCP/IP栈是 L ...

  9. 在u盘运行linux系统软件,主编帮你xp系统利用U盘直接运行Linux软件 的步骤【图】...

    然而并是不所有的朋友都会解决xp系统利用U盘直接运行Linux软件 的问题,于是就向我咨询就没有具体的办法来解决xp系统利用U盘直接运行Linux软件 的问题,那么今天我就给大家整理了xp系统利用U盘 ...

最新文章

  1. 《Adobe Fireworks CS5中文版经典教程》——导读
  2. R语言关系操作符:>、<=、!=、>=、==、
  3. free5GC — 部署端到端 5G 实验网络
  4. 基于内容的图像检索CBIR部分数据库和源代码资料
  5. jvm:类加载器与双亲委派模型
  6. 怎么给网站加js_网站站内SEO优化实操细节详解,权重上升嗖嗖的
  7. java 数据路id增长策略_基于数据库实现ID自动生成策略
  8. “清华同方同传”By软件:同方易教管理平台 V2.4
  9. 恢复win7开机动画
  10. 常见机器学习算法原理
  11. Springboot毕设项目公共机房的值班管理系统wyz7b(java+VUE+Mybatis+Maven+Mysql)
  12. PAT甲级准备历程及经验教训总结
  13. 如何通过DFMA实现DFX
  14. 1405:三元一次方程
  15. lg 传奇手游java_2020年手机游戏角色扮演类和传奇类 排行榜NO.1 小编强势推荐
  16. TouchGFX- 1 - 简介与安装
  17. 魔兽世界-战士的真谛
  18. 杭州网络实名制遇冷:真实身份无规可查
  19. 第一次嵌入式裸机应用设计——秒表器
  20. 产品周报第32期|CSDN APP V5.3.0发布:新增3款桌面小组件,签到页新增提升原力分引导

热门文章

  1. 魔力宝贝高清单机计划(一) 图库提取
  2. Java中类型zhaun‘huan
  3. 关于bug的分类和定金,终于有人讲明白了
  4. 自我鉴定200字大专生计算机专业,大专毕业自我鉴定200字
  5. python 疯狂讲义 笔记(变量和基本类型)
  6. Web后端语言模拟http请求 带用户名和密码 实例代码大全
  7. bugku Simple_SSTI_1and 2(SSTI模板注入)
  8. UCOSIII软件定时器
  9. Android H.265硬解码EasyPlayerPro
  10. JS正则表达式完整版