Linux平臺下Web環(huán)境配置
Linux 平臺下Web 環(huán)境搭建【前言】此文檔是Linux 平臺下Web 環(huán)境搭建的參考手冊,基于Red Hat Enterprise Linux 5(32位) 環(huán)境,因此在64位環(huán)境下編譯時若遇到
Linux 平臺下Web 環(huán)境搭建
【前言】
此文檔是Linux 平臺下Web 環(huán)境搭建的參考手冊,基于Red Hat Enterprise Linux 5(32位) 環(huán)境,因此在64位環(huán)境下編譯時若遇到錯誤,請先參照附錄一。各模塊的說明如下: Apache 網(wǎng)站運行的平臺。
PHP 服務(wù)器腳本
GD2 支持驗證碼的顯示
OpenSSL 提供加密通道,即https 方式訪問。
編譯前請先熟悉Linux 下的基本操作,文件編輯操作可以參照附錄三。由于Linux 下的Apache 與PHP 的配置文件與Windows 下的配置文件有很大差異,所以不要將Windows 下的配置文件直接拷貝到Linux 下。
一、準備工作
以下所有操作都以vcen 用戶登錄為示例,但命令的執(zhí)行是以root 帳戶身份,因此在打開終端后先切換用戶方式。
分別創(chuàng)建以下目錄,daemon 為編譯apache 后自動創(chuàng)建的用戶。 mkdir /home/vcen/download mkdir /home/vcen/download/apache2_2 mkdir /home/vcen/download/php5
mkdir /var/ins-g mkdir /var/sessionpath chown daemon:daemon /var/ins-g chmod o rw /var/ins-g
chown daemon:daemon /var/sessionpath
二、編譯GD2包
2.1、下載相關(guān)編譯包
在Linux 平臺下可以直接在終端中輸入以下命令進行下載。
cd /home/vcen/download
2.2、編譯GD2包與GD2包所需的環(huán)境
一定要先編譯過前面的四個包之后再去編譯GD2包,不然的話會編譯失敗。所有的編譯最好要普通用戶下進行,只有當make install時才切換至root 用戶。總之,只有當非用root 用戶不可時才切換至root 用戶,不要輕易的用root 用戶來操作系統(tǒng)。
2.2.1、編譯zlib 包 tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure make make install clean
64位下編譯方法:
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC ,即變成CFLAGS=-O3 -DUSE_MMAP -fPIC
接下面步驟
make
make install
如果編譯的時候出現(xiàn)
/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libz.a: could not read symbols: Bad value
錯誤,解決辦法參見附錄一
2.2.2、編譯libpng 包 tar zxvf libpng-1.2.34.tar.gz
cd libpng-1.2.34
./configure
make
make install clean
,2.2.3、編譯freetype 包 tar zxvf freetype-2.3.5.tar.gz cd freetype-2.3.5
./configure make
make install clean
2.2.4、編譯jpeg 包
tar zxvf jpegsrc.v6b.tar.gz cd jpeg-6b ./configure make
make install-lib
64位下編譯: ./configure CFLAGS="-O3 -fPIC" make
make install-lib
如果在編譯的時候出現(xiàn)
/usr/bin/ld: /usr/local/lib/libjpeg.a(jcapimin.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
錯誤,解決辦法參見附一
2.2.5、編譯GD2包
如果以上軟件包都編譯成功了,就可以開始編譯GD2包了 tar zxvf gd-2.0.35.tar.gz cd gd-2.0.35 ./configure --with-png --with-freetype --with-jpeg make
make install
如果編譯失敗的話,先make clean一下,再make 。一般就可以編譯過去了。
編譯的時候,最后結(jié)果那里可以看到
** Configuration summary for gd 2.0.35:
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
,Support for Fontconfig library: no
Support for Xpm library: no
Support for pthreads: yes
可以看到png 、 jpeg 、 freetype 都已經(jīng)編譯上了
三、編譯Apache2.2
3.1、編譯OpenSSL
3.1.1、下載OpenSSL
下載地址:http://openssl.org/source/openssl-0.9.8h.tar.gz cd /home//vcen/download
wget http://openssl.org/source/openssl-0.9.8h.tar.gz
3.1.2、編譯OpenSSL tar zxvf openssl-0.9.8h.tar.gz
cd openssl-0.9.8h ./config
make make test
make install
3.1.3、創(chuàng)建證書
對于OpenSSL 的編譯目標目錄,在默認情況下為:/usr/local/ssl。 cd /usr/local/ssl/bin
生成server.key ,并要求輸入key 的密碼。1024表示長度: ./openssl genrsa -des3 -out server.key 1024
在出現(xiàn): Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
輸入兩次口令,類似于密碼。記清楚,一會要用的。
生成server.csr ,這時需要你輸入在上一步時生成的密碼 ./openssl req -new -key server.key -out server.csr
再次輸入密碼后,填寫以下內(nèi)容: For some fields there will be a default value,
If you enter '.', the field will be left blank.
{輸入“. ”, 表示為空}
,-----
Country Name (2 letter code) [AU]:(國家) State or Province Name (full name) [Some-State]:(洲/?。?/p>
Locality Name (eg, city) []:(城/鎮(zhèn))
Organization Name (eg, company) [Internet Widgits Pty Ltd]:(組織名)
Organizational Unit Name (eg, section) []:(單位名)
Common Name (eg, YOUR name) []:(httpd-ssl.conf 中的ServerName 普通名稱) (注意:當提示輸入 Common Name (eg, YOUR name) []: ,請輸入你需要SSL 支持的域名, 如localhost,blog.yening.cn ,否則瀏覽器提示證書錯誤.)
Email Address []:(郵箱)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(csr 密碼)
An optional company name []:(公司)
生成server.crt ,再次輸入server.key 口令
./openssl x509 -req -days 730 -in server.csr -signkey server.key -out server.crt 至此,證書文件便完成了,默認在/usr/local/ssl/bin下會有server.csr,server.key,server.crt 三個文件。
3.2、編譯Apache2.2
3.2.1、下載Apache2.2
最新版本2.2.11,放到/home/vcen/download/apache2_2目錄下,download 目錄為自己創(chuàng)建的目錄。
下載地址:http://dev.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz
cd /home/vcen/download/apache2_2
wget http://dev.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz
3.2.2、編譯Apache2.2
cd /home/vcen/download/apache2_2
tar zxvf httpd-2.2.11.tar.gz
cd httpd-2.2.11
./configure --prefix=/usr/local/apache2 --enable-so --enable-auth-digest --enable-rewrite --enable-setenvif --enable-mime --enable-ssl --with-ssl=/usr/local/ssl --enable-headers
make
make install clean
,四、編譯PHP5
4.1、下載PHP5
最新版本php5.2.8,放到/home/vcen/download/php5目錄下。
下載地址:http://cn2.php.net/distributions/php-5.2.8.tar.gz
cd /home/vcen/download/php5
4.2、編譯PHP5
cd /home/vcen/download/php5 tar zxvf php-5.2.8.tar.gz
cd php-5.2.8
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg --with-freetype --enable-trace-vars --with-zlib --with-gd --enable-sockets make
make install clean
五、配置Apache(/usr/local/apache2/conf/httpd.conf)
5.1、端口偵聽
Listen 80 監(jiān)聽端口,即URL 訪問時的端口。
5.2、設(shè)置網(wǎng)站目錄
DocumentRoot “/var/ins-g” 頁面所存放的目錄,一定要使用/。
修改
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Order deny,allow為Order all,deny,
,Options Indexes FllowSymLinks為Options None。
注:一定要設(shè)置
5.3、關(guān)閉訪問日志寫。
找到以下幾行,在前面添加#
LogFormat "h l u t "r" >s b "{Referer}i" "{User-Agent}i"" combined
LogFormat "h l u t "r" >s b" common
LogFormat "h l u t "r" >s b "{Referer}i" "{User-Agent}i" I O" combinedio
CustomLog "logs/access_log" common
5.4、設(shè)置默認訪問頁
在DirectoryIndex 后面添加要默認訪問的頁面,如:login.php index.php ,多文件用空格隔開。
5.5、支持PHP 解析
找到AddType application/x-gzip .gz .tgz在下面添加如下兩行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
5.6、配置SSL
5.6.1、配置SSL 基本信息
對于SSL 的支持,在httpd.conf 中無須多配,只需要將httpd-conf 中的
Include conf/extra/httpd-ssl.conf
這一行的注釋去掉。
然后將OpenSSL 生成的證書文件: server.crt, server.key 拷貝到/usr/local/apache2/conf下。
此時如果啟動apache server,會要求你輸入SSL 的密碼,并且每次Apache 啟動的時候,都會要求你輸入SSL 的密碼.
如果想每次啟動時不需要輸入SSL 密碼,則必須創(chuàng)建SSL 密碼自動應(yīng)答文件。 創(chuàng)建SSL 密碼自動應(yīng)答文件
創(chuàng)建 /usr/local/apache2/conf/sendsslpwd ,內(nèi)容如下:
#!/bin/bash
SSLpasswd=”你的證書文件密碼“
echo $SSLpasswd
,修改文件屬性:chmod 755 /usr/local/apache2/conf/sendsslpwd
5.6.2、配置httpd-ssl.conf 文件 cd /usr/local/apache2/conf/extra
vi httpd-ssl.conf
找到 SSLPassPhraseDialog builtin 這一行,將其注釋掉
加入 SSLPassPhraseDialog exec:/usr/local/apache2/conf/sendsslpwd 這樣,每次啟動將不會提示輸入SSL 密碼了
另外,請修改
按照apache 配置文件中的配置修改如下信息:
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
六、配置PHP(/etc/php.ini)
6.1、上傳文件相關(guān)的配置
表單提交時的最大數(shù)據(jù):post_max_size=8M改成200M
上傳文件的最大值:upload_max_filesize=20M修改為200M
PHP 文件的最大執(zhí)行時間:max_execution_time=30修改為300
PHP 處理提交參數(shù)最大時間 max_input_time=60修改為600
PHP 消耗內(nèi)存限制memory_limit=128M
6.2、全局變量限制
register_globals = On 打開/關(guān)閉,應(yīng)打開(On)
6.3、關(guān)閉自動轉(zhuǎn)義
將magic_quotes_gpc=On修改為Off
6.4、PHP 默認編碼.
default_charset = "iso-8859-1"
修改為gb18030. 若不存在則添加此行.
,6.5、session 的保存路徑
去掉;session.save_path = "/tmp"前面的分號,如:將路徑設(shè)置為/var/sessionpath
6.6、session 的最大超時時間
將session.use_cookies設(shè)置為1,打開cookie 儲存sessionid ,不過默認就是1 將session.cookie_lifetime改為86400,即24小時
將session.cache_expire改為86400,與上面的相同.
6.7、關(guān)閉頁面的錯誤輸出
只有當產(chǎn)品發(fā)布時,服務(wù)器端的配置才更新這一條。
將display_errors設(shè)置為On 。
七、啟動Apache
輸入如下指令啟動Apache :
/usr/local/apache2/bin/apachectl start
由于Apache 服務(wù)要在每次機器重機即運行。則需要配置一下啟用項:
在文件:/et/rc.d/rc.local最后添加如下語句:
/usr/local/apache2/bin/apachectl start
八、測試
在/var/ins-g目錄下新建一PHP 文件(index.php)。若正常會顯示PHP 信息。代碼如下:
phpinfo();
?>
附錄一:
錯誤提示:
/usr/bin/ld: /usr/local/lib/libjpeg.a(jcapimin.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
進入Jpeg 目錄
,./configure CFLAGS="-O3 -fPIC"
make
make install-lib
編譯前需指定為64位編譯模式,否則會出現(xiàn)以下錯誤:
/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32against `a local symbol' can not be used when making a shared object;recompile with -fPIC
/usr/local/lib/libz.a: could not read symbols: Bad value
解決辦法 : 重新安裝 zlib-1.2.3.tar.gz
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC ,即變成CFLAGS=-O3 -DUSE_MMAP -fPIC
接下面步驟
make
make install
附錄二:
編譯SSL 的參考:
附錄三:
所有的包編譯、文件編輯等等操作都是在root 用戶下進行。
常用命令:
su 切換root 帳戶命令
cd 切換目錄
mkdir 新建文件夾
mv 移動文件或文件夾
cp 拷貝文件或文件夾
chown 修改文件或文件夾的所有者
chmod 修改文件或文件夾的權(quán)限