2. 先决条件

2.1. 常规

未完待续

所有主要的发行版都应该包含这些常规先决条件。

2.2. OpenSSL

2.2.1. 什么是 OpenSSL

 

OpenSSL 项目是一个协作努力,旨在开发一个强大、商业级、功能齐全的开源工具包,实现安全套接字层(SSL v2/v3)和传输层安全(TLS v1)协议,以及一个功能强大的通用加密库。 该项目由一个世界范围内的志愿者社区管理,他们使用互联网进行沟通、计划和开发 OpenSSL 工具包及其相关文档。

OpenSSL 基于 Eric A. Young 和 Tim J. Hudson 开发的出色的 SSLeay 库。 OpenSSL 工具包在 Apache 式许可下获得许可,这基本上意味着您可以免费获得它并将其用于商业和非商业目的,但须遵守一些简单的许可条件。

从作者的角度来看,它是使用开源软件构建安全 Unix 服务器的基础,它对于 mod_ssl、OpenSSH 和许多其他提供加密数据处理的主要产品来说是必需的。

 
--www.openssl.org 

OpenSSL 提供了上述产品所需的库和包含文件,并提供了一个用于构建服务器和客户端证书的应用程序。

2.2.2. 下载源代码

原始站点 http://www.openssl.org

2.2.3. 构建和安装

cd /usr/local
tar -xvzf openssl-0.9.7.tar.gz
 
cd openssl-0.9.7
 
./config shared 
 
make
make test
make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig

Tip选择您的 CPU 以提高速度
 

默认情况下,Makefile 会为 i486 CPU 生成代码。您可以通过编辑Makefile在运行 config 之后更改它shared. 搜索-m486并将其替换为例如-march=athlon

2.3. GNU 数据库系统

2.3.1. 什么是 gdbm

 

GNU dbm 是一组使用可扩展哈希的数据库例程。它的工作方式类似于标准的 UNIX dbm 例程。

 
--www.gnu.org/software/gdbm 

GNU dbm 是几乎每个发行版都使用的非常重要的应用程序。 因此,默认情况下,它已安装在我测试的所有发行版上。

很可能,构建带有 mod_rewrite 和 PHP 的 Apache 所必需的头文件默认情况下未安装。 请查阅您的发行版 CD/DVD 并安装 devel 包(版本可能有所不同)
rpm -i gdbm-devel-1.8.0-546

此过程已针对 SuSE 和 Redhat 进行了验证。 请确认其他基于 RPM 的系统,如 Mandrake。 Debian 将尽快跟进。

Debian 基础系统的用户可以按如下方式安装 gdbm

apt-get install libgdbmg1-dev

2.3.2. 自行构建和安装

在不太可能发生您的发行版不包含 gdbm 的情况下,以下是构建它的说明。

./configure 

make
make install

ldconfig

2.4. MySQL

2.4.1. 什么是 MySQL

MySQL 是一个非常快速、强大且易于处理的数据库。

特别是对于大多数访问是读取,很少写入的网络应用程序,MySQL 是首选。 最新版本也具有事务功能。 如果您计划一个将大量数据写入数据库的 Web 应用程序,那么 PostgreSQL 也许更适合您的项目,请参阅 第 6.2.4 节 获取安装提示

如果您希望 PHP 中包含 MySQL 支持,则需要来自 MySQL 的 C-API 来编译 PHP。 如果您想使用 mod_authmysql,也需要它,有关更多信息,请参阅 第 4.3 节

2.4.2. 下载

原始站点:https://mysqlserver.cn/downloads/

2.4.3. 构建和安装

cd /usr/local
tar -xvzf mysql-3.23.55.tar.gz 
cd mysql-3.23.55

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug

make 
make install 

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf 
ldconfig

为了提高安全性,请在您的系统上添加一个 MySQL 用户,例如 “mysql”。

chown -R mysql /usr/local/mysql/var

您可能希望在启动时自动启动 MySQL,复制/usr/local/mysql/share/mysql/mysql.server/etc/init.d/(或 rc-script 所在的任何位置)并在运行级别目录中创建相应的符号链接。
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/

ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/K20mysql

2.4.4. 保护 MySQL

此部分是可选的,描述了如何将 MySQL 守护进程绑定到 localhost IP

我建议只将 MySQL 绑定到环回接口 127.0.0.1。 这样可以确保没有人可以通过网络连接到您的 MySQL 守护进程。 但当然,只有当 MySQL 与 Web 服务器在同一台机器上运行时才有意义。

编辑/etc/init.d/mysql.server并按如下方式编辑第 107 行

原始行

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&

更改的行

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1& (1)

(1)
在这里您可以定义 MySQL 应绑定到哪个接口

或者,您可以完全禁用 MySQL 的网络功能。

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--skip-networking &

2.5. 构建 mm

2.5.1. 什么是 mm

 

MM 库是一个双层抽象库,它简化了 Unix 平台下 forked (以及以这种方式紧密相关的) 进程之间共享内存的使用。 在第一层,它隐藏了处理共享内存段时所有平台相关的实现细节(分配和锁定),在第二层,它为在这些共享内存段中使用数据结构提供了一个高级的 malloc(3)-style API,这是一种方便且众所周知的方式。

 
--www.engelschall.com 

它是一个通用的库,使 Unix 程序员能够简化 shm(共享内存)访问。 许多产品都使用它,例如 PHPmod_ssl

2.5.3. 构建和安装

cd /usr/local
 
tar -xvzf mm-1.2.2.tar.gz
 
cd mm-1.2.2
 
./configure
make
make test
make install

ldconfig

注释

[1]

RPM 包含 php 所需的头文件

[2]

仅当从 CVS 树构建 PHP 时才需要