RSS Feed

‘奇淫巧技’ Category

  1. Debian安装LNMP指南及多站点配置

    July 18, 2011 by nonozone

    此文仅仅是一名服务器菜鸟折腾LNMP的学习笔记而已,各位老鸟就不用点击进来查看了。

    至于为什么选择LNMP而不是LAMP,除了装逼+折腾+跟风+从众心理,估计找不到其他理由了。说是跟Apache相比Nginx更轻巧性能也更优,不管是有多么好,估计对我那么一两个访问量不过千的小博客基本上没啥区别。对于自己独立配置服务器,其实内心一直战战兢兢,生怕由于不慎,让主机变成肉鸡,唉,总是要走出这一步,貌似自己也确实如此一步一步走过来的。好了,不说废话,下面开始正题,这篇文章基本是两个内容,一个是debian环境下LNMP的安装指南,一个是Nginx的多站点配置指南。

    Debian环境的LNMP安装指南

    由于本人技术比较弱,所以选择的是网上教程众多的LNMP一键安装包,项目主页:http://lnmp.org/,上面本身也有安装教程:http://lnmp.org/install.html,其实这个教程已经很完备了,以至于我没什么好说的。自己其实用不到那么多组件,有Nginx,Mysql,PHP,phpmyadmin就可以了,所以我直接下载的lnmp0.7.tar.gz这个文件包然后默认安装就完成了,其他什么诸如FTP,ionCute,eAccelerator什么的暂时就不需要了。

    安装的过程会提示你需要绑定一个域名,将域名的A记录解析到VPS的IP,LNMP一键安装完毕,直接访问域名就会出现一个安装成功的提示页面,同时还包含一个主机探针页面和PHPinfo函数的页面,这个都没啥好说的。安装过程大概会持续一段时间,估计有20-30分钟?我没仔细计时,因为我下载的是lnmp0.7.tar.gz文件包,这个文件包基本是一些脚本命令,执行的时候需要自己下载一些软件包,这本身需要一定的时间。

    相关的目录和配置文件

    nginx : /usr/local/nginx
    mysql : /usr/local/mysql
    php : /usr/local/php
    网站目录: /home/wwwroot/
    Nginx日志目录:/home/wwwlogs/
    Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
    MySQL配置文件:/etc/my.cnf
    PHP配置文件:/usr/local/php/etc/php.ini

    这里面我最不满意的就是Nginx的配置文件目录了,这么长一窜实在不方便。比较喜欢Apache默认的配置文件都在/etc/apache2/这个里面,一目了然什么的,接下来要把这个改掉!

    到这一步,其实LNMP已经成功安装完毕了,安装的时候绑定的域名也可以访问了,但是如果想多站点怎么办呢?比如你有两个域名aaa.com和bbb.com,分别是两个不同内容的网站,又要怎么设置呢,下面就是关于Nginx的多站点配置指南吧。

    Nginx多站点配置指南

    在Apache的多站点配置里面很方便,只需要在/etc/apache2/sites-available/里分别添加aaa.com和bbb.com两个配置文件就可议了,这里我也打算按照这么个思路吧。

    1首先,建立Nginx站点配置目录

    mkdir –p /etc/nginx/vhost

    然后编辑nginx配置文件

    ~# vim /usr/local/nginx/conf/nginx.conf

    将里面的server部分删除,最终变成的是下面这个样子,注意,这里不需要把我的代码复制过去,你只需要把这个配置文件的server 整个部分删掉就可以了。

                   use epoll;
    worker_connections 51200;
    }

    http
    {
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;

    sendfile on;
    tcp_nopush     on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    #limit_zone  crawler  $binary_remote_addr  10m;

    include /etc/nginx/vhost/*.conf;
    }

    注意最后的一行修改为,原配置文件不是这样的,此处需要修改过来。

    include /etc/nginx/vhost/*.conf;

    其实这个动作的作用就是以后直接读取/etc/nginx/vhost/这个目录下的所有配置文件。然后重启nginx:

    /etc/init.d/nginx restart

    这个时候,应该最开始绑定的那个域名aaa.com是不能访问的,因为配置文件已经修改了。下面来为这个域名增加配置文件。

    进入/etc/nginx/vhost/,创建aaa.com.conf

    然后将以下内容复制进去:

    server
    {
    listen       80;
    server_name aaa.com;
    index index.html index.htm index.php;
    root  /srv/www/aaa.com/public_html;

    location ~ .*\.(php|php5)?$
    {
    fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fcgi.conf;
    }

    location /status {
    stub_status on;
    access_log   off;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires      30d;
    }

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

    log_format  access  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
    ‘$status $body_bytes_sent “$http_referer” ‘
    ‘”$http_user_agent” $http_x_forwarded_for’;
    access_log  /srv/www/aaa.com/logs/access.log  access;
    }

    其实这段就是刚才在/usr/local/nginx/conf/nginx.conf里面删除的那段代码。上面蓝色著名的地方其实就是这个域名所在的跟目录和日志文件的目录。这个目录可以根据自己的需要修改,下面创建网站的根目录和日志目录:

    mkdir –p /srw/www/aaa.com/public_html
    mkdir –p /srw/www/aaa.com/logs

    然后重启nignx

    /etc/init.d/nginx resart

    这样整个网站就配置好了,按照同样的方式创建bbb.com就可以了。这个时候直接访问aaa.com应该是不行的,因为没有内容,你可以再根据这篇SSH安装WordPress指南安装个Wordpress试试,应该是没问题的。

    但是这里还有一个问题,由于LNMP安装的时候跟目录是/home/wwwroot,同时默认的phpmyadmin安装目录也在这里,这个时候通过访问http://xxx.xxx.xxx.xxx/ phpmyadmin是无法访问的,因为此时跟目录已经被修改到/srv/www了,这个时候加个链接过来

    ln –s /home/wwwroot/phpmyadmin /srv/www/aaa.com/public_html

    这时通过访问aaa.com/phpmyadmin就可以了。



  2. 六大拼音输入法双拼方案(码表)

    April 14, 2011 by nonozone

    拼音输入法不用学习再加上在线词库,使用起来确实方便,不过错别字出现频率也是相当的令人发指,鉴于自己马虎的性格,想学学双拼,一来错别字没那么多,二来貌似打字速度可以再上一个台阶?

    把六大拼音输入法的双拼码表都整出来了,自己看看顺便做个分享。

    微软拼音双拼方案

    2011-4-14 20-40-22

    紫光拼音双拼方案

    2011-4-14 20-41-10

    拼音加加双拼方案

    2011-4-14 20-41-36

    智能ABC双拼方案

    2011-4-14 20-42-07

    自然码双拼方案

    2011-4-14 20-42-29

    小鹤双拼方案

    2011-4-14 20-42-52

    好吧,其实这些双拼方案在Google输入法设置选项里面都有,这几张图也是直接从Google拼音输入法截取的,恩,这篇文章基本就是滥竽充数的。



  3. 基于Debian的VPS搭建LAMP指南

    April 11, 2011 by nonozone

    此文基本是在海豚微笑的背后一文VPS建站LAMP 101基础上进行的,只是将自己按照其过程操作下来的几个问题稍微注明下。

    根据海豚叔这篇文章我前前后后折腾了很久,总是会出错,搜索了很久也一直没有解决。本来都打算把上次获得Linode的100美金优惠券购买的VPS停止不用的,昨天稍微折腾了下,竟然所有问题都搞定了,特地整篇文章让自己也有个笔记留作以后参考。

    基本内容大致相同,把自己遇到的问题和解决方法在相应位置特别说明了下。

    设置时区
    系统安装完毕后,最好先设置一下时区。一般来说大部分发行版本默认的时区设置是UTC,这里可以选择中国所在的时区shanghai。

    dpkg-reconfigure tzdata

    设置HostName
    HostName设置成自己喜欢的就行,不过有些系统保留的名字不要用。

    echo “youlikename” > /etc/hostname
    hostname -F /etc/hostname

    这里直接编辑 /etc/hostname 效果是一样,比如你想把自己的主机名称修改为Coolhost,直接vim /etc/hostname 填写Coolhost保存退出就可以了。

    设置完HostName后,继续让这个名字和Linode分配给你的公网ip地址相关联。
    修改/etc/hosts:

    127.0.0.1 localhost
    12.34.56.78 youlikename

    这里需要注意的一点就是,hosts的完整格式应该如下

    127.0.0.1 localhost.localdomain  localhost
    12.34.56.78 youlikename.localdomian  youlikename

    这个要特别注意,不然的话到最后重新加载apache服务端时候,会一直提示出错你找不到你的主机名,在这个问题上我折腾了相当久。然后需要重启一次,你的主机名才可以生效。

    安装配置Apache服务
    对于Debian Like用户来说安装任何东西都极其简单,使用以下命令就可安装Apache Web服务。

    apt-get install apache2

    然后需要修改/etc/apache2/ports.conf,加入以下内容:

    NameVirtualHost 12.34.56.78:80

    IP地址当然是VPS供应商提供给你的独立IP,如果不想站点公开化当然也可以更改80端口。
    然后需要修改默认的虚拟主机IP地址和端口,修改/etc/apache2/sites-available/default:

    <VirtualHost 12.34.56.78:80>

    配置虚拟主机

    /etc/apache2/sites-available/

    每个配置文件和域名一一对应,便于管理。比如需要设置两个站点,可以创建如下两个配置文件:site1.com; site2.org。
    /etc/apache2/sites-available/site1.com

    <VirtualHost *:80>
    ServerAdmin admin@site1.com
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /srv/www/site1.com/public_html/
    ErrorLog /srv/www/site1.com/logs/error.log
    CustomLog /srv/www/site1.com/logs/access.log combined
    </VirtualHost>

    /etc/apache2/sites-available/site2.org

    <VirtualHost *:80>
    ServerAdmin admin@site2.org
    ServerName site2.org
    ServerAlias www.site1.org
    DocumentRoot /srv/www/site2.org/public_html/
    ErrorLog /srv/www/site2.org/logs/error.log
    CustomLog /srv/www/site2.org/logs/access.log combined
    </VirtualHost>

    然后建立相应的目录:

    mkdir -p /srv/www/site1.com/public_html
    mkdir -p /srv/www/site1.com/logs
    mkdir -p /srv/www/site2.org/public_html
    mkdir -p /srv/www/site2.org/logs

    以上步骤需要注明的是,由于这里使用的并不是Apache默认的网站根目录地址,所以在<VirtualHost *:80>这个位置,同样需要把*更改成自己VPS的IP地址,否则即使域名绑定到VPS,但是访问的时候会提示你访问Apache默认地址/var/www,而不是这里的/srv/www。

    最后启用这两个站点:

    a2ensite site1.com
    a2ensite site2.org

    /etc/init.d/apache2 reload

    Apache2提供了两个命令来快速启用和关闭某个站点:a2ensite和a2dissite。

    安装配置Mysql

    apt-get install mysql-server

    安装配置PHP

    apt-get install php5 php-pear php5-suhosin

    为了让php支持Mysql,安装下面这个包:

    apt-get install php5-mysql

    安装phpmyadmin

    apt-get install phpmyadmin

    这里会提示你输入根管理员账户名称和密码,安装完成以后,直接输入你绑定的某个域名 abc.com/phpmyadmin 就可以访问了,然后根据需要创建数据库和用户,就可以了。

    上面这几部完成,基本上你的网站就可以按正常步骤安装并且可以访问。

    不过这些仅仅是最基本的访问设置,在折腾VPS的时候,需要很注意安全问题,比如我的这个主机以及朋友的几个VPS都有被人入侵的记录,我的一台VPS曾经被人入侵然后疯狂的上传下载一些数据,导致几天内CPU持续高负荷运转,并且导致磁盘爆满。哎呀,对于一个非技术人员来,有时候会折腾死人的。



  4. 浅谈公历和农历的差别

    November 30, 2010 by nonozone

    现在很多同学尤其是MM在过生日的时候都喜欢过公历,因为觉得农历的生日好像总是变来变去不好记,我觉得这个问题其实蛮有意思,今天就这个问题稍微探讨下。

    其实这个问题很简单,仅仅是两套不同的历法标准,并没有严格的先进和落后,好和坏的区分,就比如米和英尺,1m=3.3ft,2m=6.6ft一样,或者这个问题还不相同,毕竟长度单位比较单纯,我们那温度单位来换算,30摄氏度=86华氏度,但是60摄氏度=140华氏度,而不是172摄氏度。具体你要说摄氏度和华氏度哪个更好,估计没人能回答你吧,仅仅是两套不同的标准,阴历和阳历也是如此。

    下面回到今天的主题,农历和公历的问题。严格的说今天讨论的并不是公历和农历的差别,而是阳历和阴历的差别,虽然在很多时候我们都把公历等同于阳历,农历等同于阴历,但是两者还是有一些差别的,不过本文依然按照传统的观念理解。需要注意的是,本文不是科考,仅仅是本人在一些事实基础上的个人理解,如果出现谬误和偏差,还希望朋友们多多指正。

    从字面上说,阳历的意思就是指太阳历,是以太阳的运行规律(其实就是地球绕太阳的公转自转规律)为观察对象制作的历法,而阴历意思就是指月亮历,是以月相的规律为观察对象制定的历法,这里为什么是月相而不是月亮绕地球运行的规律,后面我会讲到。

    太阳历是根据太阳直射点的运行周期而制定的,其平均历年为一个回归年。大致的意思就是,如果在回归线内的某个位置,太阳两次直射某个点之间相隔的时间叫做一年。当然要排除赤道的地区,因为赤道每年会被太阳直射两次。看下图:

    drawing1

    上图中,黄线是太阳直射点的位置,假设太阳第一次直射到北回归线的时候,也就是A,此时就是夏至,此时太阳直射点慢慢从北回归线往南回归线移动,当太阳直射到B点也就是赤道的时候,这就是秋分,然后继续往南,当太阳直射到南回归线也就是C点的时候,这里就是冬至,过了冬至,太阳直射点就慢慢从南回归线往北回归线移动,当再次直射到赤道也就是D的位置就是春分了,然后继续往北,再一次回到北回归线,就是又一次的夏至,两次夏至之间也就是A到E点之间的时间就是一个回归年,也就是地球绕太阳公转一圈的时间,就是一年。

    那一天的时间就是地球的自转周期,也就是地球上两次看到日出的时间间隔,目前地球自转周期是23时56分4秒,这就是一天。大家知道现在我们的时钟上一天是24个小时,大概比地球自转的周期要多4分钟。地球绕太阳公转的周期大概是365天5小时48分45.5秒,而现在我们每年是365天,这样每年地球公转周期会比一年多出将近6个小时,每四年地球公转周期就会凭空多出来一天,这就是闰年出现的原因,为了不至于差错太多,所以规定了每四年为一闰年。

    好吧,自己能力实在有限,要把这复杂的历法知识一时半会讲清楚实在是力不从心。上面只是大致介绍些阳历是怎么确定一年又是怎么确定一天的。下面再讲阴历。

    上面提过,阴历是以月相的变化规律作为标准,为什么是月相而不是月球的自转或公转为标准呢?月球的自转和公转周期是一样的,都是27.32天,由于其自转和公转周期一样,使得地球上的人只能看到月球的正面,而背面是无法看到的,为什么会造成这种情况,具体的解释这里就先不提了。月相的周期是29.53天,也就是前后两次新月之间的周期,至于为什么月球自转和公转都是27.32天,月相就变成29.53天,这里也不做解释。一般来说,每个月是30天,可以看到,如果每月是30天,就会比正常的月相周期多半天,如果连续两个月就会比正常月相多一天,所以阴历中有大小月,大月30天,小月29天,至于阴历的闰月又是怎么来的,这个比较复杂,这里也不解释。

    好吧,上面这一大段内容只是大致介绍下阳历和阴历的不同到底是由于什么造成的,基本是太阳历和月亮历的因为观察对象的不同造成的标准不同,至于哪种历法更为科学和规范,这个很难说清楚。起码在中国来说,农历在很多方面都更具有指导意义,比如二十四节气,再比如你知道农历初一是新月,农历十五是满月,却无法通过阳历知晓这个,再比如,沿海地区在计算潮汐的时候也是根据阴历而不是阳历。而算命或者命盘在测算八字的时候,当然也必须是按照阴历的时间而不是阳历。

    而国内是从什么时候开始公元纪年呢?是从民国以后,在民国以前,革命派还使用过黄帝纪年,也就是以皇帝的生日作为纪年标准,这个跟现在的公元是以基督耶稣的生日为纪年标准没啥不同,不要把公元纪年想的那么神圣,只不过也是某个神话中的人物生日而已,而圣诞节更是源于庆祝耶稣的生日。只是后来国际上逐渐把公元纪年方法作为统一的标准而已,如果不是如此,可能现在还使用着类似民国多少年,或者皇帝四千多少年作为纪年方法。不要想当然的觉得农历纪年就是老土,用公历就是先进时髦,中国的阴历有其独特魅力跟意义在,很多时候是公历无法取代的。周杰伦有首歌叫《爱在西元前》其实这里的西元就是公元的另外一种称呼,意思是西方人使用的纪年方法。

    顺便再展开一下,在排命盘的时候会涉及到一个名词就是真太阳时,这是个什么意思呢,其实就是你的当地时间而不是标准时间。什么是标准时间,在中国就是北京时间,你的钟表的时间,就是以东经120度为基准的世界时。而什么是当地时间呢,举个例子,当北京时间8点的时候,东北沿海可能已经太阳升起很高了,但是在云南或者四川等地,可能刚天蒙蒙亮。因为地球自西向东运转,东部的地区更早日出,东部沿海要比云贵四川等地经度相差一二十度,具体的时间也相差一个多小时。当东部沿海8点的时候,可能云贵地区的当地时间实际上只有7点。这里可能有些同学不大明白,怎么一个七点一个八点,如果没有北京标准时间的话,当沿海8点的时候,云贵川实际上只有7点,但是全国统一使用北京时间为标准时间,虽然都是8点钟,但是云贵川的状态实际上是7点。好吧,这个越说越纠结。时间是东加西减,越往东,时间就也早,越往西,时间就越晚。

    在涉及真太阳时的时候,一般都会让你确定你出生的地区甚至经纬度,其实主要是经度,用你出生地所在的经度跟北京时间的标准精度也就是东经120度的精度差测算你的本地时间。经度每相差1度时间相差4分钟。比如成都的经度大概是东经105度,与北京时间东经120度相差15度,每度就是4分钟,所以成都的当地时间跟大家使用的标准时间也就是北京时间要相差一个小时,当早上钟表表上显示8点的时候,成都的当地时间其实只有7点,大概就是这个意思。

    今年台湾是民国九十九年,怎么把明国几年换算成公元纪年呢,直接把民国纪年加上1911年就可以啦。但是中国民国成立于1912年,这又是为什么呢?这就涉及到公元纪年方法。

    drawing0

    如上图所示,纪年方法有两种,A种是直接把公元元年记作公元一年,元是1的意思,类似我们常说的虚岁,一出生就虚一岁了,然后接下来就是公元2年,那么公元一世纪就是从公元元年到公元99年整一百年。B种纪年把公元元年记作公元0年,元始0的意思,这个有点类似周岁,接下来就是公元1年,那公元一世纪就是从公元1年到公元100年整一百年。在以前我国都是采用B种纪年方式,但是现在国际上通用A种纪年方式。举个例子,千禧年是2000年,如果按照B的计算方法,2000年并不是跨世纪的一年,而2001年才真正到21世纪。同理,在计算民国纪年和公元纪年的时候,中华民国成立于1912年,此时成立之初就是民国元年,等真的过了一年比如到了1913年的时候,就直接是民国2年了。所以民国纪年就是直接在公元1911年的基础上加上去就可以啦。

    写着写着,自己脑子都卡壳了,生日的时候,由于以前大家都是用阴历,所以在查询自己阳历生日的时候最好查一下万年历,不要想当然的以为阳历比阴历多一个月就是了。在查询自己是什么星座的时候也要去查询自己的阳历生日而不是阴历生日。

    嗯,休息,以后想起来再补充…