[{"data":1,"prerenderedAt":426},["ShallowReactive",2],{"page-lnmp-1":3,"page-count-lnmp":277},[4,310],{"id":5,"title":6,"body":7,"date":288,"description":13,"extension":289,"meta":290,"navigation":293,"path":305,"seo":306,"stem":307,"tags":308,"__hash__":309},"blogs\u002F_legacy\u002F2018\u002F2018-09-08-blog-moving-prepare.md","Blog迁移准备中",{"type":8,"value":9,"toc":276},"minimark",[10,14,17,21,24,27,30,33,36,43,46,51,54,57,60,63,66,69,72,75,78,81,92,95,100,103,106,109,112,118,121,127,130,136,139,142,145,151,154,160,163,167,170,176,179,185,188,191,202,205,208,211,214,217,222,225,228,233,236,242,245,249,252,258,261,267,270,273],[11,12,13],"p",{},"最近不知为何托管的主机商那边似乎宕机了比较长的时间的样子。",[11,15,16],{},"原本在主机这一块，一直都没打算再去折腾。因为没有以前那么多时间来照顾这方面了，所以前段发现主机经常访问不稳定的时候，也没有太过于在意，只是将域名托管到了CloudFlare。",[18,19,20],"h2",{"id":20},"问题依旧",[11,22,23],{},"CloudFlare这边虽然访问速度会有所下降，但是至少能够提供一定的稳定性保证。毕竟这边虽然一直有在更新，但是每天的访问量其实并不高，基本都是靠搜索引擎的自然流量。所以偶尔访问不稳定的话，也不会有什么太大的问题。",[11,25,26],{},"但是没想到似乎还是出了些问题，这周连续好几天回家之后发现怎么都连不上网站，虽然连不上是常见的状况，但连续无法访问还是有些在意。",[11,28,29],{},"然后，发现现在的网络环境真的是和以前完全不一样了。",[11,31,32],{},"首先，一个比较常见和还算可以理解的一点，就是CloudFlare对网络状况的虚报。基本上CloudFlare这边看到的访问量和Google Analytics的数据比起来会多出一些。",[11,34,35],{},"但是问题是，实际从9月1日起，网站这边在很多区域就已经进入完全无法访问的状态了，可以从GA的数据看到：",[11,37,38],{},[39,40],"img",{"alt":41,"src":42},"image","\u002Fwp-content\u002Fuploads\u002F2018\u002F09\u002Fimage_thumb.png",[11,44,45],{},"但是同期CloudFlare的数据是这样的",[11,47,48],{},[39,49],{"alt":41,"src":50},"\u002Fwp-content\u002Fuploads\u002F2018\u002F09\u002Fimage_thumb-1.png",[11,52,53],{},"完全没有看到网站的可访问性出了问题，仿佛一切都是那么的美好。",[11,55,56],{},"另外比较惊讶的一点是，Google WebMaster不知什么时候改版了，目前的WebMaster是不会通知你网站已经宕掉的。所以像我一样，依赖于WebMaster的宕机通知来了解网站情况的童鞋们一定要留意了。",[11,58,59],{},"起初有怀疑是CloudFlare这边的问题，所以中途将NS记录重新指向了DNSPod。但是过了一两天发现还是有问题，于是直接修改Hosts，发现果然还是虚拟主机商挂掉了……",[11,61,62],{},"怎么说呢，这个问题还是比较厉害的。由于是老牌主机商了，所以当时也没在意。后面转移网站数据的时候发现，最新的数据似乎丢失了。估计应该是主机商那边连续性的遇到了什么问题。但是现在每天都没有什么时间来搞网站这方面，更加没有精力再到处去找新主机商。原本也打算就这样算了，但是没想到主机商那边也是从头到尾没有一点反应。想来或许是认为会在虚拟主机商这里托管的其实都是些无人问津的小站，所以站长不主动去敲客服，就会假装什么都没有发生过。这样的态度难免让人有些心寒，搞得好像是贪便宜将网站挂到虚拟主机商这边的自己的不对一样了。",[11,64,65],{},"诚然会挂虚拟主机商的网站大抵都没有好好的在进行商业运营，很多网站最多坚持个一两年，等域名到期了也就自然消灭了。因此虚拟主机商这边都会有很严重的超卖现象，就算偶尔出现几个小时的无法访问，说实话也很少会被注意到。但是我认为这样的服务态度是不行的，会自己花精神去买域名、买空间、搭网站、然后去写些什么，且不论之后会不会放弃，至少站长本人在这件事情上是付出了真心的努力的。出现了如此严重的连续宕机，甚至数据都是好久之后才能恢复的情况，连一封告知都没有，就这样假装岁月静好实在是让人无法接受。",[11,67,68],{},"因此，我打算重新迁徙到别的地方去，但是现在真的没有时间精力去找空间了，所以估计会花费比较长的时间。好在手里有一张腾讯云的优惠券，于是干脆的先跑到腾讯云上避难了。",[18,70,71],{"id":71},"迁移记录",[11,73,74],{},"为了方便下次迁移时能够快速的动作，而不是像这次一样要重新去翻以前的笔记以及到处搜索，将这次的过程完全记录了下来。",[11,76,77],{},"首先还是使用最习惯的Ubuntu Lts，当前版本是16。",[11,79,80],{},"开通之后用Winscp接入putty直接登录，然后首先设定su密码。",[82,83,88],"pre",{"className":84,"code":86,"language":87},[85],"language-text","sudo passwd\n","text",[89,90,86],"code",{"__ignoreMap":91},"",[11,93,94],{},"之后直接su，这样虽然有些不符合规范，但是确实比较方便。",[96,97,99],"h3",{"id":98},"lnmp","LNMP",[11,101,102],{},"接着就是lnmp的安装，虽然之前比较习惯与用别人分享的脚本，但是一来不是马上能找到。二来有的脚本是要自己下载源码进行编译的，有的会给出很多选择。",[11,104,105],{},"但是我现在不想选择，我只想说，「一番いいのを頼む 」。",[11,107,108],{},"反正我就架个WordPress，顶多接入个Phalcon，有必要选那么多吗？直接上版本号最高的官方编译版就好了~",[11,110,111],{},"首先，违反常识的先装php，因为要用nginx，所以不直接装php，而是装php-fpm，要不然会给你带个Apache。",[82,113,116],{"className":114,"code":115,"language":87},[85],"add-apt-repository ppa:ondrej\u002Fphp\napt-get update\napt-get install php-fpm\n",[89,117,115],{"__ignoreMap":91},[11,119,120],{},"然后上nginx",[82,122,125],{"className":123,"code":124,"language":87},[85],"add-apt-repository ppa:nginx\u002Fdevelopment\napt install software-properties-common\napt-get update\napt-get install nginx\n\n",[89,126,124],{"__ignoreMap":91},[11,128,129],{},"最后我也不知道MySql哪个版本好，干脆上了还有印象的MariaDB。",[82,131,134],{"className":132,"code":133,"language":87},[85],"sudo apt-key adv --recv-keys --keyserver hkp:\u002F\u002Fkeyserver.ubuntu.com:80 0xF1656F24C74CD1D8\nsudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http:\u002F\u002Fftp.yz.yamagata-u.ac.jp\u002Fpub\u002Fdbms\u002Fmariadb\u002Frepo\u002F10.2\u002Fubuntu xenial main'\n\napt update\napt install mariadb-server\n",[89,135,133],{"__ignoreMap":91},[11,137,138],{},"装完以上这些，直接访问服务器IP应该就能看到欢迎页面了。再稍微写个phpinfo()的测试页面就知道php正不正常了。",[11,140,141],{},"一般情况下默认配置的nginx基本不可能挂掉，顶多就是php解析有问题。这个时候直接去改nginx的默认配置文件就可以了，在\u002Fetc\u002Fnginx里面。",[11,143,144],{},"不需要急着去查资料，基本上nginx官方已经给写好了，只要按照注释里面的提示去掉一些注释就可以了。改完记得重启服务，配置不对基本就重启不了~",[82,146,149],{"className":147,"code":148,"language":87},[85],"service nginx restart\n",[89,150,148],{"__ignoreMap":91},[11,152,153],{},"比较容易出问题的是php-fpm的名称，很容易坑，因为安装的时候叫php-fpm，但是实际使用时却是：",[82,155,158],{"className":156,"code":157,"language":87},[85],"fastcgi_pass unix:\u002Fvar\u002Frun\u002Fphp\u002Fphp7.2-fpm.sock;\n",[89,159,157],{"__ignoreMap":91},[11,161,162],{},"这个真的很坑，因为nginx的配置里面没有说明，看命名方式似乎会跟着php的版本变？",[96,164,166],{"id":165},"wordpress","Wordpress",[11,168,169],{},"这个直接下载解压了，WordPress是业界知名安装简单的，虽然迁移网站会有些麻烦，不过也只是移动文件而已。",[82,171,174],{"className":172,"code":173,"language":87},[85],"wget https:\u002F\u002Fwordpress.org\u002Flatest.tar.gz\ntar -xzvf latest.tar.gz\n",[89,175,173],{"__ignoreMap":91},[11,177,178],{},"为了方便，首先将文件夹权限设一下",[82,180,183],{"className":181,"code":182,"language":87},[85],"chown www-data.www-data . -R\n",[89,184,182],{"__ignoreMap":91},[11,186,187],{},"这里有个问题，为了方便其实我的目录权限其实777的，但是有的时候对于wordpress还是不足够。",[11,189,190],{},"有时候PHP的disable func也会导致问题，不过这次并没有遇到。",[11,192,193,194,201],{},"然后就是自己建立数据库了，虽然CPanel的主机商比较爱装phpMyAdmin，但是自己用的话推荐这个[",[195,196,200],"a",{"href":197,"rel":198},"https:\u002F\u002Fwww.adminer.org\u002F#download",[199],"nofollow","adminer","]。一个文件搞定一切~",[11,203,204],{},"操作上也比较简明，有了数据库装WordPress就是简单的五步了。",[11,206,207],{},"WordPress现在的版本好像对目录权限要求有点高，主要是也不会出什么问题，就是网站访问速度会变慢……所以趁早chown比较好。",[96,209,210],{"id":210},"数据迁移",[11,212,213],{},"数据迁移就是搬，基本不会有问题。不过这次是由https环境搬到http环境，所以之前的一些配置造成了问题，这里全部回退掉",[11,215,216],{},"首先",[11,218,219],{},[39,220],{"alt":41,"src":221},"\u002Fwp-content\u002Fuploads\u002F2018\u002F09\u002Fimage_thumb-2.png",[11,223,224],{},"这个必须改回来，要不然会自动跳到https上。",[11,226,227],{},"还有这个：",[11,229,230],{},[39,231],{"alt":41,"src":232},"\u002Fwp-content\u002Fuploads\u002F2018\u002F09\u002Fimage_thumb-3.png",[11,234,235],{},"以及将之前替换掉的文章内的图片的引用换回来，在adminer里面执行sql语句就好：",[82,237,240],{"className":238,"code":239,"language":87},[85],"UPDATE wp_posts SET 'post_content' = REPLACE ('post_content', 'src=\"https:\u002F\u002Fblog.ch-wind.com', 'src=\"\u002F');\nUPDATE wp_posts SET 'post_content' = REPLACE ('post_content', 'href=\"https:\u002F\u002Fblog.ch-wind.com', 'src=\"href:\u002F\u002Fblog.ch-wind.com');\n\n",[89,241,239],{"__ignoreMap":91},[11,243,244],{},"以及由于主题是自己写的，所以randompic.php里面的写死的链接也要改一下",[96,246,248],{"id":247},"windowlivewriter","WindowLiveWriter",[11,250,251],{},"之后就是最后一个坑，没想到wlw竟然无法提交文章。不停的给我报",[253,254,255],"blockquote",{},[11,256,257],{},"parse error. not well formed",[11,259,260],{},"错误代号-32700……起初以为是WordPress的新bug，但是在本地装好环境发现没问题。最后几经波折才找到，是php-xml没有装……真想吐槽：你报错能智能点吗",[82,262,265],{"className":263,"code":264,"language":87},[85],"apt-get install php-xml\n",[89,266,264],{"__ignoreMap":91},[11,268,269],{},"这样就解决了。",[18,271,272],{"id":272},"避难完成",[11,274,275],{},"这样将文章推到blog上，避难就算完成了。之后要找个好的停放地点才行。",{"title":91,"searchDepth":277,"depth":278,"links":279},2,3,[280,281,287],{"id":20,"depth":277,"text":20},{"id":71,"depth":277,"text":71,"children":282},[283,284,285,286],{"id":98,"depth":278,"text":99},{"id":165,"depth":278,"text":166},{"id":210,"depth":278,"text":210},{"id":247,"depth":278,"text":248},{"id":272,"depth":277,"text":272},"2018-09-08","md",{"layout":291,"status":292,"published":293,"author":294,"author_login":296,"author_email":297,"wordpress_id":298,"wordpress_url":299,"date_gmt":300,"excerpt":301},"post","publish",true,{"display_name":295,"login":296,"email":297,"url":91},"风铃","flinkor","flinkor@foxmail.com",2560,"\u002F?p=2560","2018-09-08 15:37:20 +0000",{"type":8,"value":302},[303],[11,304,13],{},"\u002F2018-09-08-blog-moving-prepare",{"title":6,"description":13},"_legacy\u002F2018\u002F2018-09-08-blog-moving-prepare",[98,165],"zHkC7jMcJA1rlBDrF2aLCN5EdqAsGRALh_Y2-DSTaLI",{"id":311,"title":312,"body":313,"date":407,"description":317,"extension":289,"meta":408,"navigation":293,"path":420,"seo":421,"stem":422,"tags":423,"__hash__":425},"blogs\u002F_legacy\u002F2015\u002F2015-03-28-ubuntu%e4%b8%8blnmp%e7%8e%af%e5%a2%83%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%aephalconphp.md","Ubuntu下Lnmp环境安装配置PhalconPHP",{"type":8,"value":314,"toc":405},[315,318,321,324,327,333,336,342,345,351,354,357,360,365,368,378,387,393,396,402],[11,316,317],{},"Lnmp在快速搭建网站环境方面特别方便，基本不用自己去研究各个软件的安装和配置。由于对Linux半生不熟，在安装Phalcon时却遇到了一些问题，在这里总结下经验。",[11,319,320],{},"当前Lnmp版本:1.1。当前Phalcon版本:1.3.4。PHP版本：5.6.6。",[11,322,323],{},"要使用PhalconPHP，升级下php版本比较好，按照lnmp官方的提示进行即可。",[11,325,326],{},"Phalcon的缓存系统可以使用Memcache，在升级了php版本之后，如果使用官方的安装脚本会有问题。将原本从48行开始的版本检测语句添加新的php版本即可：",[82,328,331],{"className":329,"code":330,"language":87},[85],"if echo \"$cur_php_version\" | grep -q \"5.2.\" \nthen \nsed -i 's#extension_dir = \".\u002F\"#extension_dir = \"\u002Fusr\u002Flocal\u002Fphp\u002Flib\u002Fphp\u002Fextensions\u002Fno-debug-non-zts-20060613\u002F\"\\nextension = \"memcache.so\"\\n#' \u002Fusr\u002Flocal\u002Fphp\u002Fetc\u002Fphp.ini \nelif echo \"$cur_php_version\" | grep -q \"5.3.\" \nthen \nsed -i 's#extension_dir = \".\u002F\"#extension_dir = \"\u002Fusr\u002Flocal\u002Fphp\u002Flib\u002Fphp\u002Fextensions\u002Fno-debug-non-zts-20090626\u002F\"\\nextension = \"memcache.so\"\\n#' \u002Fusr\u002Flocal\u002Fphp\u002Fetc\u002Fphp.ini \nelif echo \"$cur_php_version\" | grep -q \"5.4.\" \nthen \nsed -i 's#extension_dir = \".\u002F\"#extension_dir = \"\u002Fusr\u002Flocal\u002Fphp\u002Flib\u002Fphp\u002Fextensions\u002Fno-debug-non-zts-20100525\u002F\"\\nextension = \"memcache.so\"\\n#' \u002Fusr\u002Flocal\u002Fphp\u002Fetc\u002Fphp.ini \nelif echo \"$cur_php_version\" | grep -q \"5.6.\" \nthen \nsed -i 's#extension_dir = \".\u002F\"#extension_dir = \"\u002Fusr\u002Flocal\u002Fphp\u002Flib\u002Fphp\u002Fextensions\u002Fno-debug-non-zts-20131226\u002F\"\\nextension = \"memcache.so\"\\n#' \u002Fusr\u002Flocal\u002Fphp\u002Fetc\u002Fphp.ini \nelse \n&nbsp;&nbsp;&nbsp; echo \"Error: can't get php version!\" \n&nbsp;&nbsp;&nbsp; echo \"Maybe your php was didn't install or php configuration file has errors.Please check.\" \n&nbsp;&nbsp;&nbsp; sleep 3 \n&nbsp;&nbsp;&nbsp; exit 1 \nfi\n",[89,332,330],{"__ignoreMap":91},[11,334,335],{},"通过apt-get install php5-phalcon安装的Phalcon是编译给PHP5.4的，由于没有实际使用过所以也不知道该Phalcon的版本是多少。按照官方的要求进行编译安装：",[82,337,340],{"className":338,"code":339,"language":87},[85],"git clone --depth=1 git:\u002F\u002Fgithub.com\u002Fphalcon\u002Fcphalcon.git\n\ncd cphalcon\u002Fbuild\n\nsudo .\u002Finstall\n",[89,341,339],{"__ignoreMap":91},[11,343,344],{},"这个时候会遇到错误，大体意思是找不到php目录。打开install脚本进行编辑，在第64行按照提示添加php-config",[82,346,349],{"className":347,"code":348,"language":87},[85],"\u002Fusr\u002Flocal\u002Fphp\u002Fbin\u002Fphpize && .\u002Fconfigure  --with-php-config=\u002Fusr\u002Flocal\u002Fphp\u002Fbin\u002Fphp-config --enable-phalcon && make && make install && echo -e \"\\nThanks for compiling Phalcon!\\nBuild succeed: Please restart your web server to complete the installation\"\n",[89,350,348],{"__ignoreMap":91},[11,352,353],{},"这个时候安装就能正确进行了，安装完成之后在php.ini中添加",[11,355,356],{},"extension = phalcon.so",[11,358,359],{},"重置lnmp，在phpinfo()中就能看到Phalcon已经启用成功。",[11,361,362],{},[39,363],{"alt":41,"src":364},"\u002Fwp-content\u002Fuploads\u002F2015\u002F03\u002Fimage_thumb.png",[11,366,367],{},"使用lnmp的添加域名脚本添加好之后，需要对生成的配置文件进行修改。如果处理不当将可能导致以下两种情况：",[369,370,371,375],"ol",{},[372,373,374],"li",{},"所有的控制器都无法访问，全部被当作index\u002Findex来处理",[372,376,377],{},"无法正常的通过get、getQuery等函数获取url参数，全部返回null",[11,379,380,381,386],{},"具体的设定可以参考官方的",[195,382,385],{"href":383,"rel":384},"http:\u002F\u002Fdocs.phalconphp.com\u002Fzh\u002Flatest\u002Freference\u002Fnginx.html",[199],"安装说明","进行，下面给出的是本次配置服务器所使用的配置。",[82,388,391],{"className":389,"code":390,"language":87},[85],"server \n    { \n        listen 80; \n        #listen [::]:80; \n        server_name www.xxxx.com xxxx.com; \n        index index.html index.htm index.php default.html default.htm default.php; \n        set $root_path '\u002Fhome\u002Fwwwroot\u002Fwww.xxxx.com\u002Fpublic'; \n        root $root_path;\n\n        location \u002F { \n            try_files $uri $uri\u002F \u002Findex.php?_url=$uri&$args; \n        }\n\n        location ~ \\.php$ { \n                try_files $uri =404; \n                fastcgi_split_path_info ^(.+\\.php)(\u002F.+)$; \n                fastcgi_pass  unix:\u002Ftmp\u002Fphp-cgi.sock; \n                fastcgi_index index.php; \n                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; \n                include fastcgi.conf; \n        }\n\n \n\n        location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$ \n        { \n            root          $root_path; \n            expires      30d; \n        }\n\n \n\n        location ~ .*\\.(js|css)?$ \n        { \n            root          $root_path; \n            expires      12h; \n        }\n\n        location ~ \u002F\\.ht { \n            deny all; \n        } \n    }\n",[89,392,390],{"__ignoreMap":91},[11,394,395],{},"同时对Router进行设置：",[82,397,400],{"className":398,"code":399,"language":87},[85],"$di->set('router', function () use($routes) {\n\n    $router = new \\Phalcon\\Mvc\\Router(); \n    $router->setUriSource(\\Phalcon\\Mvc\\Router::URI_SOURCE_SERVER_REQUEST_URI);\n\n    return $router; \n});\n",[89,401,399],{"__ignoreMap":91},[11,403,404],{},"上面的步骤完成后，Phalcon就已经能够正常的在Lnmp上运行了。",{"title":91,"searchDepth":277,"depth":278,"links":406},[],"2015-03-28",{"layout":291,"status":292,"published":293,"author":409,"author_login":410,"author_email":411,"author_url":412,"wordpress_id":413,"wordpress_url":414,"date_gmt":415,"excerpt":416},{"display_name":410,"login":410,"email":411,"url":412},"chaoshikari","chaoshikari@gmail.com","\u002F",1186,"\u002F\u002F?p=1186","2015-03-28 07:15:02 +0000",{"type":8,"value":417},[418],[11,419,317],{},"\u002F2015-03-28-ubuntu下lnmp环境安装配置phalconphp",{"title":312,"description":317},"_legacy\u002F2015\u002F2015-03-28-ubuntu%e4%b8%8blnmp%e7%8e%af%e5%a2%83%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%aephalconphp",[424,98],"phalcon","HmJ18hPsIxa_Lbn8la3vHsHxD27rrcuuacqrFRuJL9I",1788763177618]