2018年11月的文档 19篇:

  
2018年11月17日 10:58

待填充。

固定链接 | 发表评论(0) | Trackback(0)

请珍惜眼前人
2018年11月17日 08:28

2018年是很特殊的一年,几位有杰出贡献的大作家(大师)、艺术家、名人,都相继离世。每次想起来,都感到一股悲凉。黄泉路上无老少,请珍惜、关心身边的、认识的每一个人,眼泪是不会说谎的。

固定链接 | 发表评论(0) | Trackback(0)

电信和联通宽带的2个细微差别
2018年11月16日 08:39

用了3年多的0月租电信ifree卡、用了1年的0月租电信阿福卡,对中国电信的热爱与日俱增,所以装宽带我当然更愿意回报电信。但是最近发现电信和联通的宽带功能上还是有点细微的差别,这2个功能又很少人用到,本文以北方的河北电信、河北联通为例:

1. 电信宽带目前不支持DMZ,所以无法内网传透;联通完美支持。DMZ,就是路由器里含有的DMZ、IP映射功能。DMZ和IP映射,功能相似,又略有不同。
DMZ的功能,就是如果一条宽带只有一个IP,需要把局域网内的电脑、或手机做成临时服务器,这时可以用DMZ、或IP映射虚拟一个端口,例如http://xxx.xxx.xxx.xxx:93 和 http://xxx.xxx.xxx.xxx:95,冒号后面的这个端口就是对应的2台服务器。

导致这个原因有可能是因为北方电信的IP地址短缺,所以多户共用一个动态IP。

2. SFTP连接服务器,电信宽带会断开闲置的0流量连接,大概3-5分钟就会断开,调试服务器时特别不方便;而联通宽带从未断开。

固定链接 | 发表评论(0) | Trackback(0)

静态HTML页→PHP→PHP+Linux(PHP+shell)
2018年11月15日 09:36

这是每个人的必经之路。静态HTML页,可以完成个人主页、展示网站,2-5年之内是网页的入门期,在此期间,FrontPage、Dreamweaver都是最好的网页设计、HTML代码学习软件。

一旦过了入门期,应该尽快适应用文本工具编写HTML源代码,彻底放弃FrontPage、Dreamweaver。

一个人要独立完成一个具有功能的项目,必须学习一门编程语言,例如PHP。纯粹使用PHP语言+内置的组件,已经能够完成很强大的项目,例如我们常见的国内外的大网站都能用PHP完成。

除了PHP,Linux系统(包括CentOS/Ubuntu/Debian等系统)为我们提供了一个更大的平台。PHP里,使用exec()或shell_exec()函数,能直接调用Linux的一切shell命令。例如$a1=shell_exec('ps -e');这个语句,在PHP程序里的$a1变量,获取的是当前系统的进程。

PHP+Linux,是在PHP的基础之上,轻松调用Linux系统下的各种软件、或组件。

在虚拟主机上,只能使用PHP语言+内置的组件;在Linux上,除此之外,还能调用Linux的shell命令、软件、组件。因此,对于PHP开发者来说,PHP语言+PHP内置的组件+Linux会更令人振奋,能实现更多功能。

固定链接 | 发表评论(0) | Trackback(0)

追求极限!CentOS和Ubuntu作为服务器的速度差别
2018年11月14日 08:05

一直以为CentOS和Ubuntu作为服务器,速度没有差别,所以2年多以来,我一直用CentOS 5+Apache+PHP为主力服务器环境,因为CentOS的配置比Ubuntu容易很多。前几天安装了Ubuntu 14+Apache+PHP,发现网页打开速度比CentOS+Apache,还要再略胜一筹,大约快20%~30%。这个速度差异,无法用软件测试,只能靠观察。

CentOS系统比Ubuntu大很多,无论是ISO的个人版,还是服务器版。比如新安装的系统,在服务器面板上显示:Centos 6 (32 Bit) Minimal,硬盘占用558.41MB;Ubuntu 14.04 (32 Bit) Minimal,占用263.02MB。

占用内存方面,CentOS反而比Ubuntu小得多。CentOS 5、CentOS 6,运行PHP后,占用9~18MB内存。Ubuntu 12,同样的站点,占用的内存9~24MB。
但是,从Ubuntu 14开始,内存占用量猛增,一个新安装的系统,昨天测试,运行PHP后,Ubuntu 14占用80多MB内存,Ubuntu 16占用107MB内存。但是速度上,Ubuntu 14和Ubuntu 12看不出区别。

Ubuntu 12也能顺利安装Let’s Encrypt。Ubuntu 11的服务器版已经取消了多年,只有ISO的个人版,官方也停止了Ubuntu 11的软件支持。所以,目前能用的Ubuntu最老版本为Ubuntu 12,能用一天是一天。

我更喜欢老版本的系统、软件,因为通常是版本越老,速度越快、越省资源。当然,也有少数例外。

固定链接 | 发表评论(2) | Trackback(1)

幸福来得太快!CentOS/Ubuntu/Debian的速度优化指南(日志篇)
2018年11月13日 11:02

前言:本文部分内容为暴(隔开)力优化系统,可能引起读者不适,请勿模仿。

大家的VPS普遍较快,并不是已经优化的原因,而是因为服务器的性能本身很高,即使没有优化,对速度的影响也较小。但如果再优化一下,是不是能让服务器发挥更好的性能?
请大家查看一下/var/log/btmp文件,是不是已经达到几十M,上百M了?这个文件很容易快速增长,是服务器性能的杀手,首先可以把这个文件删除。默认的这个系统错误文件,是开启的,网上也找不到彻底关闭它的办法。办法一定是有的,只是找到办法需要一定的时间。

在十多年前,大部分人都使用Windows服务器;如今由于Linux系统开源免费,成本大幅度降低,所以绝大部分人的博客、网站都使用Linux系统的服务器。Linux系统,又分为CentOS、Ubuntu、Debian等系统。其中,Ubuntu和Debian的命令、软件环境都一模一样,多数情况可以认为是同一个系统。除此之外,还有别的现行Linux系统,很多都分别与CentOS、Ubuntu的命令、软件环境一样。

因此,只要以CentOS、Ubuntu为例,其它系统都完全同理,比如Debian系统完全能用本文里介绍的Ubuntu的方法。最简单的区别的办法,如果安装软件、或update的命令是以yum开头,则与CentOS系统相似;如果是以apt-get开头,则与Ubuntu系统相似。

CentOS和Ubuntu系统,关闭/var/log/btmp文件的方法不同。CentOS的方法很简单,Ubuntu用相同的方法不起作用,只能用“暴(隔开)力”的方法。

CentOS或类CentOS系统:

CentOS 6运行这个命令即可关闭btmp文件:
killall -9 rsyslogd

CentOS 5运行这个命令即可关闭btmp文件:
killall -9 syslogd

说明:CentOS 7没来得及测试,理论上应该和CentOS 6一样。这个命令,每次重启后会失效,需要再运行一次。为防止忘记,或者服务器因某种原因被迫重启,可以把这个命令写在开机自启文件里。以前我测试过几个工作日,直接写,依然不生效。解决办法是使用sleep延时语句,让它开机3分钟后再运行此命令,在CentOS下能生效。
但sleep进程,不会自动清除,所以需要再加个killall -9语句来杀掉sleep进程。
这个sleep语句,如果直接写sleep 180,依然不生效。之后我改成了sleep 60; sleep 120;,大部分时间都是生效的。

步骤:修改CentOS的/etc/rc.local文件。如果有exit 0这个语句,这一行必须删除。

CentOS 6或7加入这一行:
sleep 60; sleep 120; killall -9 rsyslogd; killall -9 sleep;

CentOS 5加入这一行:
sleep 60; sleep 120; killall -9 syslogd; killall -9 sleep;

Ubuntu或类Ubuntu系统:

理论上使用和CentOS一样的方法,也能生效,但是实际完全不起作用,因为结束rsyslogd进程后,马上自动产生一个新的rsyslogd进程。只能用“暴(隔开)力”方法,这个暴(隔开)力,是对系统的文件进行修改,可能会产生致命错误,经过测试,网站目前运转良好,本文以Ubuntu 14为例。

尝试步骤1:
/usr/sbin/rsyslogd 将rsyslogd这个文件改名。

重启VPS,命令:
reboot

之后发现,虽然rsyslogd进程自动永久消失了,但/var/log/btmp文件仍然在继续增大,说明Ubuntu系统即使没有了rsyslogd进程,此文件仍然在增大。而CentOS系统,经过我这2年多的测试,只要没有rsyslogd、syslogd进程,这个文件是不会增加的。

尝试步骤2:
最后,干脆把/var/log目录改名,改为/var/log2,重启VPS,整个世界都安静了,网站也运行良好,没有出现致命错误。

Apache、Nginx、PHP的重要日志优化
默认的日志文件全部是开启的,而且很快变会得很巨大,是服务器性能的杀手。这些文件,包括访问日志、错误日志。如果没有特殊必要,建议将这些日志文件全部关闭。除非用于网站错误调试期,调试完尽快关闭。

这部分以后我会逐渐写一个完整的指南,由于时间的关系,这里简要说明一下。首先打开/var/log目录,Apache、Nginx在CentOS、Ubuntu下的路径有所不同,但是同理,比如这样的目录:
/var/log/httpd
/var/log/apache2
/var/log/nginx
/var/log/php-fpm

主要就是在这4种目录里。请打开这些目录,都是日志文件,是不是有的文件很巨大呢?其中,文件名带有“error”,为错误日志;带有“access”,为访问日志。打开这些错误文件,会发现里面有大量的无关语句,比如蜘蛛会访问网站上大量不存在的文件,这些都会写入错误日志里。

因为我使用Apache为主,所以Nginx的日志关闭方法暂时空缺,请大家搜索一下,时常监测这些日志文件、并清理。

Apache的错误日志的关闭方法,网上大多是将Apache的配置文件上的这一行删除、或加注释。但实际上不起作用,正确的方法是,CentOS+Apache、Ubuntu+Apache将此行改为:

ErrorLog Off

访问日志,只要将带有CustomLog logs/access_log的行删除,就能起作用,例如将这2行删除:
#CustomLog logs/access_log common
CustomLog logs/access_log combined

修改php.ini文件
CentOS/Ubuntu+Apache/Nginx的php.ini的路径都不同。列举几个路径:
/etc/php.ini (CentOS+Apache+PHP,或CentOS+Nginx+PHP)
/etc/php5/php.ini (Ubuntu+Apache+PHP)
/etc/php5/fpm/php.ini (Ubuntu+Nginx+PHP)

在php.ini里找到这一行:log_errors。默认值为On,改为:
log_errors=Off

重启Apache。

Ubuntu+Apache或类Ubuntu+Apache
Ubuntu+Apache,还多出了一个/var/log/apache2/other_vhosts_access.log的文件,这个文件会不断增大。解决的办法是:

/etc/apache2/conf-available/other-vhosts-access-log.conf 里的这一行:
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined 将这一行删除,或者在这一行的最前面加#

重启Apache。

是不是有些复杂呢?一点不复杂。练习几次,并做关键的本机笔记,每次只要10分钟就搞定了。VPS,比虚拟主机好用太多了,因为虚拟主机是无法关闭这些日志的。

2018-11-13 12:19更新
为什么CentOS 6不用删除rsyslogd文件的办法?路径为/sbin/rsyslogd。
删除rsyslogd文件,只适用于Ubuntu、类Ubuntu系统。

CentOS删除了此文件,重启VPS后,网站会无法访问,今天测试了半个多小时,重启Apache也不行,所以CentOS系统的rsyslogd、syslogd文件不能删除,只能用结束进程的方式。

2018-11-13 17:49更新
为什么标题用“幸福来得太快”?因为差一点要彻底放弃用Ubuntu系统(我喜欢用能优化的系统),Ubuntu系统的rsyslogd进程用killall -9命令结束进程后,马上就会再跳出一个rsyslogd,从而无法阻止/var/log/btmp文件的增大。当时想着要解决这个问题起码得半年时间的调试,没想到不到半个小时就调试出了解决办法,解决了一个大难题。所以说,幸福来得太快!

固定链接 | 发表评论(5) | Trackback(1)

Eachval Mlog独立微博的规则预告
2018年11月12日 08:05

Mlog,即micro log。项目未上线,游戏规则需要先制定,根据规则来编写程序。

  1. 鼓励原创微博,反对明文营销帐号的spam评论。
  2. 二级域名的流量,对Alexa排名的提升,和主域名是一样的,同样有效。
  3. 为避免将来用户需要目录转移,所以在开发时、安装时就设定为:
    微博地址不允许使用主域名,为了避免将来用户后悔而再修改,因为个人主域名通常用于博客、或个人主页。
    微博地址为二级域名根目录。建议为:each.domain.com,或mlog.domain.com,或者任意。
    微博的图片空间,需要存储上传的图片、用户头像,需要建立另一个二级域名,建议imm.domain.com,或者任意。
    这些二级域名一旦建立,如果没有特殊必要,建议尽量不要修改,因为外部的链接将会失效。
  4. Eachval Mlog程序的安装方法为在线安装,上传一个指定的php文件,会先检测配置环境,然后根据提示来安装,我在程序编写时,会让这个安装过程简化,尽可能实现一键安装。
  5. 用户使用电子邮箱、或手机号登录Eonval帐号,网名每隔2年,能修改一次。
  6. 一个Eonval帐号只能使用一个独立微博,如果需要建立多个独立微博,需要注册多个Eonval帐号。
  7. 为防止恶意抢注ID,对有一定知名度的网名,给予保护。如果确实被恶意抢注网名,可发起争议,可提供一个开通5年以上的博客链接、arch(隔开)ive.org的历史截图,并上传指定的验证文件,确认后可取回网名。
  8. 有点赞功能,点赞者、被点赞者都可获得0.3积分。
  9. 发一条新微博,获得1积分,被回复一次获得0.2积分。
  10. 微博默认对所有人可见,可设置只对好友可见。
  11. 微博默认所有已经注册微博用户可以点赞,可以设置为只限好友点赞。
  12. 微博默认所有注册帐号可回复,可设置只限好友回复。不开放游客功能,回复需要先注册帐号。
  13. 注册帐号时,注册的页面为eachval.com的平台。
  14. 登录时,登录的地址类似这样的形式:https://user.eachval.com/account/login/#domain.com (链接A),登录后会自动跳转至用户的微博。
  15. 不同域名间如何加载Cookies?比如一位网友在访问微博A、微博B、微博C,都是不同的域名,在微博A通过链接A登录了Eonval帐号,在微博A右上角会显示用户名。
    当访问微博B、微博C时,点击微博B、微博C上的链接A,会自动加载Cookies、并自动跳转到微博B或微博C,无需再输入密码。
  16. 第1条的明文营销帐号,例如该用户的网名是“××营销”“××推广”,然后大量到别人的微博里点赞、回复,这类规定为spam评论。这类营销平台,允许他们免费使用此微博程序发展自己的项目,但是禁止spam评论
    用户可以向Eachval平台指出spam评论,如果被多人指出,可能会封禁此微博用户。
    同时,明文的营销帐号,禁止向微博社区推送,仅限于在自己的微博站点中发布信息。

    为净化网络,注册的网名不能带有“××营销”“××推广”等有广告色彩的词汇

  17. 评论的审核机制。默认为网友(注册用户)第一次在自己的微博里留言、或点赞,需要审核。(这一机制类似于现行的大多数博客的回复)
    可以在后台设置,将来的留言是无需审核(默认无需审核),还是每条都需要审核。
  18. 评论的安全。该安全性对域名的影响,与现行的大多数博客是完全相同的,评论会明文呈现。如果想提升域名的安全级别,后台可以设置为“阻止搜索引擎抓取评论区”。
  19. 微博主可以删除评论、限制某位用户回复、点赞。
  20. 升级功能。由于Eachval Mlog程序自始至终是我一个人开发,作者只有一个人,所以在后期的更新上,几乎没有多余的垃圾代码,过期的无效代码都会删除。程序分为主程序、后援程序,主程序就是主要的页面,后援程序包括用户提交数据后的处理、后台程序。主程序在编写时,本身的结构是高度优化,主程序整个核心部分在5K以内。后援程序,无论有多少都不会对主机性能有影响,后援程序越多,则功能越多。
    升级分为2种形式:用户主动升级,强制升级。主动升级,是用户定期检查有没有新版本,升级后可以获得新功能,或者对原有程序做一定的修改。强制升级,是有些旧功能无法适应平台的更新,这时候必须升级后才能正常使用。
  21. 有多个微博怎样升级程序?Eachval Mlog在升级程序上,用户可以自主关联所有的微博,一键自动遍历所有的站点、自动更新多个微博,而不用一个一个站点去手动更新。
  22. 微博程序,支持英、简、繁语言,oival.com为Eachval的微博社区,可向微博社区推送非商业微博,提升访问量。微博社区也分为英、简、繁三大版块,如果微博程序设置的是简体中文,则会推送到简体中文的社区版块。
    oival社区为分类社区,推送时只能发到一个分类,例如选择“手机”的标签,则会发到手机社区。
  23. 不得在微博中诽谤他人。

固定链接 | 发表评论(2) | Trackback(0)

近期写了很多的VPS新机安装和配置的博客原因2
2018年11月11日 12:05

如果一个人需要上山去砍柴,很快会想到需要一个工具:斧头
如果一个人需要去采集草,很快会想到需要一个工具:镰刀

要完成一件事情,需要相关的工具、技术,就像砍柴、采集草一样。当买来了镰刀,发现拔草、采集草,变成了割草

web的过程比砍柴、割草复杂得多,在技术的道路上越走越远、越走越深,仿佛到了一个很深的森林。这些技术,是每个人的必经之路:免费空间、免费域名、国际域名申请,FrontPage,HTML代码,CSS,静态页,个人主页,虚拟主机,FTP,VPS,SFTP,SSH(Xshell),PHP,JavaScript,第三方PHP程序,数据库,缺一样都不行。

这些技术,是从0开始渐进的。
整整14年没有更新Webshu了。我有一个想法,重新再次更新,把这些技术从0开始,整理一遍,做成一个专题,让网友从0开始,很快上手VPS,完成个人主页、博客、微博的搭建。

建一个每天100-300 IP的个人主页、博客、微博,十分容易,只要坚持更新半年,适当在别人的博客、微博留言,一般都能达到100-500 IP/天以上。
100-300 IP/天的英文博客、微博,如果是国外流量,AdSense收入能保持在$0.2-$5/天以上。如果每天有0.5美元,一年$180,完全能把域名、空间的成本收回来,还赚了很多。

中文站的AdSense,同样的流量,收入约是英文站的1/2~1/15。也可以申请百度联盟,但需要有ICP备(隔开)案号。

全免费的独立微博程序Eachval Mlog,正在着手开发。

如果选对主题,获得流量是容易的。比如Webshu,在2003-2004年更新了整整一年,全站110多篇文章(全部原创),当时的Alexa排名3万多名,持续了半年以上。那时候的流量,可能有很大一部分是里面仅有的2个单版块论坛,一个是网页论坛,一个是咨询论坛。IP数,我当时没做计数器,估计也就在500 IP~2000多IP/天这样子。

后来本博客上线之后,Webshu就忘记了更新,注意力变了,一转眼很多年没再更新。本博客的流量可能比Webshu大一些,但是Alexa排名最好时也只有55万名。
现在因为互联网上网站比以前多了很多,所以同样是2000 IP/天,现在Alexa排名估计在30万~40万名。

纯粹的个人主页、博客、微博,如果没有收入,是较难坚持下去的。获得一些正当的广告补偿,何乐而不为?有利于身心健康。

固定链接 | 发表评论(0) | Trackback(0)

新项目的logo设计
2018年11月09日 08:20

除了Blogval是前几天设计的,另外的4个logo是昨晚花了不到1小时,一次批量完成的。由于时间的关系,都暂时没有吉祥图标,或者字体修饰。(其中,Eachval最好需要有一个吉祥图标。)
(附:Eachval将是一个独立微博的程序,每位微博主需要有一个网名或真实姓名作为ID,ID中不允许带有空格,这是因为 @Abc 的时候,程序是自动从@开始检测,直到出现空格的位置结束,识别出被at者的网址。例如网名 Abc Def,@Abc Def 的时候,只能识别出@Abc。
这个网名的规则设计为不区分大小写,例如Abc被注册,abc则无法注册,网名可用中文。)

这5个项目里,命名顺序依次是Feedval、Eachval、Eonval、Blogval、oival。其中,Eonval是一个自营的原创免费软件发布平台、帐号管理平台,这个名字也是经历时间最长才定下来,经历了30个备选名字。

Eachval是2012年时完成了Arsue Blog程序的编写,马上有了独立微博的想法。如今,再次想把这个想法复活,程序都是开源免费,后台一键升级。此程序安装在用户的二级域名下,VPS、虚拟主机都可以运行,PHP+NoSQL构架。

oival的命名经历的时间较长。Eachval的一个创新模式,是自身将会推出一个平台,用户所发的微博,都可以推送到这个平台上。当然,也可以不推送,Eachval是微博、论坛双用。这个平台上显示的内容,就像分类论坛、贴吧一样,所不同的是帖子的链接都是独立微博上的链接。为什么不用Eachval的二级域名做这个平台?为了避免you(隔开)tube、twi(隔开)tter被wall的命运,所以此项目打造了第2个平台oival。国外知名的平台cafe(隔开)press.com,是定制礼品、定制T恤衫的平台,几年前还能访问,实在是想不出什么原因不能访问。

Eachval的这个社区平台,命名十分纠结,经历了6个备选名字。本来orival是很理想的,但是被注册了,他的注册时间竟然是1997年。最后在oival和另一个7个字母的名字ori****中选择,ori是一个很美的词,犹豫了2天,决定使用oival,oi含义是original imagination(原创的想象力),简称“原想”,这个平台就叫做“原想微博社区”,简称“原想社区”,或“OI社区”。(在这之前,oi锁定的含义是original inspiration,原创的灵感,后来发现imagination的含义更好。)

oival的读音是['ɔivəl],或['əuaivəl]。

oival原想社区最初的版块分布,是一个国家/地区,建立一个大版块。后来,改为英/简/繁3个大版块。

Eachval和oival是同一个平台。结构和2009年完成的tgfor论坛项目(tgfor的开发日记),以及2011年时完成的orshu论坛(部分开发日记),是一样的。当时的tgfor论坛程序从0编写,仅用40天左右完成;orshu论坛和帐号程序,初期不记得用了多久,后期的大修改用了2个月以上。

固定链接 | 发表评论(0) | Trackback(0)

为什么近期写了很多的VPS新机安装和配置的博客
2018年11月08日 07:18

最近VPS面板突然盛行。VPS面板和手动命令,各有各的优点。手动命令,可以让我们不依赖于任何面板。面板,实际上就是Linux开发者把相关的命令集成在面板上。
功能上,手动命令功能更强大、丰富,但需要记录笔记、调试,熟练后其实手动命令更直观;面板,使用方便,但功能有限,对于开发者来说,开发的工程量很大,要考虑不同环境的兼容问题。

因为我正在开发的几个新项目,都是给用户提供免费的程序,运行在用户的VPS、或虚拟主机上。我需要在不同的环境下测试运行,恰好手里的VPS多,每个VPS安装了不同的系统。

以前我个人的主力环境是CentOS+Apache+PHP,现在不得不在CentOS/Ubuntu+Apache/Nginx环境下测试。

长期使用一种环境,当这个环境成为主力之后,会对这个环境很熟悉。2年多以来,用惯了CentOS+Apache+PHP,另外的3种环境,需要开始去尝鲜测试。

当发现了这4种环境的不同、并熟悉这些不同,无疑是令人很兴奋的。这4种环境,有2种系统,2种网页服务器后台。其实,Debian和Ubuntu,对于服务器来说经常可以大概地认为是同一种系统,命令、软件环境都一模一样。

一直使用CentOS+Apache,是因为CentOS下的Apache,比Ubuntu+Apache的配置容易一些。习惯之后,其实Ubuntu+Apache也不麻烦。

另外,Apache和Nginx的环境,在配置上有较多的不同。我的主力环境以Apache为主,但是大家的服务器大多以Nginx为主。为什么我会以Apache为主?因为Nginx距离完美,只差小小的一步:Nginx不支持.htaccess,如前文。技术上完全能支持,但是很遗憾,作者没有开发。当然,目前的最高版本Nginx我没有测试过,改天写一个测试的记录。

过去也有人说Nginx支持.htaccess,方法是在Nginx的配置文件里(/etc/nginx/sites-available/default或/etc/nginx/conf.d/default.conf),写入一行include的包含语句,包含那个.htaccess文件。其实,这种方式并不是真正的.htaccess,这是伪支持。原因有2个:1. 如果把这个.htaccess文件改成任意扩展名,一样能支持。2. 通过include的包含语句来加载配置语句,这相当于是把配置语句直接写在Nginx的配置文件里,因此Nginx的这种方式是全站的全局设置。

Apache真正支持.htaccess。Apache的.htaccess,经过测试,作用的机制是对当前目录、以及这一级别下的所有子目录有效,既可以全局、也可以局部。

在抗高并发方面,尚未有条件能测试。Linux系统,CentOS/Ubuntu/Debian本身是多任务的系统,我发现用ps -e命令,能经常看到有多个Apache的进程,并非只有一个Apache进程,这说明Apache开发者在抗并发方面是有考虑的。

固定链接 | 发表评论(2) | Trackback(0)

几个急需改进的大平台
2018年11月07日 11:00

1. 淘宝的收件人地址,大约从2015年开始,强制给街道分类。本来我的收件地址,自身有一个独立街道A,但是分类的街道模板,将我这边的街道A,强制隶属于另一个街道B,结果有几次,新的快递员总是把快件分拨到街道B,导致快递要延误1天才能到我这里。

例如我的收件人地址正确是:××省 ××市 ××区 ×××街X号楼X单元
被强制街道分类后是:××省 ××市 ××区 ××××街道 ×××街X号楼X单元

2. 从2017年下半年,手机网页版百度的前几个结果、百度首页的推送,经常是文章只显示前2段,想看后面的内容必须安装APP,如下截图:

同时手机网页版百度,服务器很慢,经常打不开,大约从2016年开始有这个现象,现在有70%以上的机率打不开。所以手机web版搜索,只好一直改用360搜索。

3. 工行APP。安装包现在已经102.25M,每次启动会停留在这个画面1.5分钟以上:

所以每次启动,只好把手机屏幕点亮,手机放在桌子上,等它的广告慢慢过渡完成。
半年前还没有这种现象。

4. 百度的百家号文章,发表时间,有的有年份,有的没有年份,让读者无法分清文章是哪一年发的,如下截图:

看到这样没有年份的文章,很多时候只好关闭浏览器,因为完全无法判断这是较新的信息,还是以前写的信息,还是过时的信息。

5. 知乎,强制升级浏览器,这有可能是已知的国内外唯一的一个强制稍旧一点的浏览器禁止访问的站点,我的机器有点老,一直使用2014年推出的火狐34,较为浏畅,支持HTML5,访问大多数的网站都没有问题。访问知乎的网站总是会出现如下画面:

手机版网页的知乎可以正常浏览,所以每次只好用手机浏览。当然,使用最新版的火狐60,可以正常浏览。

固定链接 | 发表评论(1) | Trackback(0)

VPS新机安装:2步配置快速完成CentOS 6+Nginx+PHP的安装;解决Nginx下PHP空白的问题
2018年11月07日 07:11

由于之前的Ubuntu 14+Nginx+PHP安装成功,本文和之前的方法几乎是类似的,这一篇是从前一篇的Ubuntu的方法里移植过来的,只有少量的不同。请有需要的读者,使用CentOS 6系统(x86、x64、完整版或minimal版都可以),按照本文走一遍调试的过程,就可以避免Nginx下PHP空白的问题。本文以CentOS 6.5为例

准备前工作:
首先确保系统里没有Apache、PHP,因为会导致冲突。检测Apache是否存在的命令为:
if which httpd; then echo "Yes"; else echo "No"; fi;

如果显示Yes,这样卸载,命令:
rpm -qa|grep httpd

会返回Apache的完整名称,例如httpd-2.2.3-22.el5.centos
用这样的命令卸载:
yum -y remove httpd-2.2.3-22.el5.centos

PHP是否存在、卸载命令与上述同理,命令为:
if which php; then echo "Yes"; else echo "No"; fi;
如果显示Yes,这样卸载:
rpm -qa|grep php
yum -y remove ……

正式开始安装Nginx+PHP:

CentOS 6无需先update,这一点和Ubuntu不同。

命令1,安装rpm依赖包,耗时2秒以内:
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

命令2,安装nginx、php,耗时约16秒:
yum -y install nginx php-fpm

至此CentOS 6+Nginx+PHP已经安装完毕。接下来需要做2个关键配置:

1. 使用Xftp软件,连接VPS。找到/etc/nginx/conf.d路径,下载该目录下的default.conf文件。
用文本工具打开此文件,找到如下这些代码:

#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

上述的代码删除,修改为:

location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

这一步和前文的Ubuntu系统不同,Ubuntu系统下只需2行即可。

2. /etc/php-fpm.d/www.conf
此文件无需修改,因为默认的值就是:listen = 127.0.0.1:9000
如果不是此值,请修改为此值。

3. /etc/php.ini
找到short_open_tag这一行,默认的设置为short_open_tag = Off,改为:

short_open_tag=On

之后,重启Nginx、PHP,命令:
service nginx restart && service php-fpm restart

此时,已经能够顺利运行PHP程序,其它的配置文件无需再修改。
这时,上传一个写好的PHP程序1.php到默认的/usr/share/nginx/html目录,测试一下吧。
1.php写入内容:
<?phpinfo();?>

成功如下截图:

最后,要重点说第3步,这个步骤至关重要。其实到第1步已经能支持PHP,第2步无需配置。第3步的作用是,允许<?$e1=5;?>这样的短标签,否则PHP的程序部分会显示空白(PHP不运行)。

固定链接 | 发表评论(1) | Trackback(1)

dns.la服务器再次宕机
2018年11月06日 12:17

记不清使用免费的dns.la有多少年了,印象中大概是从2010年左右开始使用,一直十分稳定。此DNS服务器前几天有过一次宕机,今天第2次宕机,导致本博客无法正常访问。所以,紧急更换DNS。
但还是要大力感谢dns.la这些年提供的免费服务!

大多数的中文博客的第三方DNS,都使用dnspod。以前我用过一小段时间,但唯一的问题是这个DNS的二级域名的名字非常奇怪(有待修改),所以一直没有使用。如今dnspod已经被腾讯收购。

今天搜索了一下,找到了dns.com。这个域名,是不是太重量级了?居然被中国人买到了,这是我们中国人的光荣!dns.com的二级域名也很大气
ns1.dns.com
ns2.dns.com

然后修改为dns.com的DNS,目前运转良好。

固定链接 | 发表评论(1) | Trackback(0)

正当维权、报复的区别
2018年11月06日 06:56

正当维权 正义
报复 不善

报复≠正当维权。其实大多数人都明白这个道理,也很容易分清报复、维权之间的界限,却容易忘记,常把报复当作是维权,从而损害、或者变本加厉损害别人。
因果定律,会把曾经的不善,在某个时间返回到自己身上。善待别人,就是善待自己。

现实中善良的人很多,很多善良的人常常维权也不去维权了,因为有很多确实不必要。

很多看似很大的事情,在时间面前却变得很渺小,因为处理事情需要很多时间成本。人生最大的敌人是时间,没有人能挡住时间的流逝。

固定链接 | 发表评论(0) | Trackback(0)

Windows本机用IIS+PHP VS Apache+PHP
2018年11月05日 10:29

这两者如果运行PHP,功能上可能没有太多区别。但是效率上,差别较大,如之前的测试结果,Apache+PHP通常比IIS+PHP快很多。

Windows非server版,在本机建立虚拟主机,较难实现。Apache在本机建立虚拟主机,很容易,例如使用http://ww2.abc.com来访问本机上的站点,
IIS只能用http://localhost/虚拟目录 的形式。

IIS其实也能实现http://ww2.abc.com的效果,就是在IIS里把localhost改成ww2.abc.com,但这样只能支持一个站点。每次要调试别的站点,必须改localhost。而Apache,则轻松支持多站点。Apache在本机建立虚拟主机,方法如这里

Apache+PHP,另一个好处是在Windows下调试PHP的站点,和服务器版的Linux+Apache+PHP环境,几乎没有区别,完全模拟Linux下的环境。因此,Windows下,用Apache+PHP是最理想的。

总结,本机使用这两者的差别:

IIS+PHPApache+PHP
速度中等
.htaccess不支持支持
与LAMP环境中
的PHP编写差别
很多不同几乎没差别
多站点的域名访问不支持支持
泛域名解析不支持支持
安装难度简单更简单
配置难度容易容易
能否备份配置文件未测试可以

虽然在本机PHP方面,Apache在多方面完胜IIS,但IIS的功劳不能抹杀,我在2002-2009年的主力本机开发平台是IIS,之后才转向Apache。

固定链接 | 发表评论(2) | Trackback(1)

VPS的快速安装和PHP调试导航页
2018年11月04日 08:52

前言说明:会者不难,难者不会。虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。只是我们任何人,从0开始,要熟练这个过程,至少要花费1-3天的过程,这就和开车的道理一样,需要有一个入门到熟练的过程,多加练习可以快速缩短这个过程

本博客自由勇专栏每天启航,从2003年开始撰写,到现在共1300多篇文章,其中有几百篇教程。所有文章都是原创撰写、亲自尝试,回顾过去这些文章,大概只有不到10%会受时效的影响,也就是当时起作用,过了几年之后,由于第三方网站、第三方软件的更新,或者停止支持,导致现在无法成功。或者几年前的一些软件,现在已经搜索不到下载地址,导致无法和我写的这些调试记录使用相同的版本。
而本机版软件的操作,或者联机版软件、操作系统如果现在还能使用,那么基本不受时效的影响

本文标题使用了“快速”,是因为这些文章里,有很多遇到的每个小问题,至少要花费我半个小时、几个小时,甚至两三天、几个月才能解决,当我解决之后,会记录在本机的重要调试笔记里,或者写为博客分享出来。读者如果根据这些博客的步骤走一遍、并尽量使用与我相同的环境,一般5-10分钟内可以完成初步安装,半小时内能完成整个调试,这个时间已经相当快了。并且,如果读者使用和这些文章一样的环境、步骤,通常也不会出现额外的问题,可以顺利完成。等熟练这些操作之后,再更换、或移植到别的环境中。

VPS的新机安装,预计共有30-50篇文章,每篇文章需要花费我2-4小时的时间来一边调试、一边写作,我会抽时间陆续编写,敬请期待本页的更新。

服务器版:

优化篇:

本机调试版:

开发者篇:

附加,评测篇:

固定链接 | 发表评论(0) | Trackback(0)

VPS新机安装分享:Let’s Encrypt的https正确安装方法
2018年11月03日 09:03

SSL我前后经历了一个多月,始终没有安装成功。网上也搜不到一个更为系统、有效的成功教程,经过这几天的调试,终于成功了,并测试了多种环境,所以写下此文与君共勉。为什么我之前安装总是失败呢?因为Let’s Encrypt的安装脚本有个bug,恰好不支持我的主力环境CentOS+Apache。Let’s Encrypt的官方安装脚本,是一个全自动的脚本,在调试中目前支持这几个系统环境:

CentOS+Apache ×
CentOS+Nginx √
Ubuntu+Apache √
Ubuntu+Nginx √

如果你的系统正好是和我一样使用CentOS+Apache,也可以安装,但是安装完成后,用https访问页面,会出现自签名证书页面,提示“此连接不受信任”。这个bug尚未解决,但将来一定能找到解决方法。
其余3种环境,安装完成后,可以顺利访问https。
Debian系统,因为有太多与Ubuntu的环境、配置相似,一般情况下Ubuntu支持的,Debian也一样支持。

导致安装Let’s Encrypt失败,有很多原因。所以需要有一个成功的案例,能够帮助排除这些失败的因素。本文的调试步骤,请读者使用Ubuntu 14、或CentOS 6系统来调试。

重要的准备工作:首先必须给Apache、或Nginx建立站点;必须让域名正确解析到该服务器,并生效,调试时可以用一个二级域名测试。这2个条件,缺一不可,否则会安装失败。
先用http://访问站点,能正常访问之后,才能开始安装Let’s Encrypt。

完成上述这2个条件之前,还有一个重要条件,服务器必须先确保安装Apache、或Nginx。Apache/Nginx的快速安装方法请见这里

Apache、Nginx建立站点比较简单,本博客未写步骤,以后再添加,链接会添加在本文的这个位置。(CentOS/Ubuntu+Apache/Nginx+PHP的环境配置,大约需要写5-10篇,消耗20小时以上的写作时间,我会逐步撰写。)

开始安装Let’s Encrypt,shell命令:

wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto && ./certbot-auto

之后就没有然后了,全自动完成安装、配置。这个官方脚本会自动识别服务器的类型,自动安装很多软件,并自动修改Apache、Nginx的配置文件,完全不需手动配置。只要是符合文章开头的后3种环境、和2个条件,都能100%成功。这个脚本将来也可能会受时效的影响,无法安装成功,目前是测试能成功的。

安装过程中,有很多英文提示,这里就不一一截图了。有提示A(gree),输入a;有提示Y(es),都输入y。
其中,到了输入email之后,会提示A(gree)、Y(es)。之后就是最后2步了,会有一个已经建立的站点的域名列表,输入数字,如下图,我输入1:

如果这个域名尚未解析成功、或未解析到当前服务器上,会有如下错误提示:

如果域名解析成功,已经到最后一步了,是否将http 301跳转至https,我选择1,不跳转,如下图:

最后,重启Apache、或Nginx,https顺利安装成功,如下图:

虽然本文写完了,本博客还是暂时不使用https,原因是:前文1前文2。有一定的性能损失,测试了很多次,同一个页面,http比https访问快不少、快很多。

https对于开发者来说,是一种困扰:2018年7月,谷歌浏览器贸然把所有的http已经标为“不安全”。

对于公开的论坛、博客、新闻页面,如果没有特定需要,一般可以不使用https,我更加拥护http。如果是建英文网站,做国外项目,那就没有办法,可能不得不用https。因为2014年之前,国外99.5%以上的知名站点都使用http,如今国外80%以上的知名站点都使用https。

https只是提高了安全级别,http并非不安全。密码通过JavaScript在发送前加密、或MD5加密、类似MD5加密,方法如我写的前文,都能使http达到https一样的安全效果。

https,一些商业项目需要充门面的时候,能助你一臂之力。但实际的页面访问速度、抗高并发,还是http更好用,因为https是对整个网页的所有内容进行hash加密、还原,而且用于加密、还原的证书文件那么长,必然要消耗资源。

同一IP能否使用多域名的https?
早期一些的SSL,一个IP只能使用一个域名的https。经过测试,同一IP,Let’s Encrypt可以多个域名。

附1:安装失败或者误操作怎么办?
运行命令:
./certbot-auto

附2:免费续期
Let’s Encrypt的免费SSL有效期3个月,每隔2个月输入以下命令:
./certbot-auto renew --force-renew

输入命令后显示如下截图:

如果提示:
./certbot-auto: No such file or directory
是因为在/root目录下,certbot-auto文件被删除。执行这个命令重新下载:
wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto

然后再手动续期:
./certbot-auto renew --force-renew

自动续期需要用到crontab命令的定时任务,因为时间的关系未测试,大家可以搜索crontab命令的用法。如果调试中不生效,可能是由于关闭了SSH窗口的原因,需要建立一个screen。
这个定时任务,每次重启VPS后都需要再次添加。也可以在/etc/rc.local文件建立自启任务,添加这个crontab命令。/etc/rc.local有很多时候也不生效,可以先写入sleep 180;会好一点,但仍然有失效的可能,所以这个重要的任务,最好还是每次重启VPS后手动添加crontab命令。

固定链接 | 发表评论(3) | Trackback(2)

美国/欧洲/亚洲VPS,网站和博客的速度优化最新建议
2018年11月02日 08:48

2003年时我做的Webshu平台,由于没有赢利点,所以曾推出过“网站提速工程”的创意服务。虽然工作量很大,但还是坚持推出。尽管当时无人问津,业务量为0,但由于长期关注这些技术和测试,给了我不少灵感。

美国、欧洲的主机,价格最便宜,带宽大(100Mbps、1000Mbps共享),但是中美间线路不够理想。国内、香港的主机,价格较高,网络速度一流,但是带宽小(2Mbps~5Mbps独享),贝岸手续繁琐。因此,亚洲最理想的主机只有韩国、日本,网络速度快、带宽大,但是价格高。

几年前中文博客开始掀起了美国主机的热潮,当时超过半数的独立博客都迁到了美国机房。如今的情况相反,超过半数的独立博客搬回了国内、亚洲机房,因为国内、亚洲机房的网页不是秒开,而是极速、瞬间打开,国内、亚洲机房的延迟在20ms~50多ms。

本博客和新博客都使用相同的构架,程序语言+NoSQL,全动态实时生成,非静态缓存。因为生成静态缓存页失去了很多功能,静态缓存的程序设计需要考虑很多因素,动态页一直运转良好,速度接近于静态页,所以一直没有做静态缓存的程序设计。全动态页面速度测试:
http://www.auiou.com (美国VPS,单核CPU,SSD硬盘,网页启用GZIP)
http://blog.emxel.com (美国VPS,单核CPU,可能是HDD硬盘,网页启用GZIP)

美国、欧洲还是有不少好主机,可以这样做优化:

  1. 域名的DNS一定要用国内的。虽然用国外的DNS,速度影响不太大,用国内的DNS会明显感觉首次解析的速度更快。
  2. 首先需要挑选线路。入手之前,分不同时段ping一下测试IP,如果早晨在200ms以内,是比较快的主机。从傍晚到晚上,如果丢包率较高、延迟在300ms以上,说明这个线路不好,需要更换。
    大多数的欧美主机,都是这样的情况,延迟早晨在200ms以内、或220ms以内,傍晚到晚上延迟在230ms~300多ms。只要丢包较少,即使是300多ms,网页还是可以秒开。
    少数优质的CN2线路,现在能做到无论是早晨、晚上都在180ms以内,这是比较理想的欧美主机,速度体验一流,甚至超过一些国内、亚洲主机,因为国内、亚洲主机虽然速度飞快,但是带宽小、有些主机有一定的丢包率。
  3. SSD硬盘。SSD硬盘和HDD硬盘的主机,速度差别还是很明显的,SSD硬盘的寻道时间比HDD硬盘快了几倍。追求速度,一定要用SSD硬盘,因为网站有大量的小软件,如图片文件、CSS、JS等文件,SSD硬盘对大量小文件的读取比HDD硬盘快得多。
  4. 单核、双核CPU的选择。有条件尽量选双核,在1000IP或3000IP以下/天,可能区别不大。但是在高并发的情况下,可能会有较大区别。
    10年前的服务器,全部都是单核,那时候的速度也很快,因此单核的空间,也是有可用之处。
  5. 关闭Apache、Nginx、PHP所有的访问日志、错误日志,因为这些文件很快就会到达几兆、几十兆、上百兆,并定期检查这些文件,用shell命令将它们清空,因为有些日志即使在配置文件里关掉,实际还是无法彻底关掉。例如CentOS的日志文件路径为:
    /var/log/btmp
    /var/log/httpd/access_log
    /var/log/httpd/error_log

    清空的方法,是先用rm -rf命令删除,再用touch命令再建立一个0字节文件,例如:
    rm -rf /var/log/btmp; touch /var/log/btmp;

    上述3个文件用这样的命令一次清空:
    rm -rf /var/log/btmp; touch /var/log/btmp; rm -rf /var/log/httpd/access_log; touch /var/log/httpd/access_log; rm -rf /var/log/httpd/error_log; touch /var/log/httpd/error_log;

网站、博客内部的优化,可以大幅度提高速度:

  1. 对于访问速度较慢的动态页面,需要生成静态缓存页、甚至全站生成静态缓存页。(本文最后继续讨论)
  2. 百度关键词“GZIP 查询”。GZIP能大大提高网页秒开的速度,我发现大部分博客由于Wordpress、Typehco的程序自带GZIP,已经启用了GZIP。但是很多博客使用了静态缓存页,这些静态缓存页,大部分博客已经使用GZIP,但有少数博客的静态缓存页没有使用GZIP。
    PHP动态页可以在网页的最开始写入<?ob_start('ob_gzhandler');?>语句,实现GZIP。如果生成的静态缓存页扩展名是.html,则只能在Apache、或Nginx添加,百度关键词:Apache GZIP 或 Nginx GZIP。
  3. 博客与图片的主机分开,图片使用二级域名。
  4. DIV+CSS。DIV+CSS大概在2006-2007年左右被前端开发者发明出来,实在是一项非常重要的发明,因为DIV+CSS的网页,是边下载HTML边显示,会让人感到网页非常快;在这之前,只能用table,如果整个网页是一个大talbe,需要等整个HTML文件里的table元素全部加载完毕才能显示,比DIV+CSS要慢0.5秒~1秒,差距非常明显。
  5. .js文件的位置,.js文件也可以是.php的动态页,都一起称为.js文件。.js有很多的网站,也包括我很多年以前也是这样做的,在需要显示数据的位置用<script src=****.js></script>引用.js文件,如果这个位置是HTML页里较靠前的位置,则浏览器打开该页面时,必须等此.js文件加载完毕,才能显示后面的内容,这样网页打开时,会有较长时间的空白期,如果这个.js文件是站外的域名,这个空白期可能会在0.5秒~3秒以上。
    解决的办法是:原来的这个位置,设置一个ID,用div或span标签来建立ID,例如<div id=abc></div>。之后,在该HTML页的最后,引用此.js文件,此.js文件写入这样的语句:abc.innerHTML='data 1234'; 这个“data 1234”就是要在该位置显示的内容,这样网页仍然能秒开,而不会出现空白期。

静态缓存程序的编写,或者称为“静态缓存插件”。静态缓存页确实能让网站跑到最极限的快速,但我一直尚未用这个方法。静态缓存页也有几个缺点:

  1. 程序设计有点繁琐。
  2. 由于是纯静态页,所以网站改版的时候,每个静态页都需要再编写程序自动批量修改公共部分。而动态页,网站改版时,只需修改公共的include()文件。
  3. 静态页失去了很多动态页的功能、便利功能。例如现在很多博客使用了静态缓存页,发现留言之后,无法保存Cookies。这是为什么?因为HTML页无法像PHP一样读取Cookies。不过,幸运的是JavaScript提供了读取Cookies的功能,解决的办法是让所有的HTML静态缓存页,同时包含同一个.js的文件,该文件写入document.all.inputnamea.value=(Cookies-a);document.all.inputnameb.value=(Cookies-b);这样的语句,给表单自动填充上Cookies。

最后,如何产生静态缓存、编写静态缓存的插件?从0编写这样的程序,至少需要1-3天的工作量。前几年,我完成过2次这样的程序,第1次用了大概三四天,第2次用了1天左右。原理很简单,调试时就是把整站在本机电脑建立虚拟主机,通过http://访问,写程序时需要实现的功能是用file_get_contents()自动采集、用strpos()和substr()函数分析和遍历该站点下的所有站内链接,并生成HTML文本文件。

对于博客而言,除了上述的这个步骤,还需要再编写额外的php动态插件。这些文件扩展名为.php,被相关页面用include()函数包含。比如用户留言的<post action=>指向的这个文件包含该插件,让用户留言后,该插件实时生成一个新的博文HTML静态页。
发布博客、修改博客同理,让插件实时生成一个新的博文HTML静态页。

这些HTML静态页的扩展名,现在大家的博客在用的静态缓存插件,可能都是.html。其实我更建议生成的扩展名可以是.php,或者用.htaccess文件指向一个php文件(Nginx不支持.htaccess,只能修改default或default.conf文件来实现),来包含这些静态缓存,这种方式是半静态、半动态(其实90%以上的都是静态),可以实现部分动态功能。这样对速度不会有影响,因为我使用全动态都没有影响,更何况90%以上的静态页。

固定链接 | 发表评论(4) | Trackback(1)

VPS的新机安装:3步配置快速完成Ubuntu 14+Nginx+PHP的安装;解决Nginx下PHP空白的问题
2018年11月01日 11:32

我写的程序是以CentOS+Apache+PHP平台为主,因为有些功能无法在CentOS中实现,所以也使用Ubuntu+Nginx+PHP来实现,比如Let’s Encrypt对Nginx的支持比较好,SQLite3对Ubuntu+PHP的支持比较好。

Nginx+PHP的配置,比Apache+PHP复杂很多,Apache+PHP的快速安装和配置如前文。Nginx+PHP前年我成功安装过,当时也是调试了几天。

这次调试了将近2天,遇到了各种问题,终于完成,所以立即把成功的步骤记录下来。这次调试的系统版本是Ubuntu 14.04 x64 Minimal。其它的Ubuntu版本、或者Debian系统,步骤大体相同。Ubuntu 14的服务器版,x64和x86有一点不同的是,x64版不带Apache;x86自带Apache,需要先卸载Apache。

网上的资料,十分丰富,但是文章的发布者,按照文章亲自试一遍,却很少,并非是他的亲自安装记录。当然,也有一些文章受时效的影响,有一些系统、或第三方软件由于更新,导致以前的安装步骤失效
Ubuntu+Nginx+PHP,会遇到很多问题,比如PHP程序为空白,502错误,找不到文件。根据很多资料的尝试,也没有解决问题。

请严格按照本文的步骤,定能一次成功,配置步骤十分简化,只需3个配置步骤。安装前的准备工作,请确定系统内没有Apache,因为如果Apache不停止、或不卸载会导致Nginx无法启动,用这行shell命令检测:

if which apache2; then echo "Yes"; else echo "No"; fi;

如果显示No,则跳过下列这步,如果显示Yes,则需要用下列这条命令卸载Apache:
service apache2 stop && apt-get remove apache*

建议朋友们尝试、练习调试时,先给主机重装系统为Ubuntu 14.04 x64 Minimal,与本文调试的版本完全相同,熟练后再安装其它的Ubuntu版本。重装系统前要备份站点文件。

命令1,update,耗时约29秒:

apt-get update

命令2,安装nginx和php,耗时约20秒:

apt-get -y install nginx php5-fpm

至此Ubuntu 14+Nginx+PHP已经安装完毕。接下来需要做3个关键配置:

1. 使用Xftp软件,连接VPS。找到/etc/nginx/sites-available路径,下载该目录下的default文件。
用文本工具打开此文件,找到如下这些代码:

#location ~ \.php$ {
#       fastcgi_split_path_info ^(.+.php)(/.+)$;
#       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
#       fastcgi_pass unix:/var/run/php5-fpm.sock;
#       fastcgi_index index.php;
#       include fastcgi_params;
#}

上述的代码删除,修改为:

location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;}

这一步和很多网络文章不同,只有2行。连fastcgi_param这一行都省略了,但是PHP能正常运行,以前我是一行一行删除后测试能否运行,之后仅剩这2行。

2. /etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock这一行修改为:

listen=127.0.0.1:9000

3. /etc/php5/fpm/php.ini
找到short_open_tag这一行,默认的设置为short_open_tag = Off,改为:

short_open_tag=On

之后,重启Nginx、PHP,命令:
service nginx restart && service php5-fpm restart

此时,已经能够顺利运行PHP程序,其它的配置文件无需再修改。
这时,上传一个写好的PHP程序1.php到默认的/usr/share/nginx/html目录,测试一下吧。
1.php写入内容:
<?phpinfo();?>

成功如下截图:

最后,要重点说第3步。前年的时候,这个问题就曾经困扰过我很久,这次再次因为这个很小的问题白白浪费了一天的时间调试,查遍了很多文章,各种方法都试遍了都没有解决。因为我习惯这样写PHP程序:<?$e1=5;?>,而不是<?php $e1=5;?>。这种标签的简略形式很多版本的CentOS、Ubuntu下安装的PHP,PHP语句会不运行、空白。因为很多版本的php.ini的short_open_tag默认是关闭的。

导致这2年我总是把这个很小的问题忽略的原因,是因为每次重装系统,php.ini文件我是用本机编写的小程序,自动修改php.ini里的配置,比如自动去掉;号的注释行、short_open_tag自动修改为On,自动关闭错误日志,这样一个68.2K的php.ini文件,就变成了只有3.84K。由于自动化,我自己竟然忘记了这个重要设置。

固定链接 | 发表评论(2) | Trackback(2)

王志勇:1980-09-26 (38周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2018年11月
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue