linux的基础命令

linux简介

安装

  1. 安装操作系统软件 CentOS6.8-*.iso
  2. 密码原则 12位以上 大小写字符 数字 特殊符号
  3. DeskTop 图形界面 开发
  4. Basic Server 服务器 没有图形界面 Server
  5. 安装Basic Server 701软件包
  6. 分区 swap备用内存2000M ,/boot exit 执行内存200M 剩余全部为根目录exit空间
  7. setup 设置防火墙之类
  8. ifconfig 查看网络状态
  9. 最后service network restart 重启网络服务确定无误

常用端口

3306   mysql        80 apache(http22 ssh
pgrep  应用    得到进程号

常用命令

ls              (显示当前目录下文件)
ls 目录名        (显示指定目录下文件)
ls -l           (长格式显示目录文件)
ls -l 文件名     (长格式显示指定文件)
ls -a           (显示所有文件(包含隐藏文件))
ls -al          (长格式显示当前目录下所有文件)
ls -h           (文件大小显示为常见大小单位 B KB MB ...)
ls -d           (显示目录本身,而不是里面的子文件)
cd /usr/local/src   切换到指定路径(使用绝对路径方式)
cd ~                进入当前用户的家目录
cd -                进入上次目录
cd ..               进入上一级目录
cd .                进入当前目录
/bin              命令保存目录(普通用户就可以读取的命令)
/boot             启动目录,启动相关文件
/dev              设备文件保存目录
/etc              配置文件保存目录
/home             普通用户的家目录
/lib              系统库保存目录
/mnt              系统挂载目录
/media            挂载目录
/root             超级用户的家目录
/tmp              临时目录
/sbin             命令保存目录(超级用户才能使用的目录)
/proc             直接写入内存的
/sys              将内核的一些信息映射,可供应用程序所用
/usr              系统软件资源目录
/usr/bin/         系统命令(普通用户)
/usr/sbin/        系统命令(超级用户)
/var              系统相关文档内容
/var/log/         系统日志位置
/var/spool/mail/  系统默认邮箱位置
/var/lib/         默认安装的库文件目录 

提示符

[dragon@localhost ~]$
   ①       ②    ③ ④

①:dragon 代表 当前登录用户
②:localhost 代表 主机名
③:~ 代表 当前所在目录
    ~ 用户家目录;  /root 管理员;  /home/用户名 普通用户
④:$ 代表 当前用户身份
    $ 普通用户;  # 超级用户

linux简单操作

追加

ls -lR  可以看当前目录文件以及目录里面的文件
/opt  临时应用的SH 可以放置
bd 数据库          bak 备份
last  查看历史登录记录(用户名,时间,登录中断之类)
$0   文件本身      printf 格式化打印

常用操作

mkdir   t1        创建目录
mkdir   -p   t1/t2/t3      递归创建目录
rmdir   t1         删除目录(只能删除空目录)
rm -rf   t1    强制删除目录文件
rm  -r   t1   递归删除文件和目录   
touch  t1.py    创建空文件
touch  -t  20170612   t1    修改文件时间
cat   t1.py       查看文件内容
cat   -n    t1.py      查看文件内容并列出行号
more   t1.py      分屏显示文件内容   空格向上   b 向下      q 退出
head  t1.py   显示文件前几行(默认10行)
head  -n  20   文件名    显示文件前20 行
head   -n  -29  文件名   显示文件最后20行(不常用,有tail)
ln  -s   源文件    目标文件       创建链接文件(必须用绝对路径)
nano    文件名          纳米编辑器
man   ls     帮助命令             ls    --help     帮助命令
date        查看系统时间
    date  -s  20170220      设定日期
    date  -s  09:30:00      设定时间
du  -sh  目录名        统计目录大小
    -s-h  常见单位 
df  -h       查看系统内存(查看占用内存。以便为后安装程序做准备)
df   -hT      查看系统内存(T 类型)
netstat -an |grep ESTABLISHED | wc -l   查看服务器的连接数
source 文件名      执行这个文件(一般在改配置时使用)

cp 源文件 目标位置             (复制)
    或
cp 源文件 目标位置/目标名称      (复制并改名)

cp -r       复制目录
cp -p       连带文件属性一起复制
cp -d       若源文件是链接文件,则复制链接属性
cp -a       相当于 cp -pdr
mv 源文件 目标位置
mv /root/test /tmp//root/下的test文件移动到/tmp/目录下
mv /root/test /root/newtest   将/root/下的test文件改名为newtest

快捷键

ctrl +c      强行终止
ctrl   + l     清屏
tab         命令补全   文件目录名补全(常用)
反撤销  ctrl + r

权限位

-rw-r--r--. 1 root root 44736 718 00:38 install.log

权限位是十位
    第一位:代表文件类型
    -   普通文件
    d   目录文件
    l   链接文件
默认文件   644   默认目录  755     默认链接文件  777
最大  777   最小 000

    其他九位:代表各用户的权限
    (前三位=属主权限u  中间三位=属组权限g  其他人权限o)
    r   读   4
    w   写   2
    x   执行  1
    权限对文件的含义
    r:读取文件内容 如:cat、more、head、tail
    w:编辑、新增、修改文件内容 如:vi、echo 但是不包含删除文件
    x:可执行  /tmp/11/22/abc   ---------    

权限对目录的含义
    r:可以查询目录下文件名 如:ls
    w:具有修改目录结构的权限 如:touch、rm、mv、cp
    x:可以进入目录 如:cd

权限操作

chmod u+x aa      aa文件的属主加上执行权限
chmod u-x aa      aa文件的属主减去执行权限
chmod g+w,o+w aa  aa文件的属组和其他人加上写权限
chmod u=rwx aa    aa文件的用户权限改为所有权限(读+写+执行)

chmod 777 -R aa    给当前文件和子文件都给上权限
另一种表现方式:
chmod 755 aa      aa文件的属主权限是rwx,属组和其他人是rx
chmod 644 aa      aa文件的属主权限是rw,属组和其他人是r
chown 用户名 文件名      改变文件属主
chown user1 aa         user1必须存在
chown user1:user1 aa   改变属主同时改变属组

### 用户操作

useradd 用户名        功能描述:添加用户
userdel -r  用户名    功能描述: 连同家目录一起删除用户
id -u 检测当前用户的UID

passwd 用户名         功能描述:设定用户密码 

查找命令

whereis ls 查找命令所在位置

find 查找位置 -name 文件名
find / -name aabbcc    查找/目录下名为 aabbcc的文件

更多选项:
    -name 文件名      按照文件名查找
    -user 用户名      按照属主用户名查找文件
    -group 组名       按照属组组名查找文件
    -nouser          找没有属主的文件 (除了这三个文件:/proc、/sys、/mnt/cdrom)
    -size            按照文件大小k M  如:find / -size +50k
    -type            按照文件类型查找(f=普通  d=目录  l=链接)
    -perm            按照权限查找  如:find /root -perm 644
    -iname           按照文件名查找,不区分大小写
格式  
find   /    -name   index.html
find   /   -user   python
find   /   -group   python
find  /    -nouser
find  /  -type     f
find   /  -perm     777
find / -size +10M -a -size -20M  -exec rm -rf  {} \;
find / -size +10M -a -size -20M  -ok   rm -rf  {} \;
exec  直接执行不提示     OK  提示危险操作
grep 选项 '字串' 查找路径
grep  '字串'    路径
grep -i "root" /etc/passwd
    -v       反向选择
    -i       忽略大小写
    -n       显示行号

管道符

| 连接命令

ls -l /etc/ | more 分屏显示etc里面的目录和文件

cat -n install.log | grep “zip” 查看文档显示行号并且查找‘zip’字符

压缩和解压

tar.gz    
tar  -zcvf       p1.tar.gz     test1.py  install.log    压缩文件
tar   -zxvf     p1.tar.gz    解压缩  
tar  -ztvf    p1.tar.gz  查看不解压
tar   -zxvf   p1.tar.gz   -C   txt     定向解压缩
tar -zcPf   p1.tar.gz test1.py    压缩文件  
-P 保留备份文件的原有权限和属性。常用于备份
.tar.bz2
tar  -jcvf      txt.tar.bz2    txt    压缩目录
tar  -jxvf    txt.tar.bz2   解压缩
tar  -jtvf    txt.tar.bz2    查看不解压
tar   -jxvf    txt.tar.bz2   -C   /tmp    定向解压缩

关机重启

shutdown  -h  now     现在关机 
init  0  关机
shutdown   -r   now    重启系统 
reboot   重启系统 
init  6  重启

挂载

1. 物理连接    2.手动挂载  3.识别设备使用

   mount     光驱设备名   (/dev/sr0    /dev/cdrom)     挂载点  /media   /mnt  (手动建立挂载点      mkdir  /mnt/cdrom)

   mount   /dev/sr0    /media
   cd  /media/
1. 卸载    umount 
   umount  /dev/sr0   
   umount  /media   注意:退出挂载目录,才能卸载
fdisk  -l    查看设备名
mount -t iso9660 /dev/cdrom /mnt/cdrom

网络命令

ping     测试网络连通性
ping   -c   5   192.168.2.222  
ifconfig     查看网络设备    Linux  
ipconfig        windows  
ipconfig   /all

vim操作

图片1

vim编辑器
全屏幕纯文本编辑器
vi -> vim (加强版)

三种模式: 
命令模式                插入模式                 末行模式
                       a   i   o  s             Shitft + : 
                         ESC
a  追加   i 插入  o 打开  s 删除当前字符插入 
:wq  保存退出  :w 保存  :q 退出
:q! 不保存退出  :wq! 强制保存退出(root)
vim   test1.py       命令模式
vim   install.log 

光标移动     h  j   k   l             :n   行号   :300      gg  光标移动到第一行   G 移动最后一行
设置行号  :set nu    取消行号  :set nonu            
复制  yy      复制多行  nyy    
粘贴    p   
删除(剪切)单字符   x     删除多字符  nx 
删除(剪切)行  dd      删除多行 ndd            
dG   从当前行到最后全部删除
撤销  u        反撤销  ctrl + r
颜色开关(语法高亮) :syntax off  关闭   :syntax  on   开启 

手动建立配置文件
vim   ~/.vimrc        
 可以写   set nu    让每个文件都显示行号

查找功能
vim  install.log 
/i686   N  向下    n 向上   查找i686 
/root    查找root 

替换功能
vim  install.log
:%s/要替换内容/替换后内容/g    全文替换
:1,20s/要替换内容/替换后内容/g  范围替换

注释   #  
:21,30s/^/#/g    添加注释       :25,30s/^#//g   取消注释
:60,70s/^/\/\//g   添加注释      :65,70s/^\/\///g  取消注释 

软件包安装

   软件包分类
源码包:    
        优点: 特点  开源  自由定制
        缺点: 编译时间长,一旦报错,很难解决
二进制包:rpm包
        优点:安装速度快        简易
        缺点:自定义性差        依赖性
                a---->b---->c       树形依赖
                a---b----c---a      环形依赖            
库文件依赖       www.rpmfind.net

rpm手动安装

手动RPM命令安装
        1   包命名
            包名-版本号-发布次数-适合linux系统-硬件平台.rpm
        2   安装
            rpm  -ivh  包名(绝对路径)
                -i  安装  -v  显示详细信息      -h 显示进度
            rpm  -Uvh  包名
                -U  升级
        3   卸载
            rpm  -e  软件名    
        4   查询
            rpm  -q  软件名                查询包是否安装
            rpm  -qa  | grep  httpd         显示所有安装包
            rpm  -qi  软件名   查询包的信息      -p  未安装包
            rpm  -qip 包名    查询没有安装包的信息
                -i  information
            rpm  -ql  软件名   查询包中文件的安装位置
            rpm  -qlp  包名   查询没有安装的包,打算安装位置
                    -l  list
            rpm  -qf  系统文件名     查询系统文件属于哪个包

yum安装

yum  -y  install  软件名        安装         -y  自动回答yes
yum  -y  remove   软件名        删除
yum  -y  update   软件名        升级
yum  list                  查询所有可以安装的包
光盘作为yum源:
    1   cd  /etc/yum.repos.d/
        mv  CentOS-Base.repo  CentOS-Base.repo.bak

    2   mount /dev/sr0     /mnt/cdrom
    3   vim  /etc/yum.repos.d/CentOS-Media.repo
            baseurl=file:///mnt/cdrom/  指定yum源位置
            enabled=1                   yum源文件生效
            gpgcheck=0                  rpm验证不生效
yum  -y  install  gcc       (gcc是c语言编译器,不装gcc,源码包不能安装)

源码包安装(apache)

!!!  必须先安装gcc  !
apache解析php的效率特别高
1   远程传输工具传输apache到linux。
                httpd-2.2.29.tar.gz
2   安装
    1)解压
    2) cd  解压目录
    3)  查看安装文档
         INSTALL        README
    4)编译前准备
        ./configure  --prefix=/usr/local/apache2
        功能:
            1   检测系统环境,生成Makefile
            2   定义软件选项
    5)编译            
        make
    6)编译安装
        make  install
        报错判断:
            第一:安装过程是否停止
            第二:注意error  warning  no  等错误报警
3   启动
    /usr/local/apache2/bin/apachectl  start
    /usr/local/apache2/bin/apachectl  stop    
4   删除
    直接删除安装目录

用户和用户组管理

用户管理命令

一   用户管理命令      
        用户信息文件: /etc/passwd
    超级用户  uid 0
    普通不需要登录, uid 500 开始 人为用户(系统服务使用)
        影子文件:   /etc/shadow
        组信息文件:  /etc/group
    1   添加用户
        useradd  用户名        
        useradd  选项  用户名
useradd   -g    python   f1     添加f1 同时修改初始组为python
useradd   -G    python   f2    添加f2  同时添加f2为python组的附加组员
useradd   -c    "pyer"    f3    添加f3用户 同时注释
useradd    -d    /home/four    f4    添加用户f4同时修改家目录名
useradd    -s    /bin/nologin   f5    添加用户f5同时禁止登录
    2   设定密码            
        passwd  用户名
        passwd          改变当前用户密码
        passwd   root       改变root密码
    3   删除用户                
        userdel  -r  用户名
        -r  连带家目录一起删除
    4   添加组             
        groupadd  组名
    5   删除组             
        groupdel  组名        
    6   把已经存在的用户加入组         
        gpasswd  -a  用户名  组名        用户加入组
        gpasswd  -d  用户名  组名        把用户从组中删除

用户相关命令(id和切换)

id   用户名     查看用户相关ID号 ,显示用户的UID,初始组和附加组
su  - 用户名    切换用户身份 

ACL权限

1.给特殊身份的人设置权限 
  getfacl  文件名  查看文件的acl权限
  setfacl   -m   u:用户名:权限   文件名    设置用户的ACL权限
  ls -l    查看有没有 +
  getfacl   test1.py  

  setfacl   -m   g:组名:权限     文件名     设置组的ACL权限 
  getfacl 文件名    查看权限

  setfacl  -x  u:f2   test1.py   删除f2用户ACL权限
  setfacl  -b  文件名   删除所有ACL权限

2.对目录设置ACL权限
  1)对目录本身设置ACL权限
  setfacl  -m  u:f2:rwx    目录名   

  2)对目录和目录内文件设置ACL权限 
  setfacl  -m  u:f2:rwx   -R   目录名     递归设置 

  3)对未来建立的文件设置ACL权限 
  setfacl  -m   d:u:f2:rwx    -R   目录名
  -R  递归

 !!! 如果给目录赋予ACL权限,23 命令都要输入 !!!

输出重定向

ls   >  name.list
ls  -l  > name.list   覆盖 
ls      >>   name.list   追加

进程和服务管理

进程管理三个主要任务:
        判断服务器健康状态
        查看所有正在运行的进程
        强制终止进程

进程查看系统运行状况

1   ps  aux     查看当前系统所有运行的进程
    -a  显示前台所有进程
    -u  显示用户名
    -x  显示后台进程

    user: 用户名
    pid:    进程id。PID         init  系统启动的第一个进程
    %CPU    cpu占用百分比
    %MEM    内存占用百分比
    VSZ 虚拟内存占用量     KB
    RSS 固定内存占有量
    tty 登录终端        本地终端        远程终端        
    stat    状态  S:睡眠 D:不可唤醒 R:运行      T:停止  
    start   进程触发时间
    time    占用cpu时间
    command  进程本身
2   pstree       查看进程树
3   top  (动态查看)
    第一行:    系统当前时间      系统持续时间      登录用户        1,5,15分钟之前的平均负载
    第二行:进程总数
    第三行:CPU占用率      %id     空闲百分比
    第四行:内存使用:   总共      使用      空闲      缓存
    第五行:swap使用
    操作命令      M  内存排序
                P   CPU排序
                q   退出
4    w  查看系统运行情况和登录用户(静态查看)
5   进程管理        终止进程
    kill  -9  PID       结束单个进程
    -9  强制
    killall  -9  进程名        终止进程树


    pkill  -9  -t  终端号  把某个终端登录的用户踢出
    例:pkill  -9  -t tty1        把本地登录终端1登录用户踢出

服务管理

1   分类
    1)系统默认安装的服务     安装二进制包的服务
    2)源码包安装的服务

(一)系统默认安装的服务
    1   确定服务分类
        chkconfig  --list       查看服务的自启动状态
        运行级别:0-6
        0   关机
        1   单用户模式
        2   不完全多用户,不包含NFS服务
        3   完全多用户   字符界面
        4   未分配
        5   图形界面
        6   重启
      init  0   关机          init  6 重启
      runlevel          查询系统当前运行级别
      vi  /etc/inittab
      id:3:initdefault:     定义系统默认运行级别
    2   系统默认安装的服务器管理        
        1)启动
            /etc/rc.d/init.d/服务  start|stop|restart|status
            例:  /etc/rc.d/init.d/httpd  start
            service   服务名   start|stop|restart|status
        2)自启动   
          chkconfig  --list  查看
          chkconfig  --level  245  服务名  on|off 
 !!! 245 都可以   尽量不要写3,因为是系统服务 !!!
        推荐用下面这种方法
            vi  /etc/rc.local---->/etc/rc.d/rc.local
            /etc/rc.d/init.d/httpd  start
(二)源码包安装的服务
    1)手动管理  绝对路径启动   不可以状态查询
        /usr/local/apache2/bin/apachectl  start
    2)开机自启动
        vi /etc/rc.local
        /usr/local/apache2/bin/apachectl  start

计划任务

crontab  -e     编辑定时任务
        * * * * *  命令(命令一般是绝对路径)
        第一个*:一小时中第几分钟      0-59
        第二个:一天中第几个小时       0-23
        第三个:一个月中第几天         1-31
        第四个:一年第几个月          1-12
        第五个:一周中星期几          0-6     
例:      
    5   3  *  5,7,10  *  命令   5,710月每天三点5分执行
    */10  *  *  *  1-3   命令   星期一到星期三每隔10分钟执行
命令: 开启/关闭服务   service sshd start     
                    service sshd stop                               /usr/local/apache2/bin/apachectl restart
       备份文件/目录   cp  -r   /root/bbs   /tmp
crontab  -l     查看系统定时任务
crontab  -r     删除所有定时任务

注意事项:
选项都不能为空,必须填入,不知道的值使用通配符*表示任何时间 
每个时间字段都可以指定多个值,不连续的值用,间隔,连续的值用-间隔
间隔固定时间执行书写为*/n格式 
命令应该给出绝对路径 
    星期几何第几天不能同时出现
    最小时间范围是分钟,最大时间范围是月

网络配置

IP设置 

ifconfig   eth0   192.168.2.251     临时IP        
setup        设置永久IP  关闭防火墙
service   network   restart      (/etc/rc.d/init.d/network  restart)    重启网络服务

网卡信息文件  vim  /etc/sysconfig/network-scripts/ifcfg-eth0   
  8  IPADDR=192.168.2.251     IP地址
  9  NETMASK=255.255.255.0      掩码
 10  GATEWAY=192.168.2.1        网关
     BOOTPROTO=none         是否自动获取IP。none:不生效   static:手动    dhcp:动态获取IP
     DEVICE=eth0                网卡设备名
     ONBOOT=yes                     网卡开机启动

主机名修改 
  hostname    查看主机名 
  hostname   lampbrother   临时修改主机名
  vim  /etc/sysconfig/network      永久修改主机名
     HOSTNAME=lampbrother

DNS设置
  setup  设置DNS
  vim  /etc/resolv.conf
  nameserver  114.114.114.114

网络命令
  vim /etc/services   查看网络端口
  ifup   eth0   开启网卡
  ifdown  eth0   关闭网卡
  netstat  -an   查看网络状态
  netstat  -tlun   查看查看tcp和udp协议监听端口
    t  tcp   u  udp   l  listen 
  netstat  -rn    查看网关(默认路由default)
  route  del   default   gw   192.168.2.1   删除默认网关
  route   add  default   gw   192.168.2.1  添加默认网关
  ping  192.168.2.250       ICMP协议   测试网络连通协议    
  ping   -c  5  -s   10000   192.168.2.250   -s   发送数据大小  

VSFTP服务

一   文件服务器简介
    ftp:在内网和公网使用。   服务器:windows,linux   客户端:        windows,linux
    服务器 用 s 表示    客户端用 c 表示
1   ftp软件
    linux:  wu-ftp      早期,安全一般
    proftp      增强ftp工具
    vsftp       安全,强大
    windows IIS     windows下网页搭建服务,可以搭建ftp服务
    Serv-U      专用ftp服务器
2   原理
    开启  21      命令传输端口
    20      数据传输端口
3   ftp的用户
    1ftp允许登录用户 就是系统用户  使用密码也是系统密码
                    上传位置:/home/家目录
    2)匿名用户  anonymous   密码:  空  
                    下载位置:/var/ftp/pub
二   安装
    mount /dev/sr0 /media
    cd /media/Packages/
    yum -y install  vsftpd  
三   相关文件(了解)
    /etc/vsftpd/ftpusers    用户访问控制文件(不是必要步骤)
    /etc/vsftpd/vsftpd.conf     配置文件
四   配置文件配置
      vim    /etc/vsftpd/vsftpd.conf
    1主机相关配置
        listen_port=21                   监听端口
        connect_from_port_20=YES        数据传输端口
        ftpd_banner=                    欢迎信息
    2   匿名用户登录          在linux下识别为  ftp  用户
        nonymous_enable=YES         允许匿名用户登录
    3   本地用户
        local_enable=YES            允许系统用户登录
        write_enable=YES            允许上传
        local_umask=022         默认上传权限
    4   限制用户访问目录
        chroot_local_user=YES       所有用户限制在家目录下
    5   关闭防火墙和selinux
        关闭防火墙   setup
        关闭 selinux
            vim  /etc/selinux/config
            SELINUX = disabled  
    6  重启生效
       reboot   重启
五   ftp客户端使用
    1、使用windows窗口
        ftp://用户名@IP
        匿名用户可以不用用户名和密码
        ftp://@ip
    2、使用第三方工具登录
        FileZilla
实验  限制用户目录权限
vim /etc/vsftpd/vsftpd.conf
96   chroot_local_user = YES
service vdftpd restart   重启服务
FileZilla  登录

Samba服务器

文件共享服务
windows  ->  linux 
(一)端口
    smbd:为clinet提供资源访问      tcp  139  445
    nmbd:提供netbios主机名解析     udp  137  138
(二)安装 ISO
    mount /dev/sr0  /media
    yum -y install samba
    samba-common        主要配置文件
    samba-client        客户端文件
(三)修改配置文件
    安全级别     share     无密码
                user      添加samba用户设置samba密码   
                server    需要服务器做解析

实验1: 安全级别  share    共享目录 /movie    
    1)建立目录/movie
       mkdir   /movie
       chmod  777  /movie
    2)修改配置文件
    vim  /etc/samba/smb.conf
    101         security = share
    263 [movie]    (这步是添加共享文件)
    264         comment = dianying   (说明)
    265         path = /movie       (路径)
    266         browseable = yes     (目录对用户可见)
    267         guest ok = yes        (访问)
    268         writable = yes      (可写)
    3)启动服务  测试
    关闭防火墙  关闭selinux
     vim  /etc/selinux/config
         SELINUX = disabled 
    service  smb  start
    service  nmb  start
    netstat  -tlun   (查看端口是否出现)
  测试     
      \\192.168.2.251
  网络驱动映射
      进入共享文件,右键,网络驱动映射,就可以在我的电脑里查看信息

实验2:安全级别  user     共享  /pub  所有用户能访问上传              /soft  只有aa能访问上传
1)建立目录
  mkdir  /pub
  mkdir  /soft
  chmod  777  /pub
  chmod  700 /soft
  useradd  aa
  passwd  aa
  chown    aa   /soft
2)修改配置文件
  vim  /etc/samba/smb.conf
  101         security = user
  263 [pub]   
  264         comment = public
  265         path = /pub
  266         browseable = yes
  267         writable = yes
  268 
  269 [soft]
  270         comment = software
  271         path = /soft
  272         browseable = yes
  273         writable = yes
3)添加samba用户
  smbpasswd   -a    aa
  smbpasswd   -a    f1
  pdbedit  -L    查看samba用户
4)重启服务  测试
  service  smb  restart
  service  nmb  restart
测试      f1 登录     
    windows 界面登录 
        CMD   net  use  *   /del    删除连接缓存
        aa  登录

SSH安全登录(必会)

联机加密工具   非对称钥匙对加密
默认(不用改):   安装   openssh
                开机自启 service  sshd restart
配置文件     vim  /etc/ssh/sshd.config

远程连接
  ssh    root@192.168.2.251  

网络复制  scp   
  scp   root@192.168.2.140:/root/httpd-2.2.29.tar.gz    /root     下载文件 
  scp  hello.list   root@192.168.2.140:/root/      上传文件
  scp   -r   root@192.168.2.140:/etc/     /root/    下载目录
  scp  -r   /etc   root@192.168.2.140:/root/      上传目录 
SSH密钥登录
   ssh-keygen -t  rsa -P ''   (必须要写)
   -P  表示密码
   cd .ssh  进入自动生成的隐藏目录
   cp  id_rsa.pub   authorized_keys  必须要写(文件49行要求)
   chmod 600    authorized_keys
客户端:
  下载私钥      登录测试
  设置 /etc/ssh/sshd_config  禁止使用密码登录(慎用!!)
  66 PasswordAuthentication no
  重启sshd服务
  service  sshd restart

lamp环境搭建

1配置yum源
mount /dev/sr0 /media
 vim /etc/yum.repos.d/CentOS-Media.repo 
[c6-media] 
name=CentOS-$releasever - Media
baseurl=file:///media/   * 修改为光盘挂载点
gpgcheck=0
enabled=1  * 改为1意为启用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
2)剪切/etc/yum.repos.d/CentOS-Base.repo
  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
3)依次安装gcc、gcc-c++
 yum -y install gcc  gcc-c++
关闭防火墙 和 selinux
setup    或
iptables  -F
iptables  -X
iptables  -Z
vim /etc/selinux/config
    SELINUX=disabled
复制源码包 解压缩
mv  lamp    /lamp
vim   tar.sh
    cd /lamp
    /bin/ls *.tar.gz > ls.list
        for TAR in `cat ls.list`
     do
            /bin/tar -zxf $TAR
     done
    /bin/rm ls.list

chmod  777  tar.sh

./tar.sh 查看磁盘空间(产看安装软件有没有足够的空间)

安装辅助软件包

安装libxml2
yum -y install python-devel         必须安装

 cd /lamp/libxml2-2.9.1
 ./configure --prefix=/usr/local/libxml2/
 make 
 make install

 yum  install  -y  libxml2-devel    如果报错,安装此包后再尝试安装
安装libmcrypt
cd /lamp/libmcrypt-2.5.8
 ./configure --prefix=/usr/local/libmcrypt/
 make 
 make install
安装libltdl
cd /lamp/libmcrypt-2.5.8/libltdl
 ./configure --enable-ltdl-install
 make
 make install
安装mhash
cd /lamp/mhash-0.9.9.9
./configure 
make
make install
安装mcrypt
cd /lamp/mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib  \
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make
make install
安装zlib
cd /lamp/zlib-1.2.3         
./configure
 make
 make install
安装libpng
 cd /lamp/libpng-1.2.31
 ./configure --prefix=/usr/local/libpng
 make
 make install
安装jpeg6
 mkdir /usr/local/jpeg6 
 mkdir /usr/local/jpeg6/bin
 mkdir /usr/local/jpeg6/lib
 mkdir /usr/local/jpeg6/include
 mkdir -p /usr/local/jpeg6/man/man1
 ###目录必须手工建立
  cd /lamp/jpeg-6b
 ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
 make   
 make install
安装freetype
 cd /lamp/freetype-2.3.5
./configure --prefix=/usr/local/freetype/
 make
 make install

安装APACHE

cp  -r  /lamp/apr-1.4.6  /lamp/httpd-2.4.7/srclib/apr
cp  -r  /lamp/apr-util-1.4.1  /lamp/httpd-2.4.7/srclib/apr-util

cd /lamp/pcre-8.34  
./configure && make && make install

 cd /lamp/httpd-2.4.7
 ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared
 make
 make install

 启动服务
 /usr/local/apache2/bin/apachectl start
ps  aux | grep httpd
netstat –tlun | grep :80

测试  打开浏览器   192.168.2.251   有 IT works

设置开机自启动
vim  /etc/rc.local
/usr/local/apache2/bin/apachectl start
安装ncurses
yum -y install ncurses-devel
cd /lamp/ncurses-5.9
./configure --with-shared --without-debug --without-ada --enable-overwrite
make 
make install
#安装cmake和bison
yum -y install cmake
yum -y install bison

MySQL服务

安装服务
yum -y install ncurses-devel
yum -y install cmake
yum -y install bison

 groupadd mysql
 useradd -g mysql mysql

 cd /lamp/mysql-5.5.48
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  -DEXTRA_CHARSETS=all   -DDEFAULT_CHARSET=utf8    -DDEFAULT_COLLATION=utf8_general_ci    -DWITH_MYISAM_STORAGE_ENGINE=1   -DWITH_INNOBASE_STORAGE_ENGINE=1    -DWITH_MEMORY_STORAGE_ENGINE=1  -DWITH_READLINE=1    -DENABLED_LOCAL_INFILE=1   -DMYSQL_USER=mysql  -DMYSQL_TCP_PORT=3306
make  &&  make  install

----------------------------------------------------------

配置服务
cd /usr/local/mysql/
chown -R mysql .
chgrp -R mysql .
#修改mysql目录权限
/usr/local/mysql/scripts/mysql_install_db --user=mysql
#创建数据库授权表,初始化数据库
chown -R root .
chown -R mysql data
#修改mysql目录权限

cp support-files/my-medium.cnf /etc/my.cnf
#复制mysql配置文件

二次授权
/usr/local/mysql/scripts/mysql_install_db --user=mysql

-------------------------------------------------

启动MySQL服务:
1.用原本源代码的方式去使用和启动mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
2.重启以后还要生效:
vim /etc/rc.local
/usr/local/mysql/bin/mysqld_safe --user=mysql &
3.设定mysql密码
/usr/local/mysql/bin/mysqladmin -uroot password 123456
    清空历史命令  history  -c

 /usr/local/mysql/bin/mysql -u root -p 
 mysql> \s    查看配置
 mysql> quit  退出

安装PHP

yum -y install "libtool*"

cd /lamp/php-7.0.7
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs  --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-mcrypt=/usr/local/libmcrypt/   --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets  --with-pdo-mysql=/usr/local/mysql --with-gd   --without-pear

make   &&  make  install

-------------------------------------------------------
生成php.ini
mkdir /usr/local/php/etc/
cp /lamp/php-7.0.7/php.ini-production /usr/local/php/etc/php.ini  

vim /usr/local/apache2/etc/httpd.conf
 AddType application/x-httpd-php .php .phtml 
 AddType application/x-httpd-php-source .phps

  重启Apache服务:/usr/local/apache2/bin/apachectl stop
                  /usr/local/apache2/bin/apachectl start

vim /usr/local/apache2/htdocs/test.php    
    <?php
        phpinfo();
 ?>

 测试  浏览器   192.168.2.43/test.php
添加环境变量
vim  /etc/profile

export PATH="/usr/local/php/bin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/apache2/bin:$PATH"

source  /etc/profile

php -v
mysql -u root -p
apachectl  -v

收尾

安装openssl

yum -y install openssl-devel   必须安装
cd /lamp/php-7.0.7/ext/openssl
mv config0.m4 config.m4                否则报错:找不到config.m4
/usr/local/php/bin/phpize 
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config 
make
make install

vim  /usr/local/php/etc/php.ini
722  extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
#打开注释,并修改
extension="openssl.so";
apachectl  stop
apachectl  start
安装phpMyAdmin
cp -r /lamp/phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
cd /usr/local/apache2/htdocs/phpmyadmin
cp config.sample.inc.php config.inc.php
vim config.inc.php
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'http';

测试  浏览器 192.168.2.43/phpmyadmin/index.php
root
123456

安装memcache服务

1. Linux下安装操作:
    1.1 #安装memcache扩展模块

    unzip  pecl-memcache-php7.zip
        cd  pecl-memcache-php7
        /usr/local/php/bin/phpize
       ./configure --with-php-config=/usr/local/php/bin/php-config
        make && make install

       修改/usr/local/php/etc/php.ini
       extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
       extension="memcache.so";
       #重启apache,通过浏览器 在phpinfo中可以找到这个模块

       1.2 #安装缓存服务 memcached-1.4.4-3.el6.i686.rpm

       mount /dev/sr0 /mnt/cdrom/     挂载ISO镜像文件
       yum -y install memcached 
       useradd memcache    添加memcache用户
       memcached -d -m 128 -l 127.0.0.1 -p 11211 -u memcache  启动服务
       chkconfig memcached on  设置开机自启动

Apache服务器配置

一   简介
        1   www:world  wide  web    
            http    协议: 超文本传输协议
            HTML语言: 超文本标识语言
        2   URL:统一资源定位      协议+域名:端口+网页文件名
                http://www.sina.com.cn:80/admin/index.html
二   安装
    1、lamp源码安装                 
    2、二进制包安装    yum安装
            httpd
            mysql
            mysql-server        
            php
            php-devel
            php-mysql

三   相关文件
    apache配置文件
        源码包安装:/usr/lcoal/apache2/etc/httpd.conf
                   /usr/local/apache2/etc/extra/*.conf      
        二进制包安装:/etc/httpd/conf/httpd.conf
    默认网页保存位置:
        源码包:/usr/local/apache2/htdocs/
        二进制包安装:/var/www/html/
    日志保存位置
        源码包:/usr/local/apache2/logs/
        二进制包: /var/log/httpd/
         二进制包默认使用日志处理程序   /var下都会轮替   源码包才                 需要设置
日志处理:
  1日志切割  apache自带日志里面自带日志切割
  2日志轮替  linux自带日志管理logrorate.conf  
          加入/usr/local/apache2/logs/access_log{
                                daily
                                rotate  30
                        }
          logrotate -f /etc/logrotate.conf

             所有日志都要进行日i www! he htdocs bu yiyang! 
志轮替

    四   配置文件
vim /root/.bashrc
   alias sta=’/usr/local/apache2/bin/apachectl start’
   alias sto=’/usr/local/apache2/bin/apachectl stop’

source /root/.bashrc
        注意:apache配置文件严格区分大小写
        1   针对主机环境的基本配置

    31  ServerRoot      apache主目录          
    52  Listen          监听端口              
        LoadModule      加载的相关模块

        User
        Group           用户和组
        ServerAdmin     管理员邮箱
        ServerName      服务器名(没有域名解析时,使用临时解析)
        ErrorLog "logs/error_log    错误日志
        CustomLog "logs/access_log" common      正确访问日志
        DirectoryIndex index.html index.php     默认网页文件名,优先级顺序
        Include  etc/extra/httpd-vhosts.conf        子配置文件中内容也会加载生效

        2   主页目录及权限  

            DocumentRoot "/usr/local/apache2//htdocs"          
                主页目录

            <Directory "/usr/local/apache2//htdocs">                 
                #Directory关键字定义目录权限

                Options Indexes FollowSymLinks                    
                    #options 
                        None:没有任何额外权限
                        All: 所有权限
                        Indexes:浏览权限(当此目录下没有默认网页文件时,显示目录内容)
                        FollowSymLinks:准许软连接到其他目录
                AllowOverride None
                    #定义是否允许目录下.htaccess文件中的权限生效
                        None:.htaccess中权限不生效
                        All:文件中所有权限都生效
                        AuthConfig:文件中,只有网页认证的权限生效。

                Require all granted 访问控制列表
403错误                   404错误  网页找不见

        3   目录别名  扩展网站目录,增加服务器   
子配置文件名  etc/extra/httpd-autoindex.conf

Alias /www/ "/usr/local/apache2//www/"

<Directory "/usr/local/apache2//www">
                Options Indexes MultiViews          
                AllowOverride None
                Require all granted                     
</Directory>

mkdir /usr/local/apache2/www/
浏览器测试 http://192.168.1.253/www/
4   虚拟主机        
        1)分类
          基于IP的虚拟主机: 一台服务器,多个IP,搭建多个网站
         基于端口的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网络使用不同端口访问
         基于名字的虚拟主机: 一台服务器,一个ip,搭建多个网站,每个网站使用不同域名访问
        2)步骤:
            ①   解析试验域名
                www.sina.com
                www.sohu.com
C:\WINDOWS\system32\drivers\etc\hosts       
    ②   规划网站主目录
        /share/sina--------------www.sina.com
        /share/sohu ------------ www.sohu.com
    ③   修改配置文件
        vim  /usr/local/apache2/etc/httpd.conf
            Include etc//extra/httpd-vhosts.conf
                #打开虚拟主机配置文件
vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/share/sina">
           Options Indexes
           AllowOverride None
Require all granted 
</Directory>

<Directory "/share/sohu">
           Options Indexes
               AllowOverride None
          Require all granted 
</Directory>

<VirtualHost 192.168.150.253>
#注意,只能写ip
           ServerAdmin webmaster@sina.com
                #管理员邮箱
           DocumentRoot "/share/sina"
                #网站主目录
           ServerName www.sina.com
                #完整域名
               ErrorLog "logs/sina-error_log"
                #错误日志
               CustomLog "logs/sina-access_log" common
                #访问日志
</VirtualHost>

<VirtualHost 192.168.150.253>
           ServerAdmin webmaster@sohu.com
           DocumentRoot "/share/sohu"
           ServerName www.sohu.com
          ErrorLog "logs/sohu.com-error_log"
          CustomLog "logs/sohu.com-access_log" common
</VirtualHost>

5   rewrite 重写功能            
在URL中输入一个地址,会自动跳转为另一个
        1)域名跳转  www.sina.com  ------>  www.sohu.com
            开启虚拟主机,并正常访问 

[root@localhost ~]# vim /usr/local/apache2/etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
#打开重写模块,记得重启apache
        修改配置文件,使sina目录的.htaccess文件生效
[root@localhost etc]# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

<Directory "/share/sina">
           Options Indexes FollowSymLinks
           AllowOverride All
           Require all granted 
        </Directory>

vim  /share/sina/.htaccess
RewriteEngine on
    #开启rewrite功能
RewriteCond %{HTTP_HOST} www.sina.com
            把以www.sina.com  开头的内容赋值给HTTP_HOST变量
RewriteRule  .*   http://www.sohu.com
    .*  输入任何地址,都跳转到http://www.sohu.com

2)网页文件跳转 
vim  /share/sina/.htaccess
RewriteEngine on
RewriteRule index(\d+).html index.php?id=$1
    #输入index(数值).html时,跳转到index.php文件,同时把数值当成变量传入index.php

Apache执行停止改名

命令别名  alias

vim /root/.bashrc

alias sto='/usr/local/apache2/bin/apachectl stop'

alias sta='/usr/local/apache2/bin/apachectl start'

source  /root/.bashrc

sto

sta

目录别名 扩容 增加服务目录

1)建立扩容目录

mkdir  /usr/local/apache2/www/

2)修改主配置文件 

vim  /usr/local/apache2/etc/httpd.conf

453 Include etc//extra/httpd-autoindex.conf

3)修改子配置文件

vim  /usr/local/apache2/etc/extra/httpd-autoindex.conf

     29 Alias /www/ "/usr/local/apache2/www/"
     30 
     31 <Directory "/usr/local/apache2/www/">
     32     Options Indexes
     33     AllowOverride None
     34     Require all granted
     35 </Directory>

4)重启服务  测试
sto
sta
测试  192.168.2.251/www/

虚拟主机

步骤:1)域名解析       文件解析
C:\Windows\System32\drivers\etc\hosts   添加下面两个网址
192.168.2.251  www.sina.com
192.168.2.251  www.sohu.com

2)网站目录规划  (想显示内容要在里面创建index.html ,里面写入中文会乱码,英文正常显示)
mkdir  -p  /share/sina/
mkdir   /share/sohu/

3)修改主配置文件
vim  /usr/local/apache2/etc/httpd.conf
465 Include etc//extra/httpd-vhosts.conf

4)修改子配置文件
vim  /usr/local/apache2/etc/extra/httpd-vhosts.conf
     23 <Directory "/share/sina/">
     24     Options Indexes
     25     AllowOverride None
     26     Require all granted
     27 </Directory>
     28     
     29 <Directory "/share/sohu/">
     30    Options Indexes 
     31    AllowOverride None
     32    Require all granted
     33 </Directory>
     35 <VirtualHost 192.168.2.251>
     36     ServerAdmin webmaster@sina.com
     37     DocumentRoot "/share/sina/"
     38     ServerName www.sina.com
     39     ErrorLog "logs/sina-error_log"
     40     CustomLog "logs/sina-access_log" common
     41 </VirtualHost>
     42 
     43 <VirtualHost 192.168.2.251>
     44     ServerAdmin webmaster@sohu.com
     45     DocumentRoot "/share/sohu/"
     46     ServerName www.sohu.com
     47     ErrorLog "logs/sohu-error_log"
     48     CustomLog "logs/sohu-access_log" common
     49 </VirtualHost>

5)重启服务  测试

sto
sta
测试    www.sina.com    www.sohu.com

重定向

rewrite  重写/重定向
www.sina.com  ->  www.sohu.com  

1)修改主配置文件
vim  /usr/local/apache2/etc/httpd.conf
147 LoadModule rewrite_module modules/mod_rewrite.so

2)修改子配置文件
vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
     23 <Directory "/share/sina/">
     24     Options Indexes FollowSymLinks
     25     AllowOverride All
     26     Require all granted
     27 </Directory>

3)建立权限文件.htaccess
vim  /share/sina/.htaccess
      1 RewriteEngine on
      2 RewriteCond %{HTTP_HOST} www.sina.com
      3 RewriteRule .*  http://www.sohu.com
   .* 代表任意所有,要从上往下看,这里.*代表sina.com
4) 重启服务  测试
    sto 
    sta 
测试  www.sina.com   -> www.sohu.com

网页跳转

1)修改权限文件
vim /share/sina/.htaccess
      1 RewriteEngine on
      2 RewriteRule index(\d+).html  index.php?id=$1

2)建立index.php文件

vim /share/sina/index.php
      1 <?php
      2         echo "hello rewrite!";
      3 ?>

3)重启服务测试
sto
sta
测试  www.sina.com/index5.html

LNMP环境搭建-Nginx服务

LNMP环境搭建

准备工作: 恢复初始化安装      设置IP      关闭防火墙   
                   配置光盘yum源
安装步骤:1.解压缩  
     tar   -zxvf   lnmp1.2-full.tar.gz
            ls
2.进入解压目录
    cd    lnmp1.2-full
3.安装
    ./install.sh  lnmp

环境目录和文件:

    Nginx 目录: /usr/local/nginx/
    MySQL 目录 : /usr/local/mysql/
    MySQL数据库所在目录:/usr/local/mysql/var/
    PHP目录 : /usr/local/php/
    PHPMyAdmin目录 : /home/wwwroot/default/phpmyadmin/ 
    默认网站目录 : /home/wwwroot/default/
    Nginx日志目录:/home/wwwlogs/

    Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
    MySQL配置文件:/etc/my.cnf
    PHP配置文件:/usr/local/php/etc/php.ini

管理命令
lnmp   start  |  restart  | stop   | status
lnmp  nginx  start  |  stop  |  restart   |  status

配置文件  
ulimit  -a 
ulimit   -n   51200
    检查nginx配置文件语句错误
    /usr/local/nginx/sbin/nginx -t

    平滑重启nginx进程
    pkill -HUP nginx

虚拟主机

1)域名解析  文件解析

C:\Windows\System32\drivers\etc\hosts

    192.168.2.251    www.sina.com
    192.168.2.251    www.sohu.com

2)网站目录规划
mkdir   /home/wwwroot/sina/
mkdir   /home/wwwroot/sohu/
vim  /home/wwwroot/sina/index.html
vim  /home/wwwroot/sohu/index.html

3)修改配置文件
vim  /usr/local/nginx/conf/nginx.conf

 66         listen 80; 

4)建立虚拟主机文件
vim  /usr/local/nginx/conf/vhost/v.conf

      1 server {
      2         listen 80;
      3         server_name www.sina.com;
      4         index index.html  index.htm  index.php;
      5         root /home/wwwroot/sina/;
      6 
      7         include enable-php.conf;
      8 }
      9 server {
     10         listen 80;
     11         server_name www.sohu.com;
     12         index index.html  index.htm  index.php;
     13         root /home/wwwroot/sohu/;
     14 
     15         include enable-php.conf;
     16 }

5) 重启服务  测试
pkill -HUP nginx  
测试  www.sina.com   www.sohu.com

列表页显示

vim /usr/local/nginx/conf/vhost/v.conf

 加入  autoindex   on;      开启列表页显示功能 (两个里面都加)

cd /home/wwwroot/sina      mv index.html a.html(需要改名)

状态监控模块添加

vim  /usr/local/nginx/conf/vhost/v.conf

      9 server {
     10         listen 80;
     11         server_name www.sohu.com;
     12         index index.html  index.htm  index.php;
     13         root /home/wwwroot/sohu/;
     14         location /nginx_status{
                stub_status on;
                access_log  off;
                }
     15         include enable-php.conf;
     16 }

测试   www.sohu.com/nginx_status

rewrite重写、重定向

域名跳转   www.sina.com  ->  www.sohu.com

vim  /usr/loca/nginx/conf/vhost/v.conf
    server
            {
                    listen       80;
                    server_name www.sina.com;
                    index index.html index.htm index.php;
                    root  /home/wwwroot/sina;

                    if ($http_host = www.sina.com) {
                            rewrite  (.*)  http://www.sohu.com  permanent;
                    }
            }
重启服务  测试
pkill -HUP nginx
测试   www.sina.com  -> www.sohu.com

网页文件跳转

1)修改配置文件
vim  /usr/local/nginx/conf/vhost/v.conf
      1 server {
      2         listen 80;
      3         server_name www.sina.com;
      4         index index.html  index.htm  index.php;
      5         root /home/wwwroot/sina/;
      6         rewrite  index(\d+).html  /index.php?id=$1 last;
      7         include enable-php.conf;
      8 }       

2)建立 php文件
vim /home/wwwroot/sina/index.php
      1 <?php
      2         echo "hi Nginx rewrite";
      3 ?>

3)重启服务 测试
pkill -HUP nginx
测试  www.sina.com/index5.html

代理负载均衡(反向代理)

准备工作:   S   192.168.2.251      Nginx       负载均衡               S1   192.168.2.102    Nginx       网站解析
            S2    192.168.2.191   Nginx       网站解析

实验步骤:
1)修改S 192.168.2.251  配置文件
vim /usr/local/nginx/conf/nginx.conf
     63 upstream myweb1 {
     64         server 192.168.2.102:80;
     65         server 192.168.2.191:80;
     66 }       
     67 server {
     68         listen 80;
     69         server_name www.sohu.com;
     70         location / {
     71         proxy_pass http://myweb1;
     72         proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
     73         proxy_set_header Host $host; 
     74         proxy_set_header X-Forwarded-For $remote_addr; 
     75 }                
     76 } 
     77 }

2)修改S1 192.168.2.102        关闭虚拟主机
关闭虚拟主机: cd /usr/local/nginx/conf/    vim nginx.conf            
 # include vhost/*.conf;   检测这个有没有注释或者删了就行

cd   /home/wwwroot/default/ 
vim index.html
S111111111111

3)修改S1 192.168.2.191        关闭虚拟主机
cd   /home/wwwroot/default/ 
vim index.html
S2222222222

4) 重启S 服务   测试
pkill -HUP nginx  
测试   www.sohu.com      刷新   S1    S2

Shell 编程

shell的作用和历史

img

Shell的作用 -- 命令解释器,“翻译官”
vim  /etc/shells      shell文件(里面有好多不同的shell)

shell 常用功能

自动补全    Tab
命令历史     history 
  history  -w   同步历史命令/写入隐藏文件 
  history  -c    清除历史记录 

!n:执行历史记录中的第n条命令
!str:执行历史记录中以“str”开头的命令
vim   /etc/profile  
 48 HISTSIZE=1000
 为使用频率较高的复杂命令行设置简短的调用名称
存放位置:~/.bashrc
vim   /root/.bashrc

查看命令别名
格式:alias  [别名]

设置命令别名
执行:alias  别名='实际执行的命令'
alias   ls='ls  -lha'    设置之后需要执行此文件,否则不生效
ls  

取消已设置的命令别名 
格式:unalias  别名
unalias   ls

输入重定向
man  wc
wc   <   install.log

输出重定向
ls  >   bak.list
ls  -l  >>  bak.list

标准错误输出
lss  2>  bak.list
lss  2>>  bak.list

重定向标准输出和标准错误
ls   &>   /dev/null          黑洞设备文件(空设备文件)
lss  >>  a.txt   2>&1         重定向标准错误
2>&1  算是一个判断条件,如果前面正确,则无用,如果错误,就会把错误信息也输入到文件里

img

管道符    |
    netstat -an | grep ESTABLISHED | wc -l     统计与服务器的连接数量

Shell变量的应用

Shell变量的种类

用户自定义变量:由用户自己定义、修改和使用

环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改

预定义变量:Bash预定义的特殊变量,不能直接修改

位置变量:通过命令行给程序传递执行参数

变量的赋值与引用

定义新的变量
变量名要以英文字母或下划线开头,区分大小写
格式:变量名=变量值

查看变量的值
格式:echo  $变量名

查看所有变量:set

清除变量
unset 变量名

定义变量                                                
Var=lamp
echo  ${var}3.0

""    ''   ``      单引号 双引号 反引号 对比
    DAY=xingqier
    echo $DAY         显示xingqier
    echo  "$DAY"     显示xingqier
    echo '$DAY'		  显示$DAY
    echo `$DAY`          执行 xingqier  (必须是命令。否则报错)

    unset DAY
    DAY=ls
    echo `$DAY`  执行ls

环境变量赋值
设置变量的作用范围
格式:export   变量名...
      export  变量名=变量值  [...变量名n=变量值n]

查看环境变量
     env    或   export

清除用户定义的变量
格式:unset   变量名
    命令执行时查找顺序
    1、以相对/绝对路径执行
    2、由alias找到的执行
    3、bash内部命令执行
    4、按$PATH路径执行

 环境变量PS1
    echo $PS1
            \d  日期  \t  时间(24)  \T时间(12)
            \H  完整主机名       \h  简写主机名
            \u  用户名         \v  bash版本
            \w  完整目录        \W  最后一个目录
            \#   执行了第几个命令   \$  提示符
    PS1=‘[\u@\h  \W  \t  #\#]\$’

  常见的环境变量:
   $USER$LOGNAME
   $UID$SHELL$HOME
   $PWD$PATH 
   $PS1$PS2

查看环境变量
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    预定义变量
  表示形式如下
    $#:命令行中位置参数的个数
    $*:所有位置参数的内容
    $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
    $$:当前所在进程的进程号
    $!:后台运行的最后一个进程号
    $0:当前执行的进程/程序名
 命令执行时查找顺序
    1、以相对/绝对路径执行
    2、由alias找到的执行
    3、bash内部命令执行
    4、按$PATH路径执行

    [root@localhost ~]# bash 
    [root@localhost ~]# echo  $0  $$
    bash 5887
    [root@localhost ~]# exxit
    bash: exxit: command not found
    [root@localhost ~]# echo $?
    127
    [root@localhost ~]# exit
    exit
    [root@localhost ~]# echo $? 
    0
    ;  命令顺序执行。
    && 前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行。
    ||   前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,它后面的命令才被执行。

    通配符与特殊符号
    通配符
            *   任意多个
            ?   任意一个
            []  括号内任一个  [^0-9]非数字

    rm   -rf  *
    rm   -rf  ?.??
    touch   1.txt  2.txt  3.txt
    rm -rf  [1-9].* 

    特殊符号
            \   转义符
            &   后台
            !   非
4.数值变量的运算
计算整数表达式的运算结果
格式:expr  变量1   运算符  变量2  ...[运算符 变量n]
expr的常用运算符
加法运算:+
减法运算: -
乘法运算: \*
除法运算: /
求模(取余)运算: % 

Bash程序并不适合进行强大的数学运算,例如小数或指数运算的,一般只能进行简单的整数运算
对Shell变量进行数值运算时,更多的时候是用于脚本程序的过程控制,如控制程序的循环次数
在expr命令的使用格式中,变量与运算符间是有空格的,可以同时使用多个运算符、多个变量
由于星号“*”作为Bash环境中的通配符使用,因此乘法运算符需要使用“\*”的特殊形式(转义字符)

#!/bin/bash
read -p "please input num1:" -t 30  test1
read -p "input num2:" -t 30  test2
declare -i sum=”$test1+$test2echo “num1 +  num2 = $sum

shell脚本的概念

    Shell脚本
    1.用途:完成特定的、较复杂的系统管理任务
    2.格式:集中保存多条Linux命令,普通文本文件
    3.执行方式:按照预设的顺序依次解释执行

[root@localhost ~]# vi repboot.sh
    #!/bin/bash
    # To show usage of /boot directory and mode of kernel file.
    echo "Useage of /boot: "
    du -sh /boot
    echo "The mode of kernel file:"
    ls -lh /boot/vmlinuz-*
    [root@localhost ~]# chmod a+x repboot.sh 

    运行Shell脚本程序

    1.直接执行具有“x”权限的脚本文件
     例如:./repboot.sh 
    2.使用指定的解释器程序执行脚本内容
     例如:bash  repboot.sh
    3.通过source命令(或 . )读取脚本内容执行
     例如:souce  repboot.sh  或  .  hello.sh 

shell脚本应用实例

    示例1:
    每周五17:30清理FTP服务器的公共共享目录
     检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录

    [root@localhost ~]# vi /opt/ftpclean.sh
    #!/bin/bash
    date  >>  /var/log/pubdir.log
    ls  -lhR  /var/ftp/pub  >>  /var/log/pubdir.log
    rm  -rf  /var/ftp/pub/*

    [root@localhost ~]# crontab -e
    30 17 * * 5  /opt/ftpclean.sh

    chmod  +x   /opt/ftpclean.sh
    示例2:
    每隔3天时间330对数据库目录做一次完整备份
     统计 /usr/local/mysql/var 目录占用的空间大小、查看当前的日期,并记录到临时文件 /tmp/dbinfo.txt 中, 将 /tmp/dbinfo.txt 文件、/usr/local/mysql/var 目录进行压缩归档,备份到/opt/dbbak/目录中, 备份后的包文件名中要包含当天的日期信息, 最后删除临时文件/tmp/dbinfo.txt

    [root@localhost ~]# vi /opt/dbbak.sh
    #!/bin/bash
    DAY=`date +%Y%m%d`
    SIZE=`du -sh /usr/local/mysql/var`
    echo "Date: $DAY" >> /tmp/dbinfo.txt
    echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
    mkdir  /opt/dbbak
    cd /opt/dbbak
    tar -zcPf mysqlbak-${DAY}.tar.gz /usr/local/mysql/var /tmp/dbinfo.txt
    rm -f /tmp/dbinfo.txt

    [root@localhost ~]# crontab -e
    30 3 */3 * *  /opt/dbbak.sh

    chmod  +x  /opt/dbbak.sh

shell 显示写法

从键盘输入内容为变量赋值
格式: read  [-p  "信息"]  变量名
结合不同的引号为变量赋值
双引号 “ ” :允许通过$符号引用其他变量值
单引号 ‘ ’ :禁止引用其他变量值,$视为普通字符
反撇号 ` ` :将命令执行的结果输出给变量
下面就是一个简单计算器的运用写法:
  read -p "input first num: " var1
  read -p "input +-*/ : " var
  read -p "input second num: " var2

  v=`echo " $var1 $var $var2 "|bc`
  echo "$var1 $var $var2 = $v"

Shell 正式编程

正则表达式

1  ^
#只匹配行首
2  $
#只匹配行尾
3  *
#匹配0个或者多个单字符
4  []
#只匹配[]内字符,可以是一个单字符,也可以是字符序列,可以使用*表示[]内字符序列范围,如用[1-5]代替[12345]
5  \
#只用来屏蔽一个元字符的特殊含义
6  .
#只匹配任意单字符
7  pattern\{n\}
#匹配n次pattern
8  pattern\{n,\}
#匹配n次以上pattern
9  pattern\{n,m\}
#匹配n到m次pattern
11  ^只允许在一行的开始匹配字符或单词
^d   筛选出以d开头的文件属性
12  ^ $
#匹配空行
13  ^.$
#匹配包含一个字符的行
14  kkk$
#匹配以kkk结尾的所有字符
15  \*\.pas
#匹配以*.pas结尾的所有字符或文件
16  a\{2\}b
#a出现两次,aab     
17  a\{4,\}b
#a至少出现4次,aaaab,aaaaab ..
18  a\{2,4\}
#a出现次数范围2-4次
19  [0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}
#匹配所有ip地址
20   cal 显示日历

shell编程中常用的命令

行提取命令

grep    选项:     -v     -n   -i

    grep  "[^a-z]oo"  aa  (文件名)
    oo前不是小写字母的行匹配。  注意:和开头没有关系
    grep  “\.$”    aa
    匹配以.结尾的行
    grep  "^[^A-Za-z]"  aa
    匹配不以字母开头的行      注意:所有字母不能这样写   A-z
    grep  “^$”  aa
    匹配空白行
    grep  "oo*" aa
    匹配最少一个o
    grep  “g.*d” aa
    匹配g开头,d结尾,中间任意字符    gd
列提取命令

awk  '条件 {动作}'
    last | awk '{printf $1 "\t" $3 "\n"}'
    提取last显示结果的第一和第三列

last | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"|awk '{printf $1 "\t" $3 "\n"}'
在last中提取包含ip的行,在行中提取第一和第三列

awk内置变量     FS  指定分隔符
more /etc/passwd | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}'
读取passwd文件,以":"为分隔符,截取第一和第三列
BEGIN   在截取前使分隔符生效。如果没有BEGIN,那么第一行自定义的分隔符不生效

1  last  > file
#把last命令结果保存在file文件中
2  awk ‘{print $0 “\n”}' file 
#查找出file文件中的每1列
3  awk '{print $1"\t"$7 “\n”}' file
#查找出file文件中的第1列和第7列

cut 

cut  -d  “分隔符”  -f  提取列   文件名

more /etc/passwd | grep "/bin/bash" | cut -d ":" -f 1,3
提取passwd文件中可以登录的用户的用户名和UID
输出命令

echo  -e  “输出内容”

    -e  识别格式化打印内容

    echo  -e1\t2\t3” 打印tab键

    echo  -e   "\e[1;31m  this is red text \e[0m"   输出红色字体
                    \e[  格式
                    1;31m  指定颜色
                    0m  恢复颜色(重置)
30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37=白色

shell条件测试操作

条件测试操作

test命令
用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值

格式:test  条件表达式   [   条件表达式   ]

常见的测试类型
测试文件状态
字符串比较
整数值比较
逻辑测试

测试文件状态
格式:[  操作符  文件或目录  ]

常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否可执行(Excute)该文件
-L:测试是否为符号连接(Link)文件

[root@localhost ~]# [  -d /etc/vsftpd  ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [  -d /etc/hosts  ]
[root@localhost ~]# echo $?
1

[root@localhost ~]# [ -e /media/cdrom ] && echo "YES"
YES 
[root@localhost ~]# [ -e /media/cdrom/Server ] && echo "YES”
[root@localhost ~]#

整数值比较

格式:[  整数1  操作符  整数2  ]

常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)


[root@localhost ~]# who | wc -l
5
[root@localhost ~]# [ `who | wc -l` -le 10 ] && echo "YES"
YES 

[root@localhost ~]# df -hT | grep "/boot" | awk '{print $6}'
18% 
[root@localhost ~]# BootUsage=`df -hT | grep "/boot" | awk '{print $6}' | cut -d "%" -f 1`
[root@localhost ~]# echo $BootUsage
18
[root@localhost ~]# [ $BootUsage -gt 95 ] && echo "YES" 


字符串比较

格式:[  字符串1  ==  字符串2 ]  
      [  字符串1  !=  字符串2 ]
      [  -z  字符串 ]

常用的测试操作符
==:字符串内容相同  
  !!  ==两边不能有空格!!!【】两边必须有空格!!!
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空

[root@localhost ~]# read -p "Location:" FilePath
Location:/etc/inittab
[root@localhost ~]# [ $FilePath == "/etc/inittab" ] && echo "YES"
YES 

[root@localhost ~]# [ $LANG != "en.US" ] && echo $LANG
zh_CN.UTF-8 
逻辑测试

格式:[  表达式1  ]  操作符  [  表达式2  ]  ... 

常用的测试操作符
-a或&&:逻辑与,“而且”的意思
#前后两个表达式都成立时整个测试结果才为真,否则为假 
-o或||:逻辑或,“或者”的意思
#操作符两边至少一个为真时,结果为真,否则结果为假
!:逻辑否
#当指定的条件不成立时,返回结果为真

[root@localhost ~]# echo $USER
root
[root@localhost ~]# [ $USER != "teacher" ]  &&  echo "Not teacher"
Not teacher
[root@localhost ~]# [ $USER = "teacher" ]  ||  echo "Not teacher"
Not teacher

if 条件语句(流程控制)

if条件语句 -- 单分支
应用示例:
如果/boot分区的空间使用超过80%,输出报警信息
如果测试 / 目录的话  将 /boot 换成 /$  就可以了 

#!/bin/bash
RATE=`df -hT | grep "/boot" | awk '{print $6}' | cut -d "%" -f1 `
if  [  $RATE  -gt  80  ]
then
    echo "Warning,DISK is full!"
fi
if条件语句 -- 双分支
应用示例:
判断mysqld是否在运行,若已运行则输出提示信息,否则重新启动mysqld服务

#!/bin/bash
TEST=`/usr/bin/pgrep mysqld `
if  [  “$TEST”  != “”  ]
    then
        echo  "mysqld service is running."
    else
        /etc/init.d/mysqld  restart
fi
if条件语句 -- 多分支

相当于if语句嵌套,针对多个条件执行不同操作
if  条件测试命令1  ;  then
    命令序列1
elif  条件测试命令2  ;  then
    命令序列2
elif  ...
else
    命令序列n
fi

for 循环语句

应用示例1:
依次输出3条文字信息,包括一天中的“Morning”、“Noon”、“Evening”字串

[root@localhost ~]# vi showday.sh
#!/bin/bash
for TM in "Morning" "Noon" "Evening"
do
    echo "The $TM of the day."
done 

[root@localhost ~]# sh showday.sh
The Morning of the day.
The Noon of the day.
The Evening of the day 
应用示例2:
对于使用“/bin/bash”作为登录Shell的系统用户,检查他们在“/opt”目录中拥有的子目录或文件数量,如果超过100个,则列出具体个数及对应的用户帐号

 #!/bin/bash
DIR="/opt"
LMT=100
ValidUsers=`grep "/bin/bash" /etc/passwd | cut -d ":" -f 1`
for UserName  in  $ValidUsers
do
    Num=`find $DIR -user $UserName | wc -l`
    if  [  $Num  -gt  $LMT  ]  ;  then
         echo "$UserName have $Num files."
    fi
done 

while 循环语句

重复测试指定的条件,只要条件成立则反复执行对应的命令操作

应用示例1:
批量添加20个系统用户帐号, 用户名依次为“stu1”、“stu2”、……、“stu20”
这些用户的初始密码均设置为“123456” 
--stdin  表示转换成键盘输入
expr  是shell计算器(bc)里的加法

#!/bin/bash
i=1
while  [  $i  -le  20  ]
do
    useradd stu$i
    echo "123456" | passwd --stdin stu$i &> /dev/null
    i=`expr $i + 1`
done 

应用示例2:
批量删除上例中添加的20个系统用户帐号

#!/bin/bash
i=1
while  [  $i  -le  20  ]
do
    userdel -r stu$i
    i=`expr $i + 1`
done 

case 多重分支语句

根据变量的不同取值,分别执行不同的命令操作

应用示例1:
编写脚本文件 mydb.sh,用于控制系统服务mysqld
当执行 ./mydb.sh  start 时,启动mysqld服务
当执行 ./mydb.sh  stop 时,关闭mysqld服务
如果输入其他脚本参数,则显示帮助信息

#!/bin/bash 
case   $1   in
    start)
        echo  "Start MySQL service."
        ;;
    stop)
        echo  "Stop MySQL service."
        ;;
    *)
        echo  "Usage:$0  start|stop"
        ;;
esac


应用示例2:
提示用户从键盘输入一个字符,判断该字符是否为字母、数字或者其它字符,并输出相应的提示信息 

#!/bin/bash
read  -p  "Press some key, then press Return:“  KEY
case  "$KEYin
  [a-z]|[A-Z])
      echo "It's a letter."
      ;;
  [0-9])
      echo "It's a digit."
      ;;
  *)
      echo "It's function keys、Spacebar or other keys. "
esac

shell 函数应用

Shell函数概述
在编写Shell脚本程序时,将一些需要重复使用的命令操作,定义为公共使用的语句块,即可称为函数
合理使用Shell函数,可以使脚本内容更加简洁,增强程序的易读性,提高执行效率

定义新的函数
function 函数名 {
  命令序列
} 

函数名() {
  命令序列
}


调用已定义的函数
函数名

向函数内传递参数
函数名  参数1  参数2  ...


应用示例:
在脚本中定义一个加法函数,用于计算2个整数的和
调用该函数计算(12+34)、(56+789)的和

#!/bin/bash
adder() {
    echo `expr $1 + $2`
}
adder 12 34
adder 56 789

[root@localhost ~]# bash adderfun.sh
46
845 

额外

#传输文件的方法
yum -y install lrzsz
rz

#下载东西
wget 网址

监控工具 dstat和vmstat

编译安装:

    工具下载地址:wget http://dstat.sourcearchive.com/downloads/0.7.2-2/dstat_0.7.2.orig.tar.gz

    yum安装:
yum -y install dstat 

写的比较详细的博客
http://blog.csdn.net/smooth00/article/details/78623728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小僵尸打字员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值