阿銘linux筆記

2015-09-06虛擬機網絡設置.wmv:
curl     獲取在命令行顯示的網頁
dhclient     分配ip地址
ifdown eth0     關閉網卡eth0
ifup eh0     開啓網卡eth0
ifconfig -a     查看全部網卡設備
service network restart
dhclient   獲取ip命令
rout -n     查看網關
        命令行光標移動快捷鍵:
Ctrl+a     移動光標到行首
Ctrl+e     移動光標到行尾
linux裏面root爲最高權限用戶
 
centos 進入命令行 ctrl+alt+f2
在命令行下 Ctrl+Alt+F2進入圖形界面

 

安裝php時缺乏的庫:
yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel curl-devel  libjpeg-devel
 

linux系統運行級別javascript

命令:init[0123456]
運行級別
    0:關機
    1:單用戶   
    2:多用戶狀態沒有網絡服務
    3:多用戶狀態有網絡服務
    4:系統未使用保留給用戶
    5:圖形界面
    6:系統重啓
經常使用運行級別是3和5,要修改默認的運行級別可改文件/etc/inittab的id:5:initdefault:這一行中的數字
 

經過歷史記錄簡化操做:php

!!        重複前一個命令
!字符    重複前一個以「字符」開頭的命令
!?abc    重複以前包含abc的命令
!-n        重複n個命令以前的那個命令
 
linux配置ip
         vi /etc/sysconfig/network-scripts/ifcfg-eth0 
          配置以下內容
          DEVICE=eth0
HWADDR=00:0C:29:16:08:DD
TYPE=Ethernet
UUID=0884c1cf-6613-4c57-9a81-fa27b9723fb1
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=static
 
IPADDR=192.168.1.177
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
 
保存退出,service network restart     重啓網絡命令。
 
Centos普通用戶設置sudo權限
        登錄root用戶執行visudo命令
        找到 root  ALL=(ALL)    ALL下  在下面增長:
       centos ALL=(ALL) ALL
 
查看centos版本
         登錄root賬戶,輸入 cat  /etc/redhat-release,便可顯示系統版本
         輸入 uname  -r ,能夠查詢內核版本。
 
查看安裝的軟件包
          輸入 cat -n /root/install.log,可顯示系統安裝時所安裝的軟件包列表。(須要root權限)
 
獲取搜狐源
           http://mirrors.sohu.com/php/
 
wget
基本的語法是:wget [參數列表] URL
wget -r http://place.your.url/here
這個命令會按照遞歸的方法,下載服務器上全部的目錄和文件,實質就是下載整個網站。這個命令必定要當心使用,由於在下載的時候,被下載網站指向的全部地址 一樣會被下載,所以,若是這個網站引用了其餘網站,那麼被引用的網站也會被下載下來!基於這個緣由,這個參數不經常使用。能夠用-l number參數來指定下載的層次。例如只下載兩層,那麼使用-l 2。
           要是您想製做鏡像站點,那麼可使用-m參數,例如:wget -m http://place.your.url/here
這時wget會自動判斷合適的參數來製做鏡像站點。此時,wget會登陸到服務器上,讀入robots.txt並按robots.txt的規定來執行。
 
wget -c http://the.url.of/incomplete/file
使用斷點續傳要求服務器支持斷點續傳。-t參數表示重試次數,例如須要重試100次,那麼就寫-t 100,若是設成-t 0,那麼表示無窮次重試,直到鏈接成功。-T參數表示超時等待時間,例如-T 120,表示等待120秒鏈接不上就算超時。
 
三、批量下載。
若是有多個文件須要下載,那麼能夠生成一個文件,把每一個文件的URL寫一行,例如生成文件download.txt,而後用命令:wget -i download.txt
這樣就會把download.txt裏面列出的每一個URL都下載下來。(若是列的是文件就下載文件,若是列的是網站,那麼下載首頁)
 
經驗:執行系統服務時,須要使用root權限才能執行成功如:service network restart 
          搭建lamp環境
 
linux jobs
 fg、bg、jobs、&、ctrl + z都是跟系統任務有關的,雖然如今基本上不怎麼須要用到這些命令,但學會了也是很實用的
 
一。& 最常常被用到          這個用在一個命令的最後,能夠把這個命令放到後臺執行
二。ctrl + z                    能夠將一個正在前臺執行的命令放到後臺,而且暫停
三。jobs                        查看當前有多少在後臺運行的命令
四。fg                            將後臺中的命令調至前臺繼續運行,若是後臺中有多個命令,能夠用 fg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)
五。bg                       將一個在後臺暫停的命令,變成繼續執行,若是後臺中有多個命令,能夠用bg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)
jobs -l          查看後臺任務詳細信息
kill PIDnumber          殺掉進程
 
     jobs命令執行的結果,+表示是一個當前的做業,減號表是是一個當前做業以後的一個做業,jobs -l選項可顯示全部任務的PID,jobs的狀態能夠是running, stopped, Terminated,可是若是任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識;也就是說,jobs命令顯示的是當前shell環境中所起的後臺正在運行或者被掛起的任務信息;
      進程的掛起 

後臺進程的掛起: 
在solaris中經過stop命令執行,經過jobs命令查看job號(假設爲num),而後執行stop %num;
在redhat中,不存在stop命令,可經過執行命令kill -stop PID,將進程掛起;
當要從新執行當前被掛起的任務時,經過bg %num 便可將掛起的job的狀態由stopped改成running,仍在後臺執行;當須要改成在前臺執行時,執行命令fg %num便可;
前臺進程的掛起:ctrl+Z
進程的終止 
後臺進程的終止:
方法一:
     經過jobs命令查看job號(假設爲num),而後執行kill %num
方法二:
經過ps命令查看job的進程號(PID,假設爲pid),而後執行kill pid 
前臺進程的終止:
ctrl+c
kill的其餘做用 
kill除了能夠終止進程,還能給進程發送其它信號,使用kill -l 能夠察看kill支持的信號。 
 
SIGTERM是不帶參數時kill發送的信號,意思是要進程終止運行,但執行與否還得看進程是否支持。若是進程尚未終止,可使用kill -SIGKILL pid,這是由內核來終止進程,進程不能監聽這個信號。          kill -SIGKILL pid kill -SIGKILL pid kill -SIGKILL pid
 
1、linux系統初講
     2.0單用戶模式
          reboot     重啓 3秒後按任意鍵
          e               移動光標,e鍵進入編輯模式
          選中第二行     按e後,將光標移至最後添加 1 或s 或single。而後回車,最後按b啓動,就進入了單用戶模式
          runlevel          輸入命令 runlevel顯示單用戶模式
          passwd           修改root用戶密碼
          reboot            重啓root密碼已修改
          
     2.1救援模式
          將虛擬機啓動設置爲:虛擬機>電源>啓動時進入bios。保存退出
          而後設置啓動順序 將boot 裏cdrom 設爲第一項
          進入centos 啓動模式選擇第三項 rescue installed system      回車
          選擇語言
          選擇鍵盤模式 us默認
          是否設置網絡
          
     2.3ls命令
          ls          查看當前目錄下的文件
          ll          查看當前目錄下的文件詳細信息
          ll -h           查看當前目錄下的文件詳細信息以M爲單位顯示文件大小
          
2、系統精講
     1.1建立和刪除目錄
     mkdir -pv  /tmp/1/2/3         建立父目錄     -p: parents  父目錄     -v: 可視化
     rmdir 234     (非空目錄不能刪)
     rmdir /tmp/1/2/3
     tree /tmp/1     查看tmp/1 目錄的結構     tree查看目錄結構
     rmdir -pv /tmp/1/2/3     刪除目錄(支持刪除子目錄非空的)     -p: parents  父目錄     -v: 可視化
    
     1.2rm命令
               rm           -f 強制     -i 安全位 提示 是否刪除     -r 刪除目錄加上-r(若是不加-r刪除目錄內有目錄,提示會略過目錄,不會刪目錄,只會刪目錄裏的文件)     -v可視化
               經常使用 -i -r -f
               rm -fr 123 刪除目錄沒有提示
               rm -rfv 123 不會提示
               
     1.3cp命令
               cp 拷貝文件     (在同一目錄下需改變文件名)
               cp -rv 111 222     (拷貝目錄加-r選項)     -v:可視化
               df -h     查看分區
     
     1.4移動和重命名mv
                rename     重命名
                mv     123           -i:安全位     -v:可視化     沒有-r選項
               
     1.5文件查看命令
               cat 查看文件從頭開始內容     -A:查看文件中隱藏的符號
               tac 從尾部開始讀取內容。 
               more  從頭開始顯示,一屏一屏的往下翻(空格鍵),一行一行的往下翻(Enter);但不能夠往上翻
               less 從頭開始顯示,一屏一屏的往下翻(空格鍵),一行一行的往下翻(Enter);按方向鍵能夠一行一行往上往下翻,按pageup ,pagedn,能夠一屏一屏往上或往下翻。小j鍵能夠往下行翻。小k鍵能夠往上行翻。Ctrl+b 往上翻屏 ,Ctrl+f 往下翻屏,小g最前一行,大G最後一行。/搜索關鍵詞     小n鍵日後跳,往前找大寫N。?搜索關鍵詞     小n往上跳,大N往下跳。
               head 查看一個文件的前十行     -2:表示查看文件的前二行
               tail  查看文件的末尾十行          -3:表示只看最後三行
               tail -f     動態查看後十行     不退出,按Enter鍵往下行翻(當被查看文有變化時,動態的顯示出來)
               
     1.6文件和目錄屬性
                - 表示普通文件
                d  表示目錄
                c 字符設備
                b 塊設備
                l 軟鏈接(快捷方式)
                s socket
                p 管道
               全部者,所屬組,其餘人
                rwx          rwx       rwx                                
                421          421      421
                ls -i   印出每一個文件的 inode 號     
                第二字段     文件硬連接數或目錄子目錄數
                第三個字段     文件全部者
                第四個字段     文件所屬組
                第五個字段     文件大小(若是是文件夾則表示文件夾大小)
                第六字段         文件建立 月 日 時
                第九字段         文件名
                
     1.7chmod命令
                chmod 更改文件權限
                r=4     w=2     x=1
                chmod u=rwx,g=r--,o=r-- 1.txt     (分別表明全部者,所屬組,其餘人)
                chmod u-x 1.txt     將1.txt 文件的全部者執行權限去掉
                chmod u+x,g+w,o-r 1.txt     將1.txt文件全部者加執行,所屬組加寫,其餘去掉可讀
                chmod a+r 1.txt     將1.txt的全部人加上可讀
                chmod -R 700 111     -R:將111目錄下的全部子目錄子文件繼承111目錄的權限711
                umask 用來規定默認文件的權限 0022     後三位表示     ---  -w- -w-
                新建目錄755
                文檔    644            
                linux下的目錄必須有x權限;目錄爲777權限,減umask獲得目錄默認755權限;文檔沒有執行權限爲666權限,減umask獲得文檔默認爲644權限。
                計算權限
               
     1.8chown命令
                  chown 全稱 change owner。  更改文件的全部者或所屬組
                  chown ken 111.txt     更改111.txt全部者爲ken    
                  chown :users 111.txt     更改111.txt所屬組爲users
                  chown ken:users 111.txt     更改111.txt全部者爲ken,所屬組爲users
                  chown ken.users 111.txt     更改111.txt全部者爲ken,所屬組爲users(和上面效果同樣)
                  chown -R ken:users 111/     將當前目錄111下的全部的目錄和文件的全部者和所屬組改成ken users
 
     1.9chattr文件隱藏屬性
                  lsattr 查看特殊屬性(特殊權限)
                  lsattr -R          能夠把當前目錄下的子文件子目錄列出來,子目錄下的子文件子目錄都列出來(逐層查看文件的隱藏屬性)
                  lsattr -d           只查看目錄自己特殊屬性
                  chattr +a 12.txt     +a:表示該文件只能追加,不能修改刪除,也不能更改文件名        
                  chattr -a 12.txt       -a:表示解除該12.txt文件的限制
                  chattr +i 12.txt      比+a更嚴謹,不能追加,不能修改刪除,也不能更改文件名 (不能作任何操做)   
                  chattr -i 12.txt        解除該12.txt的限制
                  
     2.0特殊權限之suid
                   set_uid     限制於可二進制格式 可執行文件,注意給普通非二進制文件加setuid不起做用 命令:chmod u+s 可執行二進制文件名
                    which passwd
                    chmod u+s /tmp/ls      給普通用戶添加ls的臨時root 權限,
                         該文件user屬主對應的 rwx 有x權限 就顯示小s  ,沒有x權限就顯示大S 
                    
     2.1特殊權限之sgid
                    set_gid      sgid可讓執行該文件的用戶臨時以該文件屬組身份去執行,於set_uid不一樣是可做用於目錄與文件
                    set_uid=4     set_gid=2     stick_bit=1
                    
     2.2特殊權限之sticky
                    stick_bit     防刪除位
                    一個文件是否可更改,不在於文件自己的屬性,而在於文件的父目錄屬性是否可rwx
                    更改文件後,所屬組和全部者都改變爲被更改者
                    當一個目錄的權限爲其餘人可讀可寫可執行的時候,那麼其餘人就能夠刪除這個目錄下的任何文件,包括root
                    chmod o+t .      把當前目錄改成其餘用戶不可刪除
                    小t的時候,其餘用戶可讀可寫可執行,大T的時候其餘用戶可讀可寫不可執行
                     
                    
 
     2.3find搜索命令
              which     搜索一個命令的位置 
              find   /root/dir/ -name "ken"     在/root/dir/下搜索ken文件
              find   /root/dir/  -type f       在/root/dir/下搜索文件    
              find   /root/dir/  -type d       在/root/dir/下搜索目錄
              find   /root/dir/  -type b       在/root/dir/下搜索Blok
              find   /root/dir/  -type c      在/root/dir/下搜索字符設備
              find  /tmp/ -mtime +10     大於十天     (單位是天)
              find /tmp/ -mtime -10       小於十天
              find /tmp/ -mtime -365     一年之內
              find /tmp/ -mmin -5             5分鐘之內
               find /tmp/ -mmin +5          大於五分鐘
              find /tmp/ -atime 
              find /tmp/ ctime
 
               find /tmp/ -type f -name ken     在/tmp/下查找文件ken
               ls -li     查看文件inode
               find / -inum inode_number     用inode號碼查找文件
               find /var/log/ -type f -mtime +30 |xargs rm       將三十天之前的日誌刪掉
               find /tmp/ -type f |xargs -i mv {} {}.bak
 
     2.4三個時間屬性
               mtime    建立和修改時間
               atime     訪問時間
               ctime     更改文件全部者或所屬組時更改文件編號(inode改變這個時間就會變)
               stat filename     能夠查看文件的三個時間
               touch filename    更新三個時間
               當更改ctime時 atime 和mtime不必定會改變,
                用vim修改了一下文件,那麼三個time都會變(修改後要保存)
                使用命令echo "111111" >> 1.txt 會更改1.txt ctime 和mtime、
               
     2.5軟連接和硬連接
               find /etc/ -type l 
               in -s     軟連接,目錄和文件均可以作,可跨分區
               in         硬連接,inode號不變,不可跨分區(只能在同一各分區下作),目錄硬連接不能夠作
               
實例1:給文件建立軟連接
命令:
ln -s log2013.log link2013
輸出:
[root@localhost test]# ll
-rw-r--r-- 1 root bin      61 11-13  06: 03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07  16: 01 link2013 -> log2013.log
-rw-r--r-- 1 root bin      61 11-13  06: 03 log2013.log

 

說明:
爲log2013.log文件建立軟連接link2013,若是log2013.log丟失,link2013將失效
 
     2.6用戶名文件
               cat /etc/passwd/
               root:x:0:0:root:/root:/bin/bash        每字段表明: 用戶名 密碼 uid gid 說明 家目錄 shell
                將一個用戶設置爲不能登陸
 
     2.7密碼文件
               cat /etc/shadow
root:$6$alMmEBkwlbfl2J/h$F/QEcBOuE0yjI4WV5Lw4BHJz8w0EoE9zh.MLx4dEg6yUGQKFCdaLBPf4C.8EBFqkVOM0QTZ3qrOiH3dp18gyB0:16719:0:99999:7:::
               bin:*:15980:0:99999:7:::          *:表示該用戶鎖定
               sshd:!!:16719::::::                !!:表示該帳戶尚未密碼
       每字段表明:
                             用戶名
                             密碼
                             上次更改密碼的天數(從1970年的1月1日到更改密碼時的那一天)
                              還需過幾天才能夠改密碼 密碼要過多少天后到期(默認99999天)
                              密碼到期前多少天發警告
                              帳號的實效期限(到期後過多少天鎖定帳號 默認爲空) 
                              帳號的生命週期(帳號能夠用多久) 
                              保留值
 
     2.8增長和刪除用戶組
               groupadd ken     添加用戶組
               tail /etc/group     查看組文件
            ken:x:500:        每一個字段表示: 組名 組密碼 組id
       tail /etc/gshadow     查看組密碼
                                    !!表示無密碼 (組默認沒密碼)
       groupadd -g 512 ken   設置組id
       groupdel          刪除組
               
     2.9增長和刪除用戶
               useradd ken    
               tail /etc/passwd
               useradd -u 505 -g grp2 user1     建立用戶添加用戶id和組id
               id user1      查看user1的用戶id,組id,
               useradd -u 508 -g 500 -d /home/user3 -s /sbin/mologin user3     給用戶添加家目錄,和shell
               useradd -M -s /sbin/nologin user3
               userdel user3       刪除這個用戶的時候並不會刪除這個用戶的家目錄
               userdel -r user1      刪除用戶而且刪除用戶家目錄
               useradd -s /sbin/nologin mysql          建立用戶
                linux在建立用戶是將用戶默認的shell指定爲/sbin/nologin便可阻止用戶登陸,命令爲
               useradd user -s /sbin/nologin,其中-s指定用戶的默認shell
               若是用戶已經存在於系統,用root身份修改/etc/passwd文件,將要阻止的用戶的shell改成/sbin/nologin,以下所示
     user:x:502:502::/home/user:/sbin/nologin
 
     3.0usermod修改用戶屬性
               usermod     更改用戶組
               usermod -g 512 ken     將ken的用戶組更改成512
               useradd -u 506 -g 502 -G 512 user3     -G:指定用戶擴展組
               usermod -L ken       鎖定用戶不讓登錄
               usermod -U ken          解鎖用戶
               
     3.1passwd修改用戶密碼
               passwd     root登錄時後面沒有參數爲更改root密碼
               passwd username     更改普通用戶密碼
               yum install -y expect
               mkpasswd     生成密碼隨機字符串
               mkpasswd -l 12
               passwd --stdin ken     更改ken的密碼
               echo "1"|passwd --stdin ken     設定ken密碼
 
     3.2su切換用戶
               id               查看當前用戶
               whomi       查看當前用戶
               su     切換用戶
               su ken     切換至ken ,環境變量並無切換
               echo $PATH
               su -ken     環境變量切換
               su -     切換至root
               su - -c "mkdir /tmp/321432" ken     臨時以ken的身份執行某個命令
               su - -c "ls -ld /tmp/321432" ken
               
     3.3sudo詳解
               sudo 命令在權限不夠的狀況下切換用戶
               visudo     編輯能夠執行sudo的用戶
                sudo passwd     更改root密碼     
 
     3.4df命令
               df     查看系統分區,-h:自動容量單位顯示,-K:以k爲單位顯示,-m:以M爲單位,-i:查看inode
               free   查看交換分區
     
     3.5du命令
               du     查看目錄大小
               du -m /etc
               du -h /etc              -h:自動容量單位顯示,-sh:查看一個文件的大小
               du -sh filename          查看一個文件佔用磁盤空間的大小
               du -sh *                    查看當前目錄全部文件大小
               ls -lb filename          查看一個文件自己的大小
               
     3.6fdisk命令
               fdisk -l     查看磁盤全部分區情況
               fdisk 磁盤名     磁盤分區
                    一塊硬盤最多可分4個主分區,若是想分第五個區,可把其中一個主分區換成擴展分區,而後在擴展分區內建邏輯分區。擴展分區+主分區≤4
               n     新建分區
               w     保存退出
 
     3.7磁盤格式化mke2fs
               cat /etc/filesystems     查看文件系統
               mkfs.     按Tab鍵補全               
               mkfs.ext4 /dev/sdb5     格式化sdb5爲ext4文件系統
               
 
     3.8磁盤掛載與卸載
               mount /dev/sdb5 /mnt/     掛載/dev/sdb5/到/mnt下
               umount /home/
               ls /home/
               
     3.9分區表fstab
               cat  /etc/fstab
               vi /etc/fstab
               UUID      分區標識
               blkid       獲取磁盤分區標識
               defaults     掛載選項 
               /etc/rc.local     開機加載配置文件
               mount -a     自動加載配置文件的全部配置
               mount     查看掛載的選項
               
3、linux系統提升
     1.1vim介紹
                 yum install -y vim-enhanced     安裝vim
                 vi與vim的區別:打開shell文件後vim顯示顏色區分,vi只是全黑色
                 sut nu     顯示行號
 
     1.2vim通常模式下光標移動
               vim 通常模式     編輯模式     命令模式
               Ctrl+f     一屏一屏往下翻
               Ctrl+b     一屏一屏往上翻
               pgup
               pgdn
               gg     光標跳到文檔第一行
               shift+g     光標跳到文檔最後一行
               ^     光標跳到行首(或者數字0)
               $     光標跳到行尾(或者數字1)
               number + G     將光標跳到指定行
               number + 光標方向命令鍵     向指定方向移動number個位置
 
     1.3vim通常模式下複製剪切粘貼
               x                   向後一個一個刪除
               shift+x          向前一個一個刪除
               number + x     向後刪number個字符
               dd                刪除一行(剪切)
               p                  粘貼在光標的下面
               shift+p         粘貼在光標的上面
               u                  撤銷(最多回退50次)
               Ctrl+r           前進
               yy                 複製
               v                   可視
               
     1.4vim編輯模式
               i                    在光標以前插入模式
               I                    光標到行首插入
               a                   在光標以後插入模式
               A                   光標到行尾插入
               o                   在光標下一行插入
               O                   在光標上一行插入
               
     1.5vim命令行模式
               :wq               保存退出
               :w                 保存 
               :q                  退出
               :q!               強制退出
               :set nu           顯示行號
                :set nonu        不顯示行號
               :/ (?)                  搜索關鍵詞
               n                      進入搜索後下(上)跳
               N                     進入搜索後上(下)跳
               :/1,20s/IPTABLES/iptables/g          g:全局替換
               :/1,$s/IPTABLES/iptables/g          1-$:全文
               :/%s/IPTABLES/iptables/g      
               :noh1               取消高亮顯示
     
     1.6gzip講解
               gzip filename     壓縮文件
               du -sh filename     查看文件大小
               gzip -1     壓縮級別,壓縮比例最小,壓縮速度最快
               gzip -9     壓縮比例最大,壓縮最慢。(默認是gzip -6)
          
               gzip -d filename.gz     解壓縮
               zcat filename.gz          查看gzip壓縮文件內容
               
 
     1.7bzip2講解
               大多數狀況下bzip2壓縮的文件更小些
               bzip2 filename          壓縮文件bzip2
               bzip2 filename.bz2     解壓bz2壓縮文件
               gzip bzip2      都不能壓縮目錄
               bzcat filename.bz2             查看bzip2壓縮文件內容
               bzcat          默認壓縮級別是9
 
     1.8zip和unzip
               yum install zip unzip     安裝zip壓縮和解壓縮工具
               yum install xz bzip2 gzip
               zip filename     壓縮文件
               unzip filename.zip     解壓文件(在壓縮後不會刪除原文件,能夠同時壓縮多個目錄和文件)
               zip -r               能夠壓縮目錄
               
 
     1.9xz壓縮和解壓縮
               xz     gzip bzip2     三者相差不大
               xz filename          壓縮文件
               xz -d filename.xz          解壓縮
               xzcat filename.xz          查看xz壓縮文件內容
               xz                         壓縮級別和bzip2同樣(1-9)
               
 
      2.0tar打包工具詳解
               tar -cvf               c:create建立;v:可視化 ;f:file
               tar -cvf 1.tar 111 222 123.gz          打包多個文件(打包不會改變文件大小)
               du -sh 1.tar          查看文件大小
               du -sh 111 222 123.gz     查看多個文件大小
               tar -xvf 1.tar                    解包
               tar -C /tmp/ xvf 1.tar          解包到指定目錄
               
     2.1tar打包和壓縮並用
               tar 支持 gzip bzip2 xz     三種格式進行打包
               tar -zcvf 1.tar.gz 111 222          打包並壓縮多個文件
               du -sh 1.tar.gz               查看文件大小
               tar -zxvf 1.tar.gz          解壓打包壓縮文件(壓縮包不會刪除)
               tar -tf 1.tar.gz               查看打包壓縮文件列表
               tar -C /tmp/ -zxvf 1.tar.gz     指定打包壓縮路徑
               
               tar -jcvf 1.tar.bz2 111 222     打包使用bz2格式壓縮
               tar -Jcvf 1.tar.xz 111 222     打包使用xz格式壓縮
               tar -jxvf 1.tar.bz2                解包bz2壓縮格式
               tar -Jxvf 1.tar.xz                  解包xz壓縮格式
 
                tar -tf 1.tar.bz2               查看打包bz2壓縮文件內容
                tar -tJf 1.tar.xz                查看打包xz壓縮文件內容
                tar --exclude 12.txt -cvf 111.tar 111         打包一個目錄下全部文件,排除單個文件(12.txt)
               tar --exclude 12.txt --exclude aming -cvf 111.tar 111      打包一個目錄下全部文件,排除多個文件
               
     2.2rpm安裝和卸載
               rpm == RedHat package manager
               mount /dev/cdrom   /mnt/
               cd /mnt/
               ls
               cd packages/
               ls
               
              
               包名     版本號1主版本,5次版本   el6:紅帽企業版6;i686:32位
               noarch:表示不區分32位64位
               rpm -ivh 包名           i:install     v:可視化     h:進度
               rpm -e 包名          卸載rpm
               rpm -ivh --nodeps 包名     強制安裝RPM包(忽略依賴關係)
               rpm -Uvh 包名                    升級包
               
 
     2.3rpm查詢
               rpm -qa          查詢已安裝rpm包
               rpm -q 包名     把一個包所有顯示出來(包名不能夠簡寫)
               rpm -qa |grep 'vim*'          查詢已安裝是否包含vim
               rpm -qi 包名                    i:info     查看一個包詳細信息
               rpm -ql 包名                    l:list     查看一個包安裝的文件列表
               rpm -qf 文件路徑               f:file     查看一個文件是哪一個rpm包安裝
               which vim                         查看vim是在哪一個目錄
               rpm -qf /usr/bin/vim          查看vim路徑是哪一個包安裝的
               rpm -qf `which vim`          反引號:顯示引號內執行的結果
               rpm -ivh 'http://xxxxxx.xxxx.xxx'          遠程安裝rpm包
 
     2.4yum工具詳解
               yum list          列出yum源中的全部RPM包(網絡資源)
               vim /etc/yum.repos.d/CentOS-Base.repo     修改源配置文件
               yum list |grep vim            查詢yum倉庫中的vim包(搜索rpm包),已安裝過包前顯示@
               yum list |grep -i mcrypt                查詢yum倉庫中的mcrypt包(-i:不區分大小寫),搜索yum擴展源epel
               yum install 包名               使用yum安裝rpm包
               yum search 'vim'             在yum源中搜索一個rpm包
               yum install -y vim-enhanced             安裝vi省略問答默認是
               yum remove vim-enhanced               yum卸載rpm包
               yum update 包名                               yum升級rpm包
               yum update;yum upgrade               升級系統中全部的rpm包
               yum grouplist                                   列出已安裝過和未安裝套件
               LANG=en                                 將語言設置成英文
               LANG=zh_CN.UTF-8                    將語言設置成中文
               yum groupinstall 套件名
               yum groupremove 套件名
 
     2.5搭建本地yum倉庫
               cp -r yum.repos.d/ yum.repos.d.bak          備份yum配置文件
               cd yum.repos.d;ls
               rm -rf Centos-Base.repo
               yum list          顯示本地yum源
               vim CentOS_Media.repo        作本地yum源
 
               gpgcheck:是否檢測
               enabled:是否生效
               gpgkey:不要
 
     2.6yum如何下載rpm包到本地
               yum install -y yum-plugin-downloadonly     安裝yum下載rpm包工具
               yum list |grep download          搜索
               yum install vim-enhanced --downloadonly --downloaddir=/tmp/          (適用於未安裝過)
               yum reinstall vim-enhanced --downloadonly --downloaddir=/tmp/          reinstall:從新安裝(適用於已安裝過)
              首先查看本機安裝的yum包都有哪些?
                [root@test~]# rpm -qa |grep yum
若是安裝了此包:yum-utils-1.1.30-14.el6.noarch
那麼就能夠執行yumdownloader
               假如要下載samba安裝包,執行以下命令:
[root@localhost ~]# yumdownloader samba
 
     2.7源碼編譯安裝
               源碼包安裝時先看INSTALL 和 README
               /usr/local/src/     源碼包下載存放路徑
               tar -jxvf http*.bz2
               ./configure --prefix=/usr/local/apache2          /usr/local/:經常使用安裝源碼包路徑
               echo $?
               make
               echo $?
               make install
               ls /usr/local/apache/
               apache下載地址  http://mirrors.cnnic.cn/apache/httpd/
 
     4、Shell編程入門
          1.1shell特性
               history          命令歷史(默認只保存1000條)
               echo $HISTSIZE          輸出1000(此變量爲history保存條數)
              !!                        上一條命令
               !$                              前一個命令歷史的參數
               !c                              命令歷史中以c開頭離得最近的命令
               alias               查看取別名的命令
               alias aaa='cat 1.txt'
               unalias
               wc                    取行數
               >               正向重定向(覆蓋寫)
               >>             追加寫
               <               反向重定向
               2>              錯誤重定向,把錯誤信息重定向到文件裏
               2>>           追加錯誤重定向
               Ctrl+z          暫停掉
               jobs           查看運行的任務
               +          優先級高
               fg 2(1)
               bg          後臺
               
          1.2shell變量
               env          系統相關變量
               set          系統環境變量(比env多,包含env)
               ``              反引號:使用一個命令的結果
                export          聲明全局變量
                a=lskd    
               unset $a       銷燬變量
               
     1.3系統和用戶的環境變量配置文件
               /etc/profile          環境變量文件HOSTSIZE,HISTSIZE,PATH,HOME,SHELL (系統相關環境變量)
               /etc/bashrc          (系統相關環境變量)
               /etc/profile.d/          (自定義環境變量腳本.sh存放位置)
               用戶家目錄               家目錄環境變量配置文件
               .bash_logout               用戶退出時執行腳本
               .bash_profile          和/etc/profile 大體同樣,針對用戶自身定義的環境變量
               .bashrc               定義命令別名,當用戶打開新bash或者登錄時執行的文件
               export               全局聲明
               vim /etc/profile.d/path.sh
               /etc/bashrc
               /etc/profile.d/path.sh
               source /etc/profile          自動加載/etc/profile.d/下的全部.sh文件
               
     1.4shell中的特殊符號
               *|               通配符
                #               註釋符
                ;               結束符
                &               後臺運行
               \[]               中括號[]:或     例:ls [12].txt     ;ls [1-3].txt
               
     1.5cut命令
               cut -d: -f 3,4,5 /etc/passwd         -d:指定分隔符     -f:取段
               cut -c 1-10 /etc/passwd
               cut -d:     -f     -c
     
     1.6sort命令
               sort filename      按照ascll碼錶排序
               sort  -t: -k3 -n /etc/passwd          -t:指定分隔符
               sort -u filename         排序去重複
               sort -n filename         按數字從小到大排序
               sort -nr filename        按數字從大到小排序
               sort -un filename          去重複且把多個字符串顯示一個(去掉-n選項後可所有顯示)
               
     1.7wc命令
               wc -l filename          查看一個文件的行數
               wc -l filename filename          查看多個文件的行數
               wc -w filename          統計單詞數,以空格爲分隔符
               wc -m filename          查看文件字符數
               wc -l filename             查看文件的行數 
 
     1.8uniq和tee命令
               uniq          去重複
               uniq -c          可計算重複的次數
               sort filename | uniq -c          先排序,再去重
               | tee filename(空文件)          覆蓋重定向,並在屏幕輸出,需搭配管道命令使用
               
     1.9tr和split命令
               tr     替換字符
               ls *.txt | tr 'a-z' 'A-Z'          將小寫文件後綴替換爲大寫
               echo 'dfsfsafsdf' |tr 'a-f' 'A-F'     將小寫轉換爲大寫a-f A-F(tr後面替換的字符一 一對應)
               split               切割大文件
               split -b 50m filename          按大小分割文件(指定50m分割文件)
               split -b 100 filename          按大小分割文件(指定100b分割文件,默認單位爲b)
               split -l 10 filename               按行數分割文件(指定10行分割文件)
               split -b 100 filename word_          爲分割出的文件指定前綴
               
     2.0shell中鏈接符(而且、和、或者)
               ls a && ls b          (邏輯與,若是前面的命令爲真,纔會執行後面命令,如爲假,則不會執行後面的命令)
               ls a || ls b              (邏輯或,若是前面的命令爲真,則不會執行後面的命令;如爲假,纔會執行後面的命令)
 
     2.1grep過濾-1
               grep egrep sed awk
               grep          過濾除指定行
               grep 'root' /etc/passwd
               grep --color 'root' /etc/passwd          將查找字符以紅色標出
               grep -c word filename               查詢全部行包含指定字符出現的行數
               grep -v word filename               查詢全部行不包含指定字符出現的行數
               grep -n word filename               顯示行號
               grep -n -A 2 word filename          顯示匹配行,並顯示匹配行下指定行數(2行)
               grep -n -B 2 word filename          顯示匹配行,並顯示匹配行上指定行數(2行)
               grep -n -C 2 word filename          顯示匹配行,並顯示匹配行上下指定行數(2行)
               grep -r word dirname                    遍歷目錄文件查找指定字符
               grep -rh word dirname                    不顯示文件名,匹配文件
               
     2.2grep過濾-2
               grep '[aN]' filename          查找包含a或N的行
               grep '[0-9]' filename          查找包含數字的行 
               grep -v '[a-zA-Z]' filename              查找不包含大小寫的行
               grep '^[a-z]' filename                    匹配小寫字母開頭的行
               grep '[^a-z]' filename               匹配不包含字母的行
               grep '[^$]' filename               匹配空行
               grep -v '[^$]' filename               匹配空行之外的行
               grep '[r.o]' filename               匹配r(任一字符 )o的行
               grep '[r*o]' filename               匹配r(一個或多個)o的行
               待補充(正則)
 
     2.3grep過濾-3
               grep -E     ===      egrep
               待補充(正則)
 
     2.4sed命令-1
               sed 比grep強大,可是不能顏色顯示
               sed -n '10'p filename          打印第n行,p:print
               sed -n '1-10'p filename          打印第一到10行
               sed -n '/root/'p filename        打印包含'root'的行
               sed -n '/r.o/'p filename          匹配r(任一字符 )o的行                    
               sed -n '/r*o/'p filename          匹配r(一個或多個)o的行     
               
     2.5
     2.6
     2.7
     2.8
 
5、linux平臺運維管理
     1.1查看系統負載命令
          w          load average:1分鐘以內系統的平均負載(1分鐘進程數),5分鐘(5分鐘平均進程數),15分鐘內          
          uptime     獲取負載值
 
     1.2vmstat詳解
          vmstat -1          1s顯示一次
          vmstat 1 5          
 
     1.3top動態查看負載
          top     3s一次動態顯示出當前主機運行狀況,前一行與vmstat同樣
          pid          進程編號(ls /proc;此目錄裏目錄名對應進程號)
          user          用戶
          PR               
          NI               進程優先級
          VIRT          虛擬內存
          top -bn1          一次性顯示出來(靜態顯示)
          SHR          共享內存
          top -d 1 -c          1s刷新一次,COMMAND顯示的更全點
          
     1.4sar命令
          sar -n DEV          查看網卡流量
          sar -n DEV 1 10          1s顯示一次,一次顯示10次
          yum install -y sysstat          安裝sar命令
          ls /var/log/sa/          查看網絡流量歷史(18天)          
          sar -n DEV -f /var/log/sa/sa22/          查看具體某天的流量歷史文件
          sar -q           查看系統歷史負載
          sar -b 1 10           能夠查看當前的磁盤io狀態     
          sar -p 1 10 能夠查看cpu的使用狀況
          
     1.5free查看內存
          free          查看內存情況kb
          free -m          以M爲單位
          buffers          數據將要寫到磁盤中去的,還在內存佔用
          cached          從磁盤取出放到內存,這部分空間
          free第二行     =     buffer     +     cached
 
     1.6ps查看進程
          VSZ          虛擬內存大小
          RSS          實際內存大小(內存使用量)
          TTY          啓動地方
          STAT          S:表示休眠;
                            s:表示主進程;
                           <:優先級高;N:表示次進程低優先級;+:前臺運行的進程;R:runing運行中;L:在內存鎖定;l:多線程進程;Z:殭屍進程;x已死掉進程;T:暫停進程;D:不能中斷的進程
          START          啓動時間
          TIME            佔用cpu時間
          CANMAND     進程名稱
          
     1.7netstat查看端口
          netstat -lnp          查看監聽端口
          netstat -an          tcpip,socket都顯示出來
          netstat -an|grep -ic estab          查看某一時刻服務器的鏈接數(併發數)
 
     1.8抓包工具tcpdump和tsshark
          yum install tcpdump
          tcpdump -nn
          (待補充)
 
     1.9防火牆selinux
          cat /etc/selinux/config          查看selinux配置
          (待補充)
     
     2.0iptables詳解-1
          netfilter----iptables     
          iptables -nvL     查看有那些規則
          iptables -F          清除規則
          表 列 規則
          iptables -t filter -nvL         指定表名,filter表下的規則(filter[較經常使用],nat,mangle。三個表)
          filter INPUT OUTPUT      列
          iptables -t filter -I INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT              插入規則不容許192.168.1.177訪問   (-I:在表上面增長)
          iptables -t filter -nvL          在不指定標明的時候默認是filter表
          iptables -t filter -D INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT            刪除規則
          iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT            添加規則(-A:在表下面增長)
          相同規則的時候表上面的規則先生效
          
     2.1iptables詳解-2
           iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j DROP     不接收包
           iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j ACCEPT     
           iptables -z          清空規則計數器
           iptables -F          清空規則(只針對filter表)
           iptables -t nat -nvL          查看nat下的全部表
           iptables -t filter -A INPUT -p tcp --dport 80(端口號可省略) -s 192.168.1.177 -j REJECT
           service iptables restart;          重啓iptables服務(重啓後新添加的iptables會失效)
           service iptables save;               保存新添加的iptables
           cat /etc/sysconfig/iptables;          iptables配置保存路徑
           iptables-save > 1.ipt          防火牆規則備份
           
           iptables -F
           service iptables save;          清空規則並保存
           
     2.2iptables詳解-3
咱們如今用的比較多個功能有3個:
1.filter 定義容許或者不容許的
2.nat 定義地址轉換的
3.mangle功能:修改報文原數據
 
這五個位置也被稱爲五個鉤子函數(hook functions),也叫五個規則鏈。
1.PREROUTING (路由前)
2.INPUT (數據包流入口)
3.FORWARD (轉發管卡)
4.OUTPUT(數據包出口)
5.POSTROUTING(路由後)
    這是NetFilter規定的五個規則鏈,任何一個數據包,只要通過本機,必將通過這五個鏈中的其中一個鏈。
 
對於filter來說通常只能作在3個鏈上:INPUT ,FORWARD ,OUTPUT
對於nat來說通常也只能作在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING
而mangle則是5個鏈均可以作:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
        注意:規則的次序很是關鍵,誰的 規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的。     
 
          input               進來
          output            出去
          FORWARD     (轉發。iptables中有幾個表,分別針對不一樣的目的,有本地輸入、本地產生的輸出、轉發等。。。FORWARD這個表,用於控制轉發行爲,也就是說根據定義的規則,決定對從外邊來到                                        另外一個地方去的包是丟棄、PASS仍是怎麼處理。)
 
          filter          指定來源ip拒絕
          iptables -t filter -nvL                    查看全部規則
          nat            網絡地址轉換
          iptables -t nat -nvL
          PREROUTING             改變的是數據包過來的的時候目標ip地址
          POSTROUTING          在數據包出去以前改變原ip(私網ip)
          mangle                      給數據包打標記
          iptables -t mangle -nvL       
 
     2.3iptables詳解-4
          filter 表 INPUT OUTPUT
          iptables -A INPUT     增長input
          iptables -D INPUT     刪除input
          iptables -P                -P的做用是定義鏈的默認規則
           四:詳解COMMAND:
      1.鏈管理命令(這都是當即生效的)
-P :設置默認策略的(設定默認門是關着的仍是開着的)
默認策略通常只有兩種
iptables -P INPUT (DROP|ACCEPT)  默認是關的/默認是開的
好比:
iptables -P INPUT DROP 這就把默認規則給拒絕了。而且沒有定義哪一個動做,因此關於外界鏈接的全部規則包括Xshell鏈接之類的,遠程鏈接都被拒絕了。
-F: FLASH,清空規則鏈的(注意每一個鏈的管理權限)
    iptables -t nat -F PREROUTING
    iptables -t nat -F 清空nat表的全部鏈
     -N:NEW 支持用戶新建一個鏈
          iptables -N inbound_tcp_web 表示附在tcp表上用於檢查web的。
     -X: 用於刪除用戶自定義的空鏈
          使用方法跟-N相同,可是在刪除以前必需要將裏面的鏈給清空昂了
     -E:用來Rename chain主要是用來給用戶自定義的鏈重命名
          -E oldname newname
     -Z:清空鏈,及鏈中默認規則的計數器的(有兩個計數器,被匹配到多少個數據包,多少個字節)
          iptables -Z :清空
2.規則管理命令
         -A:追加,在當前鏈的最後新增一個規則
         -I num : 插入,把當前規則插入爲第幾條。
            -I 3 :插入爲第三條
         -R num:Replays替換/修改第幾條規則
            格式:iptables -R 3 …………
         -D num:刪除,明確指定刪除第幾條規則
        
3.查看管理命令 「-L」
 附加子命令
 -n:以數字的方式顯示ip,它會將ip直接顯示出來,若是不加-n,則會將ip反向解析成主機名。
 -v:顯示詳細信息
 -vv
 -vvv :越多越詳細
 -x:在計數器上顯示精確值,不作單位換算
 --line-numbers : 顯示規則的行號
 -t nat:顯示全部的關卡的信息
 
五:詳解匹配標準
 
1.通用匹配:源地址目標地址的匹配
 -s:指定做爲源地址匹配,這裏不能指定主機名稱,必須是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
並且地址能夠取反,加一個「!」表示除了哪一個IP以外
 -d:表示匹配目標地址
 -p:用於匹配協議的(這裏的協議一般有3種,TCP/UDP/ICMP)
 -i eth0:從這塊網卡流入的數據
流入通常用在INPUT和PREROUTING上
 -o eth0:從這塊網卡流出的數據
流出通常在OUTPUT和POSTROUTING上
        
2.擴展匹配
2.1隱含擴展:對協議的擴展
    -p tcp :TCP協議的擴展。通常有三種擴展
--dport XX-XX:指定目標端口,不能指定多個非連續端口,只能指定單個端口,好比
--dport 21  或者 --dport 21-23 (此時表示21,22,23)
--sport:指定源端口
--tcp-fiags:TCP的標誌位(SYN,ACK,FIN,PSH,RST,URG)
    對於它,通常要跟兩個參數:
1.檢查的標誌位
2.必須爲1的標誌位
--tcpflags syn,ack,fin,rst syn   =    --syn
表示檢查這4個位,這4個位中syn必須爲1,其餘的必須爲0。因此這個意思就是用於檢測三次握手的第一次包的。對於這種專門匹配第一包的SYN爲1的包,還有一種簡寫方式,叫作--syn
    -p udp:UDP協議的擴展
        --dport
        --sport
    -p icmp:icmp數據報文的擴展
        --icmp-type:
echo-request(請求回顯),通常用8 來表示
因此 --icmp-type 8 匹配請求回顯數據包
echo-reply (響應的數據包)通常用0來表示
                  
2.2顯式擴展(-m)
     擴展各類模塊
      -m multiport:表示啓用多端口擴展
      以後咱們就能夠啓用好比 --dports 21,23,80
                  
        
六:詳解-j ACTION
 
 經常使用的ACTION:
 DROP:悄悄丟棄
通常咱們多用DROP來隱藏咱們的身份,以及隱藏咱們的鏈表
 REJECT:明示拒絕
 ACCEPT:接受
custom_chain:轉向一個自定義的鏈
 DNAT
 SNAT
 MASQUERADE:源地址假裝
 REDIRECT:重定向:主要用於實現端口重定向
 MARK:打防火牆標記的
 RETURN:返回
在自定義鏈執行完畢後使用返回,來返回原規則鏈。
 
          (policy ACCEPT 804K packets,402M bytes)          接受的包數據量
          ACCEPT       (接受)
          DROP          (落下,丟下)
          REJECT        (拒絕,駁回)
          iptables -P INPUT DROP          (危險:請注意這條語句的參數,是-P ,-P的做用是定義鏈的默認規則,也就是經過全部規則後尚未匹配到的數據包,將按照默認規則來執行。
-P DROP後,只有知足定義了ACCEPT規則的包才能通行,其餘的包都按照默認的DROP幹掉了。)
 
     2.4cron計劃任務
          
     2.5系統服務
          yum install -y ntsysv          安裝系統管理服務軟件
          ntsysv               打開管理界面,設置完後需重啓系統才能生效
          chkconfig --list          查看全部系統服務
          chkconfig --
          0-6                             0:關機;1:單用戶模式;23;4:6重啓
          chkconfig 服務名 off          關閉服務,控制級別二、三、、四、5
          chkconfig 服務名 on          開啓服務,控制級別二、三、、四、5
          chkconfig --level 34 服務名 on     將某服務的34級別開啓
          chkconfig --add          添加系統服務
          chkconfig --del          刪除系統服務
          /etc/init.d          系統服務所在目錄
          
     2.6linux日誌
          /var/log/messages
          /etc/logrotate.conf          日誌切割文件
          kill pid                         殺死進程
          kill -9                              強制殺死進程
          dmesg                         查看某個硬件出現問題
          
     2.7xargs和exec詳解
          find /var/log/ -type f -mtime +10          查看10天之前的日誌
          find /var/log/ -type f -mtime +10 -exec cp {} {}.bak \;          重命名一些文件以.bak後綴(-exec是find的一個選項)
          find /var/log/ -type f -mtime +10 | xargs -i cp {} {}.1               重命名一些文件以.1後綴(使用管道達到效果)
 
     2.8screen命令
          nohup
          yum install -y screen
          screen           新窗口執行命令,ctrl+a+d(展現退出)(虛擬終端)
          screen -ls          查看screen
          screen -r screenid          進入screen某一進程
 
     2.1curl命令
          curl -I 網站地址              不看源代碼,查看狀態
          curl -x                          代理
          curl -IV 網址                    顯示詳細信息
          curl -O 文件網址                    下載文件               (文件名爲下載的名稱)
          curl -o 文件名 文件網址                    下載文件需重命名
          
     3.0rsync格式
          rsync          拷貝數據(可增量拷貝)
          rsync -av ip地址:/tmp/1.txt /tmp/          將遠程文件拉到本地
          rsync -av /tmp/1.txt  ip:/tmp/               將本地文件推到遠程
          (待補充)
 
     3.1rsync經常使用選項
          rsync -a
 
     3.2rsync選項詳解
         
6、LAMP架構搭建與優化
     1.1Mysql安裝
          cat /usr/local/mysql/bin/mysqlbug|grep configuore       mysql查看編譯參數
        一、安裝
          查看有沒有安裝過:
          yum list installed mysql*
          rpm -qa | grep mysql*
查看有沒有安裝包:
          yum list mysql*
安裝mysql客戶端:
          yum install mysql
安裝mysql 服務器端:
          yum install mysql-server mysql-devel
二、啓動&&中止
數據庫字符集設置
          mysql配置文件/etc/my.cnf中加入default-character-set=utf8
啓動mysql服務:
          service mysqld start或者/etc/init.d/mysqld start
開機啓動:
          chkconfig -add mysqld,查看開機啓動設置是否成功chkconfig --list | grep mysql*
          mysqld             0:關閉    1:關閉    2:啓用    3:啓用    4:啓用    5:啓用    6:關閉
中止:
          service mysqld stop
三、登陸
     建立root管理員:
          mysqladmin -u root password 123456
     若是root已經設置過密碼,採用以下方法
        ./mysqladmin -u root password oldpass ‘123456’   
      登陸:
          mysql -u root -p輸入密碼便可。
      忘記密碼:
          service mysqld stop
          mysqld_safe --user=root --skip-grant-tables
          mysql -u root
          use mysql
          update user set password=password("new_pass") where user="root";
          flush privileges;
四、遠程訪問
開放防火牆的端口號
mysql增長權限:mysql庫中的user表新增一條記錄host爲「%」,user爲「root」。
五、Linux MySQL的幾個重要目錄
數據庫目錄
         /var/lib/mysql/
配置文件
         /usr/share /mysql(mysql.server命令及配置文件)
相關命令
         /usr/bin(mysqladmin mysqldump等命令)
啓動腳本
         /etc/rc.d/init.d/(啓動腳本文件mysql的目錄)
 
 
          編譯安裝二進制包安裝mysql
      修改mysql的root用戶密碼,root初始密碼爲空的:執行命令:./bin/mysqladmin -u root password '密碼'
 
 
     1.2Apache編譯安裝
          cat /usr/local/apache2/build/config.nice          查看apache編譯參數
          apachectl -v          查看apache版本
          apachectl -l          查看apache運行模式      q
          tar jxf httpd-2.2.31.tar.bz2
          ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --with-pcre   (apache配置選項)            
          make
          make install
 
          配置參數詳解:
          --with-included-apr          (httpd軟件依賴的包,可以跨平臺運做linux win unix mac)
          --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared          (動態共享的模式安裝)
          --with-pcre          (正則相關的庫)
          
          /usr/local/apache2/bin/apachectl start          啓動apache
          /usr/local/apache2/modules/          apache動態模塊加載路徑
   
          /usr/local/apache2/bin/apachectl -M          查看apache加載模塊(動態和靜態模塊)
          /usr/local/apache2/bin/apachectl -l          查看apache加載模塊(靜態)
          /usr/local/apache2/bin/apachectl -t          查看apache配置文件有無錯誤
          /usr/local/apache2/bin/apachectl graceful          從新加載配置文件
          
而後爲Apache添加服務腳本:
# cp  /usr/local/apache/bin/apachectl  /etc/init.d/httpd
         
若是想把apache服務加入到開機自啓,能夠修改服務啓動腳本:
# vim /etc/init.d/httpd
在第二行下添加:# chkconfig:235 85 15
# description: This is apache server!
 
編輯配置文件:
# vim /etc/httpd/httpd.conf 
添加 ServerName localhost
          
 
  安裝Apache2.4.7版本。
下載地址爲:http://mirrors.sohu.com/apache/
tar zxvf httpd-2.4.7.tar.gz     #解壓文件
cd 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   #編譯參數
 
錯誤
configure: error:Bundled APR requested but not found at./srclib/.
  tar zxvf apr-1.4.6.tar.gz     #解壓apr包
  tar -zxvf apr-util-1.4.1.tar.gz   #解壓apr-util包
  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    # 而後把兩個包複製到httpd-2.4.7/srclib/ 裏面而且取消版本號。


錯誤:
configure: error: in `/lamp/httpd-2.4.7/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
configure failed for srclib/apr
 
yum -y install gcc-c++   #安裝 gcc
 
錯誤:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
tar zxvf pcre-8.34.tar.gz
[root@localhost lamp]# cd pcre-8.34
[root@localhost pcre-8.34]# ./configure && make && make install


錯誤
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
 
yum -y install openssl-devel
 
把上面4個錯誤解決後。從新 ./configure 參數編譯 無問題就執行
make 
make install
 
/usr/local/apache2/bin/apachectl start         # 啓動apache
啓動完後用如下命令檢查apache是否正常啓動,
ps aux |grep httpd
netstat -an |grep :80
 
若是不能啓動 請清空防火牆規格。關閉selinux
iptables -F
service iptables save
 
經過瀏覽器輸入地址訪問:http://192.168.137.30 (我服務器的地址)  。若能顯示「It works」代表apache正常工做。
設置Apache系統開機是自動開啓。
vim /etc/rc.d/rc.local
增長一行 把下面增長進去。
/usr/local/apache2/bin/apachectl start    
 
      1.3 Apache的mpm工做模式
           /usr/local/apache2/bin/apachectl -l
          prefork.c          子進程 (進程模式,佔用內存大,高併發異常時不影響其餘進程)
          worker               線程(線程模式,佔用內存小,高併發異常時影響其餘線程)
          event                    線程形式比worker好些 性能(線程模式,佔用內存小,高併發異常時影響其餘線程 )
          ps aux|grep httpd          主進程 小寫s
          ./configgure --help | grep A3 'with-mpm'     查看apache編譯參數(mpm參數)
          --with-mpm=worker          在配置安裝的時候指定apache,mpm爲線程形式
          
     1.4php編譯安裝-安裝順序在最後          
     
 
      安裝php5.5版本。
tar zxvf php-5.5.9.tar.gz  #解壓php安裝包
cd php-5.5.9  #進入php文件
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6  --with-mcrypt=/usr/local/libmcrypt/    #編譯參數
 
錯誤configure: error: xml2-config not found. Please check your libxml2 installation.yum install -y libxml2-devel錯誤configure: error: Please reinstall the BZip2 distribution
yum install -y bzip2 bzip2-devel 錯誤
configure: error: jpeglib.h not found.
yum install libjpeg-devel -y
 
錯誤
configure: error: png.h not found.
yum install libpng-devel -y
 
錯誤
configure: error: freetype-config not found.
yum install -y freetype freetype-devel
錯誤
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
tar zxvf mcrypt-2.6.8.tar.gz    #提示mcrypt包沒有安裝。安裝mcrypt包 又依賴依賴 libmcrypt,  mhash 這兩個包。
 
1.首先編譯安裝  libmcrypt,  mhash,  mcrypt  二進制源碼包。
下載libmcrypt-2.5.8.tar.gz
 
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/related/libmcrypt 
make  
make install
 
安裝 libltdl,也在libmcrypt源碼包裏面
cd libmcrypt-2.5.8 /libltdl
./configure --enable-ltdl-install
make
make install
 
下載mhash-0.9.9.9.tar.gz
tar zxvf mhash-0.9.9.9 
cd mhash-0.9.9.9 
./configrue --prefix
make 
make install

 

這兩個包安裝完。而後在安裝mcrypt包。
 
安裝mcrypt
tar zxvf mcrypt-2.6.8.tar.gz
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt   #編譯參數

 

make 
make install
#mcrypt 沒有安裝完成。這是php模塊。須要等php安裝完成以後。在繼續安裝。
 
把以上的依賴關係解決完了以後在繼續安裝PHP
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6  --with-mcrypt=/usr/local/libmcrypt/
make
make install


生成php.ini
cp /lamp/php-5.5.9/php.ini-production  /usr/local/php/etc/php.ini
 
apache結合php
 
Apache的主配置文件爲 :/usr/local/apache2/etc/httpd.conf   #參數編譯的時候指定到/usr/local/apache2/etc/ 這個目錄下。
vim /usr/local/apache2/etc/httpd.conf
找到AddType application/x-gzip .gz .tgz 這一行在下面增長
AddType application/x-httpd-php .php
找到:<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
將中間同樣的內容改成:DirectoryIndex index.html index.htm index.php
修改完成後保存退出。
啓動前檢測apache的配置文件是否正常。
/usr/local/apache2/bin/apachectl -t  
若是顯示「Syntax OK」 表示正常。
啓動apache
/usr/local/apache2/bin/apachectl start
檢測是否啓動成功。
netstart -lnp |grep httpd
/usr/local/apache2/bin/apachectl  graceful   加載apache配置文件   不用重啓
/usr/local/apache2/bin/apachectl  -t  查看php配置文件是否正常
/usr/local/php/bin/php -i |more  能查看php安裝信息。。./configure 內容 等等
cat /usr/local/apache2/build/config.nice   查看apache 安裝的編譯代碼
cat /usr/local/mysql/bin/mysqlbug |grep -i confi     參看musql安裝的編譯參數
     
     1.5測試php解析
Linux下查看Nginx、Napache、MySQL、PHP的編譯參數的命令以下:
一、nginx編譯參數:
#/usr/local/nginx/sbin/nginx -V
二、apache編譯參數:
# cat /usr/local/apache/build/config.nice
三、php編譯參數:
# /usr/local/php/bin/php -i |grep configure
四、mysql編譯參數:
# cat /usr/local/mysql/bin/mysqlbug|grep configure
    
     1.6安裝Discuz
          下載discuz-utf-8版本
          編輯 vim /usr/local/apache2/conf/httpd.conf
     
          編輯 vim/usr/local/apache2/conf/extra/httpd-vhosts.conf
     
          ServerAdmin 管理員郵件
          DocumentRoot     指定web目錄
          ServerName     服務器名稱
          ServerAlias          服務器別名
          vim /etc/hosts
          
          將 Deny from all改成Allow from all
          ps aux |grep httpd          查看哪一個用戶運行apache
          
       更改discuz程序目錄全部者和所屬組
         vim /etc/profile.d/path.sh
          
          source           從新加載配置文件
          create databases discuz          建立數據庫
          grant all on discuz.* to 'ken'@'localhost' identified by 'ken';          賦予用戶權限
               
1.登陸mysql
#mysql -u root -p
2.新增用戶
insert into mysql.user(Host,User,Password) values("localhost","xxx",password("***"));\
註釋:xxx爲新建用戶名,***爲用戶密碼
3.執行該句後,還須要刷新權限表
flush privileges;
4.賦予用戶權限
grant all on ttt.* to xxx@localhost identified by "***";
        注意:ttt爲數據庫名,固然你也能夠填* 爲全部數據庫
5.賦予權限,還須要再刷新權限表
flush privileges;
6.經過sql語句查詢出新增結果
select user,host,password from mysql.user;
          7.mysql 查看全部用戶
                select * from mysql.user
             select * from mysql.user \G;          當表的列太多現實不正常時,\G橫項顯示
 
     1.7apache用戶認證
用vim打開/usr/local/apache2/conf/extra/httpd-vhosts.conf文件
<Directory /data/www/abc/>
        AllowoVerride Authconfig
        Authname "ni hao xian sheng"
        AuthType Basic
        AuthUserfile /data/.htpasswd
        Require valid-user
</Directory>
而後重新加載一下apache就能夠le
1.##  這裏設置的目錄爲真實目錄,並不是虛擬目錄
2.    AllowOverride AuthConfig  爲容許認證
3.    AuthType  認證類型 Basic 由 mod_auth 提供
4.    AuthName  這裏定義的內容將在 web 彈出的登錄框中顯示
5.    AuthUserFile  定義認證文件路徑 ,不要放在可能被下載到的地方
6.    Require user  定義容許訪問的用戶
配置完這一步接下來創建驗證文件
Htpsswd -c /data/.htpasswd ken(若是要在添加一個用戶的話不加c選項)
New password: 
Re-type new password: 
 
     1.8默認虛擬主機
配置默認虛擬主機
用vim打開/usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin  webmaster@dummy-host.example.com
    DocumentRoot "/tmp/123"
    ServerName www.23.com
    #ServerAlias www.meiqianzenmeweihuganqing.com
    #ErrorLog "logs/dummy-host.example.com-error_log"
    #CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
指定一個不存在的目錄DocumentRoot 在/tmp/下建立123 (防止起啓動的時候報錯) /tmp/而後在下降文件的的權限 chmod 600 /tmp/123這樣就不會訪問到的,其目的是爲了安全、只容許指定的域名訪問。
 
          <VirtualHost *:80>
               DocumentRoot "/tmp/123"
               serverName 234.com
          </VirtualHost>
          mkdir /tmp/123     建立空目錄
          chmod 600 /tmp/123          更改目錄權限
          apache      默認虛擬主機就是第一個
          
           銘哥,看下我理解的對不對.\n視頻裏演示禁止訪問虛擬主機; 在這個虛擬主機配置裏寫入了兩個選項,第一個爲默認的訪問,裏面把指定的目錄/tmp/123權限設置爲600,而且域名是隨便設置的.當windows端瀏覽器輸入的域名凡是指向到虛擬主機配置文件裏默認訪問的都會由於deamon用戶沒有/tmp/123權限而出現403的訪問錯誤; 而在瀏覽器輸入的域名解析指向到配置文件裏第二個訪問地址的, 由於deamon對指定目錄有足夠權限,因此能正常訪問.
 
            位置在第一個的虛擬主機,爲默認的主機,凡是域名指向過來,都會解析到這個來。因此,當有一個新的站點想在服務器上跑的時候,須要額外去配置一個新的虛擬主機配置段
     1.9域名301跳轉
           301域名跳轉的配置
用vim /usr/local/apache2/conf/extra/httpd-vhosts.conf中進行配置
<VirtualHost *:80>
     ServerName www.xxx.com
     ServerAlias www.yyy.com
     DocumentRoot /var/www/html/aminglinux
<IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{HTTP_HOST} ^www.aaa.com$(條件)
     RewriteRule ^(.*)$ http://www.yyy.com$1 [R=permanent,L]或[R=301,L](規則)301永久從定向302臨時重定向L表示結束了
</IfModule>
</VirtualHost>
多域名時在條件後面加[OR]或者的意思
在linux中用curl進行測試命令格式 curl -xip 域名 -I
301     域名永久重定向跳轉時爲了讓搜索引擎更快的找到
302     域名臨時重定向
 
     2.0apache日誌切割
          將Errorlog 和Customlog     設爲絕對路徑
         按天分割apache訪問日誌:CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" common
          date -s "2016-01-03 01:01:00"          設置時間
     
     2.1apache不記錄指定文件類型日誌
          SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/oem.discuz.com-access_%Y%m%d.log 86400" combined
env=!image-request
 
     2.2apache配置靜態緩存
          curl -x127.0.0.0:80 'http://www.test.com/static/image/common/logo.png' -I
          
        <IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A86400
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A900
</IfModule>
        
     
     2.3apache配置防盜鏈
          位置通常狀況下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加 
 
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> 
Order Allow,Deny 
Allow from env=local_ref 
</filesmatch> 
(Allow : 容許(白名單)       Deny:拒絕 )
 
還一種寫法,是用正則的,這種寫法在各個版本的apache比較通用。
寫法是 
 
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> 
Order Allow,Deny 
Allow from env=local_ref 
</filesmatch> 
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/qianling3439/archive/2009/02/05/3864248.aspx 
   
     2.4apache訪問控制
          
          Order (排序:設置執行順序) 能夠選擇 先執行allow 仍是 deny
        
 
     2.5apache禁止解析php
          
        針對於 /data/www/data 目錄
          1.將php引擎關閉
          2.filesmatch 將全部ip禁止訪問,只容許127.0.0.1
     
     2.6apache禁止指定user_agent、
          設置禁止curl 和 chrome 訪問 
     
          用curl 設置user_agent模擬chrome訪問 
     
     
    2.7apache經過rewirte限制某個目錄
          
 
    2.8php.ini配置文件詳解
          php -i     能夠查看php.ini文件所在路徑loaded Configuretion File => php.ini路徑
          ;     php.ini 的做爲註釋符號
           #     shell 的註釋符號
           disable_function = (禁用的函數)
          php錯誤級別:
          
          
 
                    php錯誤日誌輸出配置
 
          
          open_basedir = /data/www/discuz:/tmp          (防止入侵者訪問系統重要目錄,此處限制只能訪問/data/www/discuz或者/tmp)          
          在apache虛擬主機配置openbasedir          (與直接在php.ini裏修改的好處是:能夠區分不一樣的虛擬主機)
          
 
     2.9php擴展模塊如何安裝
          php -i |grep php.ini
          在php源碼包目錄下, 找到/usr/local/src/php-5.3.27/ext/gd          ext目錄爲存放動態加載模塊的安裝包 
          進入須要的包後如:cd gd
          使用php工具/usr/local/php/bin/phpize 生成configure
          此時在gd目錄生成了configure安裝文件
          ./configure --with-php-config=/usr/local/php/bin/php-config          固定配置
          make 
          make install
          php -m           查看php加載哪些模塊
          extension_dir          php動態模塊庫的存放路徑(在php.ini中能夠指定extension_dir 所在目錄)
          php -i |grep extension_dir          查看extension_dir目錄(擴展模塊目錄)
          grep '^extension=' /usr/local/php/etc/php.ini          查看哪些模塊是動態加載的
          在php.ini中添加動態模塊      
               此處,程序會在extension_dir中尋找curl.so文件,找不到會報錯
          
     
    3.0mysql配置講解
          /etc/my.cnf               mysql配置文件
Key_buffer_size = 256M                   存儲緩衝區大小
Table_open_cache = 256                 打開表的數量
graphic mysql 鏈接數
 
graphic 查詢超過 1s 記錄 mysql 慢查詢 Mysql 調優帖子地址
 
    3.1mysql的root密碼重置
          mysqladmin -uroot -p(空可省) password 'ken'
          忘記密碼編輯配置文件:vim /etc/my.cnf     添加一行 skip-grant
          
          直接登陸
          使用mysql庫:use mysql
          更新root用戶密碼:     update user set password=password('ken') where user='root'          
 
     3.2mysql登錄
          mysql -uroot -h192.168.1.177 -P3306 -p123456           mysql遠程登錄,-u用戶名 ,-h指定host,-P指定端口,-p密碼
          
     3.3mysql經常使用操做-1
          mysql -uroot -p123456;
          show databases;               查看全部數據庫
          use mysql                         選擇數據庫(可不加分號,其餘時候需加分號;)
          select database()             查看自身所在哪一個數據庫
          select user();                    查看用戶
          select version();               查看版本號
          show tables;                    查看全部表
          desc tablename;              查看錶結構(字段,是否非空,主鍵)
          show create table tablename\G;          查看某個表是如何建立的
          insert into tablename values ''               插入表數據
          delete from tablename where clonename='cloneid'          刪除表數據
          truncate table tablename          清空表數據
          drop table tablename               刪除表
          
     3.5mysql備份與恢復
          mysqldump          mysql備份工具
          mysqldump -uroot -pken mysql > /data/mysql.sql          選項依次是:用戶名 密碼 數據庫名 重定向文件名
          mysql -uroot -pken discuz < /data/mysql.sql          利用反向重定向恢復數據庫
          數據庫表文件默認對應在 /data/mysql/mysql/   下的.frm .MYD .MYI     myisam存儲引擎
          mysqldump -uroot -pken mysql user > /data/user.sql          備份數據表
          mysql -uroot -pken mysql < /data/user.sql               利用反向重定向恢復數據表(不須要加表名)
          
6、LNMP架構搭建與優化
      1.1php編譯安裝
           
      1.4nginx啓動腳本和配置文件
          在/usr/local/conf/nginx/nginx.conf          目錄下寫入腳本文件,而後去掉server部分,添加外部引入語句:         include vhost/*.conf;
          保存退出在當前目錄下建立vhost文件夾,vhost目錄下建立default.conf,並將訪問目錄設置成一個(nginx用戶)不可訪問的目錄,做爲默認虛擬主機,防止誤解析。去掉php解析部分代碼(設置默認虛擬主機後php解析沒有用了)
          建立test.conf虛擬主機配置文件
          
          注意第一個爲默認虛擬主機     root:/tmp/www; deny all          作限制解析
 
      1.5php-fpm配置文件
          php-fpm.conf     和 php.ini          前者是php服務配置文件,後者是php全局配置文件
           /usr/local/php/etc/php-fpm.conf         
 
      1.6常見502問題解決
          Permission denied          不可讀
          
          在php-fpm.conf文件中添加下面兩行
          listen.owner = nobody
          listen.group = nobody
          php-fpm -t     查看配置是否正確
          
     1.7nginx用戶認證
          curl -x127.0.0.1:80 uken:1 www.test.com/admin.php          使用curl的用戶名密碼登錄訪問控制的文件,-u用戶名:後跟密碼,x指定ip
          
          打紅線部分爲nginx解析php的代碼
 
     1.8nginx域名跳轉
          直接在server_name 後添加如:
        301重定向語句
        if ($host !='www.test.com')
     {
             rewite ^/(.*)$ http://www.test.com/$1 permanent; 
      }
     1.9nginx不記錄指定文件類型日誌
          在nginx虛擬主機配置文件root /data/www     下一行添加訪問日誌路徑: access_log /tmp/access.log combined_realip;
          而後再添加不記錄指定文件類型日誌以下:
          
          
     2.0nginx日誌切割
          vim /usr/local/sbin/nginx_logrotate.sh
          #!/bin/bash
          d=`date -d "-1 day" +%F`
          [-d /tmp/nginx_log] || mkdir /tmp/nginx_log
          mv /tmp/access.log /tmp/nginx_log/$d.log
          /etc/init.d/nginx reload > /dev/null
          cd /tmp/nginx_log/
          gzip -f $d.log
          
          gzip -f          若是日誌已經壓縮過,使用-f選項能夠強制壓縮覆蓋不提醒
          
     2.1nginx配置靜態文件過時時間
          location ~ \.(js|css)
          {
               access_log off;
               expires 2h;
          }
 
     2.2nginx配置防盜鏈
          location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
          {
               access_log off;
               expires 15d;
               valid_referers none bloked *.test.com *.aaa.com;
               if ($invalid_referer)
               {
                    return 403;
               } 
          }
          測試:curl -e "http://baidu.com/erwds" -I -x192.168.1.178:80 'http://test.com/static/image/logo.png
          curl -e選項能夠指定referer
 
    2.3nginx的訪問控制
          location ~ .*admin\.php$ {
               allow 127.0.0.1;
               deny all;
               include fastcgi_parems;
               fastcgi_pass unix:/tmp/www.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
          }
          curl -x192.168.1.178          指定來源ip
          白名單和黑名單
     
     2.4nginx禁止指定user_agent
          if ($http_user_agent ~ 'curl|baidu|1111')
          {
               return 403;
               }
          測試curl -A "fsdjlksdfbaidu" -x192.168.1.178:80 test.com -I     curl -A選項指定user_agent
 
     2.5nginx代理詳解
          vim proxy.conf
upstream ken {
   server 61.135.169.125:80;
   server 61.135.169.121:80;           
}
          server  {
    listen 80;
    server_name baidu.com www.baidu.com;
    
    location / {
          proxy_pass http://ken/;
          proxy_set_header Host $host;
     }
}
               (待整理)
 
7、linux經常使用服務部署與優化
      1.1nfs部署和優化-1
          NFS == network file system
          yum install -y nfs-utils rpcbind          客戶端與服務端通訊rpcbind
          vim /etc/exports
          寫入:/mnt 192.168.1.177(rw,sync)                選項rw可讀可寫,ro可讀
          /etc/init.d/rpcbind start
          /etc/init.d/nfs start
          在客戶端安裝:yum install -y nfs-utils
          showmount -e 192.168.1.178
          mount -t nfs 192.168.1.178:/mnt /opt
          df -h          查看磁盤使用狀況
 
     2.2nfs部署和優化-2
          /mnt 192.168.1.177(rw,sync,all_squash,anonuid=500,anongid=500)
        客戶端執行:umount /opt/          (出現:umount.nfs: /opt: device is busy     加上-l選項:umount -l /opt/ )
        從新掛載:mount -t nfs -onolock,nfsvers=3 192.168.1.178:/mnt /opt          (-o:不加鎖,nfsvers指定版本)
     2.7mysql主從配置-1
          replication          主從也叫AB複製(把主的日誌複製到從上,從根據日誌將數據複製,從而的達到兩個數據庫數據保持一致)。
          須要把A操做的動做記錄下來,而後把數據推到從上去。
          rm rf /usr/local/mysql          刪除舊版本mysql
          cd /usr/local/src               下載源碼包保存路徑
          
     3.5iredmail安裝
          iRedmail:postfix 發郵件 dovecot 收郵件 apache mysql openldap policyd amavisd
     roundcube awstat fail2ban iRedAdmin
          cd patches
          sed -i 's/iredmail.org/106.187.51.47/g' get_all.sh
          cd ..
          sh iRedMail.sh
相關文章
相關標籤/搜索