Apache下配置单IP多虚拟主机和HTTPS服务

Posted by Barhe in AppServer, FreeBSD&CentOS | 2 Comments

因工作需要,要为一台Web Server中的虚拟主机配置HTTPS.大致看了下文档,也参考了一下网上的资料.配置成功了.现做个笔记.
记得在网上找资料的时候,我下面笔记中的内容好象是对于Apache的版本有要求的,是多少不太记得了.我现在使用的是Apache的版本是2.2.23.

先大致讲下单IP的Apache的多虚拟主机的配置.
首先在httpd.conf中将

Include etc/apache22/extra/httpd-vhosts.conf

注释去掉.

然后编辑/usr/local/etc/apache22/extra/httpd-vhosts.conf内容,如下:

NameVirtualHost *:80
< VirtualHost *:80 >
    DocumentRoot /usr/local/www/apache22/data/mydomain1.com
    ServerName mydomain1.com:80

    < Directory /usr/local/www/apache22/data/mydomain1.com >
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Allow from all
    < /Directory >

    ErrorDocument 404 error.php
    CustomLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain1.com/access.%Y%m%d.log 86400" common
    ErrorLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain1.com/error.%Y%m%d.log 86400"

< /VirtualHost >

< VirtualHost *:80 >
    DocumentRoot /usr/local/www/apache22/data/mydomain2.com
    ServerName mydomain1.com:80

    < Directory /usr/local/www/apache22/data/mydomain2.com >
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Allow from all
    < /Directory >

    ErrorDocument 404 error.php
    CustomLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain2.com/access.%Y%m%d.log 86400" common
    ErrorLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain2.com/error.%Y%m%d.log 86400"

< /VirtualHost>

然后重启Apache

/usr/local/etc/rc.d/apahce22 restart

就可以完成虚拟主机的设置了.

然后再讲讲有关HTTPS的设置.
先在httpd.conf文件中将有关ssl的注释去掉.有两个地方:
# 加载SSL模块

LoadModule ssl_module modules/mod_ssl.so

# 加载ssl的配置文件

Include conf/extra/httpd-ssl.conf

然后生成证书,我们的证书是使用openssl来加密的,如果没有安装,就要先安装openssl:

cd /usr/ports/security/openssl
make install clean

然后再调用openssl来生成服务器证书私钥文件:

openssl genrsa -out server.key 2048

然后再用私钥文件生成证书请求文件:

openssl req -new -key server.key -out certreq.csr

然后需要填写一些相关的域名信息,填写完成之后会生成一个certreq.csr文件.
如果是有申请公有证书,则可以把这个csr文件发给证书核发方,等待对方签发服务器公有证书.
证书一般是以”—–BEGIN CERTIFICATE—–”开头和以”—–END CERTIFICATE—–”结束的.假设这里我们得到的证书名称是server.crt

编辑/usr/local/etc/apahce22/extra/httpd-ssl.conf文件,修改如下:

Listen 443
NameVirtualHost *:443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300

SSLMutex  "file:/var/run/ssl_mutex"

< VirtualHost *:443>

    DocumentRoot "/usr/local/www/apache22/data/mydomain1.com"
    ServerName mydomain1.com
    ServerAdmin admin@mydomain1.com

    ErrorLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain1.com/error.%Y%m%d.log 86400"
    TransferLog "/var/log/httpd/mydomain1.com/httpd-access.log"

    SSLEngine on

    SSLProtocol all -SSLv2

    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

    SSLCertificateFile "/usr/local/etc/apache22/ssl_key/server.crt"
    SSLCertificateKeyFile "/usr/local/etc/apache22/ssl_key/server.key"
    #如果有另外一张CA中级证书,则需要启用这一行
    #SSLCertificateChainFile "/usr/local/etc/apache22/ssl_key/ca.crt"

    < FilesMatch "\.(cgi|shtml|phtml|php)$" >
        SSLOptions +StdEnvVars
    < /FilesMatch>
    < Directory "/usr/local/www/apache22/cgi-bin" >
        SSLOptions +StdEnvVars
    < /Directory>

    BrowserMatch "MSIE [2-5]" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

    CustomLog "|/usr/local/sbin/rotatelogs /var/log/httpd/mydomain1.com/ssl_request.%Y%m%d.log 86400" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

< /VirtualHost>

然后重新启动Apache:

/usr/local/etc/rc.d/apache22 restart

然后再试试,大功告成!

使用mysqldump时发生的一些问题

Posted by Barhe in PHP&MySQL | Leave a comment

做个笔记,回头免得自己又忘记了.

之前一直使用sh脚本调用mysqldump对mysql上边的数据库进行备份.

如:

more mysql_database_backup.sh
#!/bin/sh

# 设置备份文件夹
t_dir="/data/db_backup"

# 设置备份文件名称
s_filename="mydatabase_$(date +%Y%m%d%H%M%S)"
# 使用backup_user用户对数据库进行备份,需要注意的是backup_user最少需要数据库的select及lock table权限
/usr/local/bin/mysqldump --opt -ubackup_user -pbackupuserpassword mydatabase >$t_dir/$s_filename.bak
/usr/bin/tar -czvf $t_dir/$s_filename.tar.gz $t_dir/$s_filename.bak
rm $t_dir/$s_filename.bak

今晚对另外一个数据库进行同样备份的时候,提示备份用户没有Lock Table的权限,经过仔细检查,确认是有这个权限.然后又试着给这个用户赋予所有权限.还是不行,提示说某某视图中某某用户不存在.印象中这个数据库没有用到视图啊…后来在网上查了一下,看到了这个文章:
http://hi.baidu.com/jppnroqjgrbfjqd/item/5d219517179ad6797b5f251a

怀疑是之前通过sql文件导入生成的数据库中有一些之前用脚本定义的definer之类的东东.干脆找到那个视图,删除.然后再执行备份命令,就OK了.

关于The installer cannot continue until Zlib is installed.

Posted by Barhe in FreeBSD&CentOS, PHP&MySQL | Leave a comment

做一个笔记.

今天准备在1.5.23版本的Joomla上安装Joom!fish,在Joom!fish的官网下载zip的安装包,然后进行上载安装.
系统提示:
The installer cannot continue until Zlib is installed.
在网上一查,是没有启用Zlib支持.

解决方法很简单:

cd /usr/ports/lang/php52-extensions/
make deinstall

#重新配置安装,记得选中Zlib的支持
make install clean

#然后重启apache服务
/usr/local/etc/rc.d/apache22 restart
#就OK了.

[转]什么是道德

Posted by Barhe in Others | Leave a comment

我曾经认为自己是个很不错的人,例如我没有杀过人。但是Peter Singer指出:动物也是有意识的,人们吃肉要把动物宰杀掉,这和杀人没什么不同。因此我成为了素食主义者,然后我又认为自己是个好人了。但是Arianna Huffington告诉我说,开汽车会向大气排放有毒气体。因此我买了辆自行车。但是我又意识到我的自行车坐垫是国外血汗工厂里的童工缝纫的,车身的金属是挖矿工人从地底下艰难挖出来的。实际上我花的钱都是在压迫人民或者是某种方式上毁坏地球。如果我去挣钱,部分钱会流到政府那里,被用来轰炸阿富汗或伊拉克的人民。

我曾经想过靠捡垃圾来养活。这样我就不需要承担上边的那些责任。但是我想捡垃圾的人还是会去买些他们在垃圾箱中找不到的东西。如果我抢先捡了垃圾箱里的东西,那些后来的人可能会自己去买。结论看来很明显了:我必须离开,到山洞里去住,捡些坚果和水果吃。我仍然在呼出二氧化碳,并且在使用地球上已有的东西,但可能会处于一个可循环的水平。

也许你不会同意杀动物和轰炸阿富汗人民是不道德的。但是你一定要想像一下可能有人会这么认为。并且我认为吃一个汉堡和纳税都在很小的程度上助长了那些事。

即使你没做这些,你日常生活做的事情比这些更直接。我个人认为坐在桌子旁开心的挥霍,与此同时另一个人为我送上食物,还有另一个人在火炉旁伺候,这样都是错误的。每次我点食物,我都会让他们多送一些。(他们多得了些钱作为回馈,但是这样比我直接多给他们钱更容易让他接受)你可能不会认为这是错的,但是我希望你们认同这种可能的观点,我的确是错了。

在山洞里,我认为自己安全了。然后我读Peter Singer最新的书。他指出,你用四分之一美元就可以救一个小孩的生命。(比如27美分可以买到生理盐水把严重腹泻的小孩救活)也许我终究还是杀人了。因为上边提到的一些原因,我不能道德上合理的赚到钱。但是不在山洞里生活,我可以去非洲贡献我的时间。当然,如果我这样做,我还有一千件类似的事还没做。我怎么来决定做哪件事来救更多的人?即使我花时间来考虑,这些时间将花在我自己身上,而不是花在用来救人。

这似乎不可能有道德。不仅我做的任何事情都有巨大危害,并且我不做事情也产生了危害。道德的标准是很难定义的,但是可做到:不说谎,不欺骗,不偷窃。但是过上道德的生活甚至是不可能的。如果道德是做不到的,我只要简单的尽自己的能力做到最好。Peter Singer是个实用主义者,也许我要尽量放大我为这个世界做的好事。但是这似乎是一个令人难以置信的繁重标准。我不仅仅要停止吃肉,还包括所有动物产品。我不仅停止购买工厂农厂的食品,我将不再买所有东西。我应该把东西从垃圾箱中拿走,这样别人不太可能找到。我应该住在一个地方不会打扰到别人。当然所有这些忧虑和压力会阻止我为这个世界做好事。

我每走一步都会考虑这样做会伤害谁。所以我决定不再担心哪些事没做好,而是专注于怎么做好事。但是这样并不符合Peter Singer的规则。在收银台前边排队耽误我去救人的工作,(并且付钱会将花费掉我用来救人的钱)

看似是矛盾的:我追求做得好,但做错了事。我出去买份牛排的时候,没人会对我的行为有疑问,但是如果我去店里抢了瓶汽水,每个人都会有反应。Is there sense in following their rules or are they just another example of the world’s pervasive immorality?有哲学家考虑过这个问题吗?

这篇文章来自被黑的MIT网站,黑客在首页发表了文章,思考什么是道德。
我想做一个有道德的人,或者说我想成为一个善良的人。上边说的一些东西,我甚至都认真考虑过。可我现在仍然故我。那,我不是一个有道德的人吗?我不是一个善良的人吗?我不知道。我很困惑,以至于常常不开心…
By Barhe

才爱到一半

Posted by Barhe in Others | Leave a comment

小清新,小感动…真的不错.

錦繡二重唱
才愛到一半
作詞:姚若龍
作曲:陳小霞

好久沒有你的信 你的電話
我只想要清楚的確定一下
我們只是吵了個很長的架
或者你打算就這樣分了吧

媽媽電話裡問我 過得好嗎
我只能咬著嘴唇 說不出話
每天晚上一個人走路回家
淚水就不停無意識的流下

我們不是才愛到一半
還有好多夢想沒有實現完

我想送你的生日驚喜夜晚
你想帶我去的旅行 怎麼辦

我們不是才愛到一半
是誰講會好好珍惜這情感
也許不能愛 會是一種遺憾
然而不能不愛 卻是種悲慘

想著你的溫柔 比不上自大
想著你的親吻 比不上謊話
這是我要自己死心的方法
但我怎麼還是那麼愛你呀

在exsi中安装pfsense做软路由

Posted by Barhe in AppServer | Leave a comment

公司某分公司有一台服务器,配置还可以.考虑到分公司的业务量及数据量一般,于是决定将服务器充分利用起来,安装exsi5并在上边虚拟一些系统供同事使用.分公司方面上网很简单,就一条ADSL,我就干脆在一台虚拟服务器上边搞定这个吧~

首先将服务器上边的两个网口接口进行定义,一个定义为Wan口,一个定义为Lan口.然后在服务器上边安装exsi,服务器上边推荐安装到U盘,简单又省事.嘿嘿.
安装完成之后,通过vSphere Client管理exsi.在选项页中选择”Configuration”,再点”Networking”,然后再点”Add Networking…”为服务器增加一个Virtual Switch(vSwitch1),将其命名为”VM Network – Wan”,然后把之前的vSwitch0重命名为”VM Network – Lan”.这样做是为了以示区别.
在这儿需要注意Management Network,如果在VM Network – Wan中的话,可以通过exsi控制台将其转移到VM Network – Lan,这样会更安全一些.
然后从pfsense官网下载pfsense安装镜像,通过vSphere Client将pfsense安装在exsi上.在新建虚拟机的时候为系统添加两张网卡,分别接入Lan和Wan中.安装过程略过.
安装完成之后,对pfsense进行设置,为它配置wan口及lan口.然后再在exsi中再安装其它系统,将它们接入VM Network – Lan这个vSwitche中.
后边的功夫就很简单了,从ADSL猫接线到物理服务器的Wan口,然后从物理服务器的Lan口接一根线到交换机,其它人接入这台交换机上网.
为了日后方便维护,可以在pfsense上边启用vpn,考虑到Windows的兼容性,pptp是最简单的了.
当然,如果想进行网络流量管理,也可以在exsi上边再装多一台Panabit专门用来做流量管理了.这个就是题外话了.
ok,完成.

花絮:
之前这样的装exsi这样装pfsense很多次了,一直也很正常.近期又装了一次,发现VM Network – Lan中的系统怎么样也不能上网,检查了很久都没有发现问题在哪儿.我甚至把pfsense换了个版本也没用.都快要放弃了.-_-!
气馁之余就在pfsense管理界面里边乱逛乱找,无意中看到在Interfaces/Bridges中是空白的,于是在想,内网系统无法通过外网系统访问公网,该不会是这儿吧?就点了Add按钮添加了一个BRIDGE0接口,Members是WAN,LAN.然后再一试果然行了.晕~
这个是pfsense 2.0.1版本中的,我不甘心又重新打开刚才装过的pfsense 1.2.3,也”桥”了一下,果然也行了.这个版本设置的地方在Inetfaces/LAN中的IP configuration,将Bridge with选项改为WAN就可以了.
这是个教训,一定要专门记下来.害我浪费N多时间…

你会问上帝一个什么问题?

Posted by Barhe in Others | Leave a comment

看到网上有个视频,访问很多国家很多普通人一个问题:
如果看到上帝,你会问上帝一个什么问题?
一个老妇人的回答让我很触动,差点都掉泪了。
老妇人问道:
为什么这个世界上这么多人不开心?这本不是他们应得的。

Excel2007/2010版本差异导致在VBA中插入图片的一些变化

Posted by Barhe in Windows | Leave a comment

在Excel2007中,我们插入图片可以使用如下代码:

ActiveSheet.Shapes.AddPicture(lcPhotoFullPath)

在Excel2007里边,用以上代码插入图片,图片都将作为对象插入Excel文件中.
可是在Excel2010里,使用上面的代码就会默认为象图片将一个链接插入Excel文件中.这样将会导致在本机中插入了本地图片到了其它电脑上边将不能显示.
解决方法是,将原先的插入代码改为:

ActiveSheet.Shapes.AddPicture(lcPhotoFullPath, False, True, 10, 10, 10, 10)

查看AddPicture参数得知:
第一个参数是插入的图片文件名;
第二个参数是True/False,其中True代表链接到文件;False代表不链接到文件,将对象嵌入;
第三个参数是True/False,其中True代表将图片与文档一起保存;False代表不将图片和文档一起保存;
后边的四个参数分别代表插入对象的位置(以磅为单位):图片左上角相对于文档左上角的位置,图片左上角相对于文档顶部的位置,图片的宽度,图片的高度

这样修改之后,就可以解决Excel因版本差异而导致插入图片异常的故障了.

[转一个]穷逼就别去古镇了

Posted by Barhe in Others | Leave a comment

每个古镇都流传着这样一个传说,某人从繁华的大都市漫步到丽江(凤凰/西塘/乌镇)被这里的美景和缓慢的节奏打动,便辞掉了年薪百万(十万/千万)的工作,留在古镇,洗练内心,追寻生活的真意。

于是大批繁华城市(驻马店/菏泽/周口)的成功青年(年薪过万/两万)纷纷走向古镇,功名利禄全放下,只为寻找生活的真意,他们披着25块钱一件的民族风披肩,摇曳着30块钱一条的民族风长裙,穿着75块钱一双的匡威不穿袜子的走在1990年代的石板路上,听着ding~da~ling~da~ling~da~ling~da看小雨拍打着水花,他们来过就不曾离开,他们在丽江等你,他们私奔去凤凰,他们在咖啡馆心不在焉的翻阅咖啡馆里的七堇年落落安妮宝贝,眼神暧昧的左顾右盼。

约炮在这里会高雅成艳遇,睡了一个普通人在这里会变成“与一个海藻长发/青草味香水的女子/男子的一段纠葛”,再难吃的饭在这里都成了美味佳肴,木头晃晃悠悠摇摇欲坠的破旅馆改名叫客栈之后,就文艺清新了许多,他们会形容这里“木头的质感透露着时光的气息”,咖啡馆里速溶的咖啡都袅袅出法国的味道,问个路人给你指对了,那都是因为“古镇民风纯朴”,就好像他在外边别人给他指的路都是错的一样。

到他们回来的时候,那一定是个不一样的脸,如果你问,他们会说灵魂暂时寄托在古镇了,它还没有回来。其实他们留在那儿的不过是一些用过的安全套、几声嘶吼、一些现金。

他们拍摄古镇街头的一只猫,好像这辈子没有见过猫一样,发在微博上一定是“古镇缓慢的节奏,连猫都变得慵懒”,就好像此前他们不知道每天睡眠10小时的猫都懒的惊人一样;他们去酒吧听不入流歌手唱网络歌曲,好像此前没有听过网络歌曲一样;满大街的蓝莲花、曾经的你,他们说,那是心底的声音,就像原唱没长心一样;如果是第二次去古镇,他们会用“回”这个词,就像这是他们的家乡,他的家乡没有霓虹灯!

每个古镇的大街都一街的穷逼,丢个炸弹炸死的无一例外穷逼,逮个披着披风的一顿揍,果断是个穷逼,拉个拎单反的一顿踹,果断又是穷逼,但他们会告诉你他们不是穷逼,他们是走内心,他们寻找生之安稳,如同莲花,他们说厌倦了都市的节奏,他们渴望在这里安稳缓慢。

其实谁不知道,所谓的古镇,不过是个大游乐场,没有压力,所有发生的事情都跟你无关,除了吃喝玩乐啥都没有,除了醉生梦死什么都不做,这样的环境下再有压力的,那就是强迫症了吧?但穷逼总是有理的,穷逼会说,你看到的都是肤浅的表面,你没有看到古镇本质的东西,它在揭示生活最本真的一面,告诉你停下来等一等你的灵魂。

但灵魂是loser的,说的再高雅那也是loser。

我市有个三观奇特的主持人,传说曾有不少人准备雇凶揍他,但我很喜欢他朴实的观点。有此该主持人接到一个电话,是个失意的男听众打来的,这人说:“主持人我想跟你咨询个问题,我女朋友嫌我穷逼要跟我分手,我该咋办?”

主持人说:“那你到底穷逼不穷逼?”

男听众:“我觉得我挣得可以啊。”

主持人:“你一个月薪水多少?”

男听众:“平均也就是1800左右吧。”

主持人:“你工资这个数,那你有没有副业?”

男听众:“没有。”

主持人:“你工作是朝九晚五吗?你下班后有什么业余活动?”

男听众:“对啊,我工作是朝九晚五,我业余活动喜欢旅游,我喜欢远足,到周边的野山去亲近自然。”

主持人:“你这种情况,你就不要热爱自然了,你平常的活动该是什么你知道吗?你到咱们市比较大的商场去转悠,下班你就去转悠,多去接触商业社会知道吗?注意看那些商品的标价……好了,我们来接听下一位听众。”

这期节目过去两年了,但我不时就从脑存储里提取出来重温一遍,哪天碰见古镇逼,我就想从脑子里提取出来给他滚动播放一遍,穷逼就别去古镇了,loser云集的地方只会让你更loser,还是去看下大米多钱一斤,看你还能不能吃得起吧。

本文转自:http://www.douban.com/note/227016058/
看着好欢乐呀…哈哈…

我为什么不开心?

Posted by Barhe in Others | Leave a comment

有时候,我会想,好象我并没多少真正开心的时候。起码现在并没有觉得自己有多开心,多幸福。
这个世界真大,人真多,芸芸众生,形形色色。每个人都在表现自己,每个人都在刷存在感。
有时候你能从别人那里获得开心,有时候也可以自娱自乐。但更多的时候是很多人被别人的一言一行,被别人的行动去让到自己不开心。其它人我不知道,起码我经常是这样。

生活中几乎每一件事都能让我心情猛的变差,让我不停的去想,不停的去问自己:我为什么要以这样的状态去生活在这样的世界里?!

有时候我是一个宽容的人,有时候我又是一个极度挑剔的人。
我不喜欢的太多了…
# 电梯里不停按关门按钮–根本不理会门外有人正往这边跑或有人正在门口;
# 迎着风吐口水或不掩口打喷嚏;
# 在公共汽车上漠视孕妇或行动不便的老人;
# 在扶手电梯上并排而立;
# 慢悠悠走或站着闲聊而不理会是否堵住别人行进;
# 电影院里旁若无人讲着电话;
# 用所谓的星座/血型/生肖来格式化自己;
# 用偏执的爱好来标签自己;
# 在通讯工具中首发或转发谣言或传播谣言,尤其是利用爱国情绪的,如:是中国人就怎么样/转发到多少就会怎么样/不转发就会怎么样等等;
还有太多太多了…

我时常在内心抱怨,在内心感觉不平衡,有时候我甚至对周围的一切都不喜欢,我觉得我没办法融入这个世界了。
这个世界的人啊,要么浮躁,要么伪深沉,要么标新立意,要么哗众取宠…

我受够了这样的世界!
我不想被一群刷存在感的人包围并成为他们想要获得被承认的工具和参照物!

我只想一个人安静的生活,清心寡欲。我渴望重新过回我那无欲无求率性而为的生活。

但很可惜我的心已不再纯真,我内心充满了欲望。我在承受着内心深深的自责,生活痛苦而不安。