用技术创造价值,用艺术塑造自我!
Posts tagged apache
Apache MPM(Multi-processing module) 学习笔记
Jul 13th
编译参数:
–with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|worker|prefork|mpmt_os2|perchild|leader|threadpool|win_nt}
linux和unix下面默认为profork模式,常用的有worker模式和profork模式,windows下面是win_nt模式。
1:profork
工作原理:一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的(spare)或者是空 闲的子进程用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。将MaxClients设置为一个足够大的数值以处理潜在的请求高 峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。
优点:具有很强的自我调节能力,只需要很少的配置指令调整。
| 默认值 | 说明 | |
| MaxSpareServers | 10 | 设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有非常繁忙的机器才用设置这个值,不要设置的太大。 |
| MinSpareServers | 5 | 空闲子进程的最小数量 |
| StartServers | 5 | 设置了服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数 |
| ServerLimit | 最大200000,编译默认20000 | 只有在你需要将MaxClients设置成高于默认值256的时候才需要使用这个指令。要将此指令的值保持和MaxClients一样。 |
| MaxClients | 256 | MaxClients指令设置了允许同时伺服的最大接入请求数量。任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256。要增大这个值,你必须同时增大ServerLimit 。 |
| MaxRequestsPerChild | 10000 | 设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。 |
2:worker
工作原理:每个进程可以拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建立。每个子进程可 以建立ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。
优点:由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,是apache2.0后的发展趋势。
典型设置:
ServerLimit 16
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
| 默认值 | 说明 | |
| MaxSpareThreads | 250 | 最大空闲线程数 |
| MinSpareThreads | 75 | 最小空闲线程数 |
| StartServers | 3 | 设置了服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数 |
| ServerLimit | 最大200000,编译默认20000 | 只有需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients 和ThreadsPerChild需要的子进程数量高。 |
| MaxClients | 50 | 表示可以用于伺服客户端请求的最大线程数量。对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要将MaxClients增加到超过16个进程才能提供的时候,你必须同时增加ServerLimit的值。 |
| ThreadsPerChild | 25 | 这个指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理可能的请求高峰。如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。 |
3:event
event多路处理模块(MPM)被设计成面向需要处理大量并发连接的场合(特别是在开启KeepAlive的场合),它基于worker开发,并且配置 指令与worker完全相同。
要使用event MPM,你必须在配置脚本configure的命令行上使用–with-mpm=event选项。
该MPM依赖于APR用于线程同步的compare-and-swap原子操作,并且你还需要在configure命令行上使用–enable- nonportable-atomics=yes选项。如果你为x86平台编译,那么最低要求i486以上的CPU支持;如果你为SPARC平台编译,那 么最低要求UltraSPARC芯片。因为更老的CPU不支持compare-and-swap原子操作。
Python Web框架Django的开始之旅–Runnable
Mar 15th
Django是简介:
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的设计模式,即模型M,模版T和视图控制器V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don’t Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。更多信息在这里
Django安装
安装Django之间你必须安装python,到python.org(千万别到python.com上,别怪我没有告诉你)上去下载2.3以上,3.0以下的版本(3.x的版本不向下兼容,目前django还不支持)。到http://www.djangoproject.com/download/下载最新的django1.0.2的gz包,
在linux下的安装为:
1:tar xzvf Django-1.0.2-final.tar.gz
2:cd Django-1.0.2-final
3:sudo python setup.py install
在windows下面的安装方式为:
1:进入命令行;转到django的解压缩目录
2:输入:C:\Python25\python.exe setup.py install 就可以了,这里的python.exe是自己的的python在windows下的安装目录。
开发前准备工作
1:django支持的数据库
在web开发之旅中,摆脱数据库总是不太现实,所以需要了解一下django支持的数据库,目前django支持5中数据库:Oracle,MySQL ,PostgreSQL ,SQLite 3 ,Microsoft SQL Server
Oracle和Django的结合
目前支持oracle 9i以上的版本,你需要到http://cx-oracle.sourceforge.net/下载cx-oracle包来提供相关的支持。
Mysql和Django的结合
支持Mysql4.0以上的版本,需要到http://sourceforge.net/projects/mysql-python下载mysql-python包。
其他数据库工作中很少关注,如果想继续关注请google一下。
2:web服务器的安装
(1)到www.modpython.org下载mod_python包,安装中会自动找到你的python安装目录和apache的安装目录,如果提示没有找到,就需要你选择一下相关的安装目录,如果错误会自动退出安装。
(2)在apache的httpd.conf中添加相关的配置:
在<IfModule alias_module></IfModule> 中间添加相关的配置,注意你的apache的版本号对应的相关的配置。
LoadModule python_module modules/mod_python.so
<Directory "E:/python/web">
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
Satisfy all
AddHandler mod_python .py
PythonHandler test
PythonDebug On
</Directory>
(3)测试一下你的服务器,在目录E:/python/web下面新建test.py,内容如下:
from mod_python import apache
1 2 3 | def handler(req): req.write("Hello World!") return apache.OK |
启动apache服务器,在浏览器中输入http://localhost/python/test.py,现实Hello World!则代表服务器启动了。
开始django之旅
(1)到django的安装目录(C:\Python25\Lib\site-packages\django\bin),执行C:/Python25/python.exe django-admin.py startproject mydjango 然后在安装目录下面会有4个文件,分别是:__init__.py (可以向Python编译器表明当前文件夹下的内容是Python工程模块) ;manage.py (一个命令行工具,可以让你以多种方式与Django项目交互);setting.py (Django项目的配置 );urls.py (负责配置URL的地址映射以及管理URL的地址格式 )Python代码不要放在document root下 ,因为这样做别人可以从Web看到你的代码;把代码放在document root以外的目录,如/opt/mydjango。
(2)在命令模式下执行:
C:\Python25\Lib\site-packages\django\bin>cd mydjango
C:\Python25\Lib\site-packages\django\bin\mydjango>C:/Python25/python.exe manage.py runserver
Validating models…
0 errors found
Django version 1.0.2 final, using settings ‘mydjango.settings’
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
在浏览器中看到相关的内容,就说明启动了Django应用服务器,如果你的代码有改动,它自动reload,不需要重启项目。默认情况下runserver命令启动服务器的端口为8000,只监听本地连接
如果你希望改变端口,增加一个命令行参数即可:
C:/Python25/python.exe manage.py runserver 8080
你也可以改变服务器监听的IP地址:
C:/Python25/python.exe manage.py runserver 0.0.0.0:8080
后面你就可以自己写python的代码。
推荐2本django的电子书籍
1:django step by step
2:The Django Book 中文版翻译在这里
如果你python还没有学习的话,请买本《python核心编程第二版》读读吧!
配置过程中可能的问题
1:在windows的命令模式下执行 python 报错:
计算机的属性》高级》计算机环境变量》path中添加C:\Python25(python安装目录)
2:403错误,查找apache下面的error日志:
client denied by server configuration
apache2.0和2.2的配置文件不一样。
2.0:
Options FollowSymLinks
AllowOverride None
2.2:
Options FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all 这个地方需要修改为allow from all
Satisfy all
WORDPRESS的安装简介
Feb 18th
php和apache的安装:
1:Apache官方网站:http://www.apache.org(本人下载的版本是apache2.2)
2:最新的PHP程序代码你可以在它的官方网站http://www.php.net/downloads.php(本人下载的版本是PHP5.25,最好下载解压缩版的,不要下载安装版的)
在这里以PHP5为例介绍一下Windows下Apache和PHP5的安装与配置方法.
一 下载安装程序
Apache可以从http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/下载
PHP可以从http://www.php.net下载.
二 安装程序
1 Apache的程序安装相对来说要较为的简单一些,我们从网站下来的是一个Windows下的安装程序,我们可以直接双击运行,这样我们就便利Apache在我们的电脑上安下家来了.
2 我们在这里要注意的就是在下载PHP时一定要下载那个zip包的,而不要下载Installer的.将我们下载下来的PHP包解压到C盘下的根目录下,并将解压出来的文件夹改名为php.
三 配置
1 最好是无论使用何种接口(CGI 或者 SAPI)都确保 php5ts.dll 可用,因此必须将此文件放到 Windows 路径中。最好的位置是 Windows 的 system 目录:
c:\windows\system for Windows 9x/ME
c:\winnt\system32 for Windows NT/2000 或者 c:\winnt40\system32 for Windows NT/2000 服务器版
c:\windows\system32 for Windows XP
2 下一步是设定有效的 PHP 配置文件,php.ini。压缩包中包括两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为此文件对默认设置作了性能和安全上的优化。
将选择的 ini 文件拷贝到 PHP 能够找到的目录下并改名为 php.ini。PHP 默认在 Windows 目录下搜索 php.ini:
3 在 Windows 9x/ME/XP 下将选择的 ini 文件拷贝到 %WINDIR%,通常为 c:\windows。
在 Windows NT/2000 下将选择的 ini 文件拷贝到 %WINDIR% 或 %SYSTEMROOT% 下,通常为 c:\winnt 或 c:\winnt40 对应于服务器版本。
4 Apache中PHP的设置
有两种方法使得 PHP 工作在 Windows 下的 Apache。一是使用 CGI 二进制文件,另一是使用 Apache 模块 DLL。无论那种方法,您首先必须停止 Apache 服务器,然后编辑 httpd.conf,以配置 Apache 和 PHP 协同工作。
如果我们要使用CGI二进制文件,那么我们要将如下指令插入到 Apache 的 httpd.conf 配置文件中,以设置 CGI 二进制文件:
PHP 以 CGI 方式安装到 Apache 2.0:
ScriptAlias /php/ “c:/php/”
AddType application/x-httpd-php .php
Action application/x-httpd-php “/php/php.exe”
如果我们想把 PHP 作为 Apache 2.0 的模块,那么就一定要移动 php4ts.dll 到 winnt/system32(Windows NT/2000)或 windows/system32(Windows XP),覆盖原有文件(如果有的话),对于 PHP 5,这个文件是 php5ts.dll。然后我们要插入如下两行到 httpd.conf 中,以使我们的 PHP 作为 Apache 的 PHP-Module 安装:
PHP 以模块方式安装到 Apache 2.0:
; For PHP 4 do something like this:
LoadModule php4_module “c:/php/php4apache2.dll”
AddType application/x-httpd-php .php
; For PHP 5 do something like this:
LoadModule php5_module “c:/php/php5apache2.dll”
AddType application/x-httpd-php .php
经过这样的配置以后,我们就安装好了我们的PHP和Apache服务器了.我们可以简单的测试一下:
1 测试Apache:
我们打开浏览器,在地址栏中输入localhost,如果可以出现Apache页面,则说明我们的Apache可以正常工作了.
2测试PHP设置:
我们可以简单的编写一个PHP页面,我们可以用文本编辑器,输入下面的代码:
<html>
<head>
<title>
hello
</title>
</head>
<body>
<?php echo “hello,php”; ?>
</body>
</html>
然后将这个文件存为hello.php,将其放在Apache的htdocs目录中(我们也可以在http.conf文件中来更改这个目录的),然后在我们的浏览器中输入http://localhost/hello.php,如果能够正确的显示hello,php就说明我们的PHP配置是可以正常工作的.
wordpress的安装过程
1:mysql的创建数据库
create database wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY “password”;
FLUSH PRIVILEGES;
2:PHP5在默认情况下,不再提供mysql的支持,必须手动的设置:
将php目录下的libmysql.dll 和php/ext目录下的php_mysql.dll放到c:window/ssystem32下, 编辑php.ini,
将extension_dir = “./” 改为 extension_dir = “c:windowssystem32″. 找到;extension=php_mysql.dll, 将’;’去掉改为extension=php_mysql.dll , 重启apache
3:修改apache的主页指向的配置文件;
<IfModule dir_module>
DirectoryIndex index.html index.htm index.jsp index.php
</IfModule>
4:快速安装:
这是快速安装指南,适用于那些习惯这样安装的人们。更多详细说明如下。
如果你还没有WordPress软件包,那你需要下载并解压缩它。
在你的主机上为WordPress建立一个数据库,以及一个具有访问和修改权限的MySQL用户。
将wp-config-sample.php改名为wp-config.php.
用你最喜欢的文字编辑器(记事本)打开wp-config.php,填入你的数据库信息。
将WordPress文件上传至你的网站服务器上适当的地方:
如果你想直接使用顶级域名(例如http://example.com/)访问Blog, 将解压後的WordPress目录中的所有内容(不包含最外层的WordPress文件夹)上传至你的空间顶级目录。
如果你想使用子域名(例如http://example.com/blog/), 将目录wordpress改名为你所想要的子域名,比如Blog,再上传到你的空间顶级目录。
在浏览器中访问wp-admin/install.php运行WordPress脚本。
如果你将WordPress安装在顶级目录中,你需要访问http://example.com/wp-admin/install.php
如果你将WordPress安装在子目录中,比如blog,你应该访问http://example.com/blog/wp-admin/install.php
行了!WordPress应该已经安装好了。
