存档

‘我的原创’ 分类的存档

用VirtualBox虚拟ubuntu如何安装增强包

2008年8月6日 16 条评论

(这篇文章是写给和我一样的linux新手看的,如果对linux很熟悉完全没必要看)

一直想好好玩玩linux系统,直接在硬盘上安装风险太大,最好的办法就是在虚拟机上安装linux系统。

虚拟机我选择了开源免费的VirtualBox,原因很简单,vmware实在太大了,很夸张的大,而且还是找key或破解版。
linux我选择了知名度很高的ubuntu,虽然我最早知道的linux是red hat系列的,但他的体积似乎大了点。

安装很简单,我就是一路next的经典方法装好的。由于是在虚拟机上操作,也没什么顾虑的。

为了获得更好的效果和更多的功能,我们一般还会安装增效工具,在vbox菜单里选择安装之后,ubuntu会出现文件浏览器。

我开始以为直接点vBoxLinuxAdditions.run运行就可以了,但提示没有管理员权限无法运行。

在网上搜索一下,找到的都是“VirtualBox为Ubuntu系统配置共享文件夹”这篇文章,可我按照里面的方法操作,就是不成功。没办法,只能自己摸索了。

我想法是,要用管理员的权限安装,那么我直接用root总可以了吧。
首先按ctrl+alt+f1进入ubuntu文字界面。

输入root登录,结果提示没有root这个用户。
查询资料得知ubuntu默认没有开启的,首先需要指定一个密码来开启。
用原来的用户名和密码登录,然后输入sudo passwd root,按照提示给root指定一个密码。
最后用logout登出当前账户,再用root和刚刚设置的密码就可以了。

现在已经拥有了root权限,继续安装吧。
输入cd /media/cdrom0进入光盘目录,然后输入VboxLinuxAdditions.run运行就可以了。
完成后用ctrl+alt+f7回到图形界面,重新启动计算机。
回来后增强工具已经启动了,看看你的鼠标是不是可以随便穿越两台计算机呢?

由于那篇文章是不对的,这里就再说说如何配置共享文件夹吧。
在vbox里分配好数据空间,主要名字最好独特一点避免冲突,例如winzm。
然后点“应用程序”——“附件”——“终端”打开一个提示符。
先建立一个文件夹作为挂接点,输入sudo mkdir /opt/winzm,会验证你的密码。
然后输入sudo mount -t vboxsf winzm /opt/winzm即可挂接了。
打开文件管理器,浏览到/opt/winzm目录,是不是出来啦?

PS:ubuntu很强大,我很喜欢。等玩腻了下次装个MacOS来玩玩。

分类: 我的原创 标签:

在win32的xampp下使用gmail的smtp模拟sendmail发邮件

2008年5月25日 没有评论

恩,标题有点复杂,别管了,看下文吧。。。
xampp是一个优秀的服务器套件,支持包括win32在内的多个平台,使你可以轻松搭建一个php+mysql的环境出来。

最近我也安装了一个,免得改一点点代码都要上传到服务器上调试。
安装就非常简单,都是一路next的,不用重新启动就可以了。

xampp启动之后,感觉非常不错,马上装了一个wordpress上去,这时出现个问题,就是wordpress的发邮件功能无法使用。
由于linux下有sendmail函数可以实现发邮件,但是win32下就要使用smtp来发。xampp自带mercury的虽然可以用来建一个smtp服务器,但是操作起来太麻烦了,还不如使用sendmail.exe。

sendmail.exe其实是一个在win32下模拟sendmail函数的软件,在xampp里已经自带了。你在里面设置后你的smtp服务器之后,就可以伪装成sendmail来发邮件了。

可惜的是,sendmail.exe不支持gmail这种必须通过ssl连接smtp服务器,害得我弄了好久才明白。如果用126这些smtp服务器,很轻松就成功的,一换成gmail的就超时甚至卡死……

后来,我终于弄成功了,太高兴了,写出来和大家分享吧。

首先正确安装xampp,并登录你的gmail打开pop功能。
http://www.stunnel.org/下载一个stunnel回来,最新版本是3.24。这是一个通用的SSL代理。
安装好后,打开配置文件,默认在这里C:Program Filesstunnelstunnel.conf,修改成这样:
cert = stunnel.pem
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client = yes
[smtpg]
accept = localhost:25
connect = smtp.gmail.com:465

然后保存,打开你的sendmail配置文件,一般在c:xamppsendmailsendmail.ini这里,修改成这样:
[sendmail]
smtp_server=localhost
default_domain=gmail.com
auth_username=你的gmail邮箱,包括@gmail.com部分
auth_password=你的gmail邮箱密码
force_sender=你的gmail邮箱,包括@gmail.com部分

最后,配置你的php.ini文件,xampp的默认在这里:C:xamppapacheinphp.ini,找到[mail function]和[SQL]中间的部分,改成:
sendmail_path = "C:xamppsendmailsendmail.exe -t"
其中C:xamppsendmailsendmail.exe是你的sendmail.exe所在的位置。

现在启动stunnel和重新启动apache,怎么样,发邮件功能正常了吧。
PS:stunnel也可以安装成系统服务的……

分类: 我的原创 标签:

终于搞定discuz的urlrewrite问题

2008年5月22日 2 条评论

自从使用了CPH的LAMP服务器之后,我就开始在上面试验一些php+mysql应用,其中首先弄的就是discuz了。

安装了discuz6.0.0之后,基本上运行正常,但是一个最重要的功能urlrewrite一直搞不定,直到今天在本地弄xampp才无意之中发现了问题所在。

和wordpress不一样,当你在discuz后台选择使用url静态化之后,并不会自动生成相应的.htaccess文件,而是指导你“相应规则请参考《用户使用说明书》的高级使用部分”。
google一下知道这个Discuz! 用户使用说明书,然后找到高级应用里面的url静态化:http://www.discuz.net/usersguide/advanced_urlrewrite.htm

按照discuz所说的,对于Apache Web Server(虚拟主机用户),应该进行如下操作:

检查论坛所在目录中是否存在 .htaccess 文件,如果不存在,请手工建立此文件。Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 Discuz.net 技术支持栏目中下载此文件。编辑并修改 .htaccess 文件,添加以下内容

# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /discuz
# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[w-]+.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+).html$ space.php?$1=$2
RewriteRule ^tag-(.+).html$ tag.php?name=$1

添加内容时,请遵照上面的提示,修改论坛所在的路径,然后保存。将 .htaccess 文件上传到论坛所在的目录中。然后进入论坛系统设置的搜索引擎优化,根据需要开启 URL 静态化功能。

我这样做了之后不但没有效果,而且连论坛都访问不了,提示HTTP500错误。

今天在本地安装了xampp之后,装了discuz,重新按照上面的方法测试,还是不行,然后又安装了wordpress并成功使用了urlrewrite。
打开wordpress自动生成的.htaccess文件和discuz的来比较,终于看出来问题:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

很明显,discuz官方的资料少了两行:
<IfModule mod_rewrite.c>
</IfModule>

按照wordpress的加上去,在本地和CPH服务器上都成功了。
我对.htaccess文件不是很懂,完全是自己尝试出来的,补充几点:
首先是<IfModule mod_rewrite.c></IfModule>不能少,这大概是判断mod_rewrite是否存在的。
其次是RewriteEngine On这个应该是Rewrite引擎打开,也不能少。
然后是RewriteBase /这个很重要,如果安装在根目录就保持这样,如果不是,就要把/替换成所在的目录,相对于web根目录。
例如你把discuz安装在http://127.0.0.1/bbs,那么就要写成RewriteBase /bbs/才可以,这样也方便了多个rewrite共存。
最后是.htaccess文件的位置,如果你的根目录下有bbs和wordpress两个目录对应http://127.0.0.1/bbshttp://127.0.0.1/wordpress,那么可以分别创建两个.htaccess文件放在这两个目录里。
例如我是这样的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /bbs/
RewriteRule ^archiver/((fid|tid)-[w-]+.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+).html$ space.php?$1=$2
RewriteRule ^tag-(.+).html$ tag.php?name=$1
</IfModule>

注意加粗部分哦。

分类: 我的原创 标签:

试用一下bo-blog,也很强大

2008年5月6日 8 条评论

bo-blog是我最早接触的php编写的blog程序,记得以前还是使用文本数据库,后来才开始使用mysql的。
前几天有位MM被我怂恿的从BSP网易转为独立Blog,考虑到wordpress太强大了,MM肯定受不了。正好看到leo用bo-blog建的一个mm站效果很不错,所以考虑之后我也决定使用bo-blog给MM建一个:http://xianhuihui.cn

wordpress做为最出名的php+mysql的blog程序,很多blog程序都有学习他的倾向。比如安装bo-blog的时候,就感到有点wordpress的味道在里面。
安装好之后,需要指定blog名称和建立默认的用户。然后,就可以进入blog首页,这时已经有一篇自动生成的日志在欢迎你。用你的用户名和密码进入后台进行详细设置。

后台给我的第一感觉的是很中国化的风格,和我这个blog用的pjblog风格有点像,但是功能上远远比pjblog要强大很多。程序支持自动更新和语言更换,这些全部都能在后台进行,感觉很方便。
日志的撰写是在后台进行的,而且也能创建页面。在我用过的blog程序中,这是除wordpress之外,首个这么设置的blog程序,我猜这里是受到了wordpress的影响。
设置方面,很详细,很有中国特色,比如有叫你填写“信息产业部网站备案号”的地方。很多在wordpress里需要插件实现的功能都内置了,尤其特别的是支持Gravatar头像。这个Gravatar我也是在使用wordpress之后才知道的,没想到bo-blog也用了。

模板和插件方面还算强大,官方的目录里有很多可以选择下载的。下载之后上传到指定文件夹,后台启用或激活一下就可以了。还有一个地方是语言包微调,简单地说可以把某些默认的文字修改,使得更加有个性化,这个功能还不错。

其他方面,链接和wordpress一样支持分组,这功能我一向都觉得比较多余。URL支持Rewrite伪静态,不过默认的形式个人觉得比较难看,而且还有手动写.htaccess文件,都不会自动生成啊。另外还支持数据库管理和各种备份方式以及一些有我国特色的选项。

总之,bo-blog也是一个很强大的blog系统,而且体积非常小。推荐不需要那么多功能,速度要求较高的blog使用,当然,MM使用也是不错的。怎么php写的blog系统都这么强大捏?asp就没有……

分类: 我的原创 标签:

决定做成digg形式的网站

2008年5月2日 1 条评论

3gsurf.com这个域名我注册已经有段时间了,一直都在思考做成什么站比较好。

最早是想法是放个cms系统上去,考察了多个cms之后觉得都很强大,我实在是用不了那么多功能。而且cms资源和带宽占用巨大,放个在上面担心受不了。
然后就考虑论坛了,不过论坛最大的特点就是互动,弄个论坛我自己天天在上面发贴多没意思啊。而且自从有了5d6d之后,我就觉得吧论坛放在本地是很愚蠢的做法,除非你的网站是论坛形式,并且人气足够多……

最后还是觉得wordpress很强大很不错,就决定放个上去,就以blog形式吧。但由于是我精力有限,同时维护三个原创的blog难度太大了,于是上面的内容以转载为主,目前也有几篇文章了。
弄了这么几天之后,觉得还是很不爽,这blog弄得不伦不类,上面没点原创的东西,实在拿不出手,搞得我都不好意思大范围宣传了,每天ip还是个位数。

买了cph主机后,由于能绑定很多域名,就决定好好利用一下3gsurf.com。
正好这段时间看digg类网站很多,而且有个国产的pbdigg做的不错。最终决定弄个digg形式的网站吧,程序就用pbdigg:http://3gsurf.com。弄成digg的话,转载都光明正大一点啦。

话说这pbdigg很符合国情啊,简直就是discuz的简化版,dz那套东西随处可见。最幽默的还是默认设置下投票都要注册,还digg呢,一点都不web2.0啊。
花了点时间弄了下,换了个logo和banner就行了,模板都懒的改了。设置方面,尽量web2.0啦。

暂时就这样开着吧,欢迎大家多来转载文章,除了发文章要注册,其他都不用的。
明天我先找一堆文章弄上去,这样看起来才正常,当然还要加点ad啦,域名注册费还要赚回来呢……

分类: 我的原创 标签:

开第二个blog之前需要考虑的事情

2008年4月25日 没有评论

我开第二个blog差不多一个月了,今天看到一篇文章:10 Things to Consider Before Starting a 2nd Blog,感觉很多问题都是当初没想到的,现在正好重新来思考一下这个问题。

英文不好的朋友可以看这里翻译好的中文版。

文章首先谈到了time问题,这的确是最重要的问题。前段时间我有注册一个域名3gsurf.com,打算开一个和3G有关的blog,不过后来我不得不放弃这个想法,因为同时维护3个原创的blog的确不是一件简单的事情,我目前还做不到的。所以目前我很希望卖掉这个还不错的域名,或者做一个以转载为主的blog。

How will it affect your other blog? 这个过对我来说没什么,我的blog本身就不大,不存在文章所提到的问题。

What will take priority? 谈到优先权,我的打算是新blog为主,现在这个blog逐渐变成我的个人blog,我在这里这里也做了说明。

Profit potential. 这个对我来说目前可以忽略,唉。

Can you transfer readers? 这个问题,正如文章所说的,我的新blog的内容确有很多和现在blog相似,我也很希望凭着这一点带走一些读者。我能成功吗?

Can you transfer advertisers? 继续忽略。

Is the niche saturated? 这个太深奥了,我还没做到这一点呢。

What is your exit strategy? 我的新blog从一开始我就没打算和利益挂钩,只打算用所获得一点点广告费用补偿服务器的支出。我一直以来都很喜欢软件,现在同样关注互联网。其实我目前这个blog刚刚开始的时候也是这个打算,可惜没成功,现在重新开始吧。

Can you outsource? 这个我最初想过,不过很明显没可能的。

文章最后提到的是out of ideas问题。的确,这也是我遇到的最麻烦的问题,毕竟我从2004年开始blog,到现在新鲜感多多少少都消退了一些。尽管wordpress重新给我带来了无数的新鲜感,但我并不能保证能检测多久。好在我在软件方面的积累不少,目前看来一天一篇post还是能坚持一段时间的,嘿嘿。

分类: 我的原创 标签:

如何让wordpress正确加载插件

2008年4月22日 没有评论

wordpress很强大,我在用了以后才深深的感觉到。那么,他到底强大在哪里呢?我觉得,强大在可无限扩展的插件上。
wordpress的很多插件的使用需要我们在sidebar.php或者single.php等地方添加函数。这样的操作就会有后遗症出现:如果某天你停用掉插件,你必须还原修改过的文件,否则在前台显示就会出现错误。因为一般插件作者在插件安装使用的时候只会简单的要求你在某文件中加入:

<?php ***_***_***(); ?>

这样做也没错,不过会造成前面所说的后遗症。

我在找wordpress主题的时候发现,有很多主题都写着自动支持各种插件的,就是说如果你安装了这些插件,那么主题上会自动表现出来,否则就不显示。

比如wordpress中文工具箱里面获得最新评论的函数:

<?php get_recent_comments(); ?>

如果你没有安装或者临时停用这个插件,那么php执行的时候就会出现错误提示,导致你的页面不正常,这时如果你换成这个就不会了:

<?php if(function_exists(’get_recent_comments’)) { get_recent_comments(); } ?>

很明显,利用了php函数中的function_exists来判断函数是否定义。

通用的格式如下:
<?php if (function_exists(’插件函数')): ?>
<?php 插件函数(); ?>
<?php endif; ?>

简洁写法:
<?php if(function_exists(’插件函数')) { 插件函数(); } ?>

呵呵,这样弄了以后,再也不会因为插件停用而修改文件了,快点给你的模板加上吧。

分类: 我的原创 标签: