CentOS下安装pure-ftpd

安装pure-ftpd 1.下载 wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.32.tar.gz 2.解压 tar -zxvf pure-ftpd-1.0.32.tar.gz 3.编译安装 tar -zxvf pure-ftpd-1.0.32.tar.gz cd pure-ftpd-1.0.32 ./configure \ –prefix=/usr/local/pureftpd \ –without-inetd \ –with-altlog \ –with-puredb \ –with-throttling \ –with-peruserlimits \ –with-tls make && make install 配置 pure-ftpd 1. 修改配置 cd configuration-file mkdir -p /usr/local/pureftpd/etc/ cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl chmod 755 /usr/local/pureftpd/sbin/pure-config.pl 2.配置文件 vi /usr/local/pureftpd/etc/pure-ftpd.conf //修改其中两处: PureDB /usr/local/pureftpd/etc/pureftpd.pdb PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid 启动pure-ftpd /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L3136:8 -m4 -s -U133:022 -u100 -g/usr/local/pureftpd/var/run/pure-ftpd.pid -k99 -Z //显示这个就没问题了。 ...

January 5, 2015

Nginx0.8.x+PHP5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[转]

 Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版) 原文链接:http://blog.zyan.cc/nginx_php_v6/] 说明:转载,有备无患。 Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了。Igor 将源代码以类BSD许可证的形式发布。 Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。 Nginx 的官方中文维基:http://wiki.nginx.org/NginxChs 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。 根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。 而这台 Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。 在3万并发连接下,访问Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明): 点击在新窗口中浏览此图片 我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高: 点击在新窗口中浏览此图片 2009年9月3日下午2:30,金山游戏《剑侠情缘网络版叁》临时维护1小时(http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml),大量玩家上官网,论坛、评论、客服等动态应用Nginx服务器集群,每台服务器的Nginx活动连接数达到2.8万,这是笔者遇到的Nginx生产环境最高并发值。 点击在新窗口中浏览此图片 下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器,一台为Nginx,另一台为Apache,Nginx每秒处理的请求数是Apache的两倍多,Nginx服务器的系统负载、CPU使用率远低于Apache: 你可以将连接数开到10000~30000,去压Nginx和Apache上的phpinfo.php,这是用浏览器访问Nginx上的phpinfo.php一切正常,而访问Apache服务器的phpinfo.php,则是该页无法显示。4G内存的服务器,即使再优化,Apache也很难在“webbench -c 30000 -t 60 http://xxx.xxx.xxx.xxx/phpinfo.php”的压力情况下正常访问,而调整参数优化后的Nginx可以。 ...

January 4, 2015

[转]如何在github上传自己的代码

注册GitHub后你就会有0.3G的免费空间,不过只能创建公开项目,这也满足代码分享的目的,我最喜欢的倒是它的代码展示方式,可以直接浏览你的代码,代码是经过高亮、添加行号处理过的,十分漂亮,体验一流,比如这个Webpy托管的地方。而作为想要了解你代码的人,可以选择直接在线浏览自己感兴趣的,也可以直接下载压缩包,或者直接使用Git clone到本地。 因为GitHub是基于Git版本控制系统,所以你上传修改代码什么的,都需要使用Git工具。我这里主要是用来分享和展示代码,所以不想在版本控制方面做过多的阐述,下面就简单讲解一下怎么在GitHub上新建一个项目,还有把自己的代码传上去。下面的前提是你已经注册了GitHub和下载安装了Git——Git下载、Windows版本下载。 上传分享代码 1.在GitHub上建立项目 登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击过后,填入项目名称、说明和网址过后就可以创建了,然后会出现一个提示页面,记下类似[email protected]:XXX/XXX.git的地址,这个就是你这个项目的地址了。 2.配置Git以及上传代码 安装Git成功后,如果是Windows下,选择Git Bash,在命令行中完成一切,可能开始有点麻烦,不过就那几条命令行,用几次就记住啦。首先初始设置Git: 1 git config --global user.name "Your Real Name" 2 git config --global user.email [email protected] 然后开始进行最麻烦的一步了,你需要上传文件到GitHub的Git系统上,得需要一个SSH密匙来认证,下面就开始生成密钥和提交密钥。打开Git Bash,创建SSH key: 1 ssh-keygen -C '[email protected]' -t rsa 然后要你输入SSH密匙的存放位置,可以不管,直接回车使用默认路径。再输入你想要的密码,SSH key就生成了。现在你需要将这个Key提交到GitHub,首先打开Key保存的位置,里面会有三个文件,找到id_rsa.pub,用文本编辑器打开,复制里面的全部字符。到GitHub,在右上方工具栏里找到Account Settings。在这个页面上有一个SSH Public Keys标签,选择Add another public key。Title可以随便填一个,Key就粘贴刚才的字符,提交。 完成这些工作后,就可以上传自己的代码了。找到自己要分享上传的代码文件夹,右击选择Git Bash,或者在Git Bash中进入这个文件夹。建立一个仓库: 1 git init 选择要添加进仓库的文件: 1 git add . 一般如果你想分享这个文件夹里的所有代码,就在 add后面加“.”,上面的例子就是这样,如果传指定的,只需要把“.”改为文件名即可,现在只是选择了要加入仓库的文件,下面才是添加进入仓库: 1 git commit -m 'Test' -m后面跟一个参数,表示说明,将代码提交到GitHub后,将会在代码文件信息上显示这个说明,如下图标记的地方。 搞了这么久,现在才开始把本地仓库上传到GitHub了,下面两行命令搞定问题: 1 2 git remote add origin [email protected]:XXX/XXX.git 3 git push -u origin master 这个[email protected]:XXX/XXX.git就是上面创建项目是生成的地址。现在打开你的项目网址,你就可以发现你的代码已经展示出来了。如果你要更新代码的话,就重复上面的吧。 如果提交了敏感信息,比如代码中设置的自己的密码什么的忘删除就上传上去了怎么办?重新修改过后上传依然有历史记录,而使用Git删除历史记录貌似很麻烦,于是就采用删除项目吧,删除了再重新上传。删除项目需要在GitHub网站上右上方找到admin按钮,进去后右边最下面有个删除的按钮,这样就可以删除了。 ...

October 8, 2013

svn命令copy使用

名称 svn copy — 拷贝工作拷贝的一个文件或目录到版本库。 概要 svn copy SRC DST 描述 拷贝工作拷贝的一个文件或目录到版本库。_SRC和DST_既可以是工作拷贝(WC)路径也可以是URL: WC -> WC 拷贝并且预定一个添加的项目(包含历史)。 WC -> URL 将WC或URL的拷贝立即提交。 URL -> WC 检出URL到WC,并且加入到添加计划。 URL -> URL 完全的服务器端拷贝,通常用在分支和标签。 注意 你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。 别名 cp 变化 如果目标是URL则包括版本库。 如果目标是WC路径,则是工作拷贝。 是否访问版本库 如果目标是版本库,或者需要查看修订版本号,则会访问版本库。 选项 --message (-m) TEXT --file (-F) FILE --revision (-r) REV --quiet (-q) --username USER --password PASS --no-auth-cache --non-interactive --force-log --editor-cmd EDITOR --encoding ENC --config-dir DIR 例子 拷贝工作拷贝的一个项目(只是预定要拷贝—在提交之前不会影响版本库): $ svn copy foo.txt bar.txt A bar.txt $ svn status A + bar.txt 拷贝你的工作拷贝的一个项目到版本库的URL(直接的提交,所以需要提供一个提交信息): ...

November 20, 2012

svn命令delete使用

名称 svn delete — 从工作拷贝或版本库删除一个项目。 概要 svn delete PATH... svn delete URL... 描述 _PATH_指定的项目会在下次提交删除,文件(和没有提交的目录)会立即从版本库删除,这个命令不会删除任何未版本化或已经修改的项目;使用--force选项可以覆盖这种行为方式。 URL指定的项目会在直接提交中从版本库删除,多个URL的提交是原子操作。 别名 del, remove, rm 变化 如果操作对象是文件则是工作拷贝变化,对象是URL则会影响版本库。 是否访问版本库 对URL操作时访问 选项 --force --force-log --message (-m) TEXT --file (-F) FILE --quiet (-q) --targets FILENAME --username USER --password PASS --no-auth-cache --non-interactive --editor-cmd EDITOR --encoding ENC --config-dir DIR 例子 使用svn从工作拷贝删除文件只是预定要删除,当你提交,文件才会从版本库删除。 $ svn delete myfile D myfile $ svn commit -m "Deleted file 'myfile'." Deleting myfile Transmitting file data . Committed revision 14. 然而直接删除一个URL,你需要提供一个日志信息: ...

November 20, 2012

svn命令diff使用

名称 svn diff — 比较两条路径的区别。 概要 diff [-r N[:M]] [TARGET[@REV]...] diff [-r N[:M]] --old OLD-TGT[@OLDREV] [--new NEW-TGT[@NEWREV]] [PATH...] diff OLD-URL[@OLDREV] NEW-URL[@NEWREV] 描述 显示两条路径的区别,svn diff有三种使用方式: **svn diff [-r N[:M]] [–old OLD-TGT] [–new NEW-TGT] [PATH…]**会显示_OLD-TGT和NEW-TGT的区别。如果给定路径PATH,它会被看作OLD-TGT和NEW-TGT的相对路径,输出也会限制在这些路径的区别上。OLD-TGT和NEW-TGT可以是工作拷贝路径或者是URL[@REV]。OLD-TGT缺省是当前工作目录,而NEW-TGT缺省是OLD-TGT。N缺省是BASE,M缺省时当前目录的版本,但如果NEW-TGT是一个URL,则默认是HEAD。svn diff -r N设置OLD-TGT的修订版本为N,svn diff -r N:M设置NEW-TGT的修订版本是M_。 svn diff [-r N[:M]] URL1[@N] URL2[@M]是svn diff [-r N[:M]] –old=URL1 –new=URL2的缩写。 _TARGET_是一个URL,然后可以使用前面提到的--revision或“@”符号来指定N和M。 如果_TARGET_是工作拷贝路径,则--revision选项的含义是: --revision N:M 服务器比较 TARGET@N和TARGET@M。 --revision N 客户端比较_TARGET@N_和工作拷贝。 (无--revision) 客户端比较base和 TARGET的TARGET。 如果使用其他语法,服务器会比较_URL1和URL2各自的N和M。如果省掉N或M_,会假定为HEAD。 缺省情况下,svn diff忽略文件的祖先,只会比较两个文件的内容。如果你使用--notice-ancestry,比较修订版本(也就是,当你运行svn diff比较两个内容相同,但祖先历史不同的对象会看到所有的内容被删除又再次添加)时就会考虑路径的祖先。 别名 di 变化 无 是否访问版本库 获得工作拷贝非BASE修订版本的区别时会 ...

November 20, 2012

svn命令add使用

名称 svn add — 添加文件、目录或符号链。 概要 svn add PATH... 描述 添加文件、目录或符号链到你的工作拷贝并且预定添加到版本库。它们会在下次提交上传并添加到版本库,如果你在提交之前改变了主意,你可以使用svn revert取消预定。 别名 无 变化 工作拷贝 是否访问版本库 否 选项 --targets FILENAME --non-recursive (-N) --quiet (-q) --config-dir DIR --auto-props --no-auto-props --force 例子 添加一个文件到工作拷贝: $ svn add foo.c A foo.c 当添加一个目录,svn add缺省的行为方式是递归的: $ svn add testdir A testdir A testdir/a A testdir/b A testdir/c A testdir/d 你可以只添加一个目录而不包括其内容: $ svn add --non-recursive otherdir A otherdir 通常情况下,命令svn add *会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的--force递归到版本化的目录下: $ svn add * --force A foo.c A somedir/bar.c A otherdir/docs/baz.doc [...]

November 16, 2012

svn命令blame使用

名称 svn blame — 显示特定文件和URL内嵌的作者和修订版本信息。 概要 svn blame TARGET... 描述 显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。 别名 praise、annotate、ann 变化 无 是否访问版本库 是 选项 --revision (-r) REV --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR --verbose 例子 如果你希望在测试版本库看到blame标记的readme.txt源代码: $ svn blame http://svn.red-bean.com/repos/test/readme.txt 3 sally This is a README file. 5 harry You should read this.

November 16, 2012

svn命令checkout使用

名称 svn checkout — 从版本库取出一个工作拷贝。 概要 svn checkout URL[@REV]... [PATH] 描述 从版本库取出一个工作拷贝,如果省略_PATH_,URL的基名称会作为目标,如果给定多个URL,每一个都会检出到PATH的子目录,使用URL基名称的子目录名称。 别名 co 变化 创建一个工作拷贝。 是否访问版本库 是 选项 --revision (-r) REV --quiet (-q) --non-recursive (-N) --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR 例子 取出一个工作拷贝到mine: $ svn checkout file:///tmp/repos/test mine A mine/a A mine/b Checked out revision 2. $ ls mine 检出两个目录到两个单独的工作拷贝: $ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz A test/a A test/b Checked out revision 2. A quiz/l A quiz/m Checked out revision 2. $ ls quiz test 检出两个目录到两个单独的工作拷贝,但是将两个目录都放到working-copies: ...

November 16, 2012

svn命令cleanup使用

名称 svn cleanup — 递归清理工作拷贝。 概要 svn cleanup [PATH...] 描述 递归清理工作拷贝,删除未完成的操作锁定。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。 如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个svn update失败,使用--diff3-cmd选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir指定任何配置目录,但是你应该不会经常使用这些选项。 别名 无 变化 工作拷贝 是否访问版本库 否 选项 --diff3-cmd CMD --config-dir DIR 例子 svn cleanup没有输出,没有太多的例子,如果你没有传递路径,会使用“.”。 $ svn cleanup $ svn cleanup /path/to/working-copy

November 16, 2012