存档

‘聚焦开源’ 分类的存档

WordPress静态化配置之Nginx

2009年3月31日 2 条评论

路途志从开博到今天,已经走过了月余。在这一个多月的时间,参考前辈们的经验,对博客进行了大量的定制。其中比较重要的一个工作就是页面静态化—永久链接静态化。在做这个工作的时候,遇到了很大的问题,的服务器是centos5.2+nginx,而公开的资料无一例外都是基于apache的。参考了和apache的案例,经过多次试验终于在Nginx下实现了Wordpress永久链接静态化,Nginx配置文件的server部分加入下列四行:

 

#下面四行斜体字实现链接rewrite,http://www.lutuzhi.com中的所有页面实现了静态化 

rewrite ^/(index|atom|rsd)\.xml$ http://www.lutuzhi.com last;

rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;

rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;

  rewrite ^ /index.php last;

完整的server配置如下:

server
{
  listen       80;
  server_name www.lutuzhi.com lutuzhi.com *.lutuzhi.com;
  index index.html index.htm index.php;
  root  /yuluyu/wp;

  #limit_conn   crawler  20;   

  if (!-e $request_filename) {

#下面四行斜体字实现链接rewrite,http://www.lutuzhi.com中的所有页面实现了静态化 

rewrite ^/(index|atom|rsd)\.xml$ http://www.lutuzhi.com last;

rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;

rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;

rewrite ^ /index.php last;

  }
  location ~ .*\.(php|php5)?$
  {     
    #fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fcgi.conf;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
    expires      30d;
  }

  location ~ .*\.(js|css)?$
  {
    expires      1h;
  }   

  log_format  lutuzhi  ‘$remote_addr – $remote_user [$time_local] "$request" ‘
            ‘$status $body_bytes_sent "$http_referer" ‘
            ‘"$http_user_agent" $http_x_forwarded_for’;
  access_log  /yuluyu/logs/lutuzhi.log  lutuzhi;
    }

 

Nginx配置文件更改后,用下列命令更新立即生效:

检查配置文件是否正确:/yuluyu/nginx/sbin/nginx –t
使新配置文件立即生效:kill -HUP `cat /yuluyu/nginx/nginx.pid`

11步配置UCHOME邮件

2009年3月29日 5 条评论

今天路遇交友网的启用了邮件支持,在配置过程走了不少弯路,在配置期间参考了网上很多资料,这些资料有的不全,有的则完全是错的。配置完成后整理了下流程,发现下配置邮件非常的简单。下面把我的经验总结一下,希望能给有同样需要的网友一些借鉴:

11步搞定UCHOME邮件支持配置:

1.选择邮件发送方式:

通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)

2.邮件头的分隔符使用

LF 作为分隔符(通常为 Unix/Linux 主机)

3.收件人显示用户名

4.smtp 服务器

smtp.gmail.com

5.smtp端口

465

6.要求身份证验证

7.发信人邮件地址

路遇交友<services@yuluyu.com>

8.smtp 用户名

yuluyu

9.smtp密码

yuluyupassword

10.更改function_sendmail.php

我在这里选择了gmail作为邮件发送服务器,gmail采用的是SSL协议,所以需要更改uchome邮件处理相关的代码使其能够连接到smtp.gmail.com。

打开$/uchome/source/function_sendmail.php,将下面这行代码:

if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {

更改为:

if(!$fp = fsockopen("ssl://".$mail['server'], $mail['port'], $errno, $errstr, 30)) {

11.测试配置是否成功

现在,你的网站就能够利用的邮件发送服务器发送邮件了。通过配置后路遇交友网支持如下功能:

  1. 密码找回功能
  2. 验证并激活邮箱
  3. 邮件提醒功能
  4. 通过邮件邀请好友功能

下面通过密码找回功能测试一下邮件支持是否生效:

  • 打开www.yuluyu.com首页,点击找回密码功能。
  • 输入某账号,5分钟后到该账号对应的邮箱去收邮件。

如果此时能够接收到一封发自路遇交友网的邮箱,则说明邮件功能生效,如果没有收到则说明邮件配置失败。

此时可以查看$/uchome/data/log来分析失败原因,在这个文件夹下有两个日志文件,他们保存了和邮件相关的日志信息。

200903_smtp.php 保存了服务器联接的相关信息。

例如:2009-03-28 22:48:36        222.65.248.80    1    /do.php?ac=sendmail&rand=1238251716    (stmp.gmail.com:465) CONNECT – Unable to connect to the SMTP server

200903_sendmail.php 保存了和具体邮件发送相关的信息。

例如:<?PHP exit;?>    2009-03-29 12:19:18        222.66.162.147    12    /do.php?ac=sendmail&rand=1238300357    lutuzhi@gmail.com sendmail failed.

这些信息可以帮助我们判断邮箱配置的问题根源所在。

通过以上11步配置和测试,我们的网站应该可以完全支持邮件发送了。上面列出来的仅仅是邮件配置方法的一种,在不同的环境下肯定会有所不同,同时在配置过程中也会遇到各种具体的问题,本文内容仅供参考。

将记录纳入UChome的积分体系

2009年3月28日 2 条评论

Uchome中心情记录是非常常用的一个操作,用户可以通过方便的来快速的发布自己的想法,通过一两句话描述自己的心情。因为其操作方便,发布简易使其成为基于UCHOME构建的SNS中使用最频繁的操作之一。但是发布心情记录,并不能增加积分。积分功能的缺失,导致用户对心情记录的参与成都大大降低。由此导致用户对整个基于UChome创建的SNS站点的参与热情也大大降低。尽管用户可以通过发布日志等方式来获取积分,但将心情记录纳入全站积分体系未尝不是增加用户参与热情的一个有效的手段,下面简单介绍下,如何在发布心情记录时也能够增加积分。

1.修改$uchome/admin/tpl/credit.htm,在其中增加三行代码,如下蓝色字体部分:

    <div class="maininner">

    ……     
          <tr><td>邀请好友注册成功</td><td><input type="text" name="get[invite]" value="$get[invite]" size="5"></td>
            <td>获取注册邀请码</td><td><input type="text" name="pay[invite]" value="$pay[invite]" size="5"></td></tr>
        <tr>
         <td>发布/回复记录</td><td><input type="text" name="get[doing]" value="$get[doing]" size="5" /></td>
            <td>搜索一次</td><td><input type="text" name="pay[search]" value="$pay[search]" size="5"></td></tr>
        <tr>
         <td>发布出行信息</td><td><input type="text" name="get[route]" value="$get[route]" size="5" /></td>
            <td>兑换1M的上传空间</td><td><input type="text" name="pay[attach]" value="$pay[attach]" size="5"></td></tr>
        <tr>
          <td>&nbsp;</td><td>&nbsp;</td>
            <td>日志导入</td><td><input type="text" name="pay[xmlrpc]" value="$pay[xmlrpc]" size="5"></td></tr>
        <tr><td>&nbsp;</td><td>&nbsp;</td>
            <td>修改一次二级域名</td><td><input type="text" name="pay[domain]" value="$pay[domain]" size="5"></td></tr>
        <tr><td>&nbsp;</td><td>&nbsp;</td>
            <td>修改一次真实姓名</td><td><input type="text" name="pay[realname]" value="$pay[realname]" size="5"></td></tr>
                <tr><td>&nbsp;</td><td>&nbsp;</td>
            <td>记录被删除</td><td><input type="text" name="pay[doing]" value="$pay[doing]" size="5"></td></tr>
              
    <tr><td>&nbsp;</td><td>&nbsp;</td>
            <td>出新信息被删除</td><td><input type="text" name="pay[route]" value="$pay[route]" size="5"></td></tr>
        </table>
        </div>
        <div class="footactions">
            <input type="submit" name="creditsubmit" value="提交" class="submit">
        </div>
        </form>
    </div>

2.修改$uchome/source/cp_doing.php:

在代码行showmessage(‘do_success’, ‘space.php?do=doing&view=me’, 0);上方添加:

updatespacestatus(‘get’, ‘doing’);

更改下列代码,增加蓝色代码行;

    $_POST['refer'] = preg_replace("/((\#|\&highlight|\-highlight|\.html).*?)$/", ”, $_POST['refer']);
    if(strexists($_POST['refer'], ‘?’)) {
        $_POST['refer'] .= "&highlight={$newid}#dl{$updo[doid]}";
    } else {
        $_POST['refer'] .= "-highlight-{$newid}.html#dl{$updo[doid]}";
    }
    //积分
    updatespacestatus(‘get’, ‘doing’);
    showmessage(‘do_success’, $_POST['refer'], 0);

}

更改下列代码,添加蓝色代码行:

if($_GET['op'] == ‘delete’) {
    if(submitcheck(‘deletesubmit’)) {
        if($id) {
            $allowmanage = checkperm(‘managedoing’);
            $query = $_SGLOBAL['db']->query("SELECT dc.*, d.uid as duid FROM ".tname(‘docomment’)." dc, ".tname(‘doing’)." d WHERE dc.id=’$id’ AND dc.doid=d.doid");
            if($value = $_SGLOBAL['db']->fetch_array($query)) {
                if($allowmanage || $value['uid'] == $_SGLOBAL['supe_uid'] ||  $value['duid'] == $_SGLOBAL['supe_uid'] ) {
                    $_SGLOBAL['db']->query("DELETE FROM ".tname(‘docomment’)." WHERE (id=’$id’ || upid=’$id’)");
                    $replynum = getcount(‘docomment’, array(‘doid’=>$value['doid']));
                    updatetable(‘doing’, array(‘replynum’=>$replynum), array(‘doid’=>$value['doid']));
                }
            }
        } else {
            include_once(S_ROOT.’./source/function_delete.php’);
            deletedoings(array($doid));
        }

           updatespacestatus(‘pay’, ‘doing’);
        showmessage(‘do_success’, $_POST['refer'], 0);
    }
}

3.在后台积分设置中,设定发布和删除记录的积分规则。

4.在后台更新缓存。

 

此时发布记录或者删除记录将按照后台积分设置增减积分。

     

分类: 聚焦开源 标签: , , ,

uchome 八宗罪

2009年3月25日 没有评论

UCHOME 1.5版推出半年多了,我也用UCHOME做了路遇交友网。但是在维护过程中饱受其折磨,今天来数数在用UCHOME做站过程中的种种恨事。

1.易用性差:登陆框没有注册按钮,新用户常找不到注册的链接。

而其,其登录实现方式采用的不是登录按钮+登录链接实现,而是用Loginform + loginaction,修改起来也比较麻烦。实在不明白来登录动作有啥必要采用ACTION来处理,直接按钮+链接完全能实现。51.com采用的就是按钮加链接的形式,人家也活的很好。

2. 设计缺陷:积分体系严重不足,用户在uchome中可以做留言、发表日志、写心情记录、上传图片等操作, 但是不是每个动作都可以积分。比如说很多人会用到的心情记录功能就没有积分。

心情记录因为其发表容易,互动率高,在路遇交友网 里他是用的最频繁的一个动作,但是因为心情记录没有纳入积分体系,用户很快就会失去参与热情。你说这可恨不,我得自己加之。

3.易用性差:用户在使用过程中遇到问题没有一个快捷的方式获取帮助。

uchome在首页有一个帮助链接,登录之后就再也找不到这个链接了。尽管可以通过简单的二次开发把帮助页面集成到登录后的操作界面,另一个问题又凸显出来:帮助页面没有和用户当前所在的页面关联。比如用户在群组遇到了问题,最友好的方式是应该是能够在当前页面直接调出群组相关的帮助信息,而这点UCHOM显然没有做到。

4.稳定性差:manyou服务器不稳定,路遇交友网的各类应用经常出现故障,反应上去官方处理也不及时。

康盛显然没想好怎么运营和持续开发UCHOME这款产品,还准备做SNS站的朋友不妨考虑考虑其它产品,比如: pw7.3。

5.推广能力差:友情链接管理功能

UCHOME绝大多数的用户是个人站长,个人站长严重依赖于友情链接来推广自己的网站。而uchome在这方面没有任何建树,尽管有热心人提供了友情链接插件,但是该插件远远满足不了需要,比如没法设置 ref 类型,无法对链接分类等。

6.结构差:功能重复严重,用户无从下手

刚接触UCHOME创建的网站,看到那么多链接简直无从下手。登录进去之后点开随便看看、点开我的主页、点开首页,里面内容严重雷同,而且没有清晰的类别划分,让用户在使用过程中不断怀疑自己智商。出差交友网 的用户反应最多的一个问题就是网站结构乱。个人站长一定要把随便看看、我的主页和首页这三部分的内容重新设计。

7.邮件功能

邮件是任何社交网站都必不可少的一个功能,可是UCHOME在这方面先天不足。在UCHOME启用邮件功能,是个技术含量很高的活。以至于很多站长都像个怨妇一样在uchome的官方论坛里哀号着:我的网站为啥发不了邮件?  不怪你,这个平台就这德行。纵然你人品硬如陨铁,它也发不了邮件。

8.:给了你一个梦想,却永远无法帮你实现。

因为51.com、FACEBOOK、开心网等SNS站在中国影响力,uchome出来之后大家好像突然发现自己可以是下一个51.COM、开心网了,一窝蜂的用UCHOME去SNS。用SNS建的网站正如雨后春笋版涌起,在不久的将来也将入秋后蚂蚱般死去,正是千千万万个炮灰,堆起了康盛创想的辉煌。

nginx,502 Bad Gateway错误

2009年3月23日 没有评论

基于nginx配置了uchome,当访问首页时报错:

502 Bad Gateway


nginx/0.7.37

在网站根目录下放了个静态的HTML页面,html页面显示正常。

可以判断问题是出在PHP模块上。

编译PHP时没仔细看提示信息,不知道有没有报错。把php完全重新编译一次后,nginx就可以正确解析php文件了。

不知道还有没有别的原因会导致nginx报 505 Bad Gateway错误。

Nginx,建站利器

2009年3月22日 没有评论

路遇交友上线快一个月了,现在看起来,当初选择Nginx作为WEB服务器是非常英明的决定。

对于个人站长来说,选用Nginx作为WEB服务器是比较好的选择,Nginx有如下优势:

1.稳定,即使它的开发版其稳定性也令我惊讶。我的网站用的是Nginx/0.7.37,这是一个开发版,上线至今从没出过问题。

2.资源占用率低,对于个人站长来说这无疑是巨大的诱惑。同样的硬件配置,Nginx服务器的性能表现远远优于apache。它基于epoll 和 kqueue 开发,在大并发的情况下占用很低的内如和CPU,这也是众多虚拟主机提供商采用它提供服务的重要原因。这条特性足以让所有对Nginx存疑的个人站长抛弃所有的疑虑,义无反顾的奔向Nginx,省钱的事谁不干?

3.配置简单,从第一次接触Nginx到配置成功,我只用了两天的时间。它的英文维基站提供了大量的例子和参考资料,可以帮助新手很快的上手。如果你能看懂俄文的话,学习起来会更方便,毕竟是俄罗斯人开发的。俄文资料才是第一手资料。

4.功能丰富,我仅仅是用Nginx做web 服务器。但是它的作用显然不仅限于此,它还可以做反向代理服务器,邮件代理服务器等。

5.更新容易,它甚至可以在不间断服务的情况先实现更新。这个太神奇了,这个功能足以让他的拥护者为之发狂。

当然,作为一个尚未成熟的开源软件,Nginx还有很多不足。比如他没有apache那么多参考资料,它更新过于频繁,
以至于一个月前用最新源代码编译的Nginx服务器,今天已经老态龙钟了。现在最新的版本是Nginx-0.7.43.

dedecms的乱码问题,及其解决方案

2009年3月21日 1 条评论

问题描述:在IE中,无论是在dedecms后台添加栏目,还是在前台发表文章,只要其中包含中文,都会出现乱码。而在firefox下一切正常。
问题分析:

1.dedecms没问题,可能是因为IE做了某些设置,导致中文不能被正确识别。但是http://www.yuluyu.com,在IEfirefox对于中文一切正常。http://www.lutuzhi.comIEfirefox很正常。所以排除了IE设置引发问题的可能性。
2. 应该是dedecms程序的问题,google了一把、百度了一下,发现只有一个人提到过类似的问题,而且没人给出答案。而且firefoxdedecms又是正常的,所以也不能把这问题全归结在dedecms身上。毕竟这个系统经过多年发展,很多用户的使用已经比较稳定了。

至此陷入了僵局,本打算就此放弃研究。不甘心,用ZEND STUDIO跟了一下,发现dedecms输入的简体中文在POST的时候已经是乱码了。

数据从前段输入到存储至数据库可以简化为下面三步:

1.数据输入(dedecms界面)
2.数据传输
3.数据存储

现在数据在POST的瞬间被做了一次转换,而这个转换肯定不是dedecms做得。

那么问题至此有了眉目,在乱码这个问题上,dedecms不是罪魁祸首。出现乱码肯定是它在编码时没处理好,但是不全怪它。

解决方案:

那么到底是谁偷偷做了编码转换?问题应该出在IE或者它的插件上。

原来我的IE上有一个插件,是用来做繁简体转换的-alibabar。它有个选项叫:将送出的表格文字自动做繁简体转换。如下图:

导致乱码的选项

导致乱码的选项

正是这个小软件做的编码转换,也是它导致dedecms在ie下不能正确处理简体中文。把该选项勾掉,一切正常了。

至此dedecms乱码的问题得到了解决,但是我还有一个疑问:

为什么同样的环境下其余两个网站没问题:
http://www.yuluyu.com-基于uchome
http://www.lutuzhi.com -基于wordpress

具体原因没仔细去分析,不过我认为dedecms在编码处理方面可以借鉴康盛创想的做法,那是一个更加成熟的解决方案。

wordpress出现乱码的一个解决方案

2009年3月20日 3 条评论

1.试图进入wordpres后台,系统报错:

Warning: Cannot modify header information – headers already sent by (output started at D:\wamp\www\wp\wp-config.php:1) in D:\wamp\www\wp\wp-includes\pluggable.php on line 850

问题分析:提示信息没有明确指示出了什么问题,但是它提示了问题的大概是在wp-config.php这个文件里。

在出此问题之前,我的确对wp-config.php文件做了一点更改,我把一个wordpres链接的数据库名字改了一下,不过这个更改断不是此错误的根源。

通过zend studio单步调试发现,在出错页面的Html源代码里第一个字符是乱码。至此事情基本有了眉目:肯定是编码问题引起的这个错误。

在编辑word_config.php文件时,我用的是notepad。notepad默认情况下会把文件以ANSI格式保存。而wordpres默认用的是UTF8的编码,以ANSI编码格式保存的文件,在转化成HTML时首字符变成了乱码,所以会报错。

我们在编辑wordpres文件时输入了中文,保存时一定还要注意选择正确的编码。在我的机器上是UTF8编码,在你那里也可能是ANSI。总之出现乱码,先看看是不是编码格式引起的是个很好的习惯。


SEO Powered by Platinum SEO from Techblissonline