随手记Debian 8升级10

这个博客的VPS买的是Vultr的2.5刀实例……
对,就是那个绝版的2.5刀还带IPv4的Plan,512M/20G/500G

总的来说,对于这样一个小博客一切都够用,不过系统是当初预装的Debian 8/Jessis,已经失去支持了……所以今天有点时间就顺手把系统升级了,顺便把PHP升级到7.3以消除WP后台的那个insecure version的提示……
因为是随手记,所以都比较简单,请勿怪。

升级Debian当前版本到Stable版本

这里我采用了偷懒的办法,因为这个vps上只跑了博客,所以直接把版本拉到stable(当前稳定版),而不是选择具体的版本。

简单说,就是大胆搞,搞完就重启,运气好没出岔子,哈哈哈哈哈。

升级PHP7.0到7.3

因为我的web server是caddy v1,所以php是以php-fpm的方式运行的,升级前跑的是php7.0,我发现7.3可以独立安装,于是没动7.0,直接装了新的7.3。

装好后php7.3-fpm直接就跑起来了……真是方便快捷,当年我用AMD Duron800玩Gentoo的时候,世界真的很混沌……
之后的话直接修改caddy的站点配置,把里面php7.0-fpm的路径直接修改为7.3的就好了……就是直接改个数字。
就是把

改成

之后重启一下caddy,并停用php7.0-fpm。

数据库自动从mysql 5.8升级到了mariadb 10.3。

结果发现WP各种报错……还好后台能进,把插件全禁用了挨个检查,发现Crayon Syntax Highlighter停止维护了,于是替换成Urvanov Syntax Highlighter

突然发现好多插件都不能用了……
唉,好多年都没正经用WP了,好像现在外面的世界流行Typecho?回头再试试。

一句话服务器

最近调试VPS需要转移文件,又不想特别去安装HTTP/FTP服务软件,于是找来了这些命令,一行可以启动一个HTTP/FTP服务器,Ctrl-C中止后服务器即停止,简单明了很方便。

1. Python

执行命令:

[YourPort] 修改为端口号即可,如80,8080等,执行命令时是把当前目录作为webroot同时支持目录遍历,貌似也没有多的参数了。

2. PHP

执行命令(PHP5.4.0+):

参数 -S 后面为监听的IP及端口, -t 后面为webroot路径,支持解析PHP脚本,不支持目录遍历,访问的时候需要同时包含完整路径。

3. Ruby

执行命令:

参数 -ehttpd 后为webroot路径, -p 后为监听端口,支持目录遍历,貌似没什么特别的功能。

4. Python/FTP

执行命令:

参数 -p 后为监听端口。这个命令运行的是一个FTP服务器,匿名登录。

-EOF-
——————–
引用参考:

  1. [渗透技巧] 一句话开启简单的服务器
  2. PHP Manual

小内存优化VPS的LNMP及fail2ban配置

哈,大家好,21经过长时间的“沉没”,在这个寒冷的冬日怎么着也该冒泡泡以表无恙呀~ 话说,今天是二四节气中的“大雪”,够不上下雪条件的昆明便下起了稀里哗啦的雨,让21这个电动车男给冻的 …… 无法用言语形容的呀~

经过近半年时间,21手上开始掌握了一些廉价的VPS进行个人学习和实验,基本配置小至128M OpenVZ大至512M Xen都有,当然,买来以后闲置的时间稍微占多了点,不过由于Hawkhost空间12.6到期的刺激,我把Mr. 2175%都搬迁到其中一个512M Xen VPS上并且进行了相关的配置。本着内存能少用就少用、资源能节约就节约的原则,我进行了一些学习和模仿。

文中涉及到的操作基本上都需要root权限,且,21个人喜欢nano编辑器,如果你喜欢vi,稍微换一下命令就行。

基础调配部分及LNMP

由于21喜欢用Debian,于是参考了VPSee的文章《64MB VPS 上优化 Debian 5》和LowEndBox的《Bootstraping WordPress/Nginx/PHP/MySQL on a Cheap VPS with lowendscript》,对VPS上的OpenSSH、 syslog-ng用Dropbear和inetutils-syslogd进行了替换,从基础上对资源占用进行了控制,大概操作如下:

    OpenSSH、 syslog-ng的替换,我使用了LEB的lowendscript,在root用户下,如此操作便可:

    如果你参考这里,会发现LEB的这个脚本其实还可以安装LNMP里面的NMP(Nginx, MySQL, PHP)三个组件,但是我个人比较喜欢国人的LNMP,于是仅使用LES脚本进行了系统组件的替换。

之后,我安装LNMP 0.5(请参考这里)作为WEB服务器,并且进行了一些调整,这个调整请按照自己的需求就好。

  1. 将Nginx的子线程调整为2个,方法如下:

    找到worker_processes,将其改成下面的样子:

    然后按Ctrl+O保存,按Ctrl+X退出。
  2. 同时,我将PHP-FPM的子线程也调整为2个,方法如下:

    按Ctrl+W搜索max_children,改成下面这样的格式:

    然后按Ctrl+O保存,按Ctrl+X退出。再来重启nginx和php-fpm:
  3. 关于这个……MYSQL的调优,这个……21表示个人水平不足,就不献丑了。

Fail2Ban调配部分

这是一些比较基础的安全方面的调配。

  1. 首先,是禁用root用户的ssh登录,由于我们已经用Dropbear替换了OpenSSH,所以跟一般教程针对OpenSSH的修改方式不太一样,大概方法如下:

    然后把其中的server_args修改为如下样子

    让 /etc/xinetd.d/dropbear 配置文件看起来像这样

    然后按Ctrl+O保存,按Ctrl+X退出。
    -g的意思就是禁用root使用密码登录,但可以用公钥登录(public key)(请参考这里)。
    然后重启Dropbear:
  2. 禁用了root账户登录,但是21在某些特定的没有公钥情况下又需要登录SSH,怎么办呢?增加一个普通用户就好了,这个用户不用具备什么特殊权限,只要能登录SSH足矣,大概操作如下:

    [username]替换为你想要的用户ID(注:不能为纯数字),[password]替换为想要的密码便可。
    之后我们以[username]登录系统,然后输入su root,再输入root密码便可以切换到root用户的shell。
    推荐不要使用太简单的ID,比如a/ab/abc什么的,为什么?后面告诉你。

Continue reading 小内存优化VPS的LNMP及fail2ban配置

2010-03-22 小记

前几天手闲买了两个256M VPS用于学习VPS的配置,这两天有所心得,小记一下。
不好意思啦,长篇大论太辛苦了,以后要走简洁风的。

注:两个VPS分别是CenOS 5.4 32bit, Debian 5 32bit.

1. Kloxo安装脚本太傻瓜了,傻瓜到出错都不会stop

其中一个VPS购买的时候我选择了预置Kloxo,但是主机商说内存没有512M所以不予部署,好吧,我手闲自己安装一下试试就是了。下载了那个脚本之后,./kloxo-install-master.sh,开始安装。

由于是通过SSH的方式,我开着以后就没管了,从早上9点多一直到下午4点多,SSH里面一直很活跃地展现着《骇客帝国》的数字雨画面效果,我受不了了,Ctrl+C之后发现,滚屏上的文字一直都在重复,眼睛瞟到一个写着error的信息,看了一下,原来是某个PHP的模块没有卸掉,所以……很遗憾的是,我没有记下来那个没模块叫什么。

但是我比较不明白的是,为什么它error之后就一直Try again,而不是Stop让用户看看错误信息,所以那个Kloxo的安装脚本,我运行了整整6个小时,还好,主机商方面没有什么提示。其实为什么我会等这么长时间呢?因为很久很久以前,我经常连续花几天时间编译安装Gentoo Linux,这让我面对CLI的时候有足够的耐心,嘿嘿嘿~

还有,我参照的是这篇教程,感谢作者。

Tips: 要是你安装Kloxo超过30mins(国内可能不好说),请检查滚屏文字是否包含error。

2. 主机商没错,256M的VPS别装Kloxo

恩,这个确实是教训,在上面花了6个小时之后,我卸掉那个PHP模块,只用了短短几分钟Kloxo就部署好了,然后是……从VPS面板上我看到,256M的内存一直在60%~89%之间徘徊,然后Kloxo感觉一点都不快,VPS的主机CPU是4核的XEON E5520。

Tips: 服务商不一定都是忽悠你的。

3. 搞定Apache2单独用户权限配置

好吧,我承认在高中的时候朋友熊哥借过我一本Apache配置指南并且我一直都没还,但是也一直都没怎么看,基于两个VPS内存过低的原因,我开始自己配置服务器。以前的我算是轻微入门,这次又轻轻入了一点点,慢慢来咯。

今天遇到的问题就是Apache2+PHP5目录写入权限。
之前我在使用Dreamhost的时候,/home/user/public_html 755是写入可行的,但是我的VPS上表现为无法PHP写入文件,好吧,我将real_user加入apache运行组www-data后修改权限为775之后是可以的,但是我不甘心,并且同组写入在商业化虚拟机上是不可行的,并且DH上面确实是755,于是研究。

利用DH的SSH我登录上去在有限的权限内我开始翻系统的文件,我考虑到了用户组混搭 ((灵感来自犀利哥,嘿嘿,开玩笑的~))方面的问题,于是我实验了一个办法,并且通过了:

把用户 www-data ((Debian里面的Apache2默认以此用户名/组运行)) 加入 <user-private-group>

但是,反过来把 real_user 添加到组 www-data 并不能实现real_user的权限对www-data开放,除非文件的隶属组是www-data。不过问题在于,不可能主机商会让apache2的run_user加入每一个用户的私有组 ((private group,私有组,用户创建时一同添加的同名组。)),乍一看是没什么安全问题,单向继承权限嘛,但是如果我们一些特定的文件只让Apache读取的时候,问题就来了,这肯定不适用于生产环境的。

于是我又开始GG,找到一个办法,SuExec,但是这个办法有限制:只对CGI和SSI有效,那么PHP就要以CGI的方式运行。但是,同一篇文章提到了一个模块:apache2-mpm-itk,据说效果跟效率要比SuExec好,而且配置也不复杂,在<VirtualHost>部分就可以为每个虚拟机单独配置一个读写用户。

于是在自己的Debian VPS上测试通过,~/public_html的权限为755即可,同时在相关的VirualHost配置部分加入

配置即可。
这也同时解决了我长久以来的一个疑惑:这个Apache2用一个用户/组来跑所有虚拟主机不是很危险么?不过以前没想过要认真解决掉……

请跳转参阅:
1. 使用mpm-peruser为apache的虚拟主机提供一个绝对安全的单用户进程访问机制
2. Running Vhosts With Apache2 mpm-itk On Debian

Tips: 恩,Google是个好东西。

4. 几个关键词

gpasswd -a, useradd, id, a2enmod, /etc/skel, /etc/default/useradd.
mysql -u[user] -p -h[host] database << (zcat database.sql.gz)

以后以笔记类博文为主,这样写起来没有压力,请各位见谅~

延伸阅读:
1. 10 个最酷的 Linux 单行命令
2. Debian下为Apache启用rewrite模块(htaccess)
3. URL Rewriting Guide

辟谣之WordPress专业主机

先声明,本文不是针对时下流行的“WordPress专业主机”,
仅仅是从技术普及应用方面来解释说明关于“WordPress专业主机”的一些广告误导。

基础

、什么是WordPress

WordPress作为一款优秀的、开放源代码的、免费的PHP博客(Blog/部落格)程序,是使用PHP语言编写的一种Web应用(Web Apps)。WordPress是构建与PHP平台之上的一个程序,简单的说,我们可以理解为“Microsoft Office是构建于Windows系统之上的应用程序”一样来理解,不过,WordPress主要面对的是互联网、运行结果是HTML代码。

、WordPress的运行环境

运行WordPress需要满足PHP和MYSQL数据库(通过插件可以实现SQLite数据库)这两个条件,而出于支持静态链接(Permalinks)的必要,还需要服务器具备支持Rewrite规则(Rewrite Rules)的特性,而Rewrite规则的支持通常需要Apache的Mod_rewrite模块来实现,并且Rewrite规则一般保存于与WordPress目录同级的一个叫.htaccess的文件,并且这个环境在Linux/BSD/Unix平台上运行效率最佳、支持度最高、表现最完美,通常被统称为LAMP平台,组成结构为Linux+Apache+MySQL+PHP。
而这样的环境同时也可以“完美运行”任何基于LAMP架构组件的Web Apps,包括Discuz!/PhpWind/MediaWiki/DedeCMS/Sablog/b2evolution/Typecho等等。

同时,在Windows上我们也可以通过ISAPI_Rewrite这个模块来支持Rewrite,但是规则略有不同、可能会存在一些意想不到的问题,所以,并不推荐使用Windows平台来运行PHP程序。

关键词: WordPress, Linux, Apache, MySQL, LAMP, Rewrite, Web Apps
Continue reading 辟谣之WordPress专业主机

EasyWP汉化版-2.8

紧跟步伐,发布EasyWP汉化版-2.8
此次更新的脚本可以帮你安装最新更新WordPress 2.8简体中文版

简单来说,
就是一个支持在线自动安装配置WordPress的PHP脚本,
实现上传一个PHP文件就可以安装整个“庞大”的WordPress的快捷方法,
不过仅支持LAMP类平台,Windows的用户抱歉了。

下载: EasyWP-zh_CN-2.8.zip & EasyWP-zh_CN-2.8.zip(box.net)

此脚本的相关信息请通过《EasyWP, WordPress快打!》 & 《EasyWP汉化版-2.7.1》了解,
如有问题请留言。

FeedSky Feed插件该淘汰了

最近一段时间感觉WordPress怪怪的,
后台Plugins模块的Add New里面无法提供最流行的插件标签,也无法在线搜索安装插件,
会提示“an unknown error occurred

经过GG,发现此文:『请停用Feedsky Feed插件
里面提到,经过文作者的排查测试,使用Feedsky Feed会对WP造成的影响如下:

  1. 无法执行预订任务
  2. 文章无法预发布
  3. 数据库自动备份失败
  4. 在线安装功能提示未知错误
  5. Google XML Sitemaps 更新已经成功通知XXX失败

貌似我发现的就是数据库自动备份失败在线安装功能提示未知错误两个问题,
作者还真是细心。赞一个!

不过,
如果你对该插件会产生的以上影响觉得关系不大的话,那么我个人比较倾向于推荐继续使用。

接下来我的想法自然就是寻找替代的东西,
测试了几个插件,似乎都无法完美重定向,而缝眼制作的FeedRed又不让下载了……

考虑到不是专门的插件,担心可能产生死循环,放弃了继续使用feed重定向插件的想法,

最终决定如下,
FeedSky的烧制继续保持,博客Feed引用保留WP原地址,
这样可能会流失一部分订阅数的统计,不过无所谓啦,造福大家就成了,无所谓人多人少的,对吧~

以下几种方式可以订阅到Mr. 21的feed:
https://mr21.cc/feed (推荐)
https://mr21.cc/wp-rss2.php
http://feed.feedsky.com/live21 (推荐)

如果给你造成了不便,我感到十分抱歉,并在今后会尽量避免此类麻烦。

Update: May 27th, 2009
最终还是决定用原生的FEED好了,
可以避免对第三方服务商的过度依赖,暴风+DnsPod事件就是很好的例子,
就算需要什么第三方的服务,我通过301 Redirect方式就成,不会对Client造成任何影响。

EasyWP, WordPress快打!

虽然全程自主安装WordPress不是啥难事,
不过在国内这种参差不齐自立门户的线路状况下,让你完整FTP一个WordPress还是需要不少时间的,
特别是那些用国外主机的家伙(包括我自己),无奈了吧~

OK,今天在我的GReader里面看到一篇POST,
Trouble Installing WordPress? Try EasyWP Install
介绍了EasyWP这个工具,可以让我们方便地安装WordPress。

EasyWP是一个PHP脚本,
在你访问相应路径,填写相应内容后,点击“Go”,将会自动下载WP的安装包,然后解压安装,
整个过程自动化程度非常高。

下载:EasyWP WordPress Installer
来源:http://www.funscripts.net/php-scripts/

安装步骤:

  1. 下载EasyWP,并解压,得到easywp.php;
  2. 将easywp.php通过任何方式上传到你空间的相应目录下(这里假设为WEB的“/blog”);
  3. 获得你的MYSQL相关参数;
  4. 访问 http://youdomain.com/blog/easywp.php
    从上往下为数据库名称、用户名、密码、数据库地址等,有图有真相,相关参数请参考图片
  5. 填写完毕,点击“Go”;
  6. 然后就会进入常规步骤了;
  7. 到填写Blog Title的步骤,填写了你的博客名称和邮箱,点击Install WordPress
  8. OK,这时马上会显示admin和密码,到此WP安装完毕。

Continue reading EasyWP, WordPress快打!

漫谈WordPress安装、迁移

在N年的空间迁移和颠簸中,算是总结出来一些小经验,也算是给WP新手的一些建议,
我这里不会告诉你怎么做,只会告诉你为什么,仅供参考。

安装

第一点,wp-config.php文件

话说,我不知道很多初学者在哪里看来的所谓“教程”,里面有一点就是要求安装者编辑wp-config-sample.php文件,手动写入数据库信息,然后另存为wp-config.php。

怎么说呢,本身这样的建议,或者说要求是没错的,但是该教程的作者似乎忘记了,国内普遍是使用Windows(R),而Win默认的编辑器叫“记事本”,而记事本默认的编码是ANSI且对UTF8支持不良,所以,这就错了。

而很多WP初学者又极少有编码的概念,直接编辑了,然后就直接保存了。
这样的话,PHP基本会有一个header output的报错,意思就说说文件头前面有内容,我知道事实上在记事本里面看来是没有的。山河一片大好嘛,不过别忘了,这是ANSI和UTF8的战争。

所以,如果身为初学者的你,必须执意要自行修改wp-config.php文件,可以,但是请用一个加强版的“记事本”,我个人喜欢EditPlus,当然,还有更多的选择,不过你必须忘记你的“记事本”和“Office Word”这些弱智的东西。

说点题外话,我个人还是喜欢记事本的,即使它比较弱智,不过很多场合轻便的记事本还是合用的。

事实上,我认为你除了上传,不必修改任何PHP文件的内容,一个字母都不要动,
那么,不编辑的情况下怎么安装WP呢?OK,下一点。

第二点,简单安装WordPress

关于安装WordPress其实没啥好说的,只要搞清楚上一步的wp-config.php,大家都知道怎么回事儿,
有个安装向导的,你上传好文件,访问相应的目录,会指导你创建一个完全符合标准的wp-config.php文件的。

这里就随便说说一些安装WP的捷径吧。
不过,如果你是属于合租的空间,并且发起者只给你提供了FTP和MYSQL的用户密码,那么请使用Net2Ftp

通常,我们下载的WordPress是ZIP或GZ格式的压缩包,然后解包,一个一个上传,这样其实很费时间的。
如果你购买的空间有cPanel, DirectAdmin等面板,你会发现File Manager模块是具有解压缩功能的,
答案就呼之欲出了。

你可以只上传一个压缩包到空间上,然后使用File Manager来直接解压,然后调整目录结构,然后安装WP。
如果你没有那些面板呢,那么可以使用Net2Ftp,它也提供了打包解包的功能,
这样可以节省很多时间,因为FTP每上传一个文件都是一次连接,如果你的FTP够慢且文件够多,那就有的等了。

话说,如果你的空间提供SSH就更好了,
直接通过WGET获得压缩包,然后解压安装,基本没有文件需要经过你的电脑,那又是另一种快。
Continue reading 漫谈WordPress安装、迁移