PHP技术-PHP各种实战实例-Apache+PHP+MySQL+PHPMyAdmin+MediaWiki的下载安装配置
使用的设置中,不太重要的,是些理论性的解释。绿色表示我没有使用的设置。
蓝色表示有疑问的
APACHEINSTALLING:
可以从Settings-Control Panel-Administrative Tools中,双击Services后启动和关闭Apache。也可以在Run中输入cmd之后输入net stop apache2 停止Apache或net start apache2开启Apache。
针对每个版本的PHP,都会提供2个Windows二进制发行包。较小的是.msi包,它会安装CGI可执行程序Php.exe,但其中拿掉了通过Apache DLL来运行PHP脚本所需的模块。较大的.zip包则包含了所有这些东西,你可以从snaps.php.net网站的Win32区域下载它们。请同时下载PHP手册,它有多种语言的版本可供选择。
安装时设置:
在“Network Domain”里输入域。如果用本站的二级域名,例如“test.dnschek.net”,请输入“test.dnschek.net”。如果用顶级域名,请输入“xxx.com”。
在“Server Name”里输入服务器名。如果用本站的二级域名,请输入您的域名“test.dnschek.net”。如果用顶级域名,请输入“www.xxx.com”。
如果不打算将Apache安装到远程计算机,那么设置localhost就可以了。
在“Administrator's Email Address”里输入网站管理员的Email地址。
除此之外,安装过程里所有的选项,全部用默认选项就可以了。
安装后设置:
Apache\conf\目录下的http.conf文件
ServerType standalone
ServerRoot "/etc/httpd"
第一行“ServerType”指令,说明Apache是以一个独立的(Standalone)守护进程的身份运行于后台,还是由另外的后台守护进程(Xinetd)在接到HTTP请求的时候唤醒。对于正式的互联网站点来说,standalone可以提供比xinetd方式更快的客户端响应速度。因此我们选用standalone模式。第二行代码介绍了该服务器配置文件的相对根目录,一般是/etc/httpd,我们在安装时已经设置好。请注意,不要在此目录最后加“/”。
1.找到DocumentRoot ,将随后的路径改为你的Web路径。例如:DocumentRoot"D:/Web"这是网站的根目录。如果您想把网站文件存放在“D:\web”目录下,可以把DocumentRoot后面的目录修改为“D:/web”。
2.找到 DirectoryIndex index.html index.html.var 并在后面加上 index.php
3.还要允许在任何目录中使用.htaccess文件,所以请在配置文件中查找AllowOverride,把这个设置从None改成All。
3.Apache2.0.x于1.3.x相比2.0.x默认不能直接列目录,偶感觉不爽,就改了:
把DocumentRoot "E:/Apache2/www"这句下的如下语句
Options FollowSymLinks
AllowOverride None
改为:
Options Indexes FollowSymLinks
AllowOverride None
4.两种模式让Apache支持PHP(任选一种):
一以 apache 模块安装 PHP(使用PHP的DLL文件在Apache的内部运行。这一种方式的速度较快)(推荐):
AddType application/x-httpd-php .php(你可以在这里选择任何想用PHP解析的后缀。.php只是所建议的一个,甚至可以包括.html,也可以加上.php3来向下兼容,如AddType application/x-httpd-php .php .phtml)
LoadModule php5_module "E:/php/php5apache2.dll"
AddModule mod_php5.c
# This next section will add a handler for .php files, put it with other #IfModule lines.
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
二以 CGI 模式安装 PHP(通过一个CGI接口来运行PHP程序(外部调用Php.exe)) :
找到 AddType application/x-gzip .gz .tgz 这行,并加如以下语句:
AddType application/x-httpd-php .php
scriptAlias /php/ "c:/php/"
Action application/x-httpd-php "/php/php-cgi.exe"
其中第一句"c:/php/" 是指你所装php的路径,因人而异,希望大家注意。而整句话的意思是指用别名 /php/ 来代表你所装php的路径,在第三句要用到。
在 C:\Apache\Apache2\htdocs 下新建一个 phpinfo.php ,内容如下:或者
打开浏览器,输入:http://localhost/phpinfo.php,将显示当前服务器所支持 PHP 的全部信息,可以看到 Server API的模式为:Apache2 handler(以第一种模式安装时)或者可以看到 Server API的模式为:CGI(以第二种模式安装时)
有人这样说上面的意思如下,但我觉得不对,因为我没找到orig_script_name:
要知道PHP当前是通过CGI来运行,还是在Apache内部运行,可以检查一下环境变量orig_script_name。如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe。如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php。
#Listen 3000
#Listen 12.34.56.78:80
Port 80 Apache的端口。默认值是80。
ServerNamexxx.xxx.comWeb服务器的名字
Options Indexes FollowSymLinks MultiViews为了安全起见,请把上面的“Indexes”删掉。否则别人可以浏览到您网站里的所有文件。
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/" CGI文件存放路径。
在这行下面添加如下内容:
Alias /vdir/ "c:/comexe/"
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
设置虚拟目录。这样,通过访问 http://test.dnschek.net/vdir/,就可以访问到c:\test\目录下的内容。
Apache默认开设了两个虚拟目录:“/icons/”和“/manual/”。这两个虚拟目录没有用,可以在配置文件中删除。
每次配置文件更改后,要重新启动Apache才会生效。
以下1和2法可解决中文网页显示乱码:
(1)在配置文件中找包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行:
AddDefaultCharset GB2312
(2)养成良好的习惯,在每个网页的里加入这行:
一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。
以下方法可解决中文文件名无法访问
在ie中选择 工具 -> internet选项 -> 高级 -> 取消“总是以UTF-8发送URL”。
这个方法很麻烦,请尽量不要使用中文的网站文件名。
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了Apache的SAPI模块方式使用PHP,那么在和插入AddType application/x-httpd-php .php 的同一个位置加入AddType application/x-httpd-php-source .phps 就可以使用本特色了。
如果你用CGI方式使用PHP,那么你需要用show_source()函数。建立一个PHP文件,加入以下代码: 用你想要显示源代码的文件名替换掉original_php_script.php
(2)利用apache做Web Proxy
Proxy就是代理.Apache的web 代理是指可以让客户端服务器通过Apache来访问WWW, 这样,Apache服务器将接收来自客户机器的请求,然后首先去目标站点取得内容,并将内 容存储在Apache服务器上,然后再提交给客户.以后假如有另一个客户机需要访问同样 的内容,Apache就会直接从服务器硬盘上取得内容并且提交给客户.
要使用Apache Proxy,需要编辑/etc/httpd/conf/httpd.conf,假定你的Apache机器地址 为111.111.111.111,代理端口为8080(通常应选择大于1024的值),需要更改的段落有
Listen 111.111.111.111 8080 #打开8080端口
ProxyRequest On #启动Proxy服务
CacheRoot /var/cache/httpd #缺省的Proxy Cache 目录,必须是可写的目录
CacheSize 2000 #Cache的大小,单位是KB,设大一点儿对你无害,对吗?
CacheGcInterval 48 #每隔多少小时自动清理cache,把超出cache空间的垃圾删除
CacheMaxExpire 24 #Cache的最大有效期,或者说Cache最多可以落后于时代多少小时
CacheDefaultExpire 4 #缺省的Cache有效期,单位是小时
ProxyRemote http://something.com http://otherproxy.com:8080/
#对于到http://something.com的访问,自动去调用定义在otherproxy.com:8080 的另一个Web Proxy,
#也可以用ProxyRemote ftp http://otherproxy.com:8080/
#定义一个专门对ftp的Proxy级联.
NoProxy .mydomain.com 111.111.111.0/24
#对于来自111.111.111.1-111.111.111.254的并且指向*.mydomain.com的请求不使用代理,
#这可以使cache只对外部网有效.
接下来,你应该设定仅自己的内部用户才能使用Proxy,这需要修改/etc/httpd/conf/access.conf
加入以下段落:
#Proxy 存取限制
order allow,deny #顺序:缺省禁止
allow 111.111.111.0/24 #允许111.111.111.0-111.111.111.254使用,
#/24是指网络掩码是24个1,即255.255.255.0
#段落结束
现在,重新启动httpd,然后设置你的客户机,将代理服务器设成111.111.111.111:8080 就行了.
(3)虚拟主机
Apache的名字虚拟主机是一项不错的功能,它可以用一台Apache机器,一个IP来提供多个 页面,设定非常简单,你需要编辑/etc/httpd/conf/httpd.conf,假定有两个名字: a.domain.com和b.domain.com都指向111.111.111.111(注意,用CNAME产生的两个重合 的名字只能作一个来算,要作虚拟主机,你必须在域名中定义两个记录),那么你可以添 加下面的段落:
Listen 111.111.111.111 80
NameVirtualHost 111.111.111.111:80 #说明111.111.111.111是一台虚拟主机
#第一个虚拟主机
ServerName a.domain.com #虚拟主机名
DocumentRoot /home/httpd/html/a.domain.com/ #a.domain.com的主页文件的存放地址
Errorlog /var/log/a.log #错误信息记录
ServerAdmin mastera@domain.com #管理员的邮件地址(可选)
#段落结束
#第二个 ServerName b.domain.com
DocumentRoot /home/httpd/html/b.domain.com/
Errlog /var/log/b.log
ServerAdmin masterb@domain.com
同上 设定结束后,重新启动httpd.
顺便说一句,如果你要给每个虚拟用户配置CGI脚本怎么办?简单啦,就是在有关这个用户的
〈VirtualHost〉段落中加入ScriptAlias 段落,例如,这样:
ScriptAlias /cgi-bin/ /home/httpd/html/a.domain.com/cgi-bin/
这样以后象http://a.domian.com/cgi-bin/的引用就自动转向到/home/httpd/html/a.domain.com/cgi-bin/
下了。当然象DirectoryIndex之类的也可以放进去,呵呵.
设置Apache虚拟主机通常有两种方案
1. 基于IP的虚拟主机
这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
网卡上绑定多个IP地址去服务多个虚拟主机。
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到
/etc/rc.d/rc.local,确保每次启动后自动运行。
#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
192.168.0.255 up
#/sbin/route add -host 192.168.0.2 eth0:0
然后你需要设置/etd/httpd/conf/httpd.conf文件:
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
然后分别创建目录
/home/httpd/sales.yourdomain.com,
/var/log/httpd/sales.yourdomain.com
放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
方案。
2.基于名字的虚拟主机:
首先,设置多个域名的A记录,使它们解析到同一个IP地址上,即同一个服务器。
因为HTTP协议访问请求里包含有主机名信息,当WEB服务器收到访问请求时,就可以根据不同的主机名来访问不同的网站。
它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
/etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.0.1
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/hr.yourdomain.com
ServerName hr.yourdomain.com
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
TransferLog /var/log/hr.yourdomain.com/access_log
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
都指向IP地址192.168.0.1
ServerAlias *.dns0755.net
站点别名,“*”表示任意字符
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
LockFile在安装Apache时指定选用了USE_FCNTL _SERIALIZED_ACCEPT,USE_FLOCK_SERIALIZED_ACCEPT等参数。作为Apache连接出现错误的记录文件,它会把进程的PID值自动加在该文件中。请注意,该文件应保存在本地的硬盘中。PidFile记录着每次服务器运行时的进程号。ScoreBoardFile是某些特定系统上服务程序中父子进程通讯记录的文件。
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
这四项设定了服务器的连接属性。第一行说明了TCP中ack的响应时间为300秒;第二项表示是否保持服务响应的连接;紧接着的两项定义了这种连接的最大响应数目及响应时间。如果MaxKeepAliveRequests设为0,那它便是unlimited,当然这就要考虑系统的承载能力了。
MinSpareServers 5
MaxSpareServers 20
StartServers 8
这三项定义了服务程序的最小、最大空的子进程数目及服务程序开始时的进程数。5、20、8分别是它们的默认数值。
MaxClients 150
MaxRequestsPerChild 100
以上两行定义了同一时刻最多的客户连接数目和每个连接的子进程数。
Listen 3000
Listen 12.34.56.78:80
BindAddress *
这里定义了服务程序监听来自以上IP、端口号的Request。由于BindAddress只支持*(代表所有的IP),所以产生了Listen这个参数以便更灵活地处理客户机的响应。
ExtendedStatus On/Off
这条指令说明了是否跟踪服务程序所产生的扩展状态。
AccessFileName .htaccess
此指令指定了每个目录下的文件权限是由.htaccess决定。当Apache试图读取某一目录下的文件时,它将先查阅“.htaccess”文件中所列的访问控制指令,并执行相应的操作。
PHPINSTALLING:
因为在php的install文档里发现了这么一句话: php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll (bundled)。所以很重要的一点就是把php目录下的 libmysql.dll 和 libmysqli.dll 复制到windows/system32下,如果不这样做,mysql动态连接库就无法正常加载。
上面的话也可以解释为,将下列两个.dll文件复制到包含 apache.exe 应用程序的目录:
c:\php-4.3.9-Win32\php4ts.dll这将允许Apache将PHP程序作为模块来运行。
c:\php-4.3.9-Win32\extensions\php_oci8.dll
把php目录下的libmysql.dll复制到windows/system32下。不用复制php5ts.dll到system32下面。
解压php-4.3.9-Win32.zip至X:\PHP,进入 X:\PHP ,将 php.ini-dist 复制一份放到C:\windows内,改名为 php.ini ,在里面搜索 extension_dir = "./" ,改为extension_dir = " E:\php\ext "指定动态连接库的目录。然后把下面几句前面的分号去掉:
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_imap.dll
;extension=php_mysql.dll(mysql.dll要调用libmysql.dll所以要将libmysql.dll考到system32下面)。
接下来修改了一些文件上传以及内存使用最大限制:
memory_limit = 20M
post_max_size = 20M
upload_max_filesize = 20M
再搜索 register_globals = Off ,将 Off 改成 On这样可以使部分旧的PHP程序能正常运转。
把 doc_root 设置为 Apache 的 htdocs 目录(例如:C:\Program Files\Apache Group\Apache\htdocs)
doc_root = c:\apache\apache2\htdocs
session.save_path = c:/temp在session.save_path中使用正斜杠和反斜杠都是允许的。如果C:\Temp不存在,请自己创建它。
MYSQLINSTALLING:
可以从Settings-Control Panel-Administrative Tools中,双击Services后启动和关闭MySql。也可以在Run中输入cmd之后输入net stop mysql 停止MySql或net start mysql 开启MySql。
4、系统创建的数据库有mysql,test
mysql保存系统数据
test数据库用来测试
“InnoDB Table Space Setting”选一个路径。
“字体设置对话框”,选择第二相“对于多语言字体的最佳支持”。
“安全选择对话框”,为root设置一个密码。
其他全部选默认项。
可以再\bin下用MySQLInstanceConfig软件重新设置配置。
PHPMYADMININSTALLING:
下载得到 phpMyAdmin-2.6.0.zip ,将其解压到 IIS 根目录,找到并打开 config.inc.php ,做以下修改:
第一种情况:
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
以上是phpMyAdmin访问MySQL时是本地访问,此时可以访问包括root在内的任何database。而http://localhost/phpMyAdmin/是访问phpMyAdmin是通过本地的。
第二种情况:
$cfg['Servers'][$i]['host'] = 'IP地址'
$cfg['Servers'][$i]['port'] = '端口号'
以上是phpMyAdmin访问MySQL时是远程访问(远程的可能会慢吧,所以最好不用远程的),此时在配置MySQL时如没有选“enable root access from remote machines“则只能访问除root之外的任何database。而http://revitapi/phpMyAdmin/是访问phpMyAdmin是通过远程的。
第一种情况:通过phpMyAdmin进入MySQL时要密码
$cfg['blowfish_secret'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
进入那一个database是通过在提示框输入其名字和密码来选择的。可变动。
第二种情况:通过phpMyAdmin进入MySQL时不要密码
$cfg['blowfish_secret'] = '';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = '用户名root或其他database的用户';
$cfg['Servers'][$i]['password'] = '填写用户名的密码';
进入那一个database,以上两项就定了,不可动态的选。
搜索 $cfg['PmaAbsoluteUri'] ,将其设置为 phpMyAdmin 目录路径,如:http://localhost/phpMyAdmin/ ;
搜索 $cfg['DefaultLang'] ,将其设置为 zh-gb2312 ;
搜索 $cfg['DefaultCharset'] ,将其设置为 gb2312 ;
MEDIAWIKIINSTALLING:
http://sourceforge.net/projects/wikipedia/
Site name:你的wiki站点名称。注意:这与网站本身的名字空间有关,建议使用简短的英文(以后可修改)
Contact e-mail:站长的联络邮件
Language:语种选择。建议选择zh-cn简体中文或zh-tw繁体中文;没必要就不要选支持繁简体自动转换的zh中文,否则此后网站提示的本
地化工作量将增加很多
Copyright/license medadata:版权类型。其中GNU为公开的自由版权,允许他人复制、修改;不确定该用什么版权时选no license
metadata
Sysop account name:站长的名字。这是建立wiki后的第一个管理员用户,以后无法改名。可考虑使用英文名字
password:站长的密码
Shared memory caching:网站缓冲机制,建议选择Turck MMCache
MySQL server:填写空间服务商提供的MySQL服务器名称,一般为localhost
Database name:数据库名称,根据与空间服务商的约定填写
DB username:数据库用户名,根据服务商约定填写
DB password:数据库密码,根据服务商约定填写
Database table prefix:数据表前缀。建议设置前缀,以便与本站的其他软件公用MySQL数据库,甚至同时架设多个wiki(需放在不同目
录)。
DB root password:数据库root密码。(可忽略)
LocalSettings.php 中的设置:
修改前
$wgScript = "$wgScriptPath/index.php";
修改后
$wgScript = "$wgScriptPath/wiki";
照着安装信息中的used中的图片安装。
之后将LocalSettings文件移到父目录中。
之后设置LocalSettings:
改$wgLogo = "$wgStylePath/common/images/mediawiki.png";路径可使首页的图片改变。
将# $wgEnableUploads = true;前面的#去掉,即此命令起作用,则可以上传图片。
$wgUploadPath = "$wgScriptPath/images";
$wgUploadDirectory= "$IP/images";可以修改上传的东西的存放路径。
Zend Optimizer:
下载后得到 ZendOptimizer-2.5.5-Windows-i386.exe ,直接双击安装即可,安装过程要你选择 Web Server 时,选择 IIS ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。
Zend Optimizer 的安装向导会自动根据你的选择来修改 php.ini 帮助你启动这个引擎。下面简单介绍一下 Zend Optimizer 的配置选项。以下为安装完成后 php.ini 里的默认配置代码(分号后面的内容为注释):
zend_optimizer.optimization_level=15
;优化程度,这里定义启动多少个优化过程,默认值是 15 ,表示同时开启 10 个优化过程中的 1-4 ,我们可以将这个值改为 1023 ,表示开启全部10个优化过程。
zend_extension_ts="C:\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模块在硬盘上的安装路径。
zend_extension_manager.optimizer_ts="C:\Zend\lib\Optimizer-2.5.5"
;优化器所在目录,默认无须修改。
Apache2.0.50 :http://httpd.apache.org/download.cgi
PHP5.0.2 :http://cn2.php.net/get/php-5.0.2-Win32.zip/from/a/mirror
MYSQL5.0.2:http://dev.mysql.com/downloads/mysql/5.0.html
Zend2.5.2 :http://www.zend.com/store/free_download.php?pid=13]
Apache(2.0.52): http://www.skycn.com/soft/1218.html
PHP(4.3.9): http://www.php.net/downloads.php
MySQL(4.1.7): http://dev.mysql.com/downloads/
Zend Optimizer(2.5.5):http://www.zend.com/store/products/zend-optimizer.php
phpMyAdmin(2.6.0): http://www.skycn.com/soft/10687.html
phptest.php
PHP Installation Test
页:
[1]