linux伺服器系統中手動設定lamp伺服器的經驗分享_Linux

來源:互聯網
上載者:User

LAMP是Linux、Apache、MySQL、PHP/Perl/Python的簡稱。它所組成的各組件都是開源軟體,因此很方便自由的擷取,導致這些組件的廣泛使用,並不斷完善發展,初步形成新的軟體系統格局,並可能成為開源軟體系統工程化的核心模式。

  要安裝比較新的httpd我們就必須安裝比較新的apr。紅帽6上就不需要再指定安裝apr了,因為它預設安裝的版本比較新。但是我們這裡使用的是紅帽5.8的版本,它給我們安裝的apr版本有點老,我們要安裝新版本的apr,是不是老版本的apr就要卸載了呢?這不是的,老版本千萬不能卸載,可能會有依賴;那升級呢?也是不行的,升級後老版本也是會沒的。那有的朋友該問了,那兩個版本在是不是該有衝突了。我們只能使用多版本並存的機制,只要把編譯安裝的新版本和老版本安裝在不同的地方就可以了。

  Rpm包安裝: /bin, /sbin, /usr/bin, /usr/sbin ####二進位所在位置 /lib, /usr/lib ####庫檔案所在位置 /etc ####設定檔所在位置 /usr/share/{doc,man}####協助文檔/手冊 編譯安裝: /usr/local/ ####定義安裝第三方軟體包 bin, sbin ####二進位所在位置 lib ####庫檔案所在位置 etc ####設定檔所在位置 share/{doc,man} ####協助文檔/手冊

  我們這樣安裝,看上去還算工整,但是我們還要想到到時候要是想要卸載某個軟體怎麼辦?還要一個一個的找嗎?那不就變麻煩了。所以我們這樣調整,就是定義安裝第三方軟體包依舊放在/usr/local/下,並且還要建立以軟體名命名的目錄(為了好找),然後把它有關的檔案都放在這個目錄下面。但是這樣安裝又出現了問題,它的二進位程式不在PATH環境裡面,那就不能直接執行命令了,那就修改PATH變數;還要修改庫檔案搜尋路徑;還要修改man的設定檔等。

  例如: /usr/local/apr/

  bin, sbin, lib, includes, etc, share/man

  下面我們就開始手動設定apr及apr-util,並且如何安裝httpd。(提示:這裡要下載來源程式包)

  第一步:安裝開發環境

  第二步:安裝apr來源程式

  我們這裡是在我們的伺服器上下載的,大家要是做的話去官方網站(apr.apache.org)上下載來源程式包,我們這裡將它們放到了主目錄下面。如果不想放到這裡的話可以放到/usr/local/src下面,這裡專門放源碼的。下面我們就準備安裝apr【提示:如果你系統的時間比下載源碼包的時間還要早的話,這樣是會出錯的。如果時間不對的話可以用hwclock –s,這樣將軟體時間同步為硬體時間。】

  下面我們就要將軟體進行解壓後進行安裝。安裝完成後第一個包就裝好了。

  [root@localhost apr-1.4.6]# make [root@localhost apr-1.4.6]# make install

  第三步:安裝apr-util

  安裝apr-util和我們安裝apr是一樣的。不過它指定路徑的時候還要指定apr裝在什麼地方,如果不指定的話,它會自動找老版本的(05行最後面的紅色就是指定的apr安裝路徑)。

  [root@localhost ~]# tar xf apr-util-1.5.2.tar.bz2 [root@localhost ~]# cd apr-util-1.5.2 [root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@localhost apr-util-1.5.2]# make [root@localhost apr-util-1.5.2]# make install

  第四步:安裝httpd

  在安裝httpd之前我們還要安裝一個模組,這個模組是pcre。除了配置那些模組還有可能會用到--enable –deflate配置壓縮模組的. --enable –expires到期首部控制。如果要以fastCGI模式工作的話必須啟用—enable-proxy-fcgi。這裡我們是以模組的方式工作,暫時不用啟用。--enable-mpms-shared=all在版本2.2中是沒有的,但是在版本2.4中就有了。Apache是支援MPM(躲到處理模組)有三種形式,prefork,worker,event。支援哪一種在編譯的時候已經確定了。在2.4的時候以模組化的方式使用MPM,也就是可以同時將這三種模組一併寫進來用哪個可以切換哪個。聽起來非常棒,但是PHP以模組化方式給MPM結合的時候,如果使用prefork,PHP很簡單。但是你使用的是worker或event我們的PHP必須編譯成ZTS格式,如果你想靈活使用的話,還要編輯兩次PHP。在2.2預設MPM是prefork ,在2.4預設的MPM是event。--with-mpm=MPM 指定哪一個為預設。【提示:詳細內容就在圖中】

  [root@localhost ~]# tar xf httpd-2.4.4.tar.bz2 [root@localhost ~]# cd httpd-2.4.4 [root@localhost httpd-2.4.4]# yum -y install pcre-devel ####安裝pcre模組

  [root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

  第五步:關閉selinux

  之所以將這一項作為一大步來說是因為關閉selinux,不關閉的話,你的伺服器啟動不了。預設基本上是開啟的,我們要把它給關掉。

  1、暫時性的關閉

  2、永久性關閉

  [root@localhost httpd-2.4.4]# vim /etc/selinux/config

  第六步:啟動web伺服器

  在/usr/local/paache下面有一個指令碼可以啟動服務,指令碼名稱為bin/apachectl。

  這裡給大家說一下/usr/local/apache裡面的內容,順便把網頁的內容添加hello apache,這時候我們查看一下。

  第七步:將.pid檔案放到/var/run下

  我們一般都是將產生的.pid檔案放到/var/run下面的,但是這裡的.pid檔案都放到了/usr/local/apache/logs下面,但是我們的/logs/下面都是放日誌的,放這些.pid檔案顯然是不合適的,我們這裡編輯設定檔(/etc/httpd/httpd.conf)將它的.pid檔案都產生到/var/run下面。我們在設定檔中添加的內容是:PidFile "/var/run/httpd.pid"。【提示:我們還可以驗證,當你沒有輸入這些內容的時候,關閉伺服器(bin/apachectl stop)我們再用netstat –tnlp查看一下80連接埠,已經不再處於監聽狀態,我們在查看一下logs下面已經沒有了.pid檔案。這時候在設定檔中添加PidFile "/var/run/httpd.pid",我們發現.pid檔案已經放到了/var/run/下面了,並且名字為httpd.pid。】

  第八步:啟動方便

  我們這時候雖然能啟動起來但是啟動總是那麼的不方便,這時候我們就要寫指令碼來讓它方便起來了。將檔案放在/etc/init.d/httpd裡面,編輯完成後給它許可權就行了,直接啟動就行了。接下來我們讓它開機後自動啟動起來。

  [root@localhost apache]# vim /etc/init.d/httpd [root@localhost apache]# chmod +x /etc/init.d/httpd

  #!/bin/bash # # httpd Startup script for the Apache HTTP Server # # chkconfig: - 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd fi # Start httpd in the C locale by default. HTTPD_LANG=${HTTPD_LANG-"C"} # This will prevent initlog from swallowing up a pass-phrase prompt if # mod_ssl needs a pass-phrase from the user. INITLOG_ARGS="" # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server # with the thread-based "worker" MPM; BE WARNED that some modules may not # work correctly with a thread-based MPM; notably PHP will refuse to start. # Path to the apachectl script, server binary, and short-form for messages. apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 start() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d 10 $httpd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then RETVAL=$? echo $"not reloading due to configuration syntax error" failure $"not reloading $httpd due to configuration syntax error" else killproc -p ${pidfile} $httpd -HUP RETVAL=$? fi echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f ${pidfile} ] ; then stop start fi ;; reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac exit $RETVAL

  第九步:安裝mysql

  從上面的順序可看出,下面我們將要示範MySQL安裝過程,這裡我們先使用5.5這個版本是如何安裝的,回頭再講5.6的安裝過程。大家要示範的話到mysql的官方網站上去下載(www.mysql.com)。這裡就從怎樣安裝開始講起。這個時候我們就可以解壓【官方要求:但是我們必須要將mysql放到/usr/local下面,並且目錄名稱還必須是mysql】,壓縮過去後,我們是重新命名還是使用串連?這裡最好使用的是串連,這樣的它的版本號碼還有平台這些字元創都會保留著,容易識別正在使用的是什麼版本的。

  [root@localhost ~]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local ####由於包有點大所以速度有點慢 [root@localhost local]# ln -sv mysql-5.5.28-linux2.6-i686/ mysql ####建立串連

  對我們而言,要想初始化安裝mysql,我們就要使用mysql使用者mysql組,並且還不能讓它登入(不建立家目錄)。

  實際上在mysql裡面有個檔案是INSTALL-BINARY,這個檔案裡面說明了是如何安裝的,這裡給大家講解一下,下面就給大家示範一下如何去安裝mysql的。

  這裡我們就可以更改mysql的許可權了,更改許可權後我們先查看一下scripts下面的指令碼,這個指令碼是進行初始化的,裡面也是有很多選項的,有個選項是—datadir=path,我們要將資料另外儲存在什麼地方,我們用rpm包安裝預設在/var/lib/mysql。我們用編輯的方式安裝mysql,它預設都放在/usr/local/mysql/data下面。我們要是把資料放在軟體安裝路徑下面可不是好的選擇,我們要給它另找路徑,我們知道這個資料是不斷變大的,我們最好把它放到邏輯卷中,這樣等資料很大的時候我們可以用擴充邏輯卷的方式繼續存放資料。這裡我們先建立一個20G的邏輯分區,將其設定成邏輯卷類型。

  [root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/* [root@localhost mysql]# fdisk /dev/sda [root@localhost mysql]# pvcreate /dev/sda5 ####建立物理卷 [root@localhost mysql]# vgcreate myvg /dev/sda5 ####建立卷組 [root@localhost mysql]# lvcreate -n mydata -L 5G myvg ####建立5G的邏輯卷 [root@localhost mysql]# mke2fs -j /dev/myvg/mydata ####格式化為ext3格式 [root@localhost mysql]# mkdir /mydata ####建立檔案夾 [root@localhost mysql]# vim /etc/fstab ####開機自動掛載 /dev/myvg/mydata /mydata ext3 defaults 0 0 [root@localhost mysql]# mount –a

  如果把mydata作為資料目錄的話,將來所有檔案將直接放到這個分區上了,為了便於管理我們在建立一個子目錄data。它的屬主屬組應該是mysql,但現在是root,所以我們還要更改屬主屬組。並且其他使用者也是不能隨意查看的。

  [root@localhost mysql]# mkdir /mydata/data [root@localhost mysql]# chown -R mysql.mysql /mydata/data ####更改屬主、屬組 [root@localhost mysql]# chmod o-rx /mydata/data ####更改其他使用者的許可權

  這個時候我們就可以執行指令碼了,進行初始化。為了安全起見,初始化完成後我們要將mysql下面的屬主改為root。【提示:如果你使用的是預設的data,那你還要將data的屬主改為mysql,而我們是又建立的檔案存放資料,所以這裡就不用改了】

  [root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data [root@localhost mysql]# chown -R root /usr/local/mysql/*

  第十步:啟動mysql

  我們這時候是沒有指令碼的,所以不能用service mysqld start。但是mysql給我們提供的有指令碼,在support-files下面有個檔案叫mysql.server,這就是它的指令碼,我們只需要將它複製過去就行了。

  這個時候我們還不能啟動mysql,因為我們還沒有設定設定檔,mysql找設定檔的時候先去找/etc/my.cnf,再去找/etc/mysql/my.cnf,找完這裡還去找$BNSEDIR/my.cnf。有人問$BNSEDIR是什麼?一般來講就是你的安裝目錄。下面還去找~/.my.cnf。找完後如果有衝突怎麼辦?這裡就是以最後一個為準(後一個會覆蓋前一個)。我們到support-files目錄中選擇一個設定檔,其中我們要選擇合適的,我們就以正確的作為例子,我們這裡查看一下檔案中的記憶體是否為我們合適的記憶體。這裡我們選擇my-large.cnf,因為我們的記憶體是512M的,所以這裡我們就選擇它了。然後我們將它複製到/etc/下面,並命名為my.cnf,然後編輯設定檔。最後啟動serice mysqld start。

  [root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf [root@localhost mysql]# vim /etc/my.cnf

  [root@localhost mysql]# service mysqld start

  我們編譯的時候伺服器端和用戶端的mysql都裝了,我們這裡的mysql的二進位也裝了,但是找不到,所以我們要給它一個路徑這樣就行了,這裡我們登入一下mysql,結果如下。

  [root@localhost mysql]# vim /etc/profile.d/mysql.sh

  export PATH=$PATH:/usr/local/mysql/bin

  第十一步:安裝php

  這裡我們開始安裝php,大家去php的官網(http://php.net/downloads.php)下載安裝包,php有很多功能都要依賴於你系統上的某些功能的,它可以給我們動態產生圖片,但是它要依賴於圖片庫,如果當前系統上沒有圖片庫,它就沒法使用這個功能。這裡我們就先解壓,解壓後我們就可以配置了。

  [root@localhost ~]# tar xf php-5.4.13.tar.bz2 [root@localhost ~]# cd php-5.4.13

  [root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

  詳解: --prefix=/usr/local/php ####安裝目錄 --with-mysql=/usr/local/mysql ####mysql的位置 --with-openssl ####是否支援openssl功能 --with-mysqli=/usr/local/mysql/bin/mysql_config ####php與mysql互動的另一個介面(是個二進位程式) --enable-mbstring ####支援中文(非單個位元組表示的語言) --with-freetype-dir ####支援fretype功能(fretype是實現引用不同字型的) --with-jpeg-dir ####支援jpg格式的圖片 --with-png-dir ####支援png格式的圖片 --with-zlib ####支援通用格式的壓縮庫 --with-libxml-dir=/usr ####xml的庫的位置 --enable-xml ####支援擴充標記語言 --enable-sockets ####支援基於通訊端的通訊 --with-apxs2=/usr/local/apache/bin/apxs ####將它編譯成apache的模組 --with-mcrypt ####支援加密功能的 --with-config-file-path=/etc ####php檔案存放的目錄(主設定檔為php.ini) --with-config-file-scan-dir=/etc/php.d ####主設定檔有很多片段放的位置(格式是.ini) --with-bz2 ####支援壓縮庫 --enable-maintainer-zts ####主要取決於apache的類型(為prefork不用,使用event或worker需要要用)如果apache以線程方式工作必須編譯成這種格式

  這裡執行後可能會出現錯誤,因為它所依賴的還有別的庫檔案不存在,這裡我們手動解決依賴關係就行了。我們查看圖片出現了錯誤,它說你沒有安裝mcrypt相關的軟體包,加密不了了。有兩種解決方案:一、不適用加密功能把--with-mcrypt給去了。二、使用加密功能,安裝mcrypt相關的包。我們這裡使用第二中方案。這裡我們需要安裝四個軟體包,一個是mhash,一個是mhash-devel,一個是libmcrypt,最後一個是libmcrypt-devel。

  這幾個軟體包去rpmfind.net上面搜尋,裡面有很多版本的,我們這裡選定的是mhash-0.9.2-6.el5.i386.rpm和mhash-devel-0.9.2-6.el5.i386.rpm。然後我們再上網上下載libmcrypt-2.5.7-5.el5.i386.rpm,libmcrypt-devel-2.5.7-5.el5.i386.rpm軟體包,然後解壓。解壓完成後我們就可以再次執行./configure了。執行完成後我們就可以make和make install。

  第十二步:提供設定檔

  Php的設定檔比較獨特,在/etc/php.ini。php-5.4.13下面有兩個檔案,一個是php.ini-development使用者開發環境的,另一個是php.ini-production用於生產環境的。我們用於生產環境的,把php.ini-production複製到/etc/下並命名為/php.ini。下面我們就說一說如何讓apache和php結合起來工作。主要修改apache的設定檔來實現。編輯apache的設定檔,讓apache處理php結尾的分頁檔,既然我們能夠支援php了,我們首頁面也應該有以php結尾的頁面了。

  [root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini [root@localhost php-5.4.13]# vim /etc/httpd/httpd.conf

  下面我們要進入網頁預設目錄,然後修改index.html,更改為index.php格式的。然後編輯內容,我們這裡用php串連mysql,然後進行測試,我們在把mysql關閉(service mysqld stop)然後在進行測試。

  [root@localhost ~]# cd /usr/local/apache/htdocs [root@localhost htdocs]# mv index.html index.php [root@localhost htdocs]# vim index.php

  [root@localhost ~]# service mysqld stop

  第十三步:配置xcache

  下面我們就實現如何讓我們的php支援虛擬機器主機,但是在支援虛擬機器主機之前,我們先讓我們的php能夠使用xcache,對php和opcod進行加速。這裡我們直接下載好了,大家做了上網上下載(http://xcache.lighttpd.net/)。我們這裡使用的是xcache-2.0版本。xcache的安裝比較獨特,因為xcache是php的模組準確的說是php的擴充,我們首先要使用php的命令來載入這個擴充,要識別這個擴充。Phpize意思是準備好一個擴充以便進行編譯的。Php-config是能夠擷取php的配置資訊,以及編譯時間候所使用的選項資訊的【提示:能夠和php-5.4結合工作的只支援xcache2.0及其以後的版本】

  [root@localhost ~]# tar xf xcache-2.0.0.tar.bz2 [root@localhost ~]# cd xcache-2.0.0 [root@localhost xcache-2.0.0]# /usr/local/php/bin/phpize ####【提示:幾乎所有擴充在安裝之前都要執行這個命令的。】 [root@localhost xcache-2.0.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config --enable-xcache ####啟用xcache功能 --with-php-config=/usr/local/php/bin/php-config ####php的配置命令 [root@localhost xcache-2.0.0]# make

  安裝完成後會在xcache-2.0.0目錄下面產生一個檔案叫xcache.ini。要想php能夠支援xcache這個功能,那就意味著把xcache的配置資訊必須要提供到php裡面去,所以我們要把xcache.ini追加到php裡面去,或者直徑將xcache.ini直接複製到php.d下面,不過這個php.d目錄是我們手動建立的,複製完成後我們要進行編輯,我們這裡只把常用的給列了出來,我們應該重啟才會生效,這裡要重啟web,因為它的模組是被web載入的。我們還需要在/usr/local/apache/htdocs/index.php 添加一項“phpinfo();“,我們在測試一下,由此可見xcache工作起來了。

  [root@localhost xcache-2.0.0]# mkdir /etc/php.d [root@localhost xcache-2.0.0]# cp xcache.ini /etc/php.d [root@localhost xcache-2.0.0]# vim /etc/php.d/xcache.ini

  [xcache.admin] ####xcache的管理功能 xcache.admin.enable_auth = On ####管理功能認證開啟 xcache.admin.user = "mOo" ####系統管理使用者是什麼 ; xcache.admin.pass = md5($your_password) ####用md5加密的方式加密碼 xcache.admin.pass = "" ####管理密碼是什麼 xcache.shm_scheme = "mmap" ####使用哪種方式來共用記憶體,“mmap”記憶體映射(一個記憶體可以讓多個進程同時訪問) xcache.size = 60M ####用於緩衝opcode代碼的空間有多大(可修改的) xcache.count = 1 ####設定你的CPU個數 xcache.slots = 8K ####在緩衝當中,有幾個槽位來緩衝opcode,並且每個槽位是多大 xcache.ttl = 0 ####到期時間,0表示永不到期 xcache.gc_interval = 0 ####到期的時候都清理出去,我們的記憶體回收行程多長時間工作一次,0表示永不工作

  [root@localhost xcache-2.0.0]# service httpd restart [root@localhost xcache-2.0.0]# vim /usr/local/apache/htdocs/index.php

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.