linux学习

1. 命令的基本格式.

    命令 [-选项] 参数

    命令 : 命令本身
    选项 : 对命令的功能进行微调
    参数 : 操作的对象

2. 目录处理命令ls 

    命令名称 : ls
    命令原意 : list
    命令路径 : /bin 
    执行用户 : 所有用户都能执行

    选项 : 
        ls 如果没有参数 就是当前路径
        ls -l 查看文件或目录的属性
        ls -a 显示隐藏文件 Linux中以点开始的文件都是隐藏文件
        ls -h 人性化显示

    快捷键:

        ctrl + l 清屏
        ctrl + c 终止命令
        ctrl + u 删除所有字符
        ctrl + a 到行首
        Ctrl + e 到行尾
    
    (-)(<rw-><r--><r-->) 1 root root 100 (Apr 22 1:10) install.log
        
    第一部分: 文件的类型和权限位

        第一个字符: 文件的类型
            d -> 表示是目录 
            - -> 表示是文件
            l -> 表示是软链接
        后九个字符: 表示权限位
            <1> 所有者的权限位 user  u
            <2> 所属组的权限位 group g
            <3> 其他人的权限位 other o
            
            r 读权限 read
            w 写权限 write
            x 执行权限 execute
            - 没有权限
            
        
    第二部分: 文件的硬链接次数
    第三部分: 文件的所有者
    第四部分: 文件的所属组
    第五部分: 文件的大小
    第六部分: 文件的最后修改时间
    第七部分: 文件名

3. 提示符

    [<root>@<localhost> <~>]<#>

    第一部分 : 当前登录的用户
    第二部分 : 主机名
    第三部分 : 表示我当前所在的目录
        ~ 表示用户的家目录
            超级管理员 /root
            普通用户   /home/用户名
    第四部分 : 表示用户的类型
            # -> 表示超级管理员
            $ -> 表示是普通管理员


4. 目录处理命令

    (1) cd 目录 切换到指定目录中
        cd .    -> 切换到当前目录中
        cd ..   -> 切换到上一级目录中
        cd ~ == cd 回家

        相对路径和绝对路径

        cd /bin == cd ../bin

    (2) pwd 查看当前的目录绝对路径

    (3) linux的目录结构

        /bin        -> 存储命令(所有用户都能执行的)
        /sbin        -> 存储命令(超级管理员执行的命令)
        
        /boot        -> 存储系统的文件
        /dev        -> 存储设备文件名的目录
        /etc         -> 存储配置文件的目录
        /lib         -> 系统的函数库存储的目录
        /tmp        -> 临时文件的目录
        /var        -> 存储系统日志的目录

        /mnt        -> 挂载目录
        /media        -> 挂载目录

        /root        -> 超级管理员的家目录
        /home        -> 普通用户的家目录
        
    (4) 创建目录 mkdir    

        mkdir wwj

        mkdir -p ./yhf/wwj 一次性创建多级目录

        mkdir -p ./yhf/{1,2,3,4,5}        

    (5) 删除目录 rmdir 这个目录必须是空目录

        rmdir yhf

5. 文件处理命令
    
    (1) 创建文件 touch

        touch 文件名

    (2) 删除文件 rm

        rm 文件名 (y yes|n no)

        rm -f 文件名 强制删除文件
        rm -v 文件名 显示删除的细节
        rm -fv 文件名


    (3) 查看文件中的内容
        
        cat 文件名  (显示全部信息)
        cat -n 文件名 显示行号

        less文件名
        more 文件名 (分页显示文件中的内容)
            enter 下
            b     上

        head 文件名 显示文件的头10行
        head -n 文件名 显示文件的头n行
    
        tail 文件名 显示文件的末尾10行
        tail -n 文件名 显示文件的末尾n行
        
        tail -f 追踪查看后n行

    (4) 链接文件 (快捷方式)
        
        ln -s 源文件 链接文件    
            -s 表示我要创建软链接文件


6. 目录和文件都能操作的命令

    (1)  rm 
        rm -fv 文件名 f强制删除focus v显示删除的细节verbose

        rm -rfv 目录名
            r 表示删除目录
            f 表示强制删除
            v 表示显示删除的细节

        rmdir 只能删除空目录
        rm -rfv 可以删除任意的目录

    (2) cp 复制 + 改名 

        复制文件
            cp 源文件 目标目录

        复制目录
            cp -r 源目录 目标目录
            
                -r  复制目录
                -p    连带文件属性复制
                -d    若源文件是链接文件,则复制链接属性
                -a    相当于  -pdr

    (3) 剪切 mv 改名

        剪切文件
        
            mv 源文件 目标目录

        剪切目录

            mv 源目录 目标目录


7. 权限管理
    
    -rw-r--r--

    r 读权限    read        4
    w 写权限    write        2
    x 执行权限    execute        1

    ---    -> 0
    r--    -> 4
    rw-    -> 6
    rwx    -> 7
    r-x    -> 5
    -w-    -> 2 
    -wx    -> 3
    --x    -> 1

---------------------------------------------------------
|     |文件            |目录            |    
---------------------------------------------------------
| r    |读取文件中的内容    |可以查看目录中的信息    |
---------------------------------------------------------
| w     |修改文件中的内容    |可以修改目录中的文件(删除 添加)|
---------------------------------------------------------
| x    |可以执行这个文件    |可以cd到这个目录中    |
---------------------------------------------------------

    chmod u+x index.php 加权限
    chmod g+x,o+x index.php 批量加权限
    chmod u=r-- index.php (补全)

    chmod 755 index.php
        7 u rwx
        5 g r-x
        5 o r-x

8. 属主

    useradd 用户名 -> 创建用户
    passwd 用户名  -> 设置密码

    chown 用户名 文件
    chown  user1:user1  aa    改变属主同时改变属组

9. 帮助命令 man manual 手册

    man 命令 
        j 下
        k 上
        q 退出

    命令 --help 

10. 查找指令

    (1) whereis 命令 查看(指令的位置)和(帮助文档的位置)

    (2) find 查询路径 -name index.php 根据文件名查找文件
        如果不加路径 表示当前路径

        find 查询路径 -user root 根据所有者查询文件
        find 查询路径 -group root 根据所属组查询文件
        find 查询路径 -type f 根据类型查询文件
        find 查询路径 -perm 755 根据权限查询文件

    (3) grep global search regex expresion and print

        grep 正则表达式 文件名

        grep 'root' /etc/passwd    匹配有root的行
        grep '^root' /etc/passwd    匹配以root开始的行

        grep -i 不区分大小写 ignore 忽略
        grep -v 反向匹配     invert 反向

        grep -iv 'test' index


    (4) 管道符
        命令1 | 命令2  命令1执行完的结果作为命令2操作的内容

11. 压缩解压缩

    压缩包的后缀名    
        .tar.gz     -> gzip
        .tar.bz2    -> bzip2

    压缩
        tar -xxx 三个字符的顺序是不能颠倒的

            第一个字符 表示使用的算法 z gzip j bzip2
            第二个字符 表示是压缩还是解压缩 c压缩 x 解压缩
            第三个字符 压缩包的名字 f

            -v:显示压缩过程    

        tar -zcf

            z 表示使用 gzip压缩算法压缩
            c 表示我是在压缩 create
            f 指定压缩之后的包的名字


        tar -zcf ./passwd.tar.gz /etc/passwd
        
        tar -jcf

            j 表示使用 bzip2压缩算法
            c 表示要压缩
            f 压缩包的名字

    解压缩

        tar -zxf
        
            z 表示解压所用的算法 gzip
            x 表示解压缩
            f 指定压缩包

        tar -jxf 
        
        tar -xvf root.tar.bz2 -C /tmp/    指定解压缩位置


12. 关机和重启

    关机

        shutdown -h now (halt)

        halt


    重启

        shutdown -r now (reboot)

        reboot


13. 挂载和卸载

    (1) 挂载

    IDE  /dev/sda1
    SATA /dev/hda2

    光盘 /dev/cdrom -> /dev/sr0

    mount 光盘 挂载点(目录)

    /mnt 
    /media

    mount /dev/cdrom /mnt
    mount /dev/sr0 /mnt

        mount: block device /dev/sr0 is write-protected mounting read-only 表示只读挂载

    mount 查看系统中已经挂载了的设备
    
    /dev/sr0 on /mnt type iso9660 (ro)
    /dev/sda1 on /boot type ext4 (rw)

    ls | wc -l 统计文章中有多少行


    (2) 卸载

    umount 设备文件名或挂载点

    umount /dev/cdrom 设备文件
    umount /mnt      挂载点

3-------------------------------
linux第三天 vi编辑器和软件安装

一. VI编辑器

(1) 编辑器的种类
    vi 
    vim

(2) 编辑器模式

    <1> 插入模式
    <2> 命令模式
    <3> 末行模式

(3) 模式之间的转化

    <1> 打开文件进入 命令模式
    <2> 命令模式 -> 插入模式 a:光标后插入 | i:光标前插入 | o:下方新建行插入 | A:本行结尾插入 | I:本行开头插入 | O:上方新建行插入
    <3> 插入模式 -> 命令模式 esc
    <4> 命令模式 -> 末行模式 shift + :
    <5> 末行模式 -> 命令模式 回车

(4) 光标移动 (命令模式)

    h -> 左
    j -> 下 
    k -> 上
    l -> 右
    gg -> 移动到第一行 
    G ->  移动到最后一行
    nG -> 移动到第n行
    :n -> 移动到第几行  *

(5) 保存和退出 (末行模式)
    
    :w        -> 保存(并不退出)
    :q        -> 退出(如果修改了就不能执行了)
    :q!        -> 强制不保存退出
    :wq        -> 保存退出
    :w index2.php   -> 另存为

(6) 删除字符 (命令模式)

    x 删除一个字符
    nx 删除当前光标之后的n个字符

    dd 删除一行
    ndd 删除当前光标之后的n行
    
    dG        从光标所在行删除到文件尾

(7) 撤销和回撤 (命令模式)

    u      撤销

    ctrl + r 回撤

(8) 复制 (命令模式)

    yy 复制当前行
    nyy 复制n行
    
(9) 粘贴 (命令模式)

    p -> 在当前行的下面粘贴
    P -> 在当前行的上面粘贴

(10) 行号 (末行模式)

    :set nu 显示行号 number
    :set nonu 不显示行号

(11) 配置文件 vim命令的配置文件

    <1> 配置文件的位置 当前用户的家目录
    <2> 配置文件的文件名 .vimrc 这个文件需要我们手动创建
    <3> 配置文件的内容 末行模式的指令 每个指令单独占一行
    <4> 配置文件的使用 当我们执行vim指令的时候读取这个配置文件并且把配置文件中的内容在打开的文件中执行一次

(12) 查找和替换(末行模式)借助正则表达式
    
    查找

        :/要查询的字符  这个/表示我要查询
        
        n 下一个
        N 上一个

    替换
        1,12s@yan@wwj@ 

        1,12s  搜索的范围
        @yan  要替换的内容
        @wwj  替换成的内容

        :%s#http://roclinux\.cn/index\.php#https://www\.baidu\.com/index\.php#g   #代替/
        %s/^/\/\//g   % 表示全文匹配 g行内全搜索(默认搜索行内第一条),\转义
        .,$s^/#       . 表示当前行,$末行

        替换 aaa 2008-07-01 bbb
                ccc 2008-07-12 aaa
        :1,$s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)/'\1'/g    [0-9] 表示 0 到 9 之间的任一个数字,{n} 表示将此符号前面的元素重复 n 遍,如果在匹配方案中用到了(),则表示要暂存括号中所匹配到的内容,而 \1 表示替换为暂存的内容(题外话:如果存在多个括号组,则后面要通过编号来依次对应,如 \1、\2、\3 等)。在本例中,我们匹配的是 2008-07-01,那么加了括号后就会被暂存起来,而在后面的 \1 处就会被替换过来,外面再加一对引号,就完成了!

二. 软件安装 ---------------------------
    
    (1) 软件包的分类

        <1> 源码包(使用C语言写出来的代码)

            缺点 : 浪费时间
            优点 : 运行速度快
            
        <2> rpm包(经过编译之后的软件包)

            缺点 : 依赖性
            优点 : 安装速度快
            
    库文件依赖查询        www.rpmfind.net
        (rpm -ivh /mnt/CentOS/mysql-connector-odbc-3.51.26r1127-1.el5.i386.rpm )

                 Libodbcinst.so.2


    (2) rpm安装软件包

        rpm软件包全名:
            tree-1.5.3-2.el6.i686.rpm

            tree     软件包名
            1.5.3     软件包的版本
            2    发布的次数
            el6    适用的操作系统 Centos
            i686    硬件平台
            rpm     扩展名
            
        rpm软件包名:
            tree

        安装
        rpm -ivh 软件包全名
        rpm -ivh tree-1.5.3-2.el6.i686.rpm

            i install 安装
            v verbose 显示详细信息
            h 显示安装进度

        升级    
        rpm  -Uvh  软件包
                 -U     升级
        
        卸载
        rpm -e 软件包名

        查询
        rpm -q 软件包名 查询软件包是否已经安装
        rpm -qi 软件包名 查询软件包的详细信息    
        rpm -ql 软件包名 查询软件安装了哪些文件
        rpm  -qa  | grep  httpd   mysql         显示所有安装包
        

    (3) yum安装软件包(rpm)

        <1> yum仓库 
            公网上的仓库         -> 远程yum源
            光盘            -> 本地yum源
        <2> yum的配置文件
            # cd /etc/yum.repos.d/      (*.repo)
            # ls
            Centos-Base.repo -> 网络yum源
            Centos-Media.repo -> 本地yum源 光盘

            [base]
            name=xxx
            baseurl=file:///mnt 指定yum源地址
            gpgcheck=0 不检测软件的安全性
            enable=1 表示启用这个yum源
            
            强调:
                (1) 必须挂载光盘
                (2) 只有以.repo结尾的文件才是yum的配置文件
                (3) 默认是Centos-Base.repo生效(网络yum源生效)
            yum的安装:
            yum -y install 软件包名
            
                install 安装
                y 我确定要安装 yes

            yum的卸载:
            yum -y remove 软件包名

    (4) 源码包安装软件包

        网络配置:
        # cd /etc/sysconfig/network-scripts/
        # vim ifcfg-eth0

            修改:
                BOOTPROTO='dhcp' => BOOTPROTO='static'
                ONBOOT='no' => ONBOOT='yes'
            添加:
                IPADDR=192.168.140.1xx

        # service network restart 重启网络服务 重新加载网卡配置文件
        xshell 连接linux
        ssh root@192.168.140.249
        
        (1) # ./configure --prefix=/usr/local 配置
            /usr/local 源码包安装的路径
            (2) # make 编译 将c代码解析成机器指令
             (3) # make install 安装
        


    补充:
    date        查看系统时间
    date  -s  20190220        设定日期
    date  -s  09:30:00        设定时间
    date  -s  '20190220 09:30:00'        设定时间


    du  -sh  目录名        统计目录大小
        -s    和
        -h    单位

4-------------------------------------------

第四天 用户管理和服务管理


一. 用户管理

    (1) 用户相关的配置文件

        <1> /etc/passwd 存储了用户的基本信息
             
        root:x:0:0:root:/root:/bin/bash
        
        第一部分 : 用户名
        第二部分 : 密码位
        第三部分 : 用户ID
        第四部分 : 用户组ID
        第五部分 : 用户的描述信息
        第六部分 : 用户的家目录
        第七部分 : 登录后的shell
        
        <2> /etc/shadow

        root:$6$/FFvwbMN5J0:16912:0:10:2:2:16918:

        第一部分 : 用户名
        第二部分 : 加密的密码 如果没有密码 就是!!
        第三部分 : 上一次修改密码的时间 从1970年1月1日到修改密码的天数 16912
        第四部分 : 密码不可修改的时间 0 表示随时可以修改密码
        第五部分 : 密码必须修改的时间 
        第六部分 : 修改密码之前的提示时间
        第七部分 : 密码的宽限时间
        第八部分 : 用户失效的时间 从1970年1月1日到失效日期的天数
        第九部分 : 保留位

        <3> /etc/group

        root:x:0:

        第一部分 : 用户组名
        第二部分 : 用户组密码位
        第三部分 : 用户组ID
        第四部分 : 用户组中的附加成员

    (2) 添加用户
        
        useradd 用户名
            我们添加的用户ID是从500开始
        useradd -g 组名 用户名 -g 指定所属组
        useradd -G 附加组 用户名 
        useradd -c 说明 用户名 
        useradd -d 家目录 用户名
    
    (3) 设置密码
        
        passwd 用户名 -> 为指定的用户修改密码
        passwd          -> 修改当前用户的密码

    (4) 删除用户
            

        userdel 用户名 不删除用户的家目录

        userdel -r 用户名 删除用户的同时删除家目录

    (5) 添加用户组
        
        groupadd 用户组名

    (6) 删除用户组

        groupdel 用户组名

    (7) 给用户添加附加组

        gpasswd -a 用户名 附加组
        gpasswd -d 用户名 附加组

    (8) 其他命令
        
        <1> id 查看当前用户信息

        <2> su 切换用户

    (9) ACL权限 (access control list)

        设置acl权限 : 

        <1> 添加

            setfacl -m u:用户名:权限 文件
            setfacl -m g:用户组:权限 文件
                m 表示添加
                u 用户
                set file acl
                g 组

        <2> 删除

            setfacl -b 文件 删除文件的所有的acl权限

            setfacl -x u:用户名 文件 删除文件的指定用户的acl权限

        查看acl权限 : 

            getfacl 文件名
        
        <3>    setfacl  -m d:u:aa:rwx -R /test        acl默认权限。d 含义:目录  dir

默认权限只能赋予目录   //d 没有意义 -R有意义
    
            注意:如果给目录赋予acl权限,两条命令都要输入
                -R 递归
                -m  u:用户名:权限 -R      只对已经存在的文件生效
                -m  d:u:用户名:权限    -R    只对未来要新建的文件生效

二. 输出重定向

    >    正确覆盖重定向
    >>     正确追加重定向

    ls > index.php
    ls -lh >> index.php

    2>     错误覆盖重定向
    2>>     错误追加重定向

    lss 2> index2.php
    lss 2>> index2.php

    正确和错误输出都存储在一个文件中

    lss >> index.php 2>&1

    lss >> index.php 2>> index2.php


三. 服务管理

    (1) 查看进程 (aux前不加-)

        ps aux
        
            a 显示前台进程
            x 显示后台进程
            u 显示运行进程的用户

    (2) 查看进程的层次结构

        pstree


    (3) top 动态监控服务器的进程

        shift + P 按照CPU使用从高到底排序
        shift + M 按照MEM使用从高到底排序
        q 退出

    (4) 进程管理

        kill -9 PID
        
        killall -9 进程名称 Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。
        
        pkill -9 进程名称  Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
    
    
    w            判断登录用户
        pkill  -9  -t  终端号    把某个终端登录的用户踢出
        pkill  -9  -t tty1        把本地登录终端1登录用户踢出


    (5) 服务管理

        <0> 运行级别
             vim /etc/inittab

            0 关机
            1 单用户
            2 多用户 不能远程连接
            3 多用户字符界面
            4 保留
            5 图形化界面
            6 重启

            不同的运行级别本质是 背后运行的进程不一样

            2. 查看不同运行级别下运行的进程

            chkconfig --list | less

            3. 查看默认的运行级别:

            # vim /etc/inittab 中有配置

            # runlevel
        
    
        <1> rpm软件包安装的服务

            自启动

            ①    chkconfig --list中在运行级别为3的进程如果是on 就是自启动 
                chkconfig --level 3 httpd on
                
            ②    vi  /etc/rc.local---->/etc/rc.d/rc.local
                /etc/rc.d/init.d/httpd  start

            手动启动

                /etc/rc.d/init.d/httpd start | stop | status | restart            

                service httpd start | stop | status | restart

        <2>    ntsysv **
            所有系统默认安装服务都可以使用ntsysv命令进行自启动管理
            
        <3> 源码包安装的服务器

            关闭防火墙
            # iptables -F
            # iptables -X
            # iptables -Z
            # service iptables save

            # yum -y install gcc
            # yum -y install gcc-c++
            # yum -y install make
            # yum -y install pcre-devel 
            
            apr 在apr目录中执行
            # ./configure --prefix=/usr/local/apr
            # make
            # make install
            
            apr-util 在apr-util目录中
            # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
            # make
            # make install
            
            httpd
            # ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
            # make 
            # make install

            自启动

                /etc/rc.local 这个配置文件是在系统启动完之后加载的文件

            手动启动
                
                /usr/local/apache/bin/apachectl start


四. 循环定时任务    
    1、crontab命令选项  循环定时任务    
    
        *  *  *  *  *  命令
        
        第一个:一小时中第几分钟        0-59
        第二个:一天中第几个小时        0-23
        第三个:一个月中第几天        1-31
        第四个:一年第几个月            1-12
        第五个:一周中星期几            0-6        

    # crontab -e

    -u指定一个用户

    -l列出某个用户的任务计划

    -r删除某个用户的任务

    -e编辑某个用户的任务
    
    命令补充:
    cat /proc/cpuinfo 文件保存了CPU设备信息  
    dmesg                查看系统启动信息
    cat  /var/log/dmesg        系统启动信息日志


5----------------------------------------


第五天: 网络配置和文件服务器

零. 补充

1. 时间

    date 显示当前系统的时间

    修改日期  date -s 20160427

    修改时间  date -s 14:04:20

2. 查看目录的大小 

    du -sh  

    目录的本质是 存储了目录中的文件名或目录名

3. 周期性任务计划 crontab

    # crontab -e  打开了系统的周期性任务计划的配置文件

    * * * * * echo "aaa" >> /index.php
    
    第一个* : 分 1 - 59
    第二个* : 时 1 - 23
    第三个* : 日 1 - 31
    第四个* : 月 1 - 12
    第五个* : 周 1 - 7

    *  *  *  *  *  命令
    10  *  31  *  *  命令
    10  *  *  *  *  命令
    5  4  *  5,7,10  *  命令
    
    crontab -l 查看周期性任务计划

    crontab -r 删除周期性任务计划

一. 网络配置

    192.168.140.250
    0 - 255  => 256  255 - 0 + 1 = 256 2 ^ 8

    2^8 * 2^8 * 2^8 * 2^8 = 2^32 约等于 40亿

    内网IP地址 : NAT

    10.0.0.0    - 10.255.255.255
    172.16.0.0  - 172.31.255.255
    192.168.0.0 - 192.168.255.255

    端口:
        apache 80
        mysql  3306
        ftp    21 20

    (1) 设置IP地址

        # vim /etc/sysconfig/network-scripts/ifcfg-eth0

        DEVICE="eth0"    设置网卡的名字
        BOOTPROTO=""    网卡获取IP地址的方式
            static 需要手动配置IP地址
            IPADDR=192.168.140.249
            dhcp   自动获取IP地址(原)
        HWADDR="xxxx"  网卡的硬件地址
        ONBOOT=""      是否在开机的时候启动网卡
            yes
            no
        TYPE="Ethernet" 以太网
        UUID="aaaaa"   计算机识别网卡

        # service network restart 
        # /etc/rc.d/init.d/network restart
 
    (2) 设置主机名
        
        # vim /etc/sysconfig/network
            HOSTNAME=wangweijing
        # shutdown -r now 需要重启才能生效
        #
        # hostname 查看当前的主机名
        #
    (3) 配置DNS

        # vim /etc/resolv.conf

            nameserver 8.8.8.8 每一行表示一个DNS服务器
            nameserver 114.114.114.114

    (4) 网络命令

        1、ifconfig 显示所有网卡的信息

        ifconfig eth0 192.168.140.200    临时生效

        2、ifup eth0      启用网卡
        ifdown eth0    禁用网卡

        3、netstat -tnl
        查看当前系统已经被监听的端口 端口就代表后端的服务
            netstat  -an            查看所有网络连接
            netstat  -tlun        查看tcp和udp协议监听端口
            netstat  -rn            查看路由    default:默认路由(网关)

        4、添加网关:
        route add default gw 192.168.140.254 网关 -> 默认路由
            gw gateway 网关
        查看网关:
        route -n 
        netstat -rn
        
            route                查看路由

            route  add   default  gw  192.168.140.1            手工设定网关,临时生效
            route  del   default  gw  192.168.190.6                删除网关
        配置网关    
        # vim /etc/sysconfig/network
            GATEWAY=192.168.0.1
        
        
        上网:

            <1> IP|子网掩码 vim /etc/sysconfig/network-scripts/ifcfg-eth0
            <2> DNS vim /etc/resolv.conf
                # vim /etc/resolv.conf
                nameserver 114.114.114.114
            <3> 网关 route add default gw xxx.xxx.xxx.xxx

二. 文件服务器

    (1) vsftpd 主要是与我们的系统绑定    


    (2) 原理
        20端口 : 数据 传输
        21端口 : 命令 传输

    (3) 安装
        # yum -y install vsftpd

    (4) 启动
        # /etc/rc.d/init.d/vsftpd start
        # service vsftpd start

        # netstat -tnl | grep 21

    (5) 用户认证 (依赖于linux主机的认证)
        文件服务器的用户 就是我们linux的系统用户

    (6) 连接文件服务器
        关闭防火墙
            # iptables -F
            # iptables -X
            # iptables -Z
            # service iptables save

            # vim /etc/selinux/config
                SELINUX=disabled
            # shutdown -r now

        cmd: ftp IP
        
        ftp://username@IP

    (7) 文件服务器的配置文件

        <1> /etc/vsftpd/vsftpd.conf 主配置文件
            listen_port=21 表示数据端口
            connect_from_port_20=YES 表示使用20端口数据传输
            local_enable=YES    允许系统用户登录
            write_enable=YES    允许上传
            local_umask=022        默认上传权限
                             777 755
            local_max_rate=300    上传限速
            
            
        <2> /etc/vsftpd/ftpuser 黑名单


6--------------------------------

第六天 : samba 和 防火墙

零. ssh协议 ssh服务

    ssh端口 : 22
    
    软件 : openssl 
    yum -y install openssl

    sshd服务是在系统启动的时候就启动了
    chkconfig --list | grep 'sshd'

    scp 

        上传

        192.168.140.125

        scp ./index.php root@192.168.140.125:/root


        下载

        scp root@192.168.140.125:/root/index.php ./

一. samba 网上邻居

    (1) 端口:

        vsftpd : 20 21
        samba : tcp 139 445 Web MySQL
            udp 137 138 DNS
    (2) 安装的软件

        vsftpd : yum -y install vsftpd

        samba : samba  yum -y install samba
            samba-common (默认安装)
            samba-client (默认安装)

    (3) samba的配置文件
        /etc/samba/smb.conf
            这个配置文件中以 # 和 ;开始的都是注释

        全局段:
        
        server string = .... %v  对samba服务器的描述 %v 表示samba的版本
        log file = 指定samba日志文件的位置
        
        max log size = 指定日志文件的大小

        security = 定义安全级别

            user    需要用户认证
            share      所有人都能访问

        用户段:
        [目录名]
            comment = 描述信息
            browseable = yes 读权限
            writeable = yes  写权限
            path = /wwj      真实目录
    (4) samba的用户
        samba的用户就是我们系统的用户,但是密码需要我们重新进行设置

        smbpasswd -a 用户名

    (5) 连接samba

        关闭防火墙
        # iptables -F
        # iptables -X
        # iptables -Z
        # service iptables save
        #
        # vim /etc/selinux/config
            SELINUX=disabled
        # shutdown -r now
        
        运行 : \\IP

        dos : net use /del * 清除缓存数据
              net use * /del

    (6) 启动
        service smb start
        service nmb start

二. 防火墙 iptables

    (1) 链 
        INPUT     -> 对进入服务器的数据包进行检测
        OUTPUT    -> 对出去的数据包进行检测

    (2) filter(过滤) 表:
        
        这个表中存储了INPUT和OUTPUT连上的规则
    
    (3) 防火墙的配置原则

        <1> 允许所有,逐个拒绝
        <2> 拒绝所有,逐个允许

    (4) 防火墙软件 iptables

        # yum -y install iptables 默认安装了

        # chkconfig --list | grep 'iptables'

    (5) 过滤数据的分类

        <1> IP 源IP 目标IP
        <2> port 源端口 目标端口 
        <3> 协议 
            tcp     web
            udp    dns
            icmp    ping
        <4> mac地址 网卡地址

    (6) 规则

        写规则
            <1> 修改默认策略

            iptables -t 表名 -P 链 默认操作
        
                t 指定操作的表
                P 修改默认策略

            iptables -t filter -P INPUT DROP

            iptables -t filter -P OUTPUT DROP
            
            <2> IP

            iptables -t filter -A INPUT -s 源IP -d 目标IP -j DROP
            iptables -t filter -A OUTPUT -s 源IP -d 目标IP -j DROP
                -t 指定操作的表
                -A 表示添加一条自定义的规则
                -s 指定源IP地址
                -d 指定目标IP地址
                -j 表示匹配到之后的操作
                    DROP
                    ACCEPT
            <3> 端口 和 协议

            iptables -t filter -A INPUT -s 源IP -d 目标IP -p 协议类型 --dport 目标端口 -j DROP
                -t 表示操作的表
                -A 表示添加一条自定义的规则
                -s 表示源IP地址
                -d 表示目标IP地址
                -p 指定协议类型 web tcp
                    --dport 目标端口
                    --sport 源端口
                -j 表示匹配之后的操作
                    DROP
                    ACCEPT

            iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -p tcp --dport 22 -j DROP

            iptables -t filter -A INPUT -s 源IP -d 目标IP -p icmp -j DROP
            <3> mac

            iptables -t filter -A INPUT -m mac --mac-source 00-21-CC-5D-CF-6B -j DROP
                -m 指定mac模块
                --mac-source 源MAC地址

            iptables -t filter -A OUTPUT -m mac --mac-destion 00-21-CC-5D-CF-6B -j DROP 

            删除规则

            iptables -F 表示删除所有的规则

            iptables -t filter -D INPUT 4


        查询规则

            iptables -L -v


        # service iptables save -> /etc/sysconfig/iptables

7-----------------------------

第七天 LNMP环境的搭建和配置

回顾:   # iptables -F 
     #service iptables save

    # vim /etc/selinux/config 
        SELINUX=disabled
    # shutdown -r now

    iptables -t filter -P INPUT DROP

    iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -j DROP
    iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -p tcp --dport 80 -j DROP 
    iptables -t filter -A INPUT -p icmp -j DROP
    iptables -t filter -A INPUT -m mac --mac-source ...... -j DROP

    iptables -F
    iptables -t filter -D INPUT num 
    

零. Web的工作原理

1. 浏览器

(1) 浏览器的分类
    IE 
    非IE 火狐和谷歌

(2) 浏览器是如何工作的

    <1> 发送请求 http://www.baidu.com 
    <2> 下载资源 HTML JS CSS INM 视屏 
    <3> 解析资源


2. 服务器

(1) 服务器就是一台电脑,只不过比我们的PC机配置高 性能好

(2) 操作系统

    Unix  收费的
    Linux 开源 免费 运行稳定
    window 收费 运行不稳定

(3) web服务器

    apache

    nginx

    注意: 
        (1) 在apache启动的时候,就将服务器上的一个目录发布出去给客户端浏览器请求.
        (2) apache本身是没有处理动态脚本的能力.

    apache是如何工作的: 

        <1> 将请求的资源与指定目录中的资源进行比对,如果不存在报错,如果资源存在就执行以下的步骤
        <2> 将文件打开
        <3> 将文件中的内容全部返回给客户端浏览器
        
    PHP解析模块
        <1> 让apache挂载上PHP解析模块
        <2> 明确告诉apache如果遇到了.php结尾的文件先交给PHP解析模块处理

一. LNMP环境的搭建

    LNMP => Linux + Nginx + MySQl + PHP


    (1) 准备工作

        <1> 关闭rpm安装的apache和mysql

            # rpm -q httpd -> apache 
            # rpm -q mysql -> mysql
            #
            # chkconfig --level 3 httpd off
            # chkconfig --level 3 mysql off
            #
            # service httpd stop
            # service mysql stop
            # 
            
        <2> 关闭防火墙

            iptables

            # iptablesa -F
            # service iptables save -> /etc/sysconfig/iptables

            selinux

            # vim /etc/selinux/config
                SELINUX=disabled
            #shutdown -r now
            
        <3> 确保yum能够正常使用

            # mount /dev/cdrom /mnt
            # cd /etc/yum.repos.d/
            # mv Centos-Base.repo Centos-Base
            # vim Centos-Media.repo
            #     ......执行修改操作......


    (2) 一键式安装


二. LNMP环境的配置

    # ./centos.sh

    软件的家目录:
        Nginx /usr/local/nginx
            文档根目录 /home/wwwroot/default
            日志目录   /home/wwwlogs/

        MySQL /usr/local/mysql
            数据目录  /usr/local/mysql/var
        
        PHP   /usr/local/php

        PHPMyAdmin PHP项目 /home/wwwroot/default

    配置文件的目录:
        Nginx的主配置文件 : /usr/local/nginx/config/nginx.conf

        mysql的配置文件   : /etc/my.cnf

        PHP配置文件       : /usr/local/php/etc/php.ini

    如何启动和关闭:

        一键式 : /root/lnmp start | stop | restart | status

        Nginx : /etc/rc.d/init.d/nginx start | stop
            service nginx start

        mysql : /etc/rc.d/init.d/mysql start | stop
            service mysql start | stop
    

    (1) 虚拟主机

         <1> 基于域名的虚拟主机  
         <2> 基于IP地址的虚拟主机 X
         <3> 基于端口的虚拟主机      X

        http://www.wwj.com => /wwj/ 王维晶项目
        http://www.yhf.com => /yhf/ 我的项目
        ....

        C:\Windows\System32\drivers\etc
        
        IP 域名
        IP 域名
        IP 域名


8+------------------------------

LAMP搭建


LNMP  集成环境


Linux中的软件安装不是“下一步,下一步,确定”。

1、软件怎么来:

2、源码包。  *.tar.gz *.tar.bz2纯代码。
优点:定制安装
缺点:编译时间长。一旦报错很难解决。

3、二进制包:RPM包。
优点:速度比较快,不用编译。
缺点:依赖性,不能定制。

4、YUM包
    依赖于RPM包。将各个软件的制作信息,发送到yum服务器上面。
    当你需要的软件需要什么依赖来的时候自动安装。


LAMP
    Apache  (完)
    MySQL   (还没有)
    PHP

1、准备工作: 
    1)、查看系统中是否存在自带的httpd
    [root@Centos Packages]# rpm -q httpd

    -q : 查询

    如果需要依赖先删除依赖的:
    [root@Centos ~]# rpm -e gnome-user-share

    -e:卸载

    2、安装GCC、C++
    [root@Centos Packages]# yum install gcc*

    -y 不确认
    
    3、关闭防火墙
    [root@Centos Packages]# iptables -F


    4、关闭seLinux
    [root@Centos Packages]# setenforce 0  

2、如何确定报错。
    1)、安装过程停止。
    2)、停止后,一个页面中出现大量的error或warning

3、如何确定安装成功
    一般情况下进入到安装目录确认安装程序出现基本上就是成功了。
    安装包一般放在/usr/local/src

4、安装Apache,但是要先安装Apache需要的东西。
    1)、编译安装apr,Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。

    [root@Centos apr-1.5.2]# ./configure --prefix=/usr/local/Apache/apr

    --prefix表示:安装位置。

    make
    make install
    
    2)、编译安装apr-util,需要在apr的基础上安装,apr-util只不过比在apr的基础上提供了更多的底层支持接口。
    [root@Centos apr-util-1.5.4]# ./configure --prefix=/usr/local/Apache/apr-util --with-apr=/usr/local/Apache/apr/

    --with-apr:需要的apr依赖的安装位置。

    make
    make install

    3)、编译安装pcre,是一个工具库,提供了正则表达式库。很多开源软件都需要使用比如Apache和PHP。

    [root@Centos pcre-8.36]# ./configure --prefix=/usr/local/Apache/pcre

    make

    make install

    4)、编译安装Apache。
    [root@Centos httpd-2.4.16]# ./configure --prefix=/usr/local/Apache/ --with-apr=/usr/local/Apache/apr --with-apr-util=/usr/local/Apache/apr-util/ --with-pcre=/usr/local/Apache/pcre/
    
    make
    make install

    5)、启动Apache测试是否能够正常使用
    [root@Centos Apache]# /usr/local/Apache/bin/apachectl start
    [root@Centos Apache]# /usr/local/Apache/bin/apachectl stop
    [root@Centos Apache]# /usr/local/Apache/bin/apachectl restart
    

    
5、MySQL的安装
    注意:在MySQL5.5版本以后不使用configure。而是使用cmake工具进行安装。
    1)、安装cmake工具,和configure一样,用来输出各种各样的makefile文件。
    [root@Centos Apache]# yum install cmake

    2)、安装bison软件,是一个自由软件,用于自动生成语法分析器程序。
    [root@Centos Packages]# yum install bison-2.4.1-5.el6.i686.rpm
    
    3)、单独安装一些软件
    autoconf
        [root@Centos Packages]# yum install autoconf-2.63-5.1.el6.noarch.rpm
    automake
        [root@Centos Packages]# yum install automake-1.11.1-1.2.el6.noarch.rpm
    zlib*,安装zlib函数库,是提供数据压缩用的函数库。(有可能已经安装,使用rpm -q zlib查看)
        [root@Centos Packages]# yum install zlib*
    flex*
        [root@Centos Packages]# yum install flex*
    libtool-ltdl-devl*
        [root@Centos Packages]# yum install libtool-ltdl-*
        

    4)、安装ncurses和ncurses-devel库,提供字符端终端处理库。包括一些面板和菜单,提供了一套控制光标,建立窗口改变前景背景颜色以及数据处理操作的函数。
        [root@Centos Packages]# yum install ncurses*

    5)、创建MySQL安装目录和数据文件放置的目录
    [root@Centos Packages]# mkdir -p /usr/local/MySQL/data

    6)、解压源码包
    [root@Centos mysql-5.5.36]# tar -zxvf mysql-5.5.36.tar.gz

    -z/-j 使用gzip或bzip2 进行处理
    -x 表示解压缩

    -v 显示详细信息
    -f 文件名

    7)、进入mysql源码包目录并且使用cmake进行编译。
    cmake 
        -DCMAKE_INSTALL_PREFIX=/apache/mysql 安装路径
        -DMYSQL_UNIX_ADDR=/apache/mysql/mysql.sock 一种“套接字”,用于描述IP地址和端口。
        -DDEFAULT_CHARSET=utf8  字符集
        -DDEFAULT_COLLATION=utf8_general_ci 校验字符规则
        -DWITH_INNOBASE_STORAGE_ENGINE=1 
        -DWITH_ARCHIVE_STORAGE_ENGINE=1 
        -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
        -DMYSQL_DATADIR=/apache/mysql/data  数据存放的目录
        -DMYSQL_TCP_PORT=3306 端口号
        -DENABLE_DOWNLOADS=1  是否自动下载可选文件
        -DWITH_MYISAM_STORAGE_ENGINE=1
    
    [root@Centos mysql-5.5.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL/ -DMYSQL_UNIX_ADDR=/usr/local/MySQL/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/MySQL/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DWITH_MYISAM_STORAGE_ENGINE=1

    注意:
        1、如果真的出错了,那么你需要将源码包目录下面的CMakeCache.txt删除掉。然后重新cmake
     
   make
   make install

   8)、为了安全起见需要有专门的系统用户来进行运行MySQL


   root疯狂起来连自己都打。

    有专门的组和用户
        添加组:groupadd mysql
        添加用户:useradd -r -g mysql mysql

    更改mysql安装目录的所有者:
        cd /usr/local/MySQL
        #递归更改/usr/local/MySQL中的所有文件、文件夹的所有者、所属组。
        chown -R mysql:mysql .

        -R 递归  
  
    9)、初始化mysql数据库

    注意:必须进入到MySQL的安装目录下执行。

    [root@Centos MySQL]# /usr/local/MySQL/scripts/mysql_install_db --user=mysql --datadir=/usr/local/MySQL/data/

    --user : 用哪个用户启动。
    --datadir : 数据存放在那个目录中

    10)、复制mysql服务启动配置文件

    [root@Centos MySQL]# cp /usr/local/src/MySQL/mysql-5.5.36/support-files/my-huge.cnf /etc/my.cnf

    注意:/etc/my.cnf这个文件如果存在于/etc中。那么选择覆盖。

    11)、启动mysql    

    [root@Centos MySQL]# /usr/local/MySQL/bin/mysqld --user=mysql --datadir=/usr/local/MySQL/data/ &

    mysqld是真正要启动的mysql程序

    --user : 用那个用户启动
    --datadir : 数据目录存放在哪里

    & 表示后台执行

    12)、进入到MySQL测试一下/apache/mysql/bin/mysql -u root -p默认密码为空。

    13)、更改密码:
    [root@Centos MySQL]# /usr/local/MySQL/bin/mysqladmin -u root -p password '1234@abcd'
    

    
6、PHP的安装
    1)、安装apxs(已经安装放在安装目录下的bin/apxs目录下)
    2)、安装libxml库。
    xml,可扩展标记语言,HTML有些相同的地方,可以自定义一些标签,但是HTML是用来标记的,XML是用来存储数据的,用来多种程序间共享数据用的。

    libxml库,提供了对XML文档的各种操作方法。
    [root@Centos libxml2-2.6.30]# ./configure --prefix=/usr/local/Apache/libxml

    make
    make install

    3)、安装zlib函数库,是提供数据压缩用的函数库(有可能已经安装)。

    不用去安装已经安装在/usr/include/下面

    4)、安装jpeg6,用于解码.jpg和.jpeg图片
    [root@Centos jpeg-6b]# ./configure --prefix=/usr/local/Apache/jpeg --enable-shared --enable-static 
    --enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool

    make

    手动创建目录
    /usr/local/Apache/jpeg
    /usr/local/Apache/jpeg/bin
    /usr/local/Apache/jpeg/lib
    /usr/local/Apache/jpeg/include
    /usr/local/Apache/jpeg/man/man1
    
    [root@Centos jpeg-6b]# mkdir -p /usr/local/Apache/jpeg/{bin,lib,include,man/man1}

    make install

    5)、安装libpng用于处理.png的图片
    
    [root@Centos libpng-1.2.31]# ./configure --prefix=/usr/local/Apache/libpng
    make
    make install

    6)、安装freetype,FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。
    [root@Centos freetype-2.3.5]# ./configure --prefix=/usr/local/Apache/freetype
    make 
    make install

    7)、安装libmcrypt库,是一个加密算法扩展库。
    [root@Centos libmcrypt-2.5.8]# ./configure --prefix=/usr/local/Apache/libmcrypt
    make
    make install

    8)、安装curl,是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。
    [root@Centos curl-7.29.0]# ./configure --prefix=/usr/local/Apache/curl
    make
    make install

    9)、编译PHP
        1、解压 PHP5.6
        [root@Centos php-5.6.21]# tar -zxvf php-5.6.21.tar.gz
    

        ./configure 
        --prefix=/apache/php/  安装位置
        --with-config-file-path=/apache/php/etc 配置文件位置 
        --with-apxs2=/apache/bin/apxs 
        --with-mysql=/apache/mysql/ MySQL安装位置
        --with-libxml-dir=/apache/libxml/ XML安装位置
        --with-jpeg-dir=/apache/jpeg/ 
        --with-png-dir=/apache/libpng/ 
        --with-freetype-dir=/apache/freetype/ 
        --with-gd
         --with-mcrypt=/apache/libmcrypt/ 
         --with-mysqli=/apache/mysql/bin/mysql_config 
         --enable-soap 
         --enable-mbstring=all 
         --enable-sockets 
         --with-pdo-mysql=/apache/mysql/ 
         --without-pear 
         --with-curl=/apache/curl/
    
     
    
        -------------------------------------------------
        [root@Centos htdocs]# ./configure --prefix=/usr/local/Apache/php --with-config-file-path=/usr/local/Apache/php/etc --with-apxs2=/usr/local/Apache/bin/apxs --with-mysql=/usr/local/MySQL --with-libxml-dir=/usr/local/Apache/libxml --with-jpeg-dir=/usr/local/Apache/jpeg --with-png-dir=/usr/local/Apache/libpng/ --with-freetype-dir=/usr/local/Apache/freetype/ --with-gd --with-mcrypt=/usr/local/Apache/libmcrypt/ --with-mysqli=/usr/local/MySQL/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/MySQL/ --without-pear --with-curl=/usr/local/Apache/curl/
        make
        make install


    10)、创建/usr/local/Apache/php/etc目录,放置配置文件
    mkdir /usr/local/Apache/php/etc
    注意:如果已经有了就不用管他了

    11)、复制初始配置文件
    [root@Centos htdocs]# cp /usr/local/src/PHP/php-5.6.21/php.ini-production /usr/local/Apache/php/etc/php.ini

    12)、修改apache的配置文件让apache能够认识php文件。
            /usr/local/Apache/conf/httpd.conf

        注意:
            1、必须让apache能够载入php的模块。必须保证开启。
            LoadModule php5_module        modules/libphp5.so
            2、添加一行让Apache能够认识PHP文件
            AddType application/x-httpd-php .php
            在第20行的位置添加。(其实不见得因为只要不在区块中就行)
            
            
作业:
    1、装 装 装   
    注意:装上之后做个快照。
            
    
    

9---------------------------------

1、安装完成的位置
    /usr/local/Apache/bin  常用的命令
    /usr/local/Apache/modules  模块
    /usr/local/Apache/conf 配置文件的目录
    /usr/local/Apache/htdocs 网站的根目录

2、bin目录中
    httpd:apache的启动程序
    apachectl:是Apache服务器自带的脚本工具,用于管理控制Apache后台程序。

    apachectl start|stop|restart

    start 开启,他会先检查你的配置文件有没有错误。
    stop:停止
    restart:重启httpd,也会检查配置文件。

3、modules目录中:放置的Apache中的模块。这样更加灵活。
    模块的类型:
        1、核心模块,无法被模块化的东西,基础的模块。不能被删除。
        2、标准模块,由Apache基金会发布和维护的模块。这些模块可以自由的删除和加载。
        3、第三方模块,由普通的用户编写,这些模块不作为Apache的官方发布。

4、conf目录中:
    -rw-r--r--. 1 root root 18201 5月   3 17:36 httpd.conf apache的配置文件。定义了apache的基本配置以及对其他模块的引用。
    -rw-r--r--. 1 root root 53011 5月   3 14:47 mime.types  所有的mime类型
    extra目录:所有Apache标准模块的、第三方模块的配置文件。

5、httpd.conf的配置
    配置文件分为三部分:
        1、主服务器部分:用一些核心模块提供的指令来定义服务器的功能和参数,在整个Apache配置中都有作用。
        2、容器部分:都以<容器名>开始</容器名>结束的样式来对指令进行封装。
        3、服务器扩展部分:
        #LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 载入某个模块
        #Include conf/extra/httpd-mpm.conf   引入一个配置文件。

        1、主服务器部分:
        ServerName:定义Apache的默认主机名,用于辨别自己的主机名和端口号。通常后面是主机名或IP地址。

        注意:该选项默认时候不开启。因为默认的时候我们是将网站放在公网上面。使用DNS服务作为解析。可以自动判断主机名或IP地址

        ServerRoot:用来指明Apache所在的安装目录

        DocumentRoot:网站的根目录。也就是Apache所受到的URL请求的时候的/
        注意:要修改网站的根目录也要修改容器部分的
        <Directory "/usr/local/Apache/LAMP140"> 因为这里是这个目录的权限。

        Listen:监听的端口号,默认是80端口,端口范围可以是0~65535

        ErrorDocument:当出错的时候会给出一个HTTP的状态码,该选项用于定义对应状态码想要的页面/提示信息。
        #ErrorDocument 404 "look look yanleiZhang"
        
        
        2、容器部分
        <IfModule setenvif_module>,作用域模块,先判断模块是否载入,然后决定是否进行处理。只有判断结果为真的时候才会执行容器内部的命令。

        <IfModule unixd_module> 
        User,Group:用于定义运行Apache服务器的账号和工作组。用来定义用户请求时创建的子进程的账号与工作组。

        注意:Apache的权限是root,这个是Apache的主进程,这个进程不响应任何请求,只是负责建立子进程来响应请求。

        httpd  root
            httpd  daemon


        4308 daemon    20   0  314m  19m 2484 S  0.3  0.5   0:00.38 httpd

        <Directory />:让所封装的指令在指定的目录以及他的子目录中起作用。
        <Files ".ht*"> :让所封装的指令在指定的文件起作用
        <Location >:指定的URL起作用
        
           
         

        3、目录索引

        由mod_dir这个模块:
        DirectoryIndex:指定的索引文件

        DirectoryIndex 1.html 2.php

        mod_autoIndex模块:
            配置文件在:extra/httpd-autoindex.conf
            IndexOptions FancyIndexing HTMLTable VersionSort
            FancyIndexing:启用复杂索引。
            HTMLTable:以HTML表格方式显示。
            VersionSort:版本排序。

            FolderFirst:目录靠前显示。
            _________________________________________
                
        
            AddIconByType :指定的后缀名的描述

            AddDescription "GZIP compressed tar archive" .tgz

            AddIcon:添加指定后缀文件的图片标识

            AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

            格式:AddIcon 图片名  后缀名

            DefaultIcon:如果AddIcon中没有这个后缀那么默认使用的图片标识。

            IndexIgnore:隐藏指定的文件。
            
            
        
    4、虚拟主机
    LoadModule vhost_alias_module modules/mod_vhost_alias.so 提供虚拟主机服务,在一台主机上运行或维护多个web站点。
    Include conf/extra/httpd-vhosts.conf 引入配置文件
    

        实验1:基于主机名的虚拟主机:
            计算机相互访问只能靠IP地址来进行访问,但是IP不容易记,人类对字母比较敏感。所以使用域名。

            域名:先找本地的hosts文件(这个文件里面包含着你自己设置的指向),如果请求的域名在这个文件中没有的话那么请求DNS服务器

            电信:202.175.3.8   202.175.3.3

            1、设置hosts文件
            windows:C:\Windows\System32\drivers\etc\hosts
            Linux:/etc/hosts

            192.168.10.44   www.baidu.com

            2、设置虚拟机

                <VirtualHost 192.168.10.44:80>
                        ServerName mp3.google.com
                        DocumentRoot "/usr/local/Apache/LAMP140/mp3.google.com"
                </VirtualHost>

                <VirtualHost 192.168.10.44:80>
                        ServerName av.google.com
                        DocumentRoot "/usr/local/Apache/LAMP140/av.google.com"
                </VirtualHost>

            3、如果让本机IP像以前那样正常访问可以在虚拟机设置最前面加上
            <VirtualHost 192.168.10.44:80>
                    serverName 192.168.10.44
                    DocumentRoot "/usr/local/Apache/LAMP140"
            </VirtualHost>

            默认的时候使用第一个的虚拟机配置

            注意:
                1、这样可以节省IP地址但是需要自己设置DNS
                2、确认模块和配置文件是否正确打开、载入
                3、如果遇到403错误,通常是一下3点:
                    1、访问权限。
                    2、seLInux或防火墙
                    3、配置文件错误。
                
        实验2:基于IP地址不同端口的虚拟主机
            步骤:
                1、默认是监听80端口,再添加一个端口
                Listen 8080   添加新的一行
                2、添加虚拟主机部分
                <VirtualHost 192.168.10.44:80>
                        serverName 192.168.10.44
                        DocumentRoot "/usr/local/Apache/LAMP140/80"
                </VirtualHost>
                <VirtualHost 192.168.10.44:8080>
                        serverName 192.168.10.44
                        DocumentRoot "/usr/local/Apache/LAMP140/8080"
                </VirtualHost>
                

        实验3:基于相同的端口不同的IP设置虚拟主机
            步骤:
                1、给一张网卡设置多个IP地址
                只有一张网卡,默认为eth0,如果要在同一张网卡上配置需要使用虚拟网卡eht0:(0~255)成为虚拟网络接口,是建立在eth0网络接口上。

                [root@Centos LAMP140]# ifconfig eth0:0 192.168.10.45 netmask 255.255.255.0 up
                这种方法只是临时生效。

                如果要永久生效:
                [root@Centos LAMP140]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0

                更改ifconf-eth0:0中的
                IPADDR=192.168.10.45
                DEVICE=eth0:0

                注意:如果重新启动网卡后不生效,查看是否开启了NetworkManager这个服务。如果是开启状态就关闭

                2、重新启动网络服务
                service network restart

                3、增加虚拟机
                <VirtualHost 192.168.10.44:80>
                        serverName 192.168.10.44
                        DocumentRoot "/usr/local/Apache/LAMP140/44"
                </VirtualHost>
                <VirtualHost 192.168.10.45:80>
                        serverName 192.168.10.45
                        DocumentRoot "/usr/local/Apache/LAMP140/45"
                </VirtualHost>

                
    5、 身份认证。
    authz_host模块:提交简单的、基本的访问控制

    order:设置默认访问的状态。Allow和deny指令的生效顺序
    Allow:指定哪些客户允许进行访问
    Deny:指定哪些用户会被拒绝

    注意:
        1、allow和deny中的第一个参数都是from,可以在from后面加上要允许或禁止的主机。

        allow from 192.168.140.250
        deny from all  所有的都不能访问

    正确
    order deny,allow
    deny from all
    allow from 127.0.0.1

    错误
    order allow,deny
    deny from all
    allow from 127.0.0.1

    注意:
        order决定的“最后”规则非常重要,决定谁生效。
        一般来说:分两种:
            1、拒绝所有,逐个允许(自己网站不想让别人随便访问。但是想让几个人访问)
            2、允许所有,逐个拒绝(我已经知道有几个人调皮了)

    6、用户认证模块
        交互性差,通常用在一些不让别人注册的网站。
        步骤:
            1、在根目录下创建要进行控制的目录
            [root@Centos LAMP140]# mkdir buRangFangWen

            2、在配置文件中加入控制
                <Directory "/usr/local/Apache/LAMP140/buRangFangWen">
                        AuthType Basic  #密码验证方式
                        AuthName "hehe lai wan ya" #提示信息
                        AuthBasicProvider file #账号密码从哪里来
                        AuthUserFIle "/usr/local/Apache/passwd" #账号密码的文件在哪里
                        Require user lgzhyan #允许访问的用户
                </Directory>
            

            3、创建密码验证文件,并且添加第一个新用户
            htpasswd -c 密码文件名  第一个新用户
            htpasswd -c /usr/local/Apache/passwd lgzhyan

            4、再次添加用户
            htpasswd 密码文件名  用户名
            [root@Centos LAMP140]# htpasswd /usr/local/Apache/passwd mashoulun
            

            注意:
                1、删除用户使用htpasswd -D 密码文件名 用户名
                2、如果要修改用户密码,只能将该用户删除掉然后重新添加。

            5、重新启动Apache服务器


            注意:
                1、如果不进行验证直接点击取消的话将会返回401状态码
                2、这个里面的账号和系统中的账号没有一毛钱关系。

            htpasswd
            
    7、别名重定向
        让apache以为在网站根目录下有某个目录。但是实际上访问的是其他目录
        mod_alias模块:可以完成简单的别名重定向
        可以使用Alias

        语法:alias URL地址 真是的文件或目录路径

        直接在
        <IfModule alias_module>
            Alias /haha  /usr/local/Apache/houhou
        </ifModule>
            

        现在能够找到,但是不能访问,这个时候必须加上权限。
        <Directory /usr/local/Apache/caoliu>
                Options indexes  开启索引
                Order deny,allow  是允许还是拒绝
                Allow from all  允许所有的
                Require all granted  允许所有的访问
        </Directory>

    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值