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)搭建高性能Web服务器

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倍。 两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高。 为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。 处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别: 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。 安装步骤: (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.3,另在RedHat AS4上也安装成功) 一、获取相关开源程序: 1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装): sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 2、【适用RedHat操作系统】RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址: ①、RedHat AS4 & CentOS 4 http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/ http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/ ...

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 比较两个内容相同,但祖先历史不同的对象会看到所有的内容被删除又再次添加)时就会考虑路径的祖先。 ...

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