2015年11月24日 星期二

CentOS 5 64位元安裝Apache+MySQL+PHP+fastcgi

CentOS 5 64位元系統下安裝Apache+fastcgi+OpenSSL+gd+PHP+MySQL+gd+Zend Optimizer

首先先安裝 MYSQL
安裝MYSQL mysql-max-5.0.27-linux-i686-glibc23.tar.gz

groupadd mysql
useradd -g mysql mysql
cd /usr/local
tar -zxvf /root/mysql-max-5.0.27-linux-x86_64-glibc23.tar.gz
這裡解壓
mv mysql-max-5.0.27-linux-x86_64-glibc23/ mysql
cd mysql
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
bin/mysqld_safe --user=mysql &
這是所有的步驟...

cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

cd support-files/
./mysql.server start

測試
/usr/local/mysql/bin/mysqladmin version


OpenSSL 安裝
先使用 rpm -qa | grep openssl 檢查一下有無安裝,若電腦沒有就需要安裝。
代碼:
tar zxvf openssl-0.9.8e.tar.gz.tar
cd openssl-0.9.8e
./config
make
make test
sudo make install

在你安裝apache 時出現下面錯誤,必須要在 configure 時加入這參數 LDFLAGS="-L/usr/lib64 -L/lib64",因為是 64 位元的問題。
但是這情況指出現在 CentOS 5 的版本。
/usr/lib/libexpat.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[3]: *** [libaprutil-1.la] ?? 1
make[3]: Leaving directory `/root/tar/httpd-2.2.3/srclib/apr-util'
make[2]: *** [all-recursive] ?? 1
make[2]: Leaving directory `/root/tar/httpd-2.2.3/srclib/apr-util'
make[1]: *** [all-recursive] ?? 1
make[1]: Leaving directory `/root/tar/httpd-2.2.3/srclib'
make: *** [all-recursive] ?? 1

Apache2.2.4安裝:

下載:http://www.apache.org/
代碼:
tar jxf httpd-2.2.4.tar.tar
cd httpd-2.2.4

我裝的時候已經有裝了所以在 configure 時就只 --enable-ssl=static 若是自行安裝的請用 --with-ssl=/usr/local/ssl
若要載入apache all module 就下此指令 --enable-mods-shared=all
若要安裝 fastcgi 就需要在 configure 時加入--enable-fastcgi

###CentOS 4 安裝 Apache###
./configure --prefix=/usr/local/apache2 --enable-so --enable-deflate --with-mpm=worker --enable-rewrite=shared --enable-headers=shared --enable-ssl=static
./configure --prefix=/usr/local/apache2 --enable-so --enable-deflate --with-mpm=worker --enable-rewrite=shared --enable-headers=shared --enable-ssl=static --enable-fastcgi
###CentOS 5 安裝 Apache###
./configure LDFLAGS="-L/usr/lib64 -L/lib64" --prefix=/usr/local/apache2 --enable-so --enable-deflate --with-mpm=worker --enable-rewrite=shared --enable-headers=shared --enable-ssl=static
./configure LDFLAGS="-L/usr/lib64 -L/lib64" --prefix=/usr/local/apache2 --enable-so --enable-deflate --with-mpm=worker --enable-rewrite=shared --enable-headers=shared --enable-ssl=static --enable-fastcgi
vi ./srclib/apr-util/Makefile
把下列
APRUTIL_LIBS = -lsqlite3 /usr/lib/libexpat.la /root/tar/httpd-2.2.4/srclib/apr/libapr-1.la -luuid -lrt -lcrypt -lpthread -ldl
改成
APRUTIL_LIBS = -lsqlite3 /usr/lib64/libexpat.la /root/tar/httpd-2.2.4/srclib/apr/libapr-1.la -luuid -lrt -lcrypt -lpthread -ldl

make
make install

/usr/local/apache2/bin/httpd -l 檢查支持的 list compiled in modules


我們在編譯時加入--with-mpm=worker


ServerLimit 32
ThreadLimit 128
StartServers 16
MaxClients 4096
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 128
MaxRequestsPerChild 2560


先配置一下deflate:
代碼:
DeflateFilterNote ratio
LogFormat '"%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" (%{ratio}n)' deflate


# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch MSIE !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
# Header Error
# Header append Vary User-Agent env=!dont-vary

### mod_deflate End ###

#查找CustomLog 註解原始的一行,改成
CustomLog logs/access_log deflate

fastcgi2.4.2安裝
下載:http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz
代碼:
tar zvxf mod_fastcgi-2.4.2.tar.gz
cd mod_fastcgi-2.4.2
cp Makefile.AP2 Makefile
#修改Makefile文件,把裡面的
top_dir = /usr/local/apache2 (根據apache安裝目錄調整)

make && make install

以下裝GD,同前奏是裝zlib,libpng,jpeg,freetype。

zlib-1.2.3安裝:
下載:http://surfnet.dl.sourceforge.net/sourceforge/libpng/zlib-1.2.3.tar.bz2
代碼:
tar jxf zlib-1.2.3.tar.bz2
cd zlib-1.2.3
./configure

make && make install

libpng-1.2.12安裝:
下載:http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.9beta9.tar.bz2
代碼:
tar jxf libpng-1.2.12.tar.tar
cd libpng-1.2.12
./configure --prefix=/usr/local/modules/libpng

make && make install

沒有的目錄只要新建就可以了.

mkdir /usr/local/modules/jpeg

mkdir /usr/local/modules/jpeg/bin

mkdir /usr/local/modules/jpeg/lib

mkdir /usr/local/modules/jpeg/bin/cjpeg

mkdir /usr/local/modules/jpeg/man

mkdir /usr/local/modules/jpeg/man/man1

六個目錄

jpegsrc.v6b安裝:
下載:http://minbar.tinysofa.org/file/tinysofa/releases/1.1/libjpeg/pristine/sources/jpegsrc.v6b.tar.bz2?rev=3645&format=raw
代碼:
tar jxf jpegsrc.v6b.tar.tar
cd jpeg-6b
./configure --prefix=/usr/local/modules/jpeg

make && make install


freetype-2.1.9安裝
下載:http://umn.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.9.tar.bz2
代碼:
tar jxf freetype-2.1.9.tar.bz2
cd freetype-2.1.9
./configure --prefix=/usr/local/modules/freetype

make && make install

ln -s /usr/local/modules/freetype/bin/freetype-config /usr/bin/freetype-config

安裝libxml2-2.6.19
tar jxf libxml2-2.6.19.tar.bz2
cd libxml2-2.6.19
mkdir -p /usr/local/libxml2
./configure --prefix=/usr/local/libxml2

make && make install

cp xml2-config /usr/bin

gd-2.0.33安裝
下載:http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
代碼:
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/modules/gd

make && make install

如果你遇到:
.....
gd_jpeg.c:47:21: jpeglib.h: No such file or directory
.....
這樣的錯誤請將gd.jpeg.c文件做以下修改就可以編譯GD了
在47行:
#include "../jpeg-6b/jpeglib.h"---> include "../jpeg源文件目錄/jpeglib.h"
#include "../jpeg-6b/jerror.h"---> include "../jpeg源文件目錄/jerror.h"

我裝的過程中遇到一點小問題:明明裝了jpeg,但是配置PHP的時候卻說找不到libjpeg.(a|so),
原來是64位系統和32位一點小小的不一樣,libjpeg.so.62在/usr/lib64下,我們用
ln -s /usr/lib64/libjpeg.so.62 /usr/local/modules/jpeg/lib/libjpeg.so(目錄和文件名以jpeg的安裝為準)就可以編譯php了。

php-5.1.6.tar.tar安裝:
下載:http://www.php.net/downloads.php
代碼:
tar jxf php-5.1.6.tar.tar
cd php-5.1.6
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-gd=/usr/local/modules/gd --with-zlib --with-xml=/usr/local/libxml2 --with-jpeg-dir=/usr/local/modules/jpeg -with-png-dir=/usr/local/modules/libpng --with-freetype-dir=/usr/local/modules/freetype --enable-exif --enable-bcmath --enable-wddx --with-dom --with-iconv --enable-fastcgi --enable-mbstring=all --with-curl --with-openssl
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-gd=/usr/local/modules/gd --with-zlib --with-xml=/usr/local/libxml2 --with-jpeg-dir=/usr/local/modules/jpeg --with-apxs2=/usr/local/apache2/bin/apxs -with-png-dir=/usr/local/modules/libpng --with-freetype-dir=/usr/local/modules/freetype --enable-exif --enable-bcmath --enable-wddx --with-dom --with-iconv --enable-mbstring=all --with-curl --with-openssl --enable-sockets

make clean ###記得先清一下,否則可能錯得很冤枉
make && make install

libtool --finish /root/php-5.1.6/libs
PATH="$PATH:/sbin" ldconfig -n /root/php-5.1.6/libs
cp php.ini-recommended /usr/local/php/lib/php.ini

###下面原始配置分兩種###
##下面原始配置php+apache+fastcgi
代碼:

mkdir /usr/local/apache2/phpbin
cp /usr/local/php/bin/php /usr/local/apache2/phpbin/
vi /usr/local/apache2/conf/httpd.conf

DirectoryIndex index.html index.html.var index.php
#後面加上index.php

LoadModule fastcgi_module modules/mod_fastcgi.so

FastCgiServer /usr/local/apache2/phpbin/php -idle-timeout 60 -listen-queue-depth 2000 -processes 100 -appConnTimeout 60
#對fastcgi進行優化
AddHandler php-fastcgi .php
Alias /phpbin/ "/usr/local/apache2/phpbin/"

SetHandler php-fastcgi

Action php-fastcgi /phpbin/php

增加 apache 支持 php html .htm
AddType application/x-httpd-php .php .html .htm


##下面原始配置php+apache
代碼:
vi /usr/local/apache2/conf/httpd.conf

DirectoryIndex index.html index.html.var index.php
後面加上index.php

增加 apache 支持 php html .htm
AddType application/x-httpd-php .php .html .htm

這時候輸入 /usr/local/apache2/bin/apachectl start
如果沒有錯誤的話,哪麼我們基本配置已做好,下面我們做加速入安全設置.

首先裝Zend Optimizer:
下載:http://download.chinaunix.net/download/0001000/4.shtml
代碼:
tar zxvf ZendOptimizer-3.0.0-linux-glibc23-x86_64.tar.tar
cd ZendOptimizer-3.0.0-linux-glibc23-x86_64
./install.sh

/usr/local/php/lib/
#按要求一步一步選擇就好了


eaccelerator-0.9.5安裝:
下載:http://nchc.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.4.tar.bz2
代碼:
tar jxf eaccelerator-0.9.5.tar.tar
cd eaccelerator-0.9.5
export PHP_PREFIX="/usr/local/php" ///注意路徑,可以用find命令搜索"phpize"路徑
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config

make && make install
/*以上標準指令,我裝的時候就因為前兩行沒有執行,./configure的時候報錯(phpize的作用就是生成configure文件等,
eaccelerator包里本身是沒有這個文件的),其時你也可以直接輸入phpize所在的絕對路徑,比如我的路徑:/usr/local/php/bin/phpize,就可以安裝了*/

如果裝過二個以上的PHP版本(如:php4.4.2 && php4.4.1),在轉行(/usr/local/apache2/phpbin/php)時會報錯,
只在使用zend_extension_ts的時候不報(不確定能否加速);也可以從一台已裝好eaccelerator的機器上把eaccelerator.so拷貝過來覆蓋原文件也可.

裝好了eaccelerator,就開始配置吧.打開php.ini文件,Zend加速過的放在/usr/local/Zend/etc/php.ini(這是我的Zend安裝目錄),
/usr/lib/php.ini是它的一個文件連接(ln),但是起作用的還是用phpinfo();顯示出來的php.ini所在路徑,這一點請注意.
以下是完整代碼.
vi /usr/local/php/lib/php.ini

代碼:
///用這個替代,注意路徑,根據實際來定路徑(可以用find命令搜索eaccelerator.so所在路徑)
zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-zts-20050922/eaccelerator.so"
或zend_extension="/usr/local/php/lib/php/extensions/no-debug-zts-20050922/eaccelerator.so"


eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
[Zend]
zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-zts-20050922/eaccelerator.so"
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.0.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.0.0
zend_optimizer.version=3.0.0
;zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so //忽略這一行,因為zend_extension_ts和zend_extension只能出現一個


建立相對目錄:
代碼:
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator

/usr/local/php/bin/php -m 檢查有無報錯

若是裝PHP5 需要打開 short_open_tag = on 才能使用短標語

【設定root帳號】

MySQL裡的帳號和Linux的使用者帳號是兩回事,毫不相干,底下的root指的是MySQL伺服器中的root帳號。
安裝完畢之後,我們新增個帳號來執行MySQL資料庫,接著將/usr/local/mysql裡的檔案擁有權限設給此一帳號。這個動作是為增加MySQL的安全性。
adduser mysql

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

接下來我們來啟動MySQL吧!啟動MySQL的指令如下:
/usr/local/mysql/bin/safe_mysqld --user=mysql &

啟動了MySQL之後,我們趕緊來給MySQL設定密碼吧!首先先切換到/usr/local/mysql/bin的目錄下,然後執行「./mysqladmin -u root password '密碼'」來給root設定密碼。例如:我們想把MySQL的管理者root的密碼設為12345,則執行下列指令:
cd /usr/local/mysql/bin
./mysqladmin -u root password '12345'

【自動啟動設定】

嗯…每次開機都要自己啟動MySQL也是很累的一件事,所以,您可以把啟動指令(如下)加到/etc/rc.d/rc.local檔案的最後一行,那麼,以後開機便會自動啟動MySQL了。
/usr/local/mysql/bin/safe_mysqld --user=mysql &
/usr/local/apache2/bin/apachectl start

沒有留言: