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權限)
獲取搜狐源
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號不變,不可跨分區(只能在同一各分區下作),目錄硬連接不能夠作
命令:
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
![](http://static.javashuo.com/static/loading.gif)
將一個用戶設置爲不能登陸
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
假如要下載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/
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
1.filter 定義容許或者不容許的
2.nat 定義地址轉換的
3.mangle功能:修改報文原數據
這五個位置也被稱爲五個鉤子函數(hook functions),也叫五個規則鏈。
1.PREROUTING (路由前)
2.INPUT (數據包流入口)
3.FORWARD (轉發管卡)
4.OUTPUT(數據包出口)
這是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:從這塊網卡流入的數據
-o eth0:從這塊網卡流出的數據
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)
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:接受
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 從新加載配置文件
# 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
安裝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>
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錯誤級別:
![](http://static.javashuo.com/static/loading.gif)
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中添加動態模塊
![](http://static.javashuo.com/static/loading.gif)
此處,程序會在extension_dir中尋找curl.so文件,找不到會報錯
3.0mysql配置講解
/etc/my.cnf mysql配置文件
Key_buffer_size = 256M
存儲緩衝區大小
Table_open_cache = 256
打開表的數量
mysql
鏈接數
查詢超過
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')
{
}
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_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