wxzh001,進(jìn)來看對(duì)于APACHE+PHP+MYSQL+SSL的LINUX下安裝設(shè)置(轉(zhuǎn)自奧索)
發(fā)表時(shí)間:2023-08-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本文作者:原奧索網(wǎng)用戶 herodongOICQ:6678705 /* 孤狼:原文實(shí)在太大了,36K多。我選擇重要部分貼上,如果需要原文可以MAILTO:wolflx@263.net我們的目標(biāo)是安裝...
本文作者:原奧索網(wǎng)用戶 herodongOICQ:6678705
/* 孤狼:原文實(shí)在太大了,36K多。我選擇重要部分貼上,如果需要原文可以MAILTO:wolflx@263.net
我們的目標(biāo)是安裝一個(gè)允許我們托管多個(gè)網(wǎng)站的web服務(wù)器,其中一些是針對(duì)電子商務(wù)的安全解決方案,而大部分網(wǎng)站是通過連接一個(gè)數(shù)據(jù)庫服務(wù)器并且提取其數(shù)據(jù)的腳本驅(qū)動(dòng)的。
為了這個(gè)任務(wù)所需的工具是:
Apache-一個(gè)網(wǎng)站服務(wù)器
Mod_SSL-一個(gè)安全套接字層(SSL)的模塊
OpenSSL-開放源代碼工具箱(mod_ssl所需)
RSARef-僅對(duì)美國用戶
MySQL-一個(gè)數(shù)據(jù)庫服務(wù)器
PHP-一種腳本語言
“條條大路通羅馬”……因此這只是很多能達(dá)到我們要求的配置之一。我選擇這樣的配置,是因?yàn)樗亲詈唵魏妥羁斓囊环N。選擇Mod_SSL/OpenSSL的原因是因?yàn)槲矣兴南惹敖?jīng)驗(yàn),是最快配置和最容易安裝的一種。為了彼此方便地與Apache集成,我選擇了PHP和MySQL。記住,Perl能做到你想要做任何工作,然而,PHP對(duì)任何想學(xué)習(xí)它地程序員來說簡單并且容易。
希望你將在結(jié)束這個(gè)簡單的指南后能成功地完成下列目標(biāo)。
安裝并設(shè)置MySQL數(shù)據(jù)庫服務(wù)器
安裝并設(shè)置具備SSL的Apache網(wǎng)站服務(wù)器
安裝并配置服務(wù)器端腳本的PHP 4.0超文本預(yù)處理器
創(chuàng)造一些樣本證書用于Apache SSL
本文假設(shè)你已經(jīng)把下列軟件安裝在你的系統(tǒng)上了。
Perl (最好是ver 5+)
gzip或gunzip
gcc 和 GNU make
準(zhǔn)備
Apache (Web服務(wù)器)-http://www.apache.org
Mod_SSL (安全服務(wù)器層)-http://www.modssl.org
OpenSSL (SSL工具箱)-http://www.openssl.org
PHP (腳本語言)-http://www.php.net
MySQL (SQL數(shù)據(jù)庫服務(wù)器 )-http://www.mysql.com
下載所有(tar文件)源代碼到一個(gè)臨時(shí)目錄下。保證你把他們放在有很多空間的地方……你應(yīng)該以root身份下載他們以避免權(quán)限問題。
我們的計(jì)劃
我們的計(jì)劃是首先安裝MySQL服務(wù)器并保證它工作,然后我們將安裝PHP和Mod_SSL,最后我們將安裝Apache網(wǎng)站服務(wù)器。在我們安裝了Apache以后,我們可以測(cè)試PHP和Mod_SSL支持是否起作用了。
MySQL源代碼安裝(UNIX)
你必須用來執(zhí)行安裝MySQL源代碼分發(fā)的基本命令是(自一個(gè)沒解開“tar”文件):
通過使用su成為 root用戶。
$su
直接進(jìn)入你有tar文件的目錄。(使用一個(gè)臨時(shí)目錄。這里使用 /tmp/download/ )
#cd /tmp/download/
使用下列命令提取文件。
# gunzip -d -c mysql-3.22.xx.tar.gz tar xvf -
改變到新目錄,它在提取期間創(chuàng)建。
# cd mysql-3.22.xx
現(xiàn)在你可以開始“配置”MySQL服務(wù)器。你可以用configure指定很多選項(xiàng),使用configure --help查看所有的選項(xiàng)。我已經(jīng)選擇--prefix指定到安裝地點(diǎn)的直接路徑。configure將檢查你的編譯器和一些其他東西。如果你有任何錯(cuò)誤,你可以檢查config.cache文件查看錯(cuò)誤。
# configure --prefix=/usr/local/mysql
在你完成了配置以后,你可以執(zhí)行下列命令make真正的二進(jìn)制代碼。
# make
現(xiàn)在你已準(zhǔn)備好安裝所有的二進(jìn)制代碼。運(yùn)行下列命令在你用configure --prefix選項(xiàng)指定的目錄下安裝二進(jìn)制代碼。
# make install
PHP安裝(UNIX)
現(xiàn)在安裝PHP語言。你下載了最新的beta版,但是你可能必須下載非beta版本。記住beta版本需要GNU make。
你仍然假定是root,如果不是,su回到root。
PHP要求你已經(jīng)預(yù)先配置好的Apache,以便它能知道所需的東西在哪兒。在以后你安裝Apache服務(wù)器時(shí),你將會(huì)回到這里。改變到你有源代碼的目錄。
# cd /tmp/DOWNLOAD
# gunzip -c apache_1.3.x.tar.gz tar xf -
# cd apache_1.3.x
# ./configure
# cd ..
好的,現(xiàn)在你可以開始PHP的安裝。提取源代碼文件并進(jìn)入其目錄。如果你下載了版本3,在數(shù)字和命令上有一個(gè)改變,不大的改變。
# gunzip -c php-4.0.x.tar.gz tar xf -
# cd php-4.0.x
如果你正在編譯代碼,configure將永遠(yuǎn)是你的朋友。:-) 因此,configure有很多選項(xiàng)。使用configure --help確定你想要增加哪些。我只是需要MySQL和LDAP,并且當(dāng)然Apache。
# ./configure --with-mysql=/usr/local/mysql \
--with-xml \
--with-apache=../apache_1.3.x \
--enable-track-vars \
--with-ldap
make并安裝二進(jìn)制代碼。
# make
# make install
拷貝ini文件到lib目錄。
# cp php.ini-dist /usr/local/lib/php.ini
Apache 與 Mod_SSL
該配置并安裝mod_ssl和Apache了。對(duì)此,你將需要有rsaref-2.0文件。在http://ftpsearch.lycos.com/上搜索“rsaref20.tar.Z”。如果你不喜歡Lycos,你可以選擇其他搜索引擎來搜索文件。當(dāng)然只有你在美國才需要這個(gè)文件。(管它呢,你也可從別處下載,首先在http://ftpsearch.ntnu.no/查找“rsaref20.tar.Z”,好多。。)
創(chuàng)建rasref目錄,你將在該目錄提取文件。注意。這假定你下載了一個(gè)臨時(shí)目錄,而你就在此目錄。
# mkdir rsaref-2.0
# cd rsaref-2.0
# gzip -d -c ../rsaref20.tar.Z tar xvf -
現(xiàn)在配置并構(gòu)造OpenSSL庫。
# cd rsaref-2.0
# cp -rp install/unix local
# cd local
# make
# mv rsaref.a librsaref.a
# cd ../..
安裝OpenSSL。記住,你將用它來創(chuàng)建臨時(shí)證書和CSR文件。--prefix選項(xiàng)指定主安裝目錄。
# cd openssl-0.9.x
# ./config -prefix=/usr/local/ssl \
-L`pwd`/../rsaref-2.0/local/ rsaref -fPIC
現(xiàn)在make、測(cè)試并安裝它。
# make
# make test
# make install
# cd ..
我們將配置MOD_SSL模塊,然后用Apache配置指定它為一個(gè)可裝載的模塊。
# cd mod_ssl-2.5.x-1.3.x
# ./configure \
--with-apache=../apache_1.3.x \
# cd ..
現(xiàn)在我們可以把更多的Apache模塊加到Apache源代碼樹中。可選的--enable-shared=ssl選項(xiàng)使得mod_ssl構(gòu)造成為一個(gè)DSO“l(fā)ibssl.so”。關(guān)于在Apache支持DSO的更多信息,閱讀Apache源代碼樹中的INSTALL和 htdocs/manual/dso.html文檔。我強(qiáng)烈建議ISP和軟件包裝維護(hù)者為了最靈活地使用mod_ssl而使用DSO工具,但是注意,DSO不是在所有平臺(tái)上的Apache都支持。
# cd apache_1.3.x
# SSL_BASE=../openssl-0.9.x \
RSA_BASE=../rsaref-2.0/local \
./configure \ --enable-module=ssl \
--activate-module=src/modules/php4/libphp4.a \
--enable-module=php4 --prefix=/usr/local/apache \
--enable-shared=ssl
[...你可加入更多的選項(xiàng)...]
生成Apache,然后生成證書,并安裝...
# make
如果你已正確地完成,你將得到類似于以下的信息:
+-----------------------------------------------------------------------+
Before you install the package you now should prepare the SSL
certificate system by running the 'make certificate' command.
For different situations the following variants are provided:
% make certificate TYPE=dummy (dummy self-signed Snake Oil cert)
% make certificate TYPE=test (test cert signed by Snake Oil CA)
% make certificate TYPE=custom (custom cert signed by own CA)
% make certificate TYPE=existing (existing cert)
CRT=/path/to/your.crt [KEY=/path/to/your.key]
Use TYPE=dummy when you're a vendor package maintainer,
the TYPE=test when you're an admin but want to do tests only,
the TYPE=custom when you're an admin willing to run a real server
and TYPE=existing when you're an admin who upgrades a server.
(The default is TYPE=test)
Additionally add ALGO=RSA (default) or ALGO=DSA to select
the signature algorithm used for the generated certificate.
Use 'make certificate VIEW=1' to display the generated data.
Thanks for using Apache & mod_ssl. Ralf S. Engelschall
rse@engelschall.com
www.engelschall.com
+-----------------------------------------------------------------------+
現(xiàn)在你可以創(chuàng)建一個(gè)定制的證書。該選項(xiàng)將提示輸入你的地址、公司、和其他一些東西。關(guān)于證書,請(qǐng)參閱本文的結(jié)尾。
# make certificate TYPE=custom
現(xiàn)在安裝Apache...
# make install
如果一切正常,你應(yīng)該看到類似于以下的信息:
+----------------------------------------------------------------------------------+
You now have successfully built and installed the
Apache 1.3 HTTP server. To verify that Apache actually
works correctly you now should first check the
(initially created or preserved) configuration files
/usr/local/apache/conf/httpd.conf
and then you should be able to immediately fire up
Apache the first time by running:
/usr/local/apache/bin/apachectl start
Or when you want to run it with SSL enabled use:
/usr/local/apache/bin/apachectl startssl
Thanks for using Apache. The Apache Group
http://www.apache.org /
+----------------------------------------------------------------------------------+
現(xiàn)在驗(yàn)證Apache和PHP是否正在工作。然而,我們需要編輯srm.conf和httpd.conf保證我們把PHP類型加到了配置中。查看httpd.conf并去掉下列行的注釋。如果你精確地遵循了本文的指令,你的httpd.conf文件將位于/usr/local/apache/conf目錄。文件有一行針對(duì)php4的addtype加了注釋,現(xiàn)在就去掉注釋。httpd.conf 文件--片斷
> # And for PHP 4.x, use:
> #
---> AddType application/x-httpd-php .php
---> AddType application/x-httpd-php-source .phps
現(xiàn)在我們準(zhǔn)備啟動(dòng)Apache服務(wù)器看它是否在工作。首先我們將啟動(dòng)不支持SSL的服務(wù)器看它是否啟動(dòng)了。我們將檢查對(duì)PHP的支持,然后我們將停止服務(wù)器并且啟動(dòng)啟用了SSL支持的服務(wù)器并檢查我們是否一切正常。configtest 將檢查所有配置是否正確設(shè)置。
# cd /usr/local/apache/bin
# ./apachectl configtest
Syntax OK
# ./apachectl start
./apachectl start: httpd started
//孤狼測(cè)試APACHE+PHP+MYSQL部分略
SSL 選擇正在工作嗎??
好了,現(xiàn)在我們準(zhǔn)備測(cè)試SSL了。首先停止服務(wù)器,并以啟用SSL的選項(xiàng)重啟它。
# /usr/local/apache/bin/apachectl stop
# /usr/local/apache/bin/apachectl startssl
測(cè)試它是否工作:通過用一個(gè)Netscape與服務(wù)器連接并且選擇https協(xié)議,即:https://youserver.yourdomain.com 或 http://yoursever.yourdomain.com:443 ,也可以再試一下你的服務(wù)器的 ip地址,即:https://xxx.xxx.xxx.xxx和 http://xxx.xxx.xxx.xxx:443 。
如果它起作用了,服務(wù)器將把證書發(fā)送到瀏覽器以建立一個(gè)安全連接。這將讓瀏覽器提示你接受自己簽署的證書。,如果它是來自VeriSign或Thawte的一張證書,那么瀏覽器將不提示你,因?yàn)樽C書來自一個(gè)可信的證書授權(quán)機(jī)構(gòu)(CA)。在我們的情況中,我們創(chuàng)建并簽署我們自己的證書……我們不想馬上買一個(gè)。首先,我們想要保證我們能使一切正常。
注意,我們竟能在同一文件中同時(shí)有HTML和PHP命令。這就是PHP腳本的奇妙之處。
SSL虛擬主機(jī)
創(chuàng)建SSL虛擬主機(jī)類似非SSL。除了你需要指定另外的指令,還有,你需要增加一個(gè)DNS記錄并且修改 httpd.conf。這里有一個(gè)例子。
#--------------------------------------------#
# SSL Virtual Host Context
#--------------------------------------------#
# General setup for the virtual host
DocumentRoot /usr/local/apache/htdocs
ServerAdmin webmaster@securedomain1.com
ServerName www.securedomain1.com
ErrorLoglogs/domain1.com-error_log
TransferLog logs/domain1.com-transfer_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A test
# certificate can be generated with `make certificate' under
# built time. Keep in mind that if you've both a RSA and a DSA
# certificate you can configure both in parallel (to also allow
# the use of DSA ciphers, etc.)
# Note that I keep my certificate files located in a central
# location. You could change this if you are an ISP, or ASP.
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /usr/local/apache/logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
記住你有很多指令可以指定。我們將在另一篇有關(guān)配置Apache的文章中討論,本文只是一個(gè)入門性指南。
生成證書
這是如何生成證書的按部就班的描述。
為你的Apache服務(wù)器創(chuàng)建一個(gè)RSA私用密鑰(被Triple-DES加密并且進(jìn)行PEM格式化):
# openssl genrsa -des3 -out server.key 1024
請(qǐng)?jiān)诎踩牡胤絺浞葸@個(gè)server.key文件。記住你輸入的通行短語(pass phrase)!你可以通過下面的命令看到這個(gè)RSA私用密鑰的細(xì)節(jié)。
# openssl rsa -noout -text -in server.key
而且你可以為這個(gè)RSA私用密鑰創(chuàng)建一個(gè)加密的PEM版本(不推薦),通過下列命令:
# openssl rsa -in server.key -out server.key.unsecure
用服務(wù)器RSA私用密鑰生成一個(gè)證書簽署請(qǐng)求(CSR-Certificate Signing Request)(輸出將是PEM格式的):
# openssl req -new -key server.key -out server.csr
當(dāng)OpenSSL提示你“CommonName”時(shí),確保你輸入了服務(wù)器的FQDN("Fully Qualified Domain Name") ,即,當(dāng)你為一個(gè)以后用https://www.foo.dom/訪問的網(wǎng)站生成一個(gè)CSR時(shí),這里輸入"www.foo.dom"。你可借助下列命令查看該CSR的細(xì)節(jié):
# openssl req -noout -text -in server.csr
將CSR發(fā)到一個(gè)CA
現(xiàn)在你必須發(fā)送該CSR到一個(gè)CA以便簽署,然后的結(jié)果才是可以用于Apache的一個(gè)真正的證書。
有兩種選擇:
第一種,你可以通過一個(gè)商業(yè)性CA如Verisign 或 Thawte簽署證書。那么你通常要將CSR貼入一個(gè)web表格,支付簽署費(fèi)用并等待簽署的證書,然后你可以把它存在一個(gè)server.crt文件中。關(guān)于商業(yè)性CA的更多信息,請(qǐng)參見下列鏈接:
Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
Thawte Consulting - http://www.thawte.com/certs/server/request.html
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
IKS GmbH - http://www.iks-jena.de/produkte/ca /
Uptime Commerce Ltd. - http://www.uptimecommerce.com
BelSign NV/SA - http://www.belsign.be
你自己的CA
第二種,你可以利用自己的CA并由該CA簽署CSR。你可以創(chuàng)建自己的認(rèn)證中心來簽署證書。最簡單的方法是利用OpenSSL提供的CA.sh或 CA.pl腳本。比較復(fù)雜而且是手工的方法是:
為你的CA創(chuàng)建一個(gè)RSA私用密鑰( 被Triple-DES加密并且進(jìn)行PEM格式化的):
# openssl genrsa -des3 -out ca.key 1024
請(qǐng)?jiān)诎踩牡胤絺浞葸@個(gè)ca.key文件。記住你輸入的通行短語(pass phrase)!你可以通過下面的命令看到這個(gè)RSA私用密鑰的細(xì)節(jié)。
//孤狼注釋:最好不要輸入pass phrase,直接敲回車,不然默認(rèn)的APACHE啟動(dòng)要你輸入呢!不過如果你對(duì)SHELL熟,可以直接在SHELL里改
# openssl rsa -noout -text -in ca.key
而且你可以為這個(gè)RSA私用密鑰創(chuàng)建一個(gè)加密的PEM版本(不推薦),通過下列命令:
# openssl rsa -in ca.key -out ca.key.unsecure
利用CA的RSA密鑰創(chuàng)建一個(gè)自簽署的CA證書(X509結(jié)構(gòu))(輸出將是PEN格式的):
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
你可以通過下列命令查看該證書的細(xì)節(jié):
# openssl x509 -noout -text -in ca.crt
準(zhǔn)備一個(gè)簽署所需的腳本,因?yàn)?quot;openssl ca"命令有一些奇怪的要求而且缺省的OpenSSL配置不允許簡單地直接使用"openssl ca"命令,所以一個(gè)名為sign.sh的腳本隨mod_ssl分發(fā)一道發(fā)布(子目錄pkg.contrib/)。 使用該腳本進(jìn)行簽署。
現(xiàn)在你可以使這個(gè)CA簽署服務(wù)器的CSR,以便創(chuàng)建用于Apache服務(wù)器內(nèi)部的真正的SSL證書(假定你手頭已經(jīng)有一個(gè)server.csr):
# ./sign.sh server.csr
它簽署服務(wù)器的CSR并且結(jié)果在一個(gè)server.crt文件中。
現(xiàn)在你有兩個(gè)文件:server.ket和server.crt。在你的Apache的httpd.conf文件中,如下使用它們:
SSLCertificateFile /path/to/this/server.crt
SSLCertificateKeyFile /path/to/this/server.key
server.csr不再需要了。