一、概述php
linux中的軟件安裝一共有三種,相對於Windows的簡易操做,對於linux的使用者來講,軟件安裝也是一門學問。linux中的軟件包一共有這麼幾種:
html
1)、RPM:即RedHat Package Manager(RPM軟件包管理器)的簡寫,執行二進制文件的安裝,一個完整的RPM包應該包括可執行文件,man手冊,庫文件,頭文件。RPM軟件包的存儲格式以下:前端
其中應用平臺包括32位系統的i386,i586,i686,64位系統的x86-64。
mysql
2)、tar:這是一種壓縮後的歸檔包,常見的有gzip和bzip2壓縮的包,格式以下:linux
二、linux中的軟件安裝方式web
1)、RPM:使用RPM軟件管理工具安裝應用軟件,優勢是簡單易操做,能夠快速的安裝需求的軟件,而且可以進行軟件包的相關查詢。可是缺點也很明顯,就是沒法自主解決軟件包的依賴關係,對於一些較複雜的軟件安裝,使用這種方式無疑會增長管理員的負擔,並且顯得繁瑣。
sql
2)、yum:全稱爲 (Yellow dog Updater, Modified),是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。shell
3)、源代碼:一般在安裝linux操做系統的光盤上都有集成一些基礎的軟件包,不過光盤上的軟件包的版本一般都比較低,企業環境或者一些大型服務站須要最新的能夠控制管理的軟件程序,只能去下載最新的軟件包,這個時候就只能使用源碼安裝了。源碼安裝的優勢是使用的軟件包通常都是最新的版本,而且在安裝過程當中能夠自定義設置,方便管理。
apache
三、案例實施centos
系統環境:CentOS6.5-32bit
1)、rpm安裝的基本操做
安裝前檢測軟件包是否已被安裝過:
[root@fcy Packages]# rpm -qa httpd #-q表示查詢 -a表示全部
若是安裝過則會這樣顯示:
[root@fcy Packages]# rpm -qa man man-1.6f-32.el6.i686
若是安裝前想知道即將安裝的軟件包都包含什麼內容,能夠以下查詢:
[root@fcy Packages]# rpm -qlp httpd-tools-2.2.15-29.el6.centos.i686.rpm #-p表示提供的服務 -l表示list列表 /usr/bin/ab /usr/bin/htdbm /usr/bin/htdigest /usr/bin/htpasswd /usr/bin/logresolve /usr/share/doc/httpd-tools-2.2.15 /usr/share/doc/httpd-tools-2.2.15/LICENSE /usr/share/man/man1/ab.1.gz /usr/share/man/man1/htdbm.1.gz /usr/share/man/man1/htdigest.1.gz /usr/share/man/man1/htpasswd.1.gz /usr/share/man/man1/logresolve.1.gz
安裝rpm包(-i表示install,-v表示詳細信息,-h表示顯示進度條):
[root@fcy Packages]# rpm -ivh setup-2.8.14-20.el6_4.1.noarch.rpm Preparing... ########################################### [100%] package setup-2.8.14-20.el6_4.1.noarch is already installe
若是想查詢安裝過的軟件包都提供哪些服務,能夠這樣查詢(注意與沒安裝過的包的查詢方式不一樣,安裝過的包想要查詢只須要填上軟件名稱,而沒有安裝過的軟件查詢則須要輸入完整的軟件包名稱):
[root@fcy Packages]# rpm -ql man /etc/cron.daily/makewhatis.cron /etc/man.config /usr/bin/apropos /usr/bin/man /usr/bin/man2html /usr/bin/manpath /usr/bin/whatis /usr/libexec/man-cmp.sh /usr/sbin/makewhatis /usr/share/doc/man-1.6f /usr/share/doc/man-1.6f/COPYING /usr/share/doc/man-1.6f/README /usr/share/locale/bg/LC_MESSAGES/man /usr/share/locale/cs/LC_MESSAGES/man ......(省略若干)
卸載軟件包:
[root@fcy Packages]# rpm -e man #-e表示卸載軟件
升級軟件:
rpm -Uvh 軟件包名稱 #-U表示update #這種方式能夠執行兩種功能,即升級和安裝,若是你的系統沒有安裝這個包,則先執行安裝 [root@fcy Packages]# rpm -Uvh man-pages-3.22-20.el6.noarch.rpm Preparing... ########################################### [100%] 1:man-pages ########################################### [100%] rpm -Fvh 軟件包名稱 #-F表示fresh #這種方式只執行升級功能
若是兩個軟件包在安裝時因爲文件名稱產生衝突,能夠用以下命令:
rpm -ivh --replacefiles 軟件包名稱
若是兩個軟件包產生衝突,可使用以下命令:
rpm -ivh --replacepkgs 軟件包名稱
若是想查詢軟件包是否改變,能夠啓用校驗功能:
[root@fcy Packages]# rpm -V httpd #-V表示啓用校驗 當沒有輸出信息時說明軟件包無變化
當修改過httpd的配置文件內容後,再校驗:
[root@fcy Packages]# echo "#test" >>/etc/httpd/conf/httpd.conf [root@fcy Packages]# rpm -V httpd S.5....T. c /etc/httpd/conf/httpd.conf
能夠看到,校驗結果立刻不一樣了,其中常見的值分別表明以下:
c-->表示config文件發生改變;
d-->表示doc文件發生改變;
S-->表示文件大小發生變化;
5-->表示MD5檢驗值發生變化;
U-->表示所屬用戶發生變化;
T-->表示時間發生變化;
G-->表示所屬組發生變化。
2)、yum安裝的基本操做
(1)本地yum源安裝
掛載光盤並查看
[root@fcy ~]# mount /dev/cdrom /media/cdrom #掛載光盤到/media/cdrom mount: block device /dev/sr0 is write-protected, mounting read-only [root@fcy ~]# df -h #以易讀的方式顯示掛載信息 Filesystem Size Used Avail Use% Mounted on /dev/sda2 15G 1.1G 13G 8% / tmpfs 122M 0 122M 0% /dev/shm /dev/sda1 194M 25M 160M 14% /boot /dev/sr0 3.6G 3.6G 0 100% /media/cdrom #光盤掛載信息
查看yum配置文件/etc/yum.conf
[root@fcy ~]# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever #表示yum安裝時下載的安裝包的緩存目錄 keepcache=0 #表示緩存文件存留的時間,等於0即爲安裝完成後就刪除 debuglevel=2 #調試的等級 logfile=/var/log/yum.log #日誌文件的存放位置 exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
查看yum源配置文件/etc/yum.repos.d/
[root@fcy ~]# ll /etc/yum.repos.d/ total 16 -rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo #通常用做網絡源 -rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo #通常用做本地源 -rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
配置yum本地源配置文件/etc/yum.repos.d/CentOS-Media.repo(先移除網絡源文件)
[c6-media] #repo ID 即源名稱 name=CentOS-$releasever - Media #對repo ID的描述 baseurl=/ file:///media/cdrom/ #yum源路徑,填入光盤的掛載點 file:///media/cdrecorder/ gpgcheck=1 #gpg校驗,等於1是開啓狀態 enabled=1 #yum源啓用狀態,等於1是啓用狀態 gpgkey= #gpg校驗的文件位置
其中對於配置文件中的baseurl,有以下幾種路徑:
file表示本地文件,http表示web文件,ftp表示ftp服務器
配置好本地yum源後,須要使用命令清除yum緩存:
[root@fcy ~]# yum clean all Loaded plugins: fastestmirror Cleaning repos: base c6-media extras updates Cleaning up Everything Cleaning up list of fastest mirrors
查看啓用的yum源及可用文件:
[root@fcy yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media: repo id repo name status c6-media CentOS-6 - Media 4802 repolist: 4802
查看安裝包信息:
[root@fcy ~]# yum info httpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media: Installed Packages #installed表示已安裝,未安裝顯示爲available Name : httpd Arch : i686 Version : 2.2.15 Release : 29.el6.centos Size : 2.8 M Repo : installed From repo : c6-media Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
查看全部的和已安裝的包:
yum list all #因爲信息過多,不展現 [root@fcy ~]# yum list installed Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media: Installed Packages ConsoleKit.i686 0.4.1-3.el6 @anaconda-CentOS-201311271240.i386/6.5 ConsoleKit-libs.i686 0.4.1-3.el6 @anaconda-CentOS-201311271240.i386/6.5 ConsoleKit-x11.i686 0.4.1-3.el6 @anaconda-CentOS-201311271240.i386/6.5 GConf2.i686 2.28.0-6.el6 @anaconda-CentOS-201311271240.i386/6.5 MAKEDEV.i686 3.24-6.el6 @anaconda-CentOS-201311271240.i386/6.5 ORBit2.i686 2.14.17-3.2.el6_3 @anaconda-CentOS-201311271240.i386/6.5 acl.i686 2.2.49-6.el6 @anaconda-CentOS-201311271240.i386/6.5 aic94xx-firmware.noarch 30-2.el6 @anaconda-CentOS-201311271240.i386/6.5 alsa-lib.i686 1.0.22-3.el6 @anaconda-CentOS-201311271240.i386/6.5 ......(省略)
查看可用的組安裝:
[root@fcy ~]# yum grouplist Loaded plugins: fastestmirror Setting up Group Process Loading mirror speeds from cached hostfile * c6-media: Installed Groups: E-mail server Fonts General Purpose Desktop Graphical Administration Tools Input Methods Legacy X Window System compatibility Perl Support Security Tools Web Server Installed Language Groups: Chinese Support [zh] Available Groups: Additional Development Backup Client Backup Server ......(省略)
安裝組軟件:
[root@fcy ~]# yum groupinstall "Desktop Platform Development" -y #-y表示不顯示交互信息 ......(過程略)
安裝軟件包:
[root@fcy yum.repos.d]# yum install mysql #安裝mysql Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media: #從repo ID爲c6-media的源上查找軟件包 Setting up Install Process Resolving Dependencies #自動處理依賴關係 --> Running transaction check ---> Package mysql.i686 0:5.1.71-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================= Package Arch Version Repository Size ========================================================================================= Installing: mysql i686 5.1.71-1.el6 c6-media 903 k Transaction Summary ========================================================================================= Install 1 Package(s) Total download size: 903 k Installed size: 2.3 M ......(過程略)
軟件包卸載:
[root@fcy yum.repos.d]# yum remove man #卸載軟件包man Loaded plugins: fastestmirror Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package man.i686 0:1.6f-32.el6 will be erased --> Finished Dependency Resolution Dependencies Resolved ========================================================================================= Package Arch Version Repository Size ========================================================================================= Removing: man i686 1.6f-32.el6 @c6-media 377 k Transaction Summary ========================================================================================= Remove 1 Package(s)
組軟件包卸載:
yum groupremove 組名稱
本地軟件包安裝:
[root@fcy Packages]# yum localinstall man-1.6f-32.el6.i686.rpm --nogpgcheck -y #localhostinstall表示本地文件安裝 --nogpgcheck表示不進行軟件包校驗 Loaded plugins: fastestmirror Setting up Local Package Process Examining man-1.6f-32.el6.i686.rpm: man-1.6f-32.el6.i686 Marking man-1.6f-32.el6.i686.rpm to be installed Loading mirror speeds from cached hostfile * c6-media: Resolving Dependencies --> Running transaction check ---> Package man.i686 0:1.6f-32.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================= Package Arch Version Repository Size ......(過程略) Installed: man.i686 0:1.6f-32.el6 Complete!
3)、源代碼安裝(apache服務)
拷貝所需的源代碼到/root/apache/
[root@fcy ~]# ll /root/apache/ total 6652 -rw-r--r--. 1 root root 982243 Jul 18 03:44 apr-1.4.6.tar.gz #加強Apache可移植性的工具 -rw-r--r--. 1 root root 829779 Jul 18 03:44 apr-util-1.5.1.tar.gz #apr的工具包 -rw-r--r--. 1 root root 4994460 Jul 18 03:44 httpd-2.4.9.tar.bz2 #Apache的源代碼
將源代碼解壓縮到/usr/local/src
[root@fcy apache]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src/ #-C表示指定解壓目錄 apr-1.4.6/ apr-1.4.6/shmem/ apr-1.4.6/shmem/win32/ apr-1.4.6/shmem/win32/shm.c ......(過程略)
[root@fcy apache]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src/ apr-util-1.5.1/ apr-util-1.5.1/crypto/ apr-util-1.5.1/crypto/apr_passwd.c apr-util-1.5.1/crypto/crypt_blowfish.h apr-util-1.5.1/crypto/apr_crypto_nss.dsp ......(過程略)
[root@fcy apache]# tar -jxvf httpd-2.4.9.tar.bz2 -C /usr/local/src/ httpd-2.4.9/ httpd-2.4.9/.deps httpd-2.4.9/.gdbinit httpd-2.4.9/ABOUT_APACHE httpd-2.4.9/acinclude.m4 httpd-2.4.9/ap.d httpd-2.4.9/Apache-apr2.dsw ......(過程略)
安裝源代碼所須要的開發環境(包括「Development tools」,「Additional Development」,
「Desktop Platform Development」):
[root@fcy apache]# yum groupinstall "Development tools" -y ......(過程略)
因爲httpd要依賴於apr和apr-util,因此先裝apr:
[root@fcy apr-1.4.6]# ./configure --prefix=/usr/local/apr #生成配置文件,並指定安裝目錄爲/usr/local/apr ......(過程略)
[root@fcy apr-1.4.6]# make && make install #編譯並安裝apr ......(過程略)
源碼安裝apr-util:
[root@fcy apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config #生成配置文件,並指定安裝目錄爲/usr/local/apr-util,而且依賴於apr安裝目錄下的apr-1-config文件
[root@fcy apr-util-1.5.1]# make && make install #編譯並安裝
源碼安裝httpd:
[root@fcy httpd-2.4.9]# ./configure --prefix=/usr/local/apache/ --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util #到這裏會報錯,說缺乏pcre工具,用yum安裝pcre-devel便可
[root@fcy httpd-2.4.9]#make && make install #編譯並安裝
啓動apache服務
[root@fcy httpd-2.4.9]# find / -name httpd #搜索apache的啓動文件 /usr/local/src/httpd-2.4.9/httpd /usr/local/apache/bin/httpd [root@fcy httpd-2.4.9]# /usr/local/apache/bin/httpd -k start AH00557: httpd: apr_sockaddr_info_get() failed for fcy.com.cn AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
添加apache環境變量(/etc/profile)
[root@fcy httpd-2.4.9]# source /etc/profile #執行腳本 [root@fcy httpd-2.4.9]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin #已經添加到環境變量中
再啓動Apache服務,此時因爲變量路徑已被添加到系統變量中,能夠直接執行
[root@fcy httpd-2.4.9]# httpd -k start #不用再輸入絕對路徑也能夠執行 AH00557: httpd: apr_sockaddr_info_get() failed for fcy.com.cn AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message httpd (pid 30667) already running
編寫apache控制腳本(/etc/init.d/httpd):
#!/bin/bash #指定腳本語言類型爲shell prog=/usr/local/apache/bin/apachectl #定義變量prog指向apache啓動程序 lockfile=/var/lock/subsys/httpd #指定鎖文件目錄 start(){ #定義函數start if [ -e $lockfile ]; then #判斷鎖文件是否存在 echo "the apache server is started" #若是存在則提示服務已啓動 else echo -n "the apache server is starting......" #不然提示啓動過程 #echo的-n參數表示顯示信息不換行 sleep 1 #進程等待一秒 $prog -k start &>/dev/null #將啓動時的警告信息放進垃圾桶(/dev/null) [ $? -eq 0 ] && echo -e [ "\033[32m OK \033[0m" ] && touch $lockfile || echo -e [ "\033[31m fail \033[0m" ] #若是啓動成功則顯示OK並建立鎖文件,不然輸出fail #echo的-e參數表示指定輸出文本的顏色,引號內爲顏色顯示的格式,顏色數值在/etc/DIR_color fi #函數結尾 } stop(){ if [ ! -e $lockfile ]; then echo "the apache server is stoped" else echo "the apache server is stoping......" sleep 1 $prog -k stop &>/dev/null [ $? -eq 0 ] && echo -e [ "\033[32m OK \033[0m" ] && rm -rf $lockfile || echo -e [ "\033[31m fail \033[0m" ] fi } restart(){ stop start } case "$1" in #表示啓動命令的參數個數 start) #若是參數爲start則調用start函數 start ;; #調用結束 stop) #若是參數爲stop則調用stop函數 stop ;; #調用結束 restart) #若是參數爲restart則先調用stop再調用start stop start ;; #調用結束 *) #若是輸入的參數不在定義的函數中,則顯示可調用的函數名稱 echo "USAGE:{start|stop|restart}" esac #腳本結束提示符
測試apache服務控制腳本
查看apache進程和端口號:
[root@fcy init.d]# netstat -tupln |grep httpd #-t表示tcp -u表示udp -p表示給予協議 -l表示列表顯示 -n表示已數字形式顯示 tcp 0 0 :::80 :::* LISTEN 30952/httpd