Ubuntu编译源码搭建PHP开发环境
最近要转PHP了,迷上了Ubuntu,不想通过apt-get搭建PHP开发环境,想通过编译源码搭建,在网上搜索了很多总是有这样那样的问题,经过一天到尝试,终于搞定了。
准备源码:
1.mysql的源码:mysql-5.5.15.tar.gz
2.apache的源码:httpd-2.2.19.tar.gz
3.php的源码:php-5.3.6.tar.gz
第一步,安装MySql
groupadd mysql 添加一个mysql用户组
useradd -g mysql mysql 添加一个mysql到用户,此用户属于mysql组
cd mysql-5.5.15
cmake -DCMAKE_INSTALL_PREFIX=/usr/dev/mysql \ 使用cmake编译而不是make编译,如果没有安装cmake则需要通过apt-get安装cmake再执行此步
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_USER=mysql
make
make install
chmod +w /usr/dev/mysql
chown -R mysql:mysql /usr/dev/mysql
mkdir -p /var/mysql/
mkdir -p /var/mysql/data/
mkdir -p /var/mysql/log/
chown -R mysql:mysql /var/mysql/
cd /usr/dev/mysql/support-files
## 可能还需要执行这一步:mkdir /etc/mysql
cp my-large.cnf /var/mysql/my.cnf(如果是debian,my.conf需要放在/etc/mysql/下面)
cp mysql.server /etc/init.d/mysqld
cp /usr/dev/mysql/scripts/mysql_install_db /usr/dev/mysql/.
chmod 777 /var/mysql/data
/usr/dev/mysql/scripts/mysql_install_db \
--defaults-file=/etc/mysql/my.cnf \
--basedir=/usr/dev/mysql \
--datadir=/var/mysql/data \
--user=mysql
chmod +x /etc/init.d/mysqld
vi /etc/init.d/mysqld (编辑此文件,查找并修改以下变量内容:)
basedir=/usr/dev/mysql
datadir=/var/mysql/data
chkconfig –add mysqld
useradd -g mysql mysql 添加一个mysql到用户,此用户属于mysql组
tar -xzvf mysql-5.5.15.tar.gz
cmake -DCMAKE_INSTALL_PREFIX=/usr/dev/mysql \ 使用cmake编译而不是make编译,如果没有安装cmake则需要通过apt-get安装cmake再执行此步
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_USER=mysql
make
make install
chmod +w /usr/dev/mysql
chown -R mysql:mysql /usr/dev/mysql
mkdir -p /var/mysql/
mkdir -p /var/mysql/data/
mkdir -p /var/mysql/log/
chown -R mysql:mysql /var/mysql/
cd /usr/dev/mysql/support-files
## 可能还需要执行这一步:mkdir /etc/mysql
cp my-large.cnf /var/mysql/my.cnf(如果是debian,my.conf需要放在/etc/mysql/下面)
cp mysql.server /etc/init.d/mysqld
cp /usr/dev/mysql/scripts/mysql_install_db /usr/dev/mysql/.
chmod 777 /var/mysql/data
/usr/dev/mysql/scripts/mysql_install_db \
--defaults-file=/etc/mysql/my.cnf \
--basedir=/usr/dev/mysql \
--datadir=/var/mysql/data \
--user=mysql
chmod +x /etc/init.d/mysqld
vi /etc/init.d/mysqld (编辑此文件,查找并修改以下变量内容:)
basedir=/usr/dev/mysql
datadir=/var/mysql/data
chkconfig –add mysqld
chkconfig –level 345 mysqld on
第二步,安装apache
tar -xzvf httpd-2.2.19.tar.gz
cd httpd-2.2.19
# 编译和安装 apr 1.2
cd srclib/apr
./configure --prefix=/usr/dev/apr-httpd/
make
make install
# 编译和安装 apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/dev/apr-util-httpd/ --with-apr=/usr/dev/apr-httpd/
make
make install
# 配置 httpd
cd http://www.cnblogs.com/
#不知到这一句到效果会不会被下面那一句覆盖,会的话就不用执行这一句 ./configure --with-apr=/usr/dev/apr-httpd/ --with-apr-util=/usr/dev/apr-util-httpd/
#很可能会报错,最好先make clean
./configure --prefix=/usr/dev/apache \
--enable-rewrite=shared \
cd httpd-2.2.19
# 编译和安装 apr 1.2
cd srclib/apr
./configure --prefix=/usr/dev/apr-httpd/
make
make install
# 编译和安装 apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/dev/apr-util-httpd/ --with-apr=/usr/dev/apr-httpd/
make
make install
# 配置 httpd
cd http://www.cnblogs.com/
#不知到这一句到效果会不会被下面那一句覆盖,会的话就不用执行这一句 ./configure --with-apr=/usr/dev/apr-httpd/ --with-apr-util=/usr/dev/apr-util-httpd/
#如果报错“apache APR-util version 1.2.0 or later is required”(已经安装的apr-util的版本明明是1.3.12,却报这个错) 可尝试如下编译语句:./configure --with-apr=/program/apr-httpd/ --with-apr-util=/program/apr-util-httpd/ --with-included-apr --prefix=/program/apache --enable-rewrite=shared --enable-speling=shared
#很可能会报错,最好先make clean
./configure --prefix=/usr/dev/apache \
--enable-rewrite=shared \
--enable-speling=shared
make && make install
第三步,安装php
如果没有安装libxml2-dev,需要先安装libxml2-dev:
apt-get install libxml2-dev
tar -xzvf php-5.3.6.tar.gz
cd php-5.3.6
./configure --prefix=/usr/dev/php5.3.6 --with-apxs2=/usr/dev/apache/bin/apxs --with-mysql=/usr/dev/mysql
make
make install
cp php.ini-development /usr/dev/php5.3.6/lib/php.ini
编辑 httpd.conf 文件以调用 PHP 模块。LoadModule 表达式右边的路径必须指向 系统中的 PHP。以上的 make install 命令可能已经完成了这些,但务必要检查。
LoadModule php5_module modules/libphp5.so
告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php 解析成 PHP。为了避免潜在的危险,例如上传或者创建类似exploit.php.jpg的文件并被当做 PHP 执行,我们不再使用 Apache 的 AddType 指令来设置。参考下面的例子,你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
apt-get install libxml2-dev
tar -xzvf php-5.3.6.tar.gz
cd php-5.3.6
./configure --prefix=/usr/dev/php5.3.6 --with-apxs2=/usr/dev/apache/bin/apxs --with-mysql=/usr/dev/mysql
make
make install
cp php.ini-development /usr/dev/php5.3.6/lib/php.ini
编辑 httpd.conf 文件以调用 PHP 模块。LoadModule 表达式右边的路径必须指向 系统中的 PHP。以上的 make install 命令可能已经完成了这些,但务必要检查。
LoadModule php5_module modules/libphp5.so
告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php 解析成 PHP。为了避免潜在的危险,例如上传或者创建类似exploit.php.jpg的文件并被当做 PHP 执行,我们不再使用 Apache 的 AddType 指令来设置。参考下面的例子,你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
建议:网上的资料比较杂,安装apache 和 php可以结合参考官方的手册比较好。
最后附上windows下的php环境搭建:
1.先装mysql
安装mysql-5.5.14-win32.msi 27.7M
2.再装apache
安装httpd-2.2.19-win32-x86-openssl-0.9.8r.msi 5.56M
3.安装PHP
下载 php-5.2.17-Win32-VC6-x86.zip(vc6非线程安全版本) 10M,不用安装,解压到D:\php_5.2.17
4.配置apache使之支持php
LoadModule php5_module "D:/php_5.2.17/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "D:/php_5.2.17"
5.配置php.ini使之支持mysql
进入目录D:/php_5.2.17,将php.ini-dist复制到当前目录并且改名为php.ini
打开php.ini,设置 extension_dir = "D:\PHP_5.2.17\ext"
去掉;extension=php_mysql.dll最前面的;,让php加载mysql的dll
在环境变量里加入以下两个路径:
安装mysql-5.5.14-win32.msi 27.7M
2.再装apache
安装httpd-2.2.19-win32-x86-openssl-0.9.8r.msi 5.56M
3.安装PHP
下载 php-5.2.17-Win32-VC6-x86.zip(vc6非线程安全版本) 10M,不用安装,解压到D:\php_5.2.17
4.配置apache使之支持php
LoadModule php5_module "D:/php_5.2.17/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "D:/php_5.2.17"
5.配置php.ini使之支持mysql
进入目录D:/php_5.2.17,将php.ini-dist复制到当前目录并且改名为php.ini
打开php.ini,设置 extension_dir = "D:\PHP_5.2.17\ext"
去掉;extension=php_mysql.dll最前面的;,让php加载mysql的dll
在环境变量里加入以下两个路径:
;D:\PHP_5.2.17;D:\PHP_5.2.17\ext
还有第二种更为干净的配置方法(其实就是下载MySql绿色版,不用安装,个人比较喜欢这种方式):
1.再装apache
安装httpd-2.2.19-win32-x86-openssl-0.9.8r.msi 5.56M
2.安装PHP
下载 php-5.2.17-Win32-VC6-x86.zip(vc6非线程安全版本) 10M,不用安装,解压到D:\php_5.2.17
下载 php-5.2.17-Win32-VC6-x86.zip(vc6非线程安全版本) 10M,不用安装,解压到D:\php_5.2.17
3.安装mysql(下载不用安装版的mysql)
下载 mysql-5.5.15-win32.zip 133M 不用安装,解压到D:\Program Files\MySql_5.5.15
下载 mysql-5.5.15-win32.zip 133M 不用安装,解压到D:\Program Files\MySql_5.5.15
4.配置apache使之支持php
LoadModule php5_module "D:/php_5.2.17/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "D:/php_5.2.17"
5.配置php.ini使之支持mysql
进入目录D:/php_5.2.17,将php.ini-dist复制到当前目录并且改名为php.ini
打开php.ini,设置 extension_dir = "D:\PHP_5.2.17\ext"
去掉;extension=php_mysql.dll最前面的;,让php加载mysql的dll
LoadModule php5_module "D:/php_5.2.17/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "D:/php_5.2.17"
5.配置php.ini使之支持mysql
进入目录D:/php_5.2.17,将php.ini-dist复制到当前目录并且改名为php.ini
打开php.ini,设置 extension_dir = "D:\PHP_5.2.17\ext"
去掉;extension=php_mysql.dll最前面的;,让php加载mysql的dll