精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>安装配置>>Soliras_apache_ssl_php_mysql_gd二次贴不完

主题:Soliras_apache_ssl_php_mysql_gd二次贴不完
发信人: wienne(小荔)
整理人: jackyz(2001-02-15 16:20:04), 站内信件
让我们一步一步地看:

John Doe 从他的浏览器中点击一个链接;他的浏览器发送对http://www.yourserver.com/test.php的请求。 
Apache得到对test.php的请求,它知道.php文件应由PHP预处理器(mod_php)处理,因此它通知 PHP处理它。它

知道这些,是因为我们在Apache的配置中指定它。 
test.php是包含命令的一个PHP脚本。这些命令之一是打开一个到一个数据库的连接并抓取数据。PHP 处理到数

据库的连接,并且解释SQL调用从DB中提取数据。 
服务器服务器得到从PHP解释器来的连接请求,并且处理这个请求。请求可能是类似于一个简单的选择语句,或

数据库表创建等。 
数据库然后将应答和结果回送到PHP解释器。 
Apache回送该结果到John Doe的浏览器,作为对他请求的应答。John Doe现在看见一个包含从一个数据库来的

一些信息的网页。 
如果这是一个对https://www.yoursecureserver.com/test.php的请求,整个过程与上述类似,除了每个请求和

应答在两端被加密和解密,即,浏览器连接Apache,获得它的加密键码,加密请求并发送它。 
服务器看到请求,解密并且认证它。它处理文件,加密并且发送它。然后浏览器用服务器的键码解密它。记住

既然连接被加密,就是用不同的端口用。端口80用在在非安全连接上,而端口443用在安全连接时。 
再说一次,它不是100%的正确,但是它足够快地让你知道幕后发生的事情的非常简单的概述。

既然我们对我们正在试图达到的目标有了一个很基本的了解,让我们继续安装软件吧。

准备


Apache (Web服务器)-http://www.apache.org 
Mod_SSL (安全服务器层)-http://www.modssl.org 
OpenSSL (SSL工具箱)-http://www.openssl.org 
PHP (脚本语言)-http://www.php.net 
MySQL (SQL数据库服务器 )-http://www.mysql.com 
下载所有(tar文件)源代码到一个临时目录下。保证你把他们放在有很多空间的地方……你应该以root身份下载

他们以避免权限问题。

我们的计划


我们的计划是首先安装MySQL服务器并保证它工作,然后我们将安装PHP和Mod_SSL,最后我们将安装Apache网站

服务器。在我们安装了Apache以后,我们可以测试PHP和Mod_SSL支持是否起作用了。

MySQL源代码安装(UNIX)
你必须用来执行安装MySQL源代码分发的基本命令是(自一个没解开“tar”文件):

通过使用su成为 root用户。 

$su  

直接进入你有tar文件的目录。(使用一个临时目录。这里使用 /tmp/download/ )

#cd /tmp/download/ 

使用下列命令提取文件。 

# gunzip -d -c mysql-3.22.xx.tar.gz | tar xvf - 

改变到新目录,它在提取期间创建。

# cd mysql-3.22.xx 

现在你可以开始“配置”MySQL服务器。你可以用configure指定很多选项,使用configure --help查看所有的

选项。我已经选择--prefix指定到安装地点的直接路径。configure将检查你的编译器和一些其他东西。如果你

有任何错误,你可以检查config.cache文件查看错误。 

# configure --prefix=/usr/local/mysq 

在你完成了配置以后,你可以执行下列命令make真正的二进制代码。

# make 

现在你已准备好安装所有的二进制代码。运行下列命令在你用configure --prefix选项指定的目录下安装二进

制代码。

# make install 

在你安装好二进制代码后,现在是创建用于定义权限的mysql表的时候了。

# scripts/mysql_install_db 
# cd /usr/local/mysql/bin 
# ./safe_mysqld & 
# ./mysqladmin -u root password 'new-password' 

注意:/usr/local/mysql是我选择安装MySQL服务器的目录。你可以通过改变目录选择另外的地方。

你可以通过运行一些简单的测试来验证服务器正在工作以确保MySQL正在运行。输出应该类似于下面所示的:

BINDIR=/usr/local/mysql/bin。BINDIR依赖于你在上面的前缀选择的目录。

# BINDIR/mysqlshow -p 
+---------------+
| Databases     | 
+---------------+
| mysql         |
+---------------+ 

一旦你安装好MySQL,它将自动地创建2个数据库。一个mysql表,它控制在实际的服务器中用户、主机和 数据

库权限;另一个是一个test数据库,我们能使用test数据库。然而,我们想给你一个快速而简单的MySQL可用的

一些命令行选项的概述。这也将保证root被设置了对DB服务器的全部存取权限,即:root有创建数据库、数据

库表等的许可,因此我们将创建一个test2数据库,在以后我们用它进行我们的测试。在你通过命令行进入

MySQL前,你将被提示root用户的新口令。记住你以前改变了它。

# mysql -u root -p 
mysql> show databases;
+----------------+ 
| Database       | 
+----------------+ 
| mysql          |
| test           |
+----------------+
mysql> create database test2;
Query OK, 1 row affected (0.00 sec) 

现在选择新的数据库使用,并创建一个名为tst_tbl的新表, 有下列2个字段。字段1是是一个id字段,允许你知

道记录的id。实质上为了简化这只是的一个行号。第二个字段是你一个name字段,存储书名信息。这些字段的

格式是:字段1(id)是一个长度为3的整数(int),而字段2(name)是一个长度为50的字符(char)字段。为搜索和

索引数据,我们指定id为键码。 

mysql> use test2; 
Database changed 
mysql> CREATE TABLE books ( id int(3) not null 
  -> auto_increment, name char(50) not null, 
  -> unique(id), primary key(id)); 
Query OK, 0 rows affected (0.00 sec) 

现在我们用下列命令验证一切正确无误。

mysql> show tables
+---------------------+
| Tables in test2     | 
+---------------------+
| books               |
+---------------------+ 
1 row in set (0.00 sec)

mysql> describe books;
+-------+-------------+------+------+----------+------------------------+
| Field | Type        | Null | Key  | Default  | Extra                  |
+-------+-------------+------+------+----------+------------------------+
| id    | int(3)      |      | PRI  | 0        | auto_increment         |
| name  | char(50)    |      |      |          |                        |
+-------+-------------+------+------+----------+------------------------+
2 rows in set (0.00 sec)
 

注意到describe命令基本上“描述”了表的布局。相当不错吧!

好,该试一些确实有用的SQL命令,插入并从数据库中选择数据,现在把几个记录加到新表中。记住这些是简单

的书名记录,但是一旦你获得了SQL足够的经验,你可以为一些大的电子商务站点创建确实复杂的数据库。让我

们创建2本假想的书的2条记录。第一条记录是我在将来某天写的一本书的名字-“PHP 4 Newbies”,另一本是

一个很有用的Linux书,“Red Hat Linux 6 Server”, 由Mohammed J. Kabir所著。

mysql> INSERT INTO books (name) values('PHP 4 Newbies'); 
Query OK, 1 row affected (0.00 sec) 
mysql> INSERT INTO books (name) values('Red Hat Linux 6 Server');
Query OK, 1 row affected (0.00 sec) 

现在我们可以检查新纪录,发出一条“选择所有”命令    

mysql> SELECT * from books;
+----+----------------------------------+
| id | name                             | 
+----+----------------------------------+
| 1  | PHP for Newbies                  | 
| 2  | Red Hat Linux 6 Server           |
+----+----------------------------------+
2 rows in set (0.00 sec) 

很好,MySQL服务器完全起作用了。我们可以继续加入,但是此时没什么意义。注意到当你向数据库中插入记录

时,你怎样不必指定id号,这是因为你创建了启用auto_increment选项的id字段。

让我演示一下如何做一个快速删除。这只是让你知道,记住,你可在MySQL的网站http://www.mysql.com上找到

所需的有关mysql命令和服务器的所有信息。

mysql> delete from books where id=1; 
Query OK, 1 row affected (0.00 sec) 
mysql> select * from books;
+----+-----------------------------------+ 
| id | name                              |
+----+-----------------------------------+ 
| 2  | Red Hat Linux 6 Server            |
+----+-----------------------------------+
1 row in set (0.00 sec) 

好了,退出MySQL,继续安装。你可在完成所有安装并且一切工作正常后玩MySQL也不迟。

PHP安装(UNIX)


现在安装PHP语言。你下载了最新的beta版,但是你可能必须下载非beta版本。记住beta版本需要GNU make。

你仍然假定是root,如果不是,su回到root。

PHP要求你已经预先配置好的Apache,以便它能知道所需的东西在哪儿。在以后你安装Apache服务器时,你将会

回到这里。改变到你有源代码的目录。

# cd /tmp/DOWNLOAD 
# gunzip -c apache_1.3.x.tar.gz | tar xf - 
# cd apache_1.3.x 
# ./configure 
# cd .. 

好的,现在你可以开始PHP的安装。提取源代码文件并进入其目录。如果你下载了版本3,在数字和命令上有一

个改变,不大的改变。

# gunzip -c php-4.0.x.tar.gz | tar xf - 
# cd php-4.0.x 

如果你正在编译代码,configure将永远是你的朋友。:-) 因此,configure有很多选项。使用configure 

--help确定你想要增加哪些。我只是需要MySQL和LDAP,并且当然Apache。

# ./configure --with-mysql=/usr/local/mysql \
   --with-xml \
   --with-apache=../apache_1.3.x \
   --enable-track-vars \
   --with-ldap 

make并安装二进制代码。

# make 
# make install 

拷贝ini文件到lib目录。

# cp php.ini-dist /usr/local/lib/php.ini 

你可以编辑PHP文件来设置PHP选项,如你可以通过在你的php.ini文件中插入下列行,增加php的

max_execution_time。

max_execution_time = 60; 

注意:php3用户将使用php3.ini,而php4用户将使用php.ini文件。

Apache 与 Mod_SSL


该配置并安装mod_ssl和Apache了。对此,你将需要有rsaref-2.0文件。在http://ftpsearch.lycos.com/上搜

索“rsaref20.tar.Z”。如果你不喜欢Lycos,你可以选择其他搜索引擎来搜索文件。当然只有你在美国才需要

这个文件。(管它呢,你也可从别处下载,首先在http://ftpsearch.ntnu.no/查找“rsaref20.tar.Z”,好多

啊!。)

 

创建rasref目录,你将在该目录提取文件。注意。这假定你下载了一个临时目录,而你就在此目录。

# mkdir rsaref-2.0 
# cd rsaref-2.0 
# gzip -d -c ../rsaref20.tar.Z | tar xvf - 

现在配置并构造OpenSSL库。

# cd rsaref-2.0 
# cp -rp install/unix local 
# cd local 
# make 
# mv rsaref.a librsaref.a 
# cd ../.. 

安装OpenSSL。记住,你将用它来创建临时证书和CSR文件。--prefix选项指定主安装目录。

# cd openssl-0.9.x 
# ./config -prefix=/usr/local/ssl \
   -L`pwd`/../rsaref-2.0/local/ rsaref -fPIC 

现在make、测试并安装它。  

# make 
# make test 
# make install 
# cd .. 

我们将配置MOD_SSL模块,然后用Apache配置指定它为一个可装载的模块。

# cd mod_ssl-2.5.x-1.3.x 
# ./configure \ 
    --with-apache=../apache_1.3.x \ 
# cd .. 

现在我们可以把更多的Apache模块加到Apache源代码树中。可选的--enable-shared=ssl选项使得mod_ssl构造

成为一个DSO“libssl.so”。关于在Apache支持DSO的更多信息,阅读Apache源代码树中的INSTALL和 

htdocs/manual/dso.html文档。我强烈建议ISP和软件包装维护者为了最灵活地使用mod_ssl而使用DSO工具,但

是注意,DSO不是在所有平台上的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
   [...你可加入更多的选项...] 

生成Apache,然后生成证书,并安装...


----
/************************ 
        源码共享 
        取之于人 
        用之于人 
************************/

[关闭][返回]