1. 程式人生 > >PHP-環境-Lamp環境搭建-生產環境

PHP-環境-Lamp環境搭建-生產環境

一、準備工作

1、安裝編譯工具gcc、gcc-c++
注意解決依賴關係,推薦使用yum安裝,若不能聯網可使用安裝光碟做為yum源——
1)編輯yum配置檔案:

# mount /dev/cdrom /mnt/cdrom
# vi /etc/yum.repos.d/CentOS-Media.repo 
[c5-media] 
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom   * 修改為光碟掛載點
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=0
enabled=1
* 改為1意為啟用 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

2)剪下/etc/yum.repos.d/CentOS-Base.repo

# mv /etc/yum.repos.d/CentOS-Base.repo /backup

3)依次安裝gcc、gcc-c++

# yum -y install gcc
# yum -y install gcc-c++

2、關閉系統RPM安裝包的Apache、MySQL的服務
關閉啟動的服務httpd、mysqld

# service httpd stop
# service mysqld stop

確定rpm包安裝的httpd和mysqld不能開機自啟動

chkconfig  --level  2345  httpd(mysqld)  off

3、關閉SELinux,允許防火牆80埠訪問
使用setup
關閉防火牆和SElinux

1)關閉SELinux

# vi /etc/selinux/config
SELINUX=disabled   * 若安裝時沒有禁用SELinux ,將enforcing改為disabled

修改後需重新啟動Linux方可生效!
2)關閉防火牆Netfilter/iptables
因尚未做防火牆講解,直接簡單的關閉所有防火牆設定:

# iptables  -F     * 如果沒有禁用防火牆,預設80埠禁止訪問
iptables -Z iptables -X

4、關閉不必要自啟動服務

# ntsysv

以下列出服務可保持自啟動,未列出的服務都可以關閉:
atd
crond # atd、crond計劃任務
irqbalance
microcode_ctl # 系統irq埠呼叫,系統服務
network #網路設定
sendmail #郵件
sshd #遠端管理
syslog #系統日誌

5、拷貝原始碼包,解包解壓縮
連結:http://pan.baidu.com/s/1pKEbpm7 密碼:9o2i
建議將LAMP環境安裝原始碼包統一存放在一個目錄下,如/lamp
可編寫個批量處理指令碼,一次性把所有.tar.gz的安裝包解包解壓縮

# vi tar.sh    
    cd /lamp
/bin/ls *.tar.gz > ls.list
/bin/ls *.tgz >> ls.list
    for TAR in `cat ls.list`
 do
        /bin/tar -zxf $TAR
 done
/bin/rm ls.list

6、檢視確認磁碟空間未滿

df -h
  • 若/分割槽已滿,可以移動安裝包到其他分割槽或刪除其他無用檔案

如何確定報錯:
1)安裝過程停止
2)停止後,一頁介面中出現error或者warning

如何確定安裝成功:
進入安裝目錄,確認安裝程式出現,就是成功

二、編譯安裝

  • 每個原始碼包配置編譯安裝完成後,確認安裝目錄下是否生成安裝檔案

    安裝libxml2

    Libxml2 是一個xml c語言版的解析器,本來是為Gnome專案開發的工具,是一個基於MIT License的免費開源軟體。它除了支援c語言版以外,還支援c++、PHP、Pascal、Ruby、Tcl等語言的繫結,能在Windows、Linux、Solaris、MacOsX等平臺上執行。功能還是相當強大的,相信滿足一般使用者需求沒有任何問題。
    libxml是一個用來解析XML文件的函式庫。它用C語言寫成, 並且能為多種語言所呼叫,例如C語言,C++,XSH。C#, Python,Kylix/Delphi,Ruby,和PHP等。Perl中也可以使用XML::LibXML模組。它最初是為GNOME開發的專案,但現在可以用在各種各樣的方面。libXML 程式碼可移植性非常好,因為它基於標準的ANSI C庫, 並採用MIT許可證。

#yum  install  -y  libxml2-devel    如果報錯,安裝此包後再嘗試安裝
yum -y install python-devel 
    必須有
cd /lamp/libxml2-2.9.1
 ./configure --prefix=/usr/local/libxml2/
 make 
 make install

# 安裝libmcrypt
libmcrypt是加密演算法擴充套件庫。支援DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等演算法。

 cd /lamp/libmcrypt-2.5.8
 ./configure --prefix=/usr/local/libmcrypt/
 make 
 make install
  • 需呼叫gcc-c++編譯器,未安裝會報錯

安裝libltdl,也在libmcrypt原始碼目錄中,非新軟體

 cd /lamp/libmcrypt-2.5.8/libltdl
 ./configure --enable-ltdl-install
 make
 make install

安裝mhash

Mhash是基於離散數學原理的不可逆向的php加密方式擴充套件庫,其在預設情況下不開啟。mhash的可以用於建立校驗數值,訊息摘要,訊息認證碼,以及無需原文的關鍵資訊儲存(如密碼)等。

cd /lamp/mhash-0.9.9.9
./configure 
make
make install

安裝mcrypt

mcrypt 是 php 裡面重要的加密支援擴充套件庫。Mcrypt庫支援20多種加密演算法和8種加密模式

cd /lamp/mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib  \
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt

以上為一條命令。LD_LIBRARY_PATH用於指定libmcrypt和mhash的庫的位置。

–with-libmcrypt-prefix用於指定libmcrypt軟體位置
make
make install

mcrypt沒有安裝完成,這是php的模組,需要等php安裝完成之後,再繼續安裝

# 安裝zlib
zlib是提供資料壓縮用的函式庫,由Jean-loup Gailly與Mark Adler所開發,初版0.9版在1995年5月1日發表。zlib使用DEFLATE演算法,最初是為libpng函式庫所寫的,後來普遍為許多軟體所使用。此函式庫為自由軟體,使用zlib授權

 cd /lamp/zlib-1.2.3            
./configure
 make
 make install  >>  /root/zlib.log
  • zlib指定安裝目錄可能造成libpng安裝失敗,故不指定,為解除安裝方便,建議make install執行結果輸出到安裝日誌檔案,便於日後解除安裝

安裝libpng

libpng 軟體包包含 libpng 庫.這些庫被其他程式用於解碼png圖片

 cd /lamp/libpng-1.2.31
 ./configure --prefix=/usr/local/libpng
 make
 make install

# 安裝jpeg6
用於解碼.jpg和.jpeg圖片

 mkdir /usr/local/jpeg6 
 mkdir /usr/local/jpeg6/bin
 mkdir /usr/local/jpeg6/lib
 mkdir /usr/local/jpeg6/include
 mkdir -p /usr/local/jpeg6/man/man1

目錄必須手工建立

cd /lamp/jpeg-6b
 ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
 make   
 make install
  • –enable-shared與–enable-static引數分別為建立共享庫和靜態庫使用的libtool

    安裝freetype

    FreeType庫是一個完全免費(開源)的、高質量的且可移植的字型引擎,它提供統一的介面來訪問多種字型格式檔案,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支援單色點陣圖、反走樣點陣圖的渲染。FreeType庫是高度模組化的程式庫,雖然它是使用ANSI C開發,但是採用面向物件的思想,因此,FreeType的使用者可以靈活地對它進行裁剪。

cd /lamp/freetype-2.3.5
./configure --prefix=/usr/local/freetype/
 make
 make install

安裝Apache

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

如果報錯,則:

tar  zxvf  apr-1.4.6.tar.gz
tar  zxvf  apr-util-1.4.1.tar.gz  解壓過
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

解壓apr和apr-util,複製並取消版本號

configure: error: pcre-config for libpcre not found. PCRE is required and available from

如果報錯,則:

tar zxvf pcre-8.34.tar.gz
cd /lamp/pcre-8.34  
./configure && make && make install

checking whether to enable mod_ssl… configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

如果報錯,則:

yum install openssl-devel

安裝apache

cd /lamp/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
 make
 make install
  • 若前面配置zlib時沒有指定安裝目錄,Apache配置時不要新增–with-z=/usr/local/zlib/引數

    啟動Apache測試:

/usr/local/apache2/bin/apachectl start
ps  aux | grep httpd
netstat –tlun | grep :80
  • 若啟動時提示/usr/local/apache2/modules/mod_deflate.so無許可權,可關閉SELinux或者執行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/mod_deflate.so ,類似此類.so檔案不能載入或沒有許可權的問題,都是SELinux問題,使用命令:“chcon -t texrel_shlib_t 檔名”即可解決,MySQL和Apache也可能有類似問題。
    通過瀏覽器輸入地址訪問:http://Apache伺服器地址,若顯示“It works”即表明Apache正常工作

設定Apache系統引導時啟動:

echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local

安裝ncurses

Ncurses 提供字元終端處理庫,包括面板和選單。它提供了一套控制游標,建立視窗,改變前景背景顏色以及處理滑鼠操作的函式。使使用者在字元終端下編寫應用程式時繞過了那些惱人的底層機制。簡而言之,他是一個可以使應用程式直接控制終端螢幕顯示的函式庫。
1、
yum -y install ncurses-devel
注:如果報錯,包找不到,是萬用字元沒有識別,給檔名加雙引號 “ncurses
2、原始碼編譯:
cd /lamp/ncurses-5.9
./configure –with-shared –without-debug –without-ada –enable-overwrite
make
make install
* 若不安裝ncurses編譯MySQL時會報錯
* –without-ada引數為設定不編譯為ada繫結,因進入chroot環境不能使用ada ;–enable-overwrite引數為定義把標頭檔案安裝到/tools/include下而不是/tools/include/ncurses目錄
* –with-shared 生成共享庫

安裝cmake和bison

mysql在5.5以後,不再使用./configure工具,進行編譯安裝。而使用cmake工具替代了./configure工具。cmake的具體用法參考文件cmake說明。
bison是一個自由軟體,用於自動生成語法分析器程式,可用於所有常見的作業系統
yum -y install cmake
yum -y install bison

# 安裝MySQL
groupadd mysql
useradd -g mysql mysql
* 新增使用者組mysql ,將mysql使用者預設組設定為mysql使用者組

cd /lamp/mysql-5.5.23
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql     安裝位置
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock           指定socket(套接字)檔案位置
-DEXTRA_CHARSETS=all                        擴充套件字元支援
-DDEFAULT_CHARSET=utf8                      預設字符集
-DDEFAULT_COLLATION=utf8_general_ci         預設字元校對
-DWITH_MYISAM_STORAGE_ENGINE=1              安裝myisam儲存引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1            安裝innodb儲存引擎
-DWITH_MEMORY_STORAGE_ENGINE=1              安裝memory儲存引擎
-DWITH_READLINE=1                           支援readline庫
-DENABLED_LOCAL_INFILE=1                    啟用載入本地資料
-DMYSQL_USER=mysql                          指定mysql執行使用者
-DMYSQL_TCP_PORT=3306                       指定mysql埠

make
make install

make clean
rm CMakeCache.txt

如果報錯,清除快取,請使用以上命令

cd /usr/local/mysql/
chown -R mysql .
chgrp -R mysql .

修改mysql目錄許可權

/usr/local/mysql/scripts/mysql_install_db –user=mysql

建立資料庫授權表,初始化資料庫

chown -R root .
chown -R mysql data

修改mysql目錄許可權

cp support-files/my-medium.cnf /etc/my.cnf

複製mysql配置檔案

二次授權:
/usr/local/mysql/scripts/mysql_install_db –user=mysql

啟動MySQL服務:
1.用原本原始碼的方式去使用和啟動mysql
/usr/local/mysql/bin/mysqld_safe –user=mysql &
2.重啟以後還要生效:
vi /etc/rc.local
/usr/local/mysql/bin/mysqld_safe –user=mysql &
3.設定mysql密碼
/usr/local/mysql/bin/mysqladmin -uroot password 123
清空歷史命令 history -c
* 給mysql使用者root加密碼123
* 注意密碼不能寫成 “123”
/usr/local/mysql/bin/mysql -u root -p
mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>\s #檢視字符集是否改為utf8
* 進入mysql以後用set來改密碼
mysql> exit
* 登入MySQL客戶端控制檯設定指定root密碼

# 安裝PHP
編譯前確保系統已經安裝了libtool和libtool-ltdl軟體包,安裝:
yum -y install “libtool*”
yum -y install “libtool-ltdl*”

cd /lamp/php-5.6.15
./configure –prefix=/usr/local/php/ –with-config-file-path=/usr/local/php/etc/ –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql/ –with-libxml-dir=/usr/local/libxml2/ –with-jpeg-dir=/usr/local/jpeg6/ –with-png-dir=/usr/local/libpng/ –with-freetype-dir=/usr/local/freetype/ –with-gd –with-mcrypt=/usr/local/libmcrypt/ –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-soap –enable-mbstring=all –enable-sockets –with-pdo-mysql=/usr/local/mysql –without-pear

 若前面配置zlib時沒有指定安裝目錄,PHP配置時不要新增–with-zlib-dir=/usr/local/zlib/引數
選項:
–with-config-file-path=/usr/local/php/etc/ 指定配置檔案目錄
–with-apxs2=/usr/local/apache2/bin/apxs 指定apache動態模組位置
–with-mysql=/usr/local/mysql/ 指定mysql位置
–with-libxml-dir=/usr/local/libxml2/ 指定libxml位置
–with-jpeg-dir=/usr/local/jpeg6/ 指定jpeg位置
–with-png-dir=/usr/local/libpng/ 指定libpng位置
–with-freetype-dir=/usr/local/freetype/ 指定freetype位置
–with-mcrypt=/usr/local/libmcrypt/ 指定libmcrypt位置
–with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli位置
–with-gd 啟用gd庫
–enable-soap 支援soap服務
–enable-mbstring=all 支援多位元組,字串
–enable-sockets 支援套接字
–with-pdo-mysql=/usr/local/mysql 啟用mysql的pdo模組支援
–without-pear 不安裝pear(安裝pear需要連線網際網路。 PEAR是PHP擴充套件與應用庫)
make
make install

生成php.ini
cp /lamp/php-5.6.15/php.ini-production /usr/local/php/etc/php.ini

mkdir /usr/local/php/etc/

測試Apache與PHP的連通性,看Apache是否能解析php檔案
vi /usr/local/apache2/etc/httpd.conf
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
(注意大小寫)
* .phtml為將.phps做為PHP原始檔進行語法高亮顯示
重啟Apache服務:/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start

  • Apache無法啟動,提示cannot restore segment prot after reloc: Permission denied錯誤,為SELinux問題,可關閉SELinux或者執行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
    測試:vi /usr/local/apache2/htdocs/test.php

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

export PATH=/usr/local/php/bin:PATHechoPATH

/usr/local/php/bin:/usr/local/php/bin:/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

php -v

PHP 5.6.15 (cli) (built: Nov 3 2015 03:04:34)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

vim /etc/profile

在最後一行加上export PATH=”/usr/local/php/bin:$PATH”

source /etc/profile

安裝openssl

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。

yum -y install openssl-devel 必須安裝
cd /lamp/php-5.6.15/ext/openssl
mv config0.m4 config.m4 否則報錯:找不到config.m4
/usr/local/php/bin/phpize
./configure –with-openssl –with-php-config=/usr/local/php/bin/php-config
make
make install

編譯安裝memcache

Memcache是一個高效能的分散式的記憶體物件快取系統,通過在記憶體裡維護一個統一的巨大的hash表,它能夠用來儲存各種格式的資料,包括影象、視訊、檔案以及資料庫檢索的結果等。簡單的說就是將資料呼叫到記憶體中,然後從記憶體中讀取,從而大大提高讀取速度。

yum -y install zlib-devel
cd memcache-3.0.8
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install

編譯安裝mcrypt

cd /lamp/php-5.6.15/ext/mcrypt/
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-mcrypt=/usr/local/libmcrypt/

make
make install

php安裝完成後,通過這些命令安裝mcrypt模組

修改/usr/local/php/etc/php.ini
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-zts-20131226/”

開啟註釋,並修改

extension=”memcache.so”;
extension=”openssl.so”;
extension=”mcrypt.so”;

新增

重啟apache,在phpinfo中可以找到這三個模組

安裝memcache原始碼

首先安裝依賴包libevent
yum -y install “libevent*”

在CentOS 6.3第二張光碟中,請換盤

umount /mnt/cdrom

放入CentOS 6.3第二張光碟

mount /dev/sr0 /mnt/cdrom

cd /lamp/memcached-1.4.17
./configure –prefix=/usr/local/memcache
make && make install

useradd memcache

新增memcache使用者,此使用者不用登入,不設定密碼

/usr/local/memcache/bin/memcached -umemcache &
netstat -an | grep :11211
寫入自啟動:
vi /etc/rc.d/rc.local
/usr/local/memcache/bin/memcached -umemcache &

安裝phpMyAdmin

cp -r phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
cd /usr/local/apache2/htdocs/phpmyadmin
cp config.sample.inc.php config.inc.php
vi config.inc.php
cfg[Servers][i][‘auth_type’] = ‘cookie’;
cfg[Servers][i][‘auth_type’] = ‘http’;
* 設定auth_type為http ,即設定為HTTP身份認證模式
通過瀏覽器輸入地址訪問:http://Apache伺服器地址/phpmyadmin/index.php
使用者名稱為root ,密碼為MySQL設定時指定的root密碼123(lampbrother)

安裝過程中大多錯誤其實為輸入錯誤,可以通過history命令檢視歷史記錄檢查。

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
sql語句,不是linux命令