php/apache/mysql安装全记录
来源:互联网 发布:电子工程师必备app软件 编辑:程序博客网 时间:2024/06/12 01:18
--------------------------------------------------------------------------------------------------------------------
至于 lamp 三者的具体的在开发机上的安装过程。
其实都差不多。
不过需要注意的安装顺序,最后安装php。
下面是 组内 peter的lamp环境搭建的安装顺序:
=============================================================================================================================================
,
_/((
_.---. .' `/
.' ` ^ T=
/ / .--'
| / )'-. 下面LAMP + MediaWiki 安装过程
; , <__..-( '-.)
/ /-.__) ``--._)
'.'-.__.-.
'-...-'
=============================================================================================================================================
1. 安装mysql:我没装,直接用的119上装好的/usr/local/mysql
如果需要源码安装mysql,参考本博客的http://blog.csdn.net/zdl1016/archive/2010/11/20/6024175.aspx的文章(linux下mysql源码安装全纪录)
并且,里面更详细的讲了安装完mysql后安装php遇到的问题。
2. 安装apache:我的apache版本:httpd-2.2.15.tar.gz,解压命令:
tar -zxvf httpd-2.2.15.tar.gz
然后会有一个解压的文件夹,cd进去,./configure --help能看配置命令的帮助。
我的配置命令:
./configure --prefix=/home/nemo/apache2 --with-mysql=/usr/local/mysql --enable-so --enable-cgi
make
make install
其中--prefix是设置将apache安装到哪个路径下,不写的话,会默认安装到/usr/local下。
3. 修改httpd.conf配置文件
/home/peterrzhan/apache2/conf/httpd.conf
里面有两个地方需要修改(分别是ServerName和Listen端口):
Listen 10.6.207.191:3125
ServerName 10.6.207.191:3125
4. 安装libxml2-2.6.26.tar.gz。
方法和上面类似。configure命令为:
./configure --prefix=/home/peterrzhan/libxml2
5. 安装php。
http://cn.php.net/downloads.php 我的php版本为php-5.3.2.tar.gz。方法类似。注意configure命令:
./configure --prefix=/home/peterrzhan/php5 --with-apxs2=/home/peterrzhan/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=mysqlnd --with-libxml-dir=/home/peterrzhan/libxml2
(测试通过)
(!!!注意,上面的--with-mysqli=mysqlnd 如果configure失败,试试 --with-mysqli=/usr/local/mysql/bin/)
(!!!反正我用--with-mysqli=/usr/local/mysql/bin/的时候提示 mysql_config not found)
或者更全的:
./configure --prefix=/home/peterrzhan/php5 --with-apxs2=/home/peterrzhan/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=mysqlnd --with-libxml-dir=/home/peterrzhan/libxml2 --enable-xml --enable-json --enable-dom --enable-hash --enable-sockets --enable-pcntl --enable-simplexml --enable-xmlreader --enable-xmlwriter --enable-sysvshm --enable-sysvsem --enable-ctype --enable-bcmath --enable-posix --enable-calendar
(测试通过)
如果我的mysql通过源码安装在=/home/nemo/mysql5的目录下的话,--with-mysql=/usr/local/mysql 就变成了 --with-mysql=/home/nemo/mysql5
--with-mysqli=mysqlnd 保持不变。
make //完成make后能看到“make test”的提示
make install
6. 编辑 httpd.conf文件以调用 PHP 模块。LoadMolude表达式右边的路径必须指向系统中的PHP。以上的make install命令可能已经帮您完成了这些,但务必要检查。
对于 PHP 5:
LoadModule php5_module modules/libphp5.so
继续编辑 httpd.conf 文件,告知 Apache 将特定的扩展名解析成PHP,例如,我们让Apache将扩展名 .php解析成PHP。您可以将任何扩展名指定为 PHP,只需添加它们,每一个用空格分隔。
例如,我们要添加 .phtml:
AddType application/x-httpd-php .php .phtml
通常,我们还将 .phps 扩展名设置成显示高亮的 PHP 源文件,可以这样来完成:
AddType application/x-httpd-php-source .phps
找到DirectoryIndex index.html
并将其改为:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php-source .phps
</IfModule>
这样就可以支持index.php了
7. 安装最新版的mediawiki,注意一定要为最新版 http://www.mediawiki.org/wiki/MediaWiki/zh-hans,否则会和php5不兼容,出现问题(问题如:Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in C:/Programfiler/ApacheSoftwareFoundation/Apache2.2/htdocs/InnovitWiki/includes/Namespace.php on line 44)。我的版本为mediawiki-1.15.4.tar.gz,将其解压放在/home/peterrzhan/apache2/htdocs下。
在浏览器上访问http://10.6.207.191:3125/mediawiki-1.15.4/config/index.php 即可访问注册页面。
注册时候一定要注意数据库相关选项中,你填的用户名和密码在你安装的MySQL中有效。如果你不拥有一个mysql的账号的话,使用grant命令创建一个。
命令如下:
mysql -uroot //使用root用户登录mysql
mysql> show databases; //查看数据库
mysql> grant all on *.* to ddd@'%' identified by 'ddd';
关于grant命令更多的详见:http://www.cnblogs.com/hcbin/archive/2010/04/23/1718379.html
修改conf/httpd.conf文件, 改动如下:
Listen 192.168.8.128:80 (192.168.8.128是linux的ip)
#Listen 80 (!! 注意, 该行一定要注释掉!!!)
提示:apache路径下如果改动了配置文件/conf/httpd.conf文件,要生效的话一定要重启apache,方法是在/bin路径下有一个apachectl
./apachectl stop
./apachectl start
如果运行没问题, 可以通过 ps -ef|grep httpd 查看到已经启动的进程。
通过浏览器 http://ip 访问。
启动报 Address already in use: make_sock: could not bind to address 0.0.0.0:80 错误
原因是 下面两行同时存在导致的, 将Listen 80注释掉即可。
Listen 192.168.8.128:80
Listen 80
如果提示绑定80端口没有权限 permission deny
尝试用 sudo 执行。
更详细参考本文后面专门有一节
如果提示80端口已经被使用, Address already in use
通过 netstat -aon|grep 80 查看那个进程在用,可以kill掉。
apache装好之后,可以运行 php, 却不可以运行cgi的问题.
解决方法: 重新源码编译安装. 加上 --enable-cgi 选项.
详细步骤如下:
1 重新安装apache 确保安装指令中包含 --enable-cgi
./configure --prefix=/home/nemo/apache2 --enable-cgi
傻逼的我 居然将 php的安装的命令复制过来,后面加上 --enable-cgi 居然还真的能安装成功了.
安装成功,居然还真的能用了.
httpd.conf的部分修改的配置内容如下:
<Directory "/home/nemo/php5/cgi-bin">
AllowOverride None
Options None
Options ExecCGI # 新加的
Order allow,deny
Allow from all
</Directory>
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
#Listen 80
Listen 10.6.207.119:8881
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName 10.6.207.119:8881
#不用另外的 加载 mod_cgi.so, 因为 我们编译的时候指定了 --enable-cgi, 其就是内置的了.
#LoadModule cgi_module modules/mod_cgi.so
如果加上上面一句,会报错:
httpd: Syntax error on line 56 of /home/nemo/php5/conf/httpd.conf: module cgi_module is built-in and can't be loaded
如果权限不够,比如说cgi 没有执行权限, 或者 目录没有执行权限, 会报错
查看 logs/error_log
[Tue Sep 07 12:51:14 2010] [error] [client 10.6.82.55] (13)Permission denied: exec of '/home/nemo/php5/cgi-bin/test-cgi' failed
chmod 777 .
chmod 777 test-cgi
执行 apache2ctl start, 没有任何提示,也没有任何反映。
执行apache2ctl restart提示 httpd进程根本就没有启动
查看 ps -aux|grep httpd 也没有发现我的 httpd进程
查看 logs/error_log 发现:
[alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "vm04_sles10"
Configuration Failed
修改httpd.conf 禁用mod_unique_id模块
#LoadModule unique_id_module modules/mod_unique_id.so
我是通过第三种方法尝试后,apache2ctl start,仍然没有任何提示,但是
logs目录下 多了个 httpd.pid
功过ps -aux|grep httpd,查看,发现有nemo启动的服务器也起来了!
通过浏览器访问 http://10.6.207.119:8880/
输出“it works”!搞定。
执行 apache2ctl start,提示 绑定到80端口权限不够!不可以绑定。
只好换个端口 8880
修改 httpd.conf
Liston 10.6.207.119:8880
ServerName 10.6.207.119:8880
想要 apache支持 fashcgi
Apache下FastCGI开发(转载)
http://hi.baidu.com/jakisou/blog/item/03d4ba8bc40a1a7a9f2fb4d3.html
apache下php配置fastcgi代替mod_php
http://hi.baidu.com/rakeliujie/blog/item/5c9c7a8b1e1cf7729f2fb413.html
如果我先装了php,后安装了apache,如果让我的apache支持php?
答案是基本是很麻烦,最好重新编译安装php.
不过若想手动的解决你可以摸索下:
下面是在php的源码目录下,执行完make,执行make install的时候的提示信息,看是否有帮助:
注意,下面的额php5其实是我的apache的安装目录, php5_2是我的php的安装目录.
nemo@vm04_sles10:php-5.3.3$ make install
Installing PHP SAPI module: apache2handler
/home/nemo/php5/build/instdso.sh SH_LIBTOOL='/home/nemo/php5/build/libtool' libphp5.la /home/nemo/php5/modules
/home/nemo/php5/build/libtool --mode=install cp libphp5.la /home/nemo/php5/modules/
cp .libs/libphp5.so /home/nemo/php5/modules/libphp5.so
cp .libs/libphp5.lai /home/nemo/php5/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /home/nemo/php-5.3.3/libs'
chmod 755 /home/nemo/php5/modules/libphp5.so
[activating module `php5' in /home/nemo/php5/conf/httpd.conf]
Installing PHP CLI binary: /home/nemo/php5_2/bin/
Installing PHP CLI man page: /home/nemo/php5_2/man/man1/
Installing build environment: /home/nemo/php5_2/lib/php/build/
Installing header files: /home/nemo/php5_2/include/php/
Installing helper programs: /home/nemo/php5_2/bin/
program: phpize
绑定apache到80端口没有权限的问题
默认情况下apache是绑定到80端口的, 但是,若没有权限,运行 apachectl restart的时候,会报错:
关于apache绑定到80端口没有权限的问题
nemo@vm04_sles10:bin$ apachectl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 10.6.207.189:80
no listening sockets available, shutting down
Unable to open logs
解决方法, 找leader给自己增加临时root权限(也就是sudo啦).
1)pwd, 首先查看当前 apachectl 的所在路径 /home/nemo/php5/bin
2)sudo -l, 查看当前自己拥有的额sudo权限的目录范围,和文件范围.
nemo@vm04_sles10:bin$ sudo -l
User nemo may run the following commands on this host:
(root) NOPASSWD: /home/peterrzhan/apache2/bin/*
(root) NOPASSWD: /home/nemo/php5/bin/* <===注意这行, 表示自己已经具有了执行bin目录下的root权限.
3) sudo /home/nemo/php5/bin/apachectl restart
4) 如果没有报错,ps -ef|grep httpd可以发现apache已经启动好了,可以通过浏览器看啦.
执行php代码,提示apc_fetch()未定义.
Fatal error: Call to undefined function apc_fetch()
这是因为 php没有安装apc扩展.
为php安装apc扩展.
1) 到http://pecl.php.net/package/APC下在最新版本
2) tgz格式, gunzip *.tgz解压
3) 进入解压后的 APC_XXXX 目录
4) 在APC的源码目录里面执行php安装目录下下的/bin/phpize
php_install_dir/bin/phpize
5) 执行./configure生成makefile文件. 注意, 需指定apache的安装目录和php的安装目录
./configure –enable-apc –enable-apc-mmap –with-apxs=apache_install_dir/bin/apxs –with-php-config=php_install_dir/bin/php-config
6) make && make install
7) 完后提示 : $ make install
Installing shared extensions: /home/xxx/php5/lib/php/extensions/no-debug-non-zts-20060613/
到20060613目录下查看生成的最新的 apc.so
8) 配置php.ini以加载apc.so
extension=apc.so
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 64
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 0
apc.write_lock = On
9) 将apc.so拷贝到php的扩展库的路径下.(默认生成的apc.so放在no-debug-non-zts-20060613路径下)
扩展库的路径默认是在 php_install_dir/lib/php/extensions
如果php.ini里面有修改扩展库的路径, 按php.ini里面的为准吧.
eg 我得电脑上的扩展路径为
extension_dir = "/home/xxx/php5/lib/php/extensions/no-debug-non-zts-20090626/"
10) 重启apache
11) 运行 <?php phpinfo() ?>的脚本, 查看php是否正确配置了apc.
这是PHP Manual中socket段的样例,怎么会出错呢?
在console中输入
$ /usr/local/bin/php -f socket_test.php
运行出现以下错误提示:
调用socket_create出错
PHP Fatal error: Call to undefined function socket_create() in /webroot/test/socket_test.php on line 15
没有安装 sockets模块.
独立安装sockets.so模块
1。进入php源文件目录ext下,找到sockets目录。并进入此目录
#cd php-5.2.9/ext/sockets/
2.在该目录下执行phpize命令,此命令在php目录的bin下。
# your_php_install_dir/bin/phpize
3。配置编译安装
# ./configure --enable-sockets --with-php-config=your_php_install_dir/bin/php-config
# make
# make install
Installing shared extensions: your_php_install_dir/lib/php/extensions/no-debug-non-zts-20060613/
提示so已经安装到目录下。
4。修改配置在php.ini里,设置扩展目录:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
并添加扩展模块引用:
extension = sockets.so
5.检查php.ini配置文件的正确性
/usr/local/php/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,这里会报错,可以根据错误信息去排查
6.通过/usr/local/php/bin/php -m命令查看是否安装sockets成功
monitor# /usr/local/php/bin/php -m
[PHP Modules]
ctype
date
dom
filter
gd
hash
iconv
json
libxml
mbstring
mysql
pcre
PDO
pdo_sqlite
posix
Reflection
session
SimpleXML
sockets
SPL
SQLite
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
7.重启apache生效
/usr/local/apache2/bin/apachectl restart
独立安装soap模块
1) 进入 php-5.3.2/ext/soap目录
2) 类似于上面socket的方式 执行 phpize 和 php-config
3) make
出错:‘zend_fcall_info’ has no member named ‘object_ptr'
找不到object_ptr的定义
进入 php-5.3.2目录 搜索 zend_fcall_info 结构的定义,
"find . -type f | xargs grep -wn zend_fcall_info | less" 或者通过
"find . -name "*.c" -o -name "*.h" | xargs grep -wn zend_fcall_info | less"
发现:
Zend/zend_API.h 里面有该结构的定义, 而且也确实包含了'object_ptr'成员.
汗一个! 难道是Makefile的问题?没有正确的引用到头文件?
查看, 果然是生成的Makefile问题!!!
vim Makefile 发现: 红色部分是我修改过的, 原本是-I/usr/local/include/php/Zend 明显不是我用到版本.
39 INCLUDES = -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM-I/home/peterrzhan/php-5.3.2/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/libxml2
网上发现 http://www.experts-exchange.com/OS/Unix/BSD/FreeBSD/Q_26199118.html 在5.3.2之前的版本, zend_fcall_info 的成员‘object_ptr'其实叫做object_pp.!!!
修改完Makefile之后, make ok.
为何会调用到不匹配的zend_API.h文件?
问题发现:
1) 由于/home/peterrzhan/php5目录被eddy重新编译生成过, eddy用的是5.2.12源码编译的.
所以 /home/peterrzhan/php5/include/php 等下面的头文件也都是5.1.12版本的.
2) 我在 /home/peterrzhan/php-5.3.2/ext/soap目录下 执行/home/peterrzhan/php5目录下的phpize 和 php-config,
导致生成的Makefile 引用的头文件是/home/peterrzhan/php5/include/php目录下的,也就是说是5.2.12版本的.
源文件和头文件版本不一致,导致make失败.
解决方法1:找到5.2.12的源码目录
在php-5.2.12/ext/soap 下面执行/home/peterrzhan/php5目录下的phpize 和 php-config,
make即可.
解决方法2:直接修改生成的Makefile文件, 指向正确的zend_API.h文件所在的目录即可
虽然能编译过去, 但是生成的soap的版本可能不能用哦.
为何生成的Makefile会和php-config有关系?
查看php-config发现, 其中定义了安装php5时,源码的安装路径.
php-config是个shell脚本,其中包含了如下内容:
includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/
而$include_dir就是编译安装php是的指定的路径了, 如果编译php时没有指定路径, 默认就是php-config使用的就是/usr/local/include/php
另外, 在soap目录,如果configure的时候没有指定 php-config, 那么使用的也是默认的/usr/local/include/php路径.
为php安装curl扩展
安装curl扩展前,电脑上需安装好了libcurl库。
进入 php_源码目录/ext/curl
1)运行 php_install_dir/bin/phpize
提示 没有autoconf,安装好autoconf后继续
我的虚拟机里没有autoconf,和m4, 虚拟机不能联网,只要源码安装m4和autoconf
由于autoconf是往默认的路径安装,直接 ./configure, make, make install即可。
2)执行 ./configure --with-curl=curl_dir
上一步phpize已经执行成功,生成了configure文件。 执行 ./configure
提示:configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
电脑上没有安装curl,好吧,继续源码安装curl, 装到 /home/nemo/curl7路径
重新执行 ./configure --with-curl=/home/nemo/curl7, 执行成功会生成makefile文件
3)make, make install, 生成了 curl.so扩展库
4)copy curl.so 到 /home/nemo/php5/lib/php/extensions 目录下
5)修改php.ini 以加载 curl.so
extension_dir = "/home/nemo/php5/lib/php/extensions"
extension=curl.so
6)重启apache, 查看phpinfo()确定 curl已经安装ok。
- php/apache/mysql安装全记录
- PHP、mysql、apache安装
- php+apache+mysql安装
- Apache + PHP + MySql 安装
- apache mysql php安装
- 安装PHP+APACHE+MYSQL
- Apache+PHP+MySql安装
- 安装PHP,MYSQL,APACHE
- 安装apache+php+mysql
- 安装Apache+php+Mysql
- 安装Apache+php+Mysql
- 安装php+apache+mysql
- Apache+MySQL+PHP安装指南
- Apache+MySQL+PHP安装指南
- mysql+php+apache的安装
- apache+mysql+php 源码安装
- 安装linux+apache+mysql+php
- apache+mysql+php 源码安装
- 灵动标签实现循环子栏目数据——实现 循环子栏目数据标签 (listsonclass)的效果
- test
- overload和overide的区别
- Excel中两列数据对比, 找出第一列差第二列的数据(A-B)
- pku2480(欧拉函数的应用,推公式,积性函数)
- php/apache/mysql安装全记录
- 《帝国网站管理系统》目录结构介绍
- c++向mysql写入或读取中文
- 刷新本页面的另外写法
- 如何恢复被删除的视图
- 存储过程例子
- HDU2795 Billboard线段树的基础变通
- MTK 手机指令集锦
- 供大家学习的Android开源项目