httpd2.4結合mysql5.5以及php5.5純手工打造高效搭建LAMP運營平臺基礎篇

CentOS6.4編譯安裝LAMP:準備工做php

前奏:編譯安裝LAMP前的準備工做:html

(1)查看系統版本信息:前端

[root@localhost ~]# cat /etc/redhat-releasemysql

CentOS release 6.4 (Final)linux

(2)centos6.4添加epel源:c++

[root@localhost ~]#
 rpm-ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrievinghttp://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.mgMNYU: Header V3RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...               ########################################### [100%]
  1:epel-release          ########################################### [100%]

(3)修改字符集爲英文,避免安裝過程當中出項沒必要要的錯誤而浪費編譯時間進而影響工做效率:修改以後從新登陸便可生效。web

[root@localhost ~]# vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
臨時修改成[root@localhost ~]# export LANG=en

(4)安裝Yum加速組件sql

[root@localhost ~]#  yum -y install yum-fastestmirror
[root@localhost ~]# yum repolist
[root@localhost ~]# yumclean all
Loaded plugins: fastestmirror, security
Cleaning repos: base epel extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

[root@localhost ~]# yummakecache #從新生成元數據,防止依賴關係被損壞shell

wKioL1OHCDTzOYRLAAHp-RSurXA097.jpg

wKiom1OHAKWxaRXcAAJRNB65l80241.jpg

(5)安裝編譯軟件等所需開發工具包組,記得包組要用英文下的雙引號引發來,由於中間有空格,你還記得嗎?shell裏面用空格的時候會怎樣?呵呵數據庫

[root@localhost ~]#yum -y groupinstall

"Desktop Platform Development" "Development tools"  "Server Platform Development"

如果以前已經安裝了也是須要進行這一步的,由於它會把系統自身須要的軟件包更新到最新,從而進一步防止系統漏洞,這但是線上經驗哦!這一步頗有必要,由於前面作的epel源就是爲此服務的哦!

wKiom1OHCBmANP9ZAAPwGCENxFo251.jpg

(6)yum安裝系統所需的必要工具

安裝編譯LAMP所需各類小工具gcc gcc-c++makeautomake autoconf kernel-devel

安裝PHP所需依賴,如libxml2-developenssl-devel curl-devel libjpeg-devel libpng-devel等。

[root@localhost~]#  yum -y install

gcc gcc-c++kernel-devel ntp vim-enhanced flex bison autoconf make automake bzip2-develncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-develfreetype-devel libXpm-devel gettext-devel pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devellibxml2-devel curl-devel  libiculibicu-devel libmcrypt libmcrypt-devel libmhash libmhash-devel pcre-devellibtool-libs gd file patch mlocate diffutils readline-devel glibc-develglib2-devel libcap-devel


(7) 在編譯安裝LAMP以前,首先先卸載已存在的rpm

首先是檢查各個軟件是否安裝

[root@localhost ~]# rpm -q httpd
package httpd is not installed
[root@localhost ~]# rpm -q mysql
package mysql is not installed
[root@localhost ~]# rpm -q  php
package php is not installed

使用yumrpm工具卸載系統曾經安裝的lamp軟件

rpm -e httpd
rpm -e mysql
rpm -e php
yum -y remove httpd
yum -y remove mysql-server mysql
yum -y remove php
yum -y remove php-mysql

(8)禁用SeLinux selinux可能會導致編譯安裝失敗,咱們先禁用它

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]#
 sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/sysconfig/selinux   #永久禁用,須要重啓生效。
[root@localhost ~]# grep ^SELINUX /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted

(9)開機啓動優化,服務最小化原則

本着服務最小化的原則,本實例安裝LAMP也正是爲了此目的,關閉一切不須要的服務,目前只開放如下幾個服務。

1>清理開機自啓動的服務

思路

1>經過腳本關閉所有的服務

[root@localhost ~]# for test in `chkconfig--list |grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $test off;done

2>執行下面的命令開啓須要開機啓動的服務

[root@localhost ~]# for test in crondnetwork rsyslog sshd;do chkconfig --level 3 $test on;done           

3>優化後的結果是本身想要的嗎?

[root@localhost ~]# chkconfig --list |grep 3:on
crond           0:off   1:off  2:on    3:on   4:on    5:on    6:off
network         0:off  1:off   2:on    3:on   4:on    5:on    6:off
rsyslog         0:off  1:off   2:on    3:on   4:on    5:on    6:off
sshd            0:off   1:off  2:on    3:on    4:on   5:on    6:off

總之就是一個原則,服務器最小化服務原則,專注

使用cmake工具編譯安裝MySQL5.5<一>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Centos6.4編譯LAMP之使用cmake工具編譯安裝MySQL5.5

1、編譯安裝cmake工具

MySQL5.5版本開始,經過./configure進行編譯配置方式已經被取消,取而代之的是cmake工具。

所以,咱們首先要在系統中源碼編譯安裝cmake工具。

#編譯安裝

使用下面的連接獲取cmake下載地址版本列表:

http://wwwNaNake.org/cmake/resources/software.html

wKiom1OHATnC8RnnAAKcQZD_wh8353.jpg

#MySQl下載列表:

http://download.softagency.net/MySQL/Downloads/

#所需源碼包:

[root@MySQl55 mysql]# ls -lh
total 27M
-rw-r--r--. 1 root root 5.8M Jan 17 03:1200pxake-2.8.12.2.tar.gz
-rw-r--r--. 1 root root  21M Mar 17 13:08 mysql-5.5.37.tar.gz

編譯安裝前MySQL的一些準備工做:

#臨時修改主機名便於作實驗清晰明瞭:

[root@MySQl55 ~]# hostname

MySQl55

建立MySql及其編譯工具cmake存放目錄,便於後續的更新管理:

[root@MySQl55 ~]# mkdir /appstores/mysql-pv
mkdir: created directory `/appstore'
mkdir: created directory `/appstore/mysql'
[root@MySQl55 ~]# cd /appstore/mysql/
[root@MySQl55 mysql]#
wget http://download.softagency.net/MySQL/Downloads/MySQL-5.5/mysql-5.5.37.tar.gz

wKioL1OHAUXRvWksAAIb3ZQOMDg869.jpg

[root@MySQl55 mysql]# wget  http://wwwNaNake.org/files/v2.8/cmake-2.8.12.2.tar.gz

編譯安裝cmake

[root@MySQl55 mysql]# tar xfcmake-2.8.12.2.tar.gz
[root@MySQl55 mysql]# cd cmake-2.8.12.2
[root@MySQl55 cmake-2.8.12.2]# ./configure
[root@MySQl55 cmake-2.8.12.2]# echo $?
0
[root@MySQl55 cmake-2.8.12.2]# make&& make install
[root@MySQl55 cmake-2.8.12.2]# echo $?
0

查看下軟件包大小

[root@localhost mysql]# du -sh *
41M    cmake-2.8.12.2
5.8M   cmake-2.8.12.2.tar.gz
195M   mysql-5.5.37
21M    mysql-5.5.37.tar.gz

2、編譯安裝配置MySQL

#切換至 MySQL源碼 解壓目錄

[root@MySQl55 mysql]# tar xfmysql-5.5.37.tar.gz
[root@MySQl55 mysql]# cd mysql-5.5.37
[root@MySQl55 mysql-5.5.37]#
#建立mysql用戶和mysql組
[root@localhost ~]# groupadd mysql&& useradd  -s /sbin/nologin  -g mysql -M mysql
[root@localhost ~]# grep mysql /etc/passwd/etc/group
/etc/passwd:mysql:x:500:500::/home/mysql:/sbin/nologin
/etc/group:mysql:x:500:

#使用cmake組織項目

[root@MySQl55 mysql-5.5.37]#
cmake -DCMAKE_INSTALL_PREFIX=/lamp_01/mysql5.5   -DMYSQL_DATADIR=/data/mysql5_5   -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_unicode_ci  -DWITH_READLINE=1  -DWITH_SSL=system  -DWITH_EMBEDDED_SERVER=1  -DENABLED_LOCAL_INFILE=1  -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_DEBUG=0
[root@MySQL55 mysql-5.5.37]# echo $?
0

#安裝

[root@MySQl55 mysql-5.5.37]# make&& make install
[root@MySQl55 mysql-5.5.37]#echo $?
0

MySQL安裝後的基本配置

#建立MySQL數據存放目錄,並受權歸MySQL用戶和組全部

[root@MySQL55 ~]# mkdir /data/mysql55 -pv
mkdir: created directory `/data'
mkdir: created directory `/data/mysql55'

#設置權限

#建立MySQL用戶以及MySQL

[root@MySQL55 ~]# groupadd mysql &&useradd  -s /sbin/nologin  -g mysql -M mysql
[root@MySQL55 ~]# chown -R  mysql.mysql  /data/mysql55/
 [root@MySQL55~]#  chown -R  mysql.mysql  /data/mysql55/
[root@MySQL55 ~]# ls -ld /data/mysql55/
drwxr-xr-x. 2 mysql mysql 4096 May 13 13:45/data/mysql55/

#複製MySQL配置文件

[root@MySQl55 mysql-5.5.37]# cp ./support-files/my-large.cnf/etc/my.cnf
將mysql的配置文件copy到/etc目錄下,並改名爲my.cnf
若是你想要設置一個選項文件,使用support-files目錄中的一個做爲模板。在這個目錄中有5個模板文件,是根據不一樣機器的內存定製的。
進入mysql源碼目錄,查看全部以.cnf結尾的配置文件
/usr/local/mysql下面有5個my-xxxx.cnf文件my-small.cnf 最小配置安裝,內存<=64M,數據數量最少my-large.cnf 內存=512Mmy-medium.cnf 32M<內存<64M,或者內存有128M,可是數據庫與web服務器公用內存 my-huge.cnf 1G<內存<2G,服務器主要運行mysqlmy-innodb-heavy-4G.cnf 最大配置安裝,內存至少4G
[root@MySQL55mysql-5.5.37]# ll support-files/*.cnf
-rw-r--r--. 1 rootroot  4677 May 13 13:36support-files/my-huge.cnf
-rw-r--r--. 1 rootroot 19759 May 13 13:36 support-files/my-innodb-heavy-4G.cnf
-rw-r--r--. 1 rootroot  4651 May 13 13:36support-files/my-large.cnf
-rw-r--r--. 1 rootroot  4662 May 13 13:36support-files/my-medium.cnf
-rw-r--r--. 1 rootroot  2826 May 13 13:36 support-files/my-small.cnf


 

#配置開機自動啓動

[root@MySQl55 mysql-5.5.37]# cp./support-files/mysql.server /etc/init.d/mysqld
cp: overwrite `/etc/init.d/mysqld'? y
[root@MySQl55 mysql-5.5.37]# chmod +700/etc/init.d/mysqld
[root@MySQL55 mysql-5.5.37]# ls -l/etc/init.d/mysqld
-rwx------. 1 root root 10878 May 13 13:55/etc/init.d/mysqld
[root@MySQl55 mysql-5.5.37]# chkconfig--add mysqld
[root@MySQl55 mysql-5.5.37]# chkconfig--level 2345 mysqld on

#查看是否已應用上

[root@MySQl55 mysql-5.5.37]# chkconfig--list mysqld  
mysqld          0:off   1:off  2:on    3:on   4:on    5:on    6:off

#添加MySQL的軟連接以適應init腳本

[root@MySQL55 ~]# ln -sv/lamp_01/mysql5.5/bin/mysql /usr/sbin/mysql
`/usr/sbin/mysql' ->`/lamp_01/mysql5.5/bin/mysql'
[root@MySQL55 ~]# ln -sv /lamp_01/mysql5.5/bin/mysqladmin  /usr/sbin/mysqladmin
`/usr/sbin/mysqladmin' ->`/lamp_01/mysql5.5/bin/mysqladmin'
[root@MySQL55 ~]# ln -sv/lamp_01/mysql5.5/bin/mysqldump /usr/sbin/mysqldump
`/usr/sbin/mysqldump' ->`/lamp_01/mysql5.5/bin/mysqldump'

#修改配置文件

[root@MySQl55 ~]# vim /etc/my.cnf

#[mysqld]節點中添加:

25 [mysqld]
26 datadir = /data/mysql/
27 log-error = /data/mysql/error.log
28 pid-file = /data/mysql/mysql.pid
29 tmpdir = /tmp


wKioL1OHAX7jdeWiAAMEimzv5ZQ599.jpg

#保存退出

#初始化數據庫

[root@MySQl55 ~]#

/lamp_01/mysql5.5/scripts/mysql_install_db--user=mysql --basedir=/lamp_01/mysql5.5/ --datadir=/data/mysql/

WARNING: The host 'MySQl55' could not belooked up with resolveip.

This probably means that your libclibraries are not 100 % compatible

with this binary MySQL version. The MySQLdaemon, mysqld, should work

normally with the exception that host nameresolving will not work.

This means that you should use IP addressesinstead of hostnames

when specifying MySQL privileges !

Installing MySQL system tables...

OK

Filling help tables...

OK

**************************************************************************

[root@MySQl55 ~]# echo $?
0

#啓動MySQL

[root@MySQl55 ~]# service mysqld start

Starting MySQL..... SUCCESS!

#查看是否有mysql進程

[root@MySQl55 ~]# ps -ef |grep mysqld
root     3363     1  0 06:09 pts/3    00:00:00 /bin/sh/lamp_01/mysql5.5/bin/mysqld_safe --datadir=/data/mysql/--pid-file=/data/mysql/mysql.pid
mysql    3700  3363  2 06:09 pts/3    00:00:00 /lamp_01/mysql5.5/bin/mysqld--basedir=/lamp_01/mysql5.5 --datadir=/data/mysql/ --plugin-dir=/lamp_01/mysql5.5/lib/plugin--user=mysql --log-error=/data/mysql/error.log --pid-file=/data/mysql/mysql.pid--socket=/tmp/mysql.sock --port=3306
root     3727 12779  0 06:09 pts/3    00:00:00 grep mysqld

#查看是否有mysql端口

[root@MySQl55 ~]# netstat -tulanp |grep:3306
tcp       0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3700/mysqld

#測試mysql,mysqladmin,mysqldump命令是否能正常使用

[root@MySQl55 ~]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.37-log Sourcedistribution

 

Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.

 

Oracle is a registered trademark of OracleCorporation and/or its

affiliates. Other names may be trademarksof their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.

 

mysql> \q

Bye

   通常都是沒問題的,如有問題的話能夠vim  /etc/profile
添加MySQL的安裝路徑/bin目錄,如安裝路徑爲/usr/local/mysql55
則對應添加爲 export PATH=$PATH:/usr/local/mysql55/bin
保存退出後
source  /etc/profile使得當即生效!

#讀取MySQL的版本信息

[root@MySQl55 ~]# mysqladmin version
mysqladmin Ver 8.42 Distrib 5.5.37, for Linux on x86_64
Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.
 
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
 
Server version          5.5.37-log
Protocol version        10
Connection             Localhost via UNIXsocket
UNIX socket             /tmp/mysql.sock
Uptime:                 2 min 48 sec
 
Threads: 1 Questions: 4  Slow queries: 0  Opens: 33 Flush tables: 1  Open tables:26  Queries per second avg: 0.023

 

#到此MySQL編譯安裝已基本完成,後面會有MySQL詳細的優化配置

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

MySQL5.5之前的版本(MySQL5.1.x)./configure 編譯參考以下,線上環境的配置哦,可直接使用,哈哈!

./configure \

--prefix=/lamp2_01/mysql5.1.72 \

--with-unix-socket-path=/lamp2_01/mysql5.1.72/tmp/mysql.sock \

--localstatedir=/lamp2_01/mysql5.1.72/data \

--enable-assembler \

--enable-thread-safe-client \

--with-mysqld-user=mysql \

--with-big-tables \

--without-debug \

--with-pthread \

--enable-assembler \

--with-extra-charsets=complex \

--with-readline \

--with-ssl \

--with-embedded-server \

--enable-local-infile \

--with-plugins=partition,innobase \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   Tips:要構建LAMP環境,首先須要安裝MySqlApache,最後纔是安裝PHP。固然了,具體是先編譯安裝Apache仍是變編譯MySQL都是能夠的,只要是最後再編譯PHP就能夠了,由於在編譯PHP程序的時候,在編譯PHP的參數裏面須要指定Apacheapxs工具所在的路徑以及MySQL的安裝路徑;因爲這裏的PHP編譯是以Apache的模塊的方式來運行的,要是配置成FastCGI的形式安裝順序也許就無所謂了,由於到目前爲止,筆者尚未嘗試在多臺機器上作過實驗,因此不敢確定的告訴您哦!

好比前端的是一臺獨立的Apache服務器,後面是一臺獨立的PHP程序服務器,在後面是一臺獨立的MySql數據庫服務器,這個筆者下次會作實驗的。

因爲前面MySql5.已經編譯完了,那麼,咱們就一鼓作氣,再來編譯安裝Apache2.4最新版本!最後構建成一個完整的LAMP服務。

 

 

 

編譯安裝Httpd2.4.9

 

建立編譯Apache源代碼程序及其依賴的軟件包的存放目錄,便於後期管理。

[root@MySQL55 mysql]# mkdir/appstores/apache -pv
mkdir: created directory`/appstores/apache'

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Apache官方說:

Apache 2.2.x相比,Apache 2.4.x提供了不少性能方面的提高,包括支持更大流量、更好地支持雲計算、利用更少的內存處理更多的併發等。除此以外,還包括性能提高、內存利用、異步I/O的支持、動態反向代理設置、與時間驅動的Web服務器至關或更好的性能、更強大的處理資源分配能力,更便捷的緩存支持以及可定製的高速服務器和代理等。其它的功能還包括更簡單的錯誤分析、更靈活的設置項、更強大的驗證機制和更完整的文檔。

Apache服務器項目管理委員會和Apache基金會主席JimJagielski表示,他們但願終端用戶能真正地看到性能進步,Apache 2.4.x比許多以速度見長的Web服務器更快,例如 Nginx

apache-2.2與新出的apache-2.4安裝不一樣的地方在於,2.4版的已經不自帶apr庫,因此在安裝apache-2.4以前,須要依次下載和安裝aprapr-util、以及pcreApache的相關依賴工具。

谷歌搜索關鍵字:downloads apr apr-util pcre就會獲得它們的官網地址連接。

可到下來的地址去如今所需的aprapr-util

http://www.apache.org/dist/apr/

[root@MySQl55 apache]# wget http://mirror.esocc.com/apache//apr/apr-1.5.1.tar.gz
[root@MySQl55 apache]# wget http://www.apache.org/dist/apr/apr-util-1.5.3.tar.gz

谷歌搜索關鍵字:pcre   downloads  indexes

能夠到下面的網址去下載pcre
http://www.pcre.org/
[root@MySQL55 apache]#
[root@MySQL55 apache]#
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
Apache下載列表:
http://www.apache.org/dist/httpd/
[root@MySQl55 apache]#
 wget http://www.apache.org/dist/httpd/httpd-2.4.9.tar.gz

#OK了,工具已經準備齊備啦!能夠動工了!

[root@MySQL55 apache]# ls -lhrt
total 11M
-rw-r--r--. 1 root root 854K Nov 17 01:52apr-util-1.5.3.tar.gz
-rw-r--r--. 1 root root 6.5M Mar 17 01:22httpd-2.4.9.tar.gz
-rw-r--r--. 1 root root 2.0M Apr  9 02:32 pcre-8.35.tar.gz
-rw-r--r--. 1 root root 997K Apr 19 20:06apr-1.5.1.tar.gz
[root@MySQL55 apache]#
 [root@MySQl55apache]# tar xf apr-1.5.1.tar.gz
[root@MySQl55 apache]# cd apr-1.5.1
[root@MySQl55 apr-1.5.1]# ./configure--prefix=/usr/local/apr
[root@MySQl55 apr-1.5.1]# echo $?
0
[root@MySQl55 apr-1.5.1]# make &&make install
[root@MySQl55 apr-1.5.1]# echo $?
0
[root@MySQl55 apr-1.5.1]# cd ../
[root@MySQl55 apache]# tar xfapr-util-1.5.3.tar.gz
[root@MySQl55 apache]# cd apr-util-1.5.3
[root@MySQl55 apr-util-1.5.3]#
./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr/bin/apr-1-config
[root@MySQl55 apr-util-1.5.3]# echo $?
0
[root@MySQl55 apr-util-1.5.3]# make&& make install
[root@MySQl55 apr-util-1.5.3]# echo $?
0
[root@MySQl55 apache]# tar xfpcre-8.35.tar.gz
[root@MySQl55 apache]# cd pcre-8.35
./configure --prefix=/usr/local/pcre--with-apr=/usr/local/apr/bin/apr-1-config
[root@MySQl55 pcre-8.35]# echo $?
0
[root@MySQl55 pcre-8.35]# make &&make install
[root@MySQl55 pcre-8.35]# echo $?
0

#LAMP之編譯安裝 Apache2.4.9

[root@MySQl55 apache]# cd httpd-2.4.9
[root@MySQl55 httpd-2.4.9]# ./configure--prefix=/lamp_02/httpd24 --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so--enable-deflate=shared --enable-expires=shared --enable-ssl=shared--enable-headers=shared --enable-rewrite=shared --enable-static-support--with-mpm=worker
[root@MySQl55 httpd-2.4.9]# echo $?
0
[root@MySQl55 httpd-2.4.9]# make &&make install
[root@MySQl55 httpd-2.4.9]# echo $?
0

至此,httpd2.4已經編譯完畢。

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

編譯安裝PHP5.4.28

   在編譯PHP以前,先要解決兩個問題:CentOS6.x libmcrypt 的安裝和可能有些系統找不到 libiconv 致使的錯誤。

#建立PHP及其依賴的安裝包存放目錄:

安裝PHP了,就更名爲PHP5吧!爲了方便記憶

[root@php5_4 ~] # hostname php5_4
[root@php5_4 ~]# mkdir /appstores/php -pv
mkdir: created directory `/appstores/php'
[root@php5_4 ~]# cd /appstores/php/

檢查安裝PHP所需lib

PHP程序在開發時會調用一些諸如gd等函數庫,所以須要確認下面的lib庫是否已經安裝

[root@php5_4 ~]# rpm  -qa zlib libxml libjpeg freetype libpng gdcurl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devellibpng-devel gd-devel curl-devel

libpng-1.2.49-1.el6_2.x86_64

freetype-2.3.11-14.el6_3.1.x86_64

curl-7.19.7-35.el6.x86_64

zlib-devel-1.2.3-29.el6.x86_64

libpng-devel-1.2.49-1.el6_2.x86_64

libxml2-devel-2.7.6-14.el6.x86_64

zlib-1.2.3-29.el6.x86_64

freetype-devel-2.3.11-14.el6_3.1.x86_64

也能夠檢查devel之類的

也可使用下面的方式來檢查這5個軟件包也能夠達到與上面同樣的效果

[root@php5_4 ~]# rpm -qa zlib-devellibxml2-devel libjpeg-devel freetype-devel libpng-devel
zlib-devel-1.2.3-29.el6.x86_64
libpng-devel-1.2.49-1.el6_2.x86_64
libxml2-devel-2.7.6-14.el6.x86_64
freetype-devel-2.3.11-14.el6_3.1.x86_64

1、安裝PHP依賴庫

# 安裝 libmcrypt

libmcrypt下載地址連接列表:

ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt
[root@php5_4 ~]# # cd /appstore/php/
[root@php5_4 ~]#
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
[root@php5_4 ~]# tar xflibmcrypt-2.5.7.tar.gz
[root@php5_4 ~]# cd libmcrypt-2.5.7
[root@ php5_4  libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt
[root@ php5_4  libmcrypt-2.5.7]# make && make install

#安裝 mhash

http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/
[root@php5_4  php]#
wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
[root@ php5_4 php]# tar xfmhash-0.9.9.9.tar.gz
[root@ php5_4 php]# cd mhash-0.9.9.9
[root@ php5_4 mhash-0.9.9.9]# ./configure--prefix=/usr/local/mhash
[root@ php5_4 libmcrypt-2.5.7]# echo $?
0

#安裝 mcrypt

http://sourceforge.net/projects/mcrypt/files/MCrypt/
[root@php5_4 php]#
wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz [root@php5_4php]# /sbin/ldconfig  #搜索出可共享的動態連接庫
[root@php5_4 php]# tar xflibmcrypt-2.5.7.tar.gz
[root@php5_4 php]# cd libmcrypt-2.5.7
[root@php5_4 libmcrypt-2.5.7]# ./configure--prefix=/usr/local/mcrypt
[root@php5_4 libmcrypt-2.5.7]#  make && make install
[root@php5_4 libmcrypt-2.5.7]# echo $?
0

#安裝 libiconv

https://www.gnu.org/software/libiconv/#downloading
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
[root@php5_4 php]#
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
[root@php5_4 php]# tar xflibiconv-1.14.tar.gz
[root@php5_4 php]# cd libiconv-1.14
[root@php5_4 libiconv-1.14]# ./configure--prefix=/usr/local/libiconv
[root@php5_4 libiconv-1.14]# make&& make install
[root@php5_4 libiconv-1.14]# echo $?
0

#安裝PHP

PHP鏡像地址列表:

http://php.net/downloads.php
[root@php5_4 php]# wget http://cn2.php.net/distributions/php-5.5.12.tar.bz2
[root@php5_4 php]# tar xfphp-5.5.12.tar.bz2
[root@php5_4 php]# cd php-5.5.12

進行到這一步了!

#生成配置

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[root@php5_4 php-5.5.12]#

./configure --prefix=/lamp_03/php5.4.28--with-mysql=/lamp_01/mysql5.5 --with-apxs2=/lamp_02/httpd24/bin/apxs--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d--with-openssl --with-zlib --with-bz2 --with-gettext --with-mhash=/usr/local/mhash  --with-mcrypt=/usr/local/mcrypt   --with-iconv=/usr/local/libiconv --with-curl--with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir   --with-pdo-mysql=/lamp_01/mysql5.5  --enable-gd-native-ttf --enable-bcmath--enable-mbstring --enable-zip --enable-soap --enable-sockets --enable-ftp--without-pear

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

安裝php的時候,報錯以下:

  Configure: error: Please reinstall the BZip2distribution

解決方法以下:

[root@php5_4php-5.5.12]# yum -y  install bzip2bzip2-devel

今天配置一臺serverphp支持curl的時候, 出現以下報錯

checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/

其實就是curldev包沒有安裝, 解決方案:
終端下

[root@php5_4php-5.5.12]# yum -y install curl-devel

而後就能夠繼續了

wKioL1OHAbfiaaGSAAW8SykqPAE665.jpg

wKiom1OHBS-BRJDjAAWPeppJhCk387.jpg

#編譯

[root@php5_4 php-5.5.12]# make &&make install

編譯參數解釋:

--prefix=/lamp_03/php5.4.28 : 設置安裝路徑

--with-apxs2=/usr/local/apache/bin/apxs : 編譯共享的 Apache2.0 模塊

--with-config-file-path=/etc : 指定配置文件php.ini地址

--with-config-file-scan-dir=/etc/php.d : 指定額外的ini文件目錄

--with-openssl : 編譯OpenSSL支持

--with-zlib : 編譯zlib支持

--enable-bcmath : 啓用BC風格精度數學函數

--with-bz2 : BZip2支持

--with-gd : GD支持

--enable-gd-native-ttf : 啓用TrueType字符串函數

--with-gettext : 啓用GNU gettext支持

--with-mhash : mhash支持

--enable-mbstring : 啓用支持多字節字符串

--with-mcrypt : 編譯mcrypt加密支持

--enable-zip : 啓用zip /寫支持

--with-iconv=/usr/local/libiconv : iconv支持

--with-curl : CRUL支持

--enable-soap : SOAP支持

--enable-sockets : SOCKETS支持

--enable-ftp : FTP支持

--with-mysql=/usr/local/mysql : 啓用mysql支持

--with-pdo-mysql=/usr/local/mysql : 啓用pdo-mysql支持

--without-pear : 不安裝PEAR

更多編譯參數解釋參考http://www.php.net/manual/zh/configure.about.php或者 ./configure --help 查看。

 

 


              配置Apache支持PHP

修改主機名稱使得實驗一目瞭然

[root@LAMP ~]# hostname LAMP

[root@LAMP ~]# hostname

爲PHP建立軟連接:方便線上環境版本更新。

[root@LAMP ~]# ln -s /lamp_03/php5.4.28//lamp_03/php
[root@LAMP ~]# ll /lamp_03/php
lrwxrwxrwx. 1 root root 19 May 13 16:00/lamp_03/php -> /lamp_03/php5.4.28/

進入PHP源碼目錄,查看PHP的配置文件

[root@LAMP ~]# cd /appstores/php/php-5.5.12
[root@LAMP php-5.5.12]# ls -l php.ini*
-rw-r--r--. 1 1001 1001 69486 Apr 29 16:04php.ini-development
-rw-r--r--. 1 1001 1001 69516 Apr 29 16:04php.ini-production

#複製配置文件php.ini

[root@LAMP php-5.5.12]# cp php.ini-production  /etc/php.ini

Apache的配置文件Addtype applicaAddType application/x-gzip.gz.tgz這行下面中加入兩行對PHP的文件類型解析(加在Apache配置文件最後也可,這裏主要是爲了一目瞭然)

Apache設置以前須要作的一些操做:

[root@LAMP ~]# ln -s /lamp_02/httpd24//lamp_02/httpd
[root@LAMP ~]# ls -l /lamp_02/httpd
lrwxrwxrwx. 1 root root 17 May 13 16:10/lamp_02/httpd -> /lamp_02/httpd24/
[root@LAMP ~]# cp/lamp_02/httpd/conf/httpd.conf /lamp_02/httpd/conf/httpd.conf`date +%F`    
[root@LAMP ~]#
diff /lamp_02/httpd/conf/httpd.conf/lamp_02/httpd/conf/httpd.conf2014-05-13

這裏須要注意的是httpd2.2系列的版本是在311行左右

轉到311行即AddType application/x-gzip.gz.tgz行的下一行添加如下兩行對PHP的語句解析支持:

AddType application/x-httpd-php-source.phps
AddType application/x-httpd-php .php .phtml

2.4版本系列的相關配置是在376行左右,固然您也沒必要糾結於行數,只要在vim Apache的配置文件或者使用grep -n參數都是能夠過濾出來在多少行的

[root@php5_4 ~]# grep -n  AddType /lamp_02/httpd/conf/httpd.conf
362:   # AddType allows you to add to or override the MIME configuration
365:   #AddType application/x-gzip .tgz
376:   AddType application/x-compress .Z
377:   AddType application/x-gzip .gz .tgz
398:   #AddType text/html .shtml

wKiom1OHBfHRvo6XAALI_Xjax3o005.jpg

#Apache的一些簡單設置

wKiom1OHBfzRMBVzAAItWpjRvz8018.jpg

#添加Apache用戶和組,方便Apache服務使用哦!

[root@LAMP ~]# groupadd apache &&useradd -s /sbin/nologin  -g apache -Mapache
[root@LAMP ~]# grep apache /etc/passwd/etc/group
/etc/passwd:apache:x:501:501::/home/apache:/sbin/nologin
/etc/group:apache:x:501:

wKioL1OHBf7j5SRkAAMBTg_FSYE841.jpg

#修改完Apache配置以後記得要檢查語法,避免啓動時錯誤,浪費時間,影響業務

service httpd restart  # 或 /etc/init.d/httpdrestart
[root@LAMP ~]#/lamp_02/httpd/bin/apachectl  -t
Syntax OK
[root@LAMP ~]#/lamp_02/httpd/bin/apachectl  configtest
Syntax OK

#啓動Apache

[root@LAMP ~]# /lamp_02/httpd/bin/apachectlstart

#驗證Apache進程是否啓動

[root@LAMP ~]# ps -ef |grep httpd
root    30584     1  0 16:28 ?        00:00:00 /lamp_02/httpd24/bin/httpd -kstart
apache  30586 30584  0 16:28 ?        00:00:00 /lamp_02/httpd24/bin/httpd -kstart
apache  30587 30584  0 16:28 ?        00:00:00 /lamp_02/httpd24/bin/httpd -kstart
apache  30588 30584  0 16:28 ?        00:00:00 /lamp_02/httpd24/bin/httpd -kstart
root    30671 30408  0 16:29 pts/1    00:00:00 grep httpd

#驗證80端口是否啓動

[root@LAMP ~]# netstat -tulanp |grep :80
tcp       0      0 :::80                       :::*                        LISTEN      30584/httpd

#由端口反查進程        

[root@LAMP ~]# lsof -i :80
COMMAND  PID   USER   FD  TYPE DEVICE SIZE/OFF NODE NAME
httpd  30584   root    4u IPv6 327633      0t0  TCP *:http (LISTEN)
httpd  30586 apache    4u  IPv6 327633      0t0 TCP *:http (LISTEN)
httpd  30587 apache    4u  IPv6 327633      0t0 TCP *:http (LISTEN)
httpd  30588 apache    4u  IPv6 327633      0t0 TCP *:http (LISTEN)

#寫一個調用PHP版本的腳本

[root@LAMP ~]# cd /lamp_02/httpd/htdocs/
[root@LAMP htdocs]# ll
total 4
-rw-r--r--. 1 root root 45 Jun 12  2007 index.html
[root@LAMP htdocs]# vim index.php
[root@LAMP htdocs]# cat index.php
<?php
phpinfo();
?>

wKioL1OHBlrRK5w8AARPAUubtdE544.jpg

#運行 phpinfo() 函數,頁面信息以下:

wKiom1OHBreBVgptAAVJNcTetGY213.jpg

#最後再測試PHP鏈接MySql是否正常
首先是爲MySQL設置密碼:
[root@LAMP ~]#  mysqladmin -u root password"123.com"

wKioL1OHBrLwXcTiAAQ5zEV4qtQ364.jpg

測試代碼以下:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[root@php5_4 htdocs]# cat test.php

<?php

$link_id=mysql_connect('localhost','root','123.com')or mysql_error();

if ($link_id) {

echo "<h1> mysql successfuly</h1>";

}

else {

echo mysql_error();

}

?>

[root@php

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

wKiom1OHBwuDDfybAATOL1sG9TQ688.jpg

相關文章
相關標籤/搜索