惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - nikytwo

Install Tomcat 7 on CentOS, RHEL, or Fedora [转]如何安全的存储密码 打败 IE 的葵花宝典:CSS Bug Table 域名的DNS解析指南 IE6实现PNG图片透明 JQuery EasyUI 之 combobox plugin JQuery EasyUI 之 validatebox plugin JQuery easyUI 之 datebox plugin Asp.NET + OWC 输出Chart(图表) Route命令使用详解 CascadingDropDown 最近写 ASP.NET 中出现的错误 & 实现DataTable和DataSet类型的客户端/服务器端自动转换 CSS图片垂直居中 - nikytwo - 博客园 CSS 条件缩放图片 SQL:行合并问题 & 使用 SP_executesql 从exec('SQL语句') 中得到一个返回值 Dataset.Readxml(stream) 错误 “缺少根元素” 分页 web Service 传输 Dataset (大数据量) Delphi 调用 Webservice (ASP.NET)
Apache + PHP 安装日志
nikytwo · 2009-04-14 · via 博客园 - nikytwo

背景:想用 drupal 弄一个论坛,其系统要求是 Apache + PHP + MySQL (推荐),又因为最近在玩Linux,所以...

机子是windows2003系统。

 首先:安装 Apache (装的是apache_2.2.11-win32-x86-openssl-0.9.8i.msi ),安装时一路“next”。

有文章说:“安装过程,任何目录和文件名都不要使用空格” 。不过我是装在“D:\Program Files”,运行正常......

由于本机的IIS已经占用了80端口,所以为 Apache  配置了1080的端口(很奇怪的就是配8080竟然不行,可能是被其他程序占用了,没细查)。

但是,输入:http://localhost:1080/ 后,一直没有反映 。查看logs\error.log 如下:

[error] (OS 10038)在一个非套接字上尝试了一个操作。  : Child 816: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.

并且 Httpd.exe 占用 CPU 资源很高。

  网上一些做法是:(Window下APACHE的Win32DisableAcceptEx的问题

在httpd.conf文件中添加 Win32DisableAcceptEx 标记,如下:
<IfModule mpm_winnt.c>
ThreadsPerChild 1000
MaxRequestsPerChild  10000
Win32DisableAcceptEx

</IfModule>

这样可以允许并发连接更大一些。同时性能上也不会有明显的降低.

一般,这样设置基本就能搞定,但是我碰到的情况,就是想上面那样关闭AcceptEx,也会出现类似问题,Apache还是不能正常运 作,error.log出项了大量的:Sat Dec 24 17:21:28 2006] [warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.。又找了一下,发现了如下的一种解决办法,我试了试,果然可以,而且在多台服务器上试过,只要出现了AcceptEx 的问题,就能解决,具体设置为:

1、网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的勾.

2、控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)。

3、然后退出Apache,再打开启动就可以了 ,一开始我没有退出,直接在那重启,就是不可以,一定要先停止,在开启即可。

 以上是一种情况。而我的情况是:cpu占有率降低,但还是出错,logs\error.log 如下:

[Mon Dec 24 16:48:06 2007] [error] (OS 10038)在一个非套接字上尝试了一个操作。 : Too many errors in select loop. Child process exiting.
[Mon Dec 24 16:48:06 2007] [notice] Child 1916: Exit event signaled. Child process is ending.
[Mon Dec 24 16:48:07 2007] [notice] Child 1916: Released the start mutex
[Mon Dec 24 16:48:07 2007] [notice] Child 1916: Waiting for 250 worker threads to exit.
[Mon Dec 24 16:48:07 2007] [notice] Child 1916: All worker threads have exited.
[Mon Dec 24 16:48:07 2007] [notice] Child 1916: Child process is exiting
[Mon Dec 24 16:48:07 2007] [notice] Parent: child process exited with status 0 -- Restarting.
[Mon Dec 24 16:48:07 2007] [notice] Apache/2.0.55 (Win32) configured -- resuming normal operations
[Mon Dec 24 16:48:07 2007] [notice] Server built: Oct 9 2005 19:16:56
[Mon Dec 24 16:48:07 2007] [notice] Parent: Created child process 3028
[Mon Dec 24 16:48:07 2007] [notice] Disabled use of AcceptEx() WinSock2 API
[Mon Dec 24 16:48:07 2007] [notice] Child 3028: Child process is running
[Mon Dec 24 16:48:07 2007] [notice] Child 3028: Acquired the start mutex.
[Mon Dec 24 16:48:07 2007] [notice] Child 3028: Starting 250 worker threads.
[Mon Dec 24 16:48:08 2007] [notice] Child 3028: Listening on port 80.

 解决办法:Apache错误:[error] (OS 10038)在一个非套接字上尝试了一个操作

cmd下

netsh winsock reset

然后重启,并且不用设置 Win32DisableAcceptEx。

其实发生上述错误都是 windows 中某些软件更改了 winsock 导致的。

另:在查询资料时找到这个:apache2.2.11 详细配置优化

 接下来是安装 PHP (首先弄了个 PHP 5.0.0 后下来最新的 PHP 5.2.9-2 zip package) 参考了很多安装文章。

首先,很多文章都说最好是下载解压版的, installer 版的好像有限制的......(没试过)。

第二,PHP解压后,“把 php5ts.dll 放到 Windows 路径中,最好的位置是 Windows 的 system 目录”(某文章说)。若不行就把PHP目录下的所有 dll 文件都复制到c:/windows/system32/下(另一篇文章说,-_-!)。而“复制 D:\PHPServer\php5 目录下的php5ts.dll,libmysql.dll 到C:\windows\system32”。(又一文章说)(@_@)。最后我是效仿这篇文章的第4点 :将 PHP 目录添加到环境变量 Path 中(但在安装 PHP 5.2.9-2没设置环境变量也是可以运行的,可能我还没用用到这篇文章里所说的 extension 吧)。安装 phpMyAdmin 证实若用到 extension 时必须把其相应的 lib***.dll 文件复制到 c:/windows/system32/下,设置环境变量不起作用。譬如 extiension php_mysql.dll 需要将 php 目录下的 libmysql.dll 文件复制到 c:/windows/system32/下,否则提示无法加载 MySQL extension。libmcrypt.dll 也要复制到 system32/下,否则 phpMyAdmin 会提示 Access denied for user ’(乱码)’@’localhost’ (using password: YES)无法登录,phpMyAdmin 应该用到了 extiension php_mcrypt 加密解密

第三,就是配置PHP了,将“php.ini-recommended”文件复制到“c:/windows”下,更名为“php.ini”(我也是没有复制过去的)(另,很多文章说用 php.ini-recommended 而不是 php.ini-dist ,有文章解释说“php.ini-recommended 在对默认设置作了性能和安全上的优化”)。

第四,修改 php.ini :

(1)查找“extension_dir”字段,赋值为php解压路径中的ext目录下,如"D:\php5\ext"

(2)查找 cgi.force_redirect 字串.默认值为1.将其修改为0.并取消前面的;号

 用到哪些 extensions 去掉其前面的 “;” 号

extension=php_mbstring.dll(宽字符,用于支持PhpMyAdmin,避免出现字符显示问题)
extension=php_mcrypt.dll(用于支持PhpMyAdmin)
extension=php_mysql.dll(MySql模块,开启之后才能访问MySql数据库)

extension=php_mysqli.dll(MySql模块)

extension=php_curl.dll
extension=php_gd2.dll

 第五,配置Apache以支持php5:

设置php起始页:

<IfModule dir_module>
  DirectoryIndex index.php index.html default.php default.html index.htm

</IfModule>

 可以自己增加需要的起始页文件名。注意文件名之间用空格隔开,而不是用逗号。

有两种方法使得 PHP 工作在 Windows 下的 Apache。一是使用 CGI 二进制文件,另一是使用 Apache 模块 DLL(这种做法比较好)。

1. PHP 以 CGI 方式安装到 Apache

将如下指令插入到 Apache 的 httpd.conf 配置文件中

ScriptAlias /php/ "D:/php/"
AddType application/x-httpd-php .php #(支持 php 扩展名)
Action application/x-httpd-php "/php/
php-cgi.exe" #(注意是 php-cgi.exe不是 php.exe,否则会出现如下错误)

 以CGI的方式安装到 Apache时,logs\error.log 出现了以下错误

[error] [client 127.0.0.1] Premature end of script headers: php.exe

 原因是:php5下面装成cgi模式调用的是php-cgi.exe 不是php.exe

 2. PHP 以模块方式安装到 Apache

找到 #LoadModule ssl_module modules/mod_ssl.so 这行,在此行后加入

PHPIniDir "D:/php5/"

LoadModule php5_module "D:/php5/php5apache2_2.dll"

#(其中D:/php5/php5apache2_2.dll是你安装php的相应路径.注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,必须使用php5apache2_2.dll.否则就可能会出现如下的问题)

有很多文章是 “添加 php 扩展名支持 ” 如下句的

AddType application/x-httpd-php .php #(这句是要的,不然无法识别 php 文件)

 以模块方式安装到 Apache时,出现错误:

"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."

或者:

"The requested operation has failed"

 解决办法可参考:http://www.phpfans.net/bbs/viewthread.php?tid=857&extra=page%3D1(不过这是针对 php 5.1.* 的)

 或者:在http://snaps.php.net/index.php下载最新的开发版,用其中的php5apache2_2.dll替换(好像也是针对 php 5.1.*的)

本机 php 5.0.0 以上两种方法都不行,至今还没找到解决办法(谁知道,谢谢告知) 反正都是下载了最新的 php 版本了,所以最后干脆 用 php 5.2.9-2 了......安装的很顺利,可能是之前错得多了。哈~

注意,如果安装后出现You don’t have permission to access / on this server.

更改 如下

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all #Deny from all(修改这里)
</Directory>

 由于用的是 php 5.0.0 安装完后运行(我是以CGI方式运行的)出现如下错误

“unable   to   load   dynamic   library   'C:\AppServ\php\extension\php_mcrypt.dll'   -找不到指定模块”

而实际上这个文件和路径都是正确的

解决方法:win2k下appserv启用php_mycrypt.dll时“找不到指定模块”的问题

php_mcrypt.dll   需要   libmcrypt.dll   支持,php并不默认提供。(php 5.2.9-2 是提供的)

注意   libmcrypt.dll   有多个版本,你可通过实验找到与你的php版本相适应的libmcrypt.dll。

最新的下载地址http://files.edin.dk/php/win32/mcrypt/163k

不过 php 5.0.0  要到http://files.edin.dk/php/win32/mcrypt/old/   下一个247K才行

 最后附上PHP 手册

顺便说说  phpMyAdmin 登录后 出现“配置文件现在需要绝密的短语密码(blowfish_secret)”

解决办法:从PhpMyAdmin\libraries目录下 找到config.default.php 文件,找到$cfg['blowfish_secret'],其值为空或值太少,随意添加个值就 ok 了。

另,在较早版本中 好像是设置根目录下 config.inc.php 文件的。