基于init的SS启动脚本

给VPS配置HE.NET的IPv6

Update: Sep 4th, 2018
增加了修改Grub的设置,并调整了排版更便于观看。


在v2上看到有人说阿里云国际版HKB配置IPv6的话可以避免近期频繁出现的Google验证码的问题……而HKB是不提供IPv6的……

于是动手搞之。

根据这篇文章,只提供了Debian/Ubuntu可用的方法,我的HKB是CentOS的,另外放狗搜了方法,在此小记一下。两个系统都是修改一些配置文件就好了。

前提条件是,先去he.net申请一个IPV6的通道,这个就不赘述了。
Continue reading 给VPS配置HE.NET的IPv6

SSH和谐主机的iptables设置参考

这是一个关于SSH番羽土啬的话题,标题及文中的“和谐”=“番羽土啬”,感叹一下我们的文字。

因为21现在手上的VPS数量比较乐观(不是壮观……),因此其中有专司VPN和谐的、SSH和谐的、第三方推和谐的等用途,当然,Mr. 21博客也在其中一个VPS上,用的LNMP包。

写这个话题的起因是这样的,在北山老卫大神的Q群里面,有人提到了想以SSH和谐帐号来换取一些东西,因此引发了21对此的讨论。我的主要观点是不支持这么做,因为不安全(可以参考《利用Linux内核的多个安全漏洞提权》,不过本文内容与此关系不大),加上之前帮番茄童鞋配置iptables,因此引发了21对SSH和谐主机安全方面的思考,其中的一方面就是用iptables来过滤不和谐的东西。

是这样的,因为做实验的这个VPS我只用于SSH和谐,并且一般和谐仅限于Web浏览及各种基于Web的应用,所以,以下策略仅开放SSH的22端口并对其它的东西做了相应的限制。

初始化防火墙

第一步,我们总是要把一些知道的和不知道的先通通打倒了再说,于是,请如此:

以上是一些初始化的动作,以下是具有具体功能的策略。

防火墙规则参考一

这几条规则实现的效果是:

  1. 22端口允许用户主动发起TCP连接,一般用于提供SSH服务,如果你的SSH端口不是22,请修改;
  2. 其它端口需要ESTABLISHED、RELATED两种状态的数据包才能通过,而通常这两种状态的数据包在TCP协议上的定义是已经建立了连接的后续数据包,也就说,别人无法对你的任何端口主动发起连接,但是由你主动发起连接的数据包可以通过,比如说看网页的数据;
  3. 包状态NEW允许SSH用户对外的主动发起连接;
  4. 允许外部用户PING本机,这个嘛,方便自己测试,要不挂了都不知道。
  5. 关于数据包状态,我是参考这里 http://liubin.blog.51cto.com/282313/110394

这样,虽然防住了外面进来的问题,但一定程度上来说,用户通过SSH登录以后就可以干他想干的事情了,对于应用的范围不能达到一个控制的目的,比如说,我前面提到的“一般和谐仅限于Web浏览及各种基于Web的应用”,是的,和谐嘛,也就是用这些了,顶天了再来个FTP或者跳板另外的SSH,于是,21便想到了稍微BT一点的限制,请看参考二。
Continue reading SSH和谐主机的iptables设置参考

解决SSH断线后的会话恢复

最近从vpsee\酷胖等博客看到的信息,购买了好几个廉价的VPS在学习,于是就产生了不少基于SSH的困扰,而掉线重连的会话丢失算是一个 ……

感谢GG大神的帮助,我找到了这个工具:screen
简单的说,就是这个工具会接管你当前的console会话,然后当前控制台显示的输入/输出就由它负责,如果你掉线后,只要重新启用screen,就是恢复到之前的状态。大概的操作流程如下:

  1. 以SSH的方式连接你的服务器
  2. 安装Screen;
    debian/ubuntu: apt-get install screen
    fedora/centos: yum install screen
  3. 输入screen接管当前会话;
  4. 进行自己需要的任何操作;
  5. SSH掉线;
  6. 重连SSH并输入screen -r恢复会话;
  7. 可以在.bash_profile里加一行
    alias r=’screen -d screen -ls |grep Attached|cut -f2|cut -f1 -d".";screen -r screen -ls |grep Detached|cut -f2|cut -f1 -d"."
    能够方便的切回screen窗口(假设只开了一个screen)。

恩,不是啥复杂的东西,但是能解决不小的困扰。

内容引用参考:
雨中的高速公路 – 《在ssh终端下如何解决断线带来的困扰》。

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我登录上去在有限的权限内我开始翻系统的文件,我考虑到了用户组混搭[1]方面的问题,于是我实验了一个办法,并且通过了:

把用户 www-data[2] 加入 <user-private-group>

但是,反过来把 real_user 添加到组 www-data 并不能实现real_user的权限对www-data开放,除非文件的隶属组是www-data。不过问题在于,不可能主机商会让apache2的run_user加入每一个用户的私有组[3],乍一看是没什么安全问题,单向继承权限嘛,但是如果我们一些特定的文件只让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

---------------------------------------
  1. 灵感来自犀利哥,嘿嘿,开玩笑的~ []
  2. Debian里面的Apache2默认以此用户名/组运行 []
  3. private group,私有组,用户创建时一同添加的同名组。 []

自制RHEL5 DVD安装盘

最近在学习Red Hat方面的管理,一般来说我们比较容易获取的是RHEL(Red Hat Enterprise Linux)的CD版介质(比如国内的Lupaworld镜像),不过一共6CD安装起来的替换也是很麻烦,我找到一个教程与大家共享。

文章来源:Mind Download
本教程是基于Linux shell的操作,Unix-like通用,Windows请看文后简述。

一、首先下载6张CD,(借用lupaworld)

32位安装盘
rhel-server-5.3-i386-disc1.iso
rhel-server-5.3-i386-disc2.iso
rhel-server-5.3-i386-disc3.iso
rhel-server-5.3-i386-disc4.iso
rhel-server-5.3-i386-disc5.iso
64位安装盘
rhel-server-5.3-x86_64-disc1.iso
rhel-server-5.3-x86_64-disc2.iso
rhel-server-5.3-x86_64-disc3.iso
rhel-server-5.3-x86_64-disc4.iso
rhel-server-5.3-x86_64-disc5.iso
rhel-server-5.3-x86_64-disc6.iso

二、建立6个临时目录,同时挂载6个ISO文件。

三、修改相关的光盘配置文件

编辑复制过来的当前目录的.discinfo文件(nano .discinfogedit .discinfo),效果如下(不一定完全一样):

1170972087.594754
Red Hat Enterprise Linux Client 5
i386
1,2,3,4,5,6 <-主要是修改这里的1为现在的1,2,3,4,5,6
Client/
VT/
Workstation/

四、合并6个CD镜像并写入新的配置文件,生成DVD ISO镜像,红色的是卷标名称,请自定义。

五、扫尾工作

六、Windows怎么办?
呃,实际上我没有试过,但是我推断,只要把所有的ISO解压后复制到同一目录下(可覆盖同名文件),然后编辑.discinfo文件(如第三步那样),然后用WinISO或者UltraISO创建一个DVD文件,引导文件使用文件目录下的“isolinux/isolinux.bin”文件,并删除“isolinux/boot.cat”文件,然后保存ISO,应该可以,不过,建议尽量使用linux。

七、其它
实际上,RedHat官方就提供了DVD文件,只要注册一个RHN试用30天的帐户就可以下载,这个仅供大家参考。
同时,原作者提供了一个bash脚本用来处理这个过程,只要跟几个镜像放在同一目录下执行就是,文件内容如下: Continue reading 自制RHEL5 DVD安装盘

辟谣之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专业主机

在CentOS 5下安装VirtualBox客户端增强功能

今天在VirtualBox里面安装CentOS 5.3,当需要安装增强功能的时候,提示:

Please install the build and header files for your current Linux kernel.

于是参考放飞时空此PO完美解决,将命令汇总如下:

参考:
放飞时空: http://www.080909.com/wordpress/2009……

漫谈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安装、迁移