blog cms dede
Aug 14
因为最近加班频繁,服务器空间到期了也没有花时间来折腾,导致itlife365因为服务器到期期间停止了服务一个月
,现已可以正常访问。
  期间发现百度果然是灵敏的。
  网站关闭期间,itlife365网站的 排名随机下降  。
  看来还需要慢慢的积累了 。。。。
  后续会添加更多丰富的内容
  继续ing ...
Jul 14

blog系统架构分析
参考网上http://www.wmhfly.com/php/my-blog-system-analysis.html 的架构,我的目标就是实现类似的路径seo.
最初,我开发时考虑到的几个问题:
1、用什么数据库?旧版的access,是否继续保留?
2、是否使用开源框架?是否使用模版引擎?
3、全站静态化?还是部分静态化?
4、目录结构和站点uri的规划,站点SEO优化,标签Tag的管理,构造一个api接口
面对这些问题,我纠结,但还是必须要做出选择。数据库的选择依据是可以携带行,不需要安装,文件形式的。所以我就选择Sqlite轻量级数据库,自php5开始,php就不再默认是mysql了,而是Sqlite数据库。当然也是看重Sqlite的优势,免费开源,跨平台,不依赖其他库,可达2T容量,比access的2G强,可负担10W点击率,能和php搭配的更完美,对于简单的web应用来说,用Sqlite数据库足够了。

至于框架和模版引擎,如果用一些MCV框架来架构,在整合模版引擎的话,那样太小题大作了。只是一个简单的blog,发表一些文章,以及简单的留言信息处理,就没有考虑框架,而是自己写了个模版解析函数,配合php的include,简单的做到页面结构和代码程序的分离。在生成静态文件的时候用了str_replae的函数,写了个模版标签匹配规则,然后替换模版变量。
全站静态和部分静态这里也纠结了一下,后来考虑到动态更新,不想搞太麻烦,就用了部分静态,既博文生成静态,而栏目首页则是动态读取。这时候有考虑到了一点,就是隐藏程序文件php后缀,所以就在目录结构上做了一些跳转。目录结果分为:index.php/公共/配置/搜索/标签/aip/模版/静态文件/后台等几大块。而隐藏后缀的技巧就是iis的默认文档跳转。
考虑到seo优化,那么文章想要配置的基本参数就是:生成静态文件名、标题、关键字、描述。而他的文件位置则有它所属的栏目分类里面配置。而这样就比较要有系统栏目配置功能。然后在seo就可以是:{标题-栏目名称-站点标识}的规则。这里我们涉及到一些全局想要的变量,比如站点标识可配置,所以就定义了一个配置文件,来集中配置站点的公用配置参数,如数据库配置,模版路径配置等。

对于站点的Tag管理,不复杂,是比较简单的读写,多了一个推荐标识。有时候我们会考虑到了是否显示,排序等功能,所以我们就在表总都统一增加了2个标识,显示/排序。下面是对一些关键表的介绍:

栏目(Category):id、标题、关键字、描述、栏目文章路径、是否显示
文章(Article):id、排序、标题、关键字、描述、缩略图、内容、时间、文件名、栏目标识、标签标识、推荐标识、留言次数、浏览次数、是否显示
标签(Tags):id、排序、名称、推荐标识、是否显示

当然,其他的留言表(Msg)则根据你想要的信息设计,但是其中有个文章关联id即可。其他还有演示(Demo)表、收藏链接(Link)表、以及恢复(Reply)表;

功能架构的实现:
?index.php简单栏目的入口
|---------cat=? 栏目的标识
|---------调用一个index_tpl模版    /tag/ 标签帅选入口
|----tid=?标签表示
|---调用一个tag_tpl模版    /search/ 搜索入口
|------keyword=? 关键字标识
|-----aid=?文章标识(jQuery.ui.autocomplete插件,可以精确搜索文章) 
|-----调用一个search_tpl模版    /api/站点数据调用交互入口
|------接受action参数,然后对应的请求,返回数据和处理不同动作    random_tag_list模块函数,取出指定个数随机标签 random_lastest_article_list 模块函数 ,取出最新文章模版
总结:
php+Sqlite的搭配,也是存在不足的,比如安全性Sqlite是文件类似数据库,没有用户名和密码,如果路径暴露,就会带来很大的麻烦。但是也是有解决方案的,例如:

1.比较简单的措施就是数据库名字前面用“#”开头,但是用"%23"还是可以访问;
2.把数据库放在uri不可访问的路径中,带来的是网站转移的时候比较麻烦;
3.数据库改名.php结尾,在创建'<?php表就可以防止下载,运行报错。
另外一个就是,php+Sqlite数据库访问的类库没有mysql扩展的多,当时我就参考php-ease网站的SQLite Class整合了一个数据库访问接口。有兴趣的童鞋可以去研究研究,采用的是PDO方式连接.

Jul 19

局域网中搭建Apache James 搭建邮件服务器并实现与外网收发邮件

一、准备工作
局域网中有两台电脑都用Windows XP SP2系统+JDK1.6.0_02,一台PCA,一台PCB,PCA当服务器,PCB当客户端测试用,当然PCA也可同时充当客户端。
Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。
James也是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。
James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中的应用日益广泛,现在常用版本为2.1,但最新版本2.3已经推出,在本文中,我们将仍以james-2.3.1作为介绍蓝本。
二、安装与配置
James的安装配置过程非常简单。
第一步:安装JDK并配置JAVA_HOME
请使用JDK1.3以上版本(在此使用jdk1.6.0_02),假设安装在D:\installed tools\Java\jdk1.6.0_02,配置java_home在此就不多说了。
第二步:下载James,并解压
可以到Apache网站上下载最新版本james-2.3.1,下载将得到一个压缩文件james-2.3.1.zip,大小为4.45M,将此包解压到D:\installed tools\james-2.3.1.
第三步:直接双击运行D:\installed tools\james-2.3.1\bin\run.bat,若启动无误,将提示如下

C:\Documents and Settings\Administrator>run
Using PHOENIX_HOME: E:\Program Files\james-2.3.1
Using PHOENIX_TMPDIR: E:\Program Files\james-2.3.1\temp
Using JAVA_HOME: E:\Program Files\Java\jdk1.6.0_02

Phoenix 4.2

James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled


也有可能启动不了,并报JAVA_HOME找不到,如果没有配置JAVA_HOME需要指定JAVA_HOME,或者另一比较简单的方法是在D:\installed tools\james-2.3.1\bin\run.bat中指定JAVA_HOME,修改后的run.bat如下:
……
rem
rem Determine if JAVA_HOME is set and if so then use it
rem
set JAVA_HOME= D:\installed tools\Java\jdk1.6.0_02
if not "%JAVA_HOME%"=="" goto found_java
……
修改完后再运行run.bat,应该就可以正常启动了,如果再出现什么问题就再去官方查找解决了。

linux下面:
进入目录:
执行sh ./run.sh 或者nohup sh ./run.sh & (到后台运行)


三、
a.服务器端配置
启动过一次后就使用Ctrl+C强行关闭James服务器并进行下面的配置。首先找出PCA的计算机名,假设叫itlife365.com,然后打开文件D:\installed tools\james-2.3.1\apps\james\SAR-INF\config.xml。
先拷贝一份作为备份,然后。
在config.xml文件中,找到<postmaster>Postmaster@localhost</postmaster>,把此项改为<postmaster>Postmaster@itlife365.com</postmaster>,同理,找到<servername>localhost</servername>,
把此项改为<servername>itlife365.com</servername>。其实,改这两项就是把默认的localhost改为计算机名或者itlife365.com 最好改为带.com 的,否则在发生邮件的时候,outlook 不能发送,只能接收,这样做是为了让其它机器也能访问邮件系统,当然前提是在局域网上没有与服务器重名的机器。
在PCA上进入命令行模式登录james服务器建立两个新账户,一个是abc,另一个是def.
命令如下:
telnet 192.168.1.102 4555(登录james服务器利用telnet命令192.168.102是PCA的IP地址,4555是james服务器默认的登录端口)
adduser abc 123(添加新邮箱用户abc与def密码都是123)
adduser def 123
quit(退出james服务器,不主动退出过一分钟后会自动超时退出)
b.客户端口配置
在PCB中使用foxmail为客户端口邮件收发软件,建立设置好abc@itlife365.comdef@itlife365.com用户后可以测试收发邮件了。注意在foxmail中配置时:邮件发送SMTP与接收服务器POP3都只填写PCA的IP地址(即james服务器所在电脑的IP地址)

四、深入配置实现与外网联通收发邮件。
前提:你的机器可以连接到外网哦
1.打开james-2.2.0\apps\james\SAR-INF\config.xml文件
2.注释掉以下代码
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet-->
注释掉此代码后下面将要使用smtp认证方式。
3.配置dnsserver
输入自己上网时获得的运营商分配的DNS地址,配置后如:
<server>127.0.0.1</server>
<server>219.150.32.132</server>
如果只是内网使用只需保留启用<server>127.0.0.1</server>即可。
需要设置 <autodiscover>true</autodiscover>改为false如果设置为自动探测的话,在我的机器上会报错:
James.Mailet: RemoteDelivery: Temporary exception delivering mail (Mail1098776398187-0-to-somedomain.com: javax.mail.MessagingException: There are no DNS entries for the hostname somedomain.com. I cannot determine where to send this message.
at org.apache.james.transport.mailets.RemoteDelivery.deliver(RemoteDelivery.java:398)
at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:912)
at java.lang.Thread.run(Thread.java:534)
4.修改root口令。account login="root" password="mypassword"此项不修改也没关系。
5.smtpserver打开smtp认证
将<authRequired>false</authRequired>改为<authRequired>true</authRequired>
6.重新启动James就生效了,就可以向163及其它互联网邮件服务器发送邮件了。

五、常见问题
1、 在启动james时,提示POP3或SMTP不能使用?
请检查一下,看“管理工具—>服务”里面,是不是启动了别的邮件服务器,已将110或25端口占用了。
我在安装配置james时就遇到满满一屏错误就是因为我将windowsXP 中IIS服务自带的SMTP服务开启了,关闭后正常。
2、 JAVA_HOME找不到?
请在run.bat中指定JAVA_HOME,若还不行,请在“我的电脑—>系统—>高级—>环境变量”中添加一项JAVA_HOME(最好是用前一种方法)。
3、服务器启动正常,但客户端不能收发邮件?
请检查客户端配置是否正常,参照前面所讲,另外,请检查james下的config.xml,是否把localhost改成了机器名。

六、
JAMES服务器的帐号管理
James的账号管理是通过telnet完成的,登录命令为:
telnet unitname 4555
其中unitname也可以换成IP,4555是端口号。登录时需要用户名和密码,初始的用户名和密码均为root。若登录成功,提示如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands

需要注意的是,所有敲入的命令都不显示在屏幕上。
输入help,将出现命令的帮助,信息如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands
Currently implemented commands:
help display this help
listusers display existing accounts
countusers display the number of existing accounts
adduser [username] [password] add a new user
verify [username] verify if specified user exist
deluser [username] delete existing user
setpassword [username] [password] sets a user's password
setalias [alias] [user] locally forwards all email for 'alias' t
o 'user'
unsetalias [alias] unsets an alias
setforwarding [username] [emailaddress] forwards a user's email to another email
address
unsetforwarding [username] removes a forward
user [repositoryname] change to another user repository
shutdown kills the current JVM (convenient when J
ames is run as a daemon)
quit close connection

常用的命令有listusers、countusers、adduser、deluser、setpassword等。
其中添加用户为adduser,例如:adduser holen 123456。
通过这个后台管理界面,管理员就可以实现账号管理及其他相应的管理功能。

总结:
总体而言,James是一款十分优秀的邮件服务器,具有性能稳定、扩展性好、可配置性强、响应速度快、源码公开等优点。同时,由于James的后台管理不够方便、缺少必要的技术支持等原因,限制了james的高端企业级应用。
就目前情况而言,James主要用于1000用户量以内的邮件系统,而且当James用于商业性项目时,开发商一般需要对James进行相应的包装,主要是后台管理这一块。



可以通过修改下面的端口重新配置需要的端口
 <smtpserver enabled="true">
      <!-- port 25 is the well-known/IANA registered port for SMTP -->
      <port>1325</port>


<pop3server enabled="true">
      <!-- port 995 is the well-known/IANA registered port for POP3S  ie over SSS
L/TLS -->
      <!-- port 110 is the well-known/IANA registered port for Standard POP3 -->
      <!--<port>110</port>-->
      <port>13110</port>

服务器可以指定ip 或者机器名

Tags:
Nov 15

很多朋友都让我推荐博客程序,因为大多都象我一样,没有技术没有钱三把软剑挂在腰的二把刀,其实程序够用就行了,再漂亮,功能再齐全也就那么回事,相信不难看出,有些我们始终在乎和拿捏的事真的不是很重要,好了不多说了,我这次推荐一些国内朋友制作的的PHP的博客程序,支持国货当自强。

1.
先推荐个我在用的国外程序,这个程序可以说是风光无限,在国内使用的人数最多。主题最多,就是因为其功能强大,灵活,容易上手,目前官方已经出了中文官方版本!国内对它的评论太多了,所以我就不多说了。我的博客就是  还有个新鲜玩意站
官方网站: .org

 
2.
在我07年8月之前,它是最初的程序就是BO,相信好多人当时用的是BO1.7文本博客,目前最新版本是支持MYSQL的2.1版本。提前跟BO的用户打声招呼。目前BO3马上出来了,进度完成了6%  在国内用户也很多。由于使国人开发,专为国人设计,其中使用了很多AJAX技术,访问速度比起来说,快了不少,体积很小巧。和WP相比插件少了不少。
官方网站: .com
 
3.F2Blog
有一段时间兴起的程序,功能过于强大,体积也一样。我不喜欢这么一个庞然大物,我觉得它完全可以做CMS。一直没有用过,不过还是有一定用户群体。
官方网站:  F2Blog.com
 
 
4.C-
国人开发的程序,正在走向成熟。稍微庞大了一些(比起F2Blog来说要小多了)。看了一下简介。几乎支持UTF-8 GB2312 BIG5  目前还有php+access版本,能够生成静态页面。
官方网站: Saysay.cn
 
5.-X
由安全天使开发的,所以安全性非常高。模板和插件略少了一些,不过功能很不错。界面也非常协调
官方网站: .net
 

6.

 国人开发的程序,今天刚装上做了测试,程序小巧,简洁,访问速度还是不错的。对于追求简洁,速度的朋友不仿试试。整体感觉功能不是非常丰富,支持Widgets,这方便还是做的不错的。模板,插件很少。由于可能是刚发展的PHPBLOG所以相对于来说,路还很长。
官方网站: .net
 

7.o-

不是OBLOG(这个是ASP的)是基于 PHP + MYSQL 的单用户博客系统,具有功能强大、开源、生成静态页  主要特色对静态生成有很大的灵活度,作者风色默默无闻地开发也让人钦佩。

官方网站:phpblog.cn

8.

首先得赞JEsse,JB的速度确实优化的非常好.看了好几个用JB建的站.响应时间非常棒!就是能使用像WP一样的自定义伪静态应该能更开阔JB的发展.毕竟网络无奇不有,每个人的需要都不一样,我想Jesse开源此系统的同时也是希望能得到站长的认可!可能对于Jesse来说,自定义伪静态可要可无.而且就算需要也是花一点时间就能解决的小问题,又何不令我们更有效的使用该系统
官方网站:http://www.ijesse.cn/bbs/

可能还有很多默默无闻的国内PHPBLOG爱好者制作的程序不为我们所知,但是我们的愿望是能超越 站到的最高境界。

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]