Siyuan's Blog

  • 首页

  • 归档

  • 标签

  • 搜索

Docker Linode 部署笔记

发表于 2014-02-20 | 更新于 2014-06-07 |

运行环境为 Ubuntu 12.04 LTS 64bit,Docker 0.8.0。
在开始之前,建议部署一个全新的 Linode 来进行操作以防止历史遗留的配置造成意外 :-D

咳咳,以下运行的命令都是以 root 身份运行的,我比较懒喜欢直接 sudo -s,不过这不是一个好的习惯各位不要学习啊哈哈~

  1. 更新系统

    1
    2
    apt-get update
    apt-get upgrade
  2. 替换内核和 GRUB

    1
    2
    apt-get install linux-virtual grub-legacy-ec2
    apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
  3. 编辑 /boot/grub/menu.lst,找到

    1
    # defoptions=console=hvc0

在后面加上 rootflags=nobarrier,注意 不要 取消这行的注释

1
# defoptions=console=hvc0 rootflags=nobarrier

  1. 编辑 /etc/default/grub,找到
    1
    GRUB_CMDLINE_LINUX=""

里面加上 cgroup_enable=memory swapaccount=1

1
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

  1. 重新生成 /boot/grub/menu.lst

    1
    update-grub-legacy-ec2
  2. 修改 Linode Profile

    将 Boot Settings 里的 Kernel 修改为 pv-grub-x86_64,
    然后取消勾选 Filesystem/Boot Helpers 里的 Xenify Distro,保存,然后重启。
    重启之后 uname -r 即可看到当前内核版本:

    1
    2
    root@linode-x1:~# uname -r
    3.8.0-35-generic
  3. 安装 Docker

    嘛,这里说过了就不说了,可以翻阅之前写的 Docker 简明部署教程 或者官方文档 Installation on Ubuntu - Docker Documentation

    1
    2
    3
    4
    5
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
    sh -c "echo deb http://get.docker.io/ubuntu docker main\
    > /etc/apt/sources.list.d/docker.list"
    apt-get update
    apt-get install -y lxc-docker

装完之后可以 docker info 看一下~是不是很完美呐~

1
2
3
4
5
6
root@linode-x1:~# docker info
Containers: 5
Images: 106
Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 116

最后抱怨一下 Markdown 其实没那么好用,幸好还能往里加 HTML :-(
以及 AppEx 什么时候支持 3.8 的内核啊魂淡前面加一台 3.2 内核的 Linode 跑它很贵的好吗一个月 20 刀呢!(果然人穷就是尼玛事儿多

参考文章:

  1. PV-GRUB - LinodeWiki
  2. Installation on Ubuntu - Docker Documentation

使用 Runkit 实现简易的 PHP 后门检测

发表于 2014-02-14 | 更新于 2014-06-07 |

这是今天在帮某大检查他被黑的机器的时候想出的歪门邪道。
原理很简单,就是把 PHP 原有的函数改名,然后用自己的函数替换掉那个原来的函数。

啊,首先呢,你必须要有 root 权限~ 用虚拟主机的同学们请自觉做鸟兽散。

Runkit 在 PECL 的版本非常老,最新的版本居然是 2006-06-06 年的。
当然老没有关系,有些发行版就喜欢用老的东西,以及大部分虚拟主机用户还喜欢用 PHP 5.2 甚至更老的版本呢。不过这个例外,由于版本太老了所以连在 PHP 5.2 上都跑不了,所以我们要去 GitHub 上下最新的开发分支。

1
2
3
4
5
6
7
cd /tmp
git clone https://github.com/zenovich/runkit.git
cd runkit
phpize
./configure
make
make install

然后在 php.ini 里加上相关条目:

1
2
3
[runkit]
extension="runkit.so"
runkit.internal_override = On

找不到 php.ini 在哪儿的,请在 Web 目录下放置如下文件,然后用浏览器打开就能看到咯:

1
2
<?php
echo php_ini_loaded_file();

当然呢,对于蛋疼的 DirectAdmin 用户,我们还需要在 php.ini 里把 extension_dir 修改为 /usr/local/bin/php-config --extension-dir 所显示的目录才行。

然后找个地方放下这个文件,我是放在了 /usr/local/lib/php/security.php,下文也以此为例子。
注意的是:

1. 必须去掉这个文件的写权限,不怕死的可以不去掉。
2. 开启了 **open_basedir** 选项的,这个文件需要放置在 **open_basedir** 里面所列出的目录里,不然会出错。
3. 请把 `/tmp` 换成其他可写的日志目录,或者换成 syslog 什么的。

再修改 php.ini,找到 auto_prepend_file 这行,改为:

1
auto_prepend_file = /usr/local/lib/php/security.php

最后重启 apache 进程即可看到效果啦~ 日志是介个样子的

1
2
3
4
5
6
================
URI = /login.php
Client = 125.33.92.240
Header = Location: index.php
Backtrace = /home/xxxxxx/domains/xxxxxx.net/public_html/global.php:354:header
/home/xxxxxx/domains/xxxxxx.net/public_html/login.php:45:ObHeader

Docker 简明部署教程

发表于 2014-02-07 | 更新于 2014-06-07 |

喵,首先需要准备一个干净的 Ubuntu 12.04 LTS 环境。
Tips: 如果使用 VPS 的话推荐使用基于 KVM / VMWare 虚拟化的,如果是 OpenVZ 什么的就算了… 洗洗睡吧

安装 Docker

首先需要升级内核,由于 Precise 默认提供的 3.2 内核里 LXC 的支持有点问题,所以我们需要升级到 3.8:

1
2
sudo apt-get update
sudo apt-get install -y linux-image-generic-lts-raring linux-headers-generic-lts-raring

升级完成后重启一下,让内核生效:

1
sudo reboot

然后导入 Docker 的 Key 并安装之:

1
2
3
4
5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install -y lxc-docker

准备基础镜像

接下来我们需要准备一个基础镜像,对于我等 Debian 脑残粉,嗯下面的基础镜像就以 Debian 7 Wheezy 为例子啦~

当然,你也可以直接用 docker pull debian 从官方 registry 下载,但是 Cloudflare 在国内的可用性实在是太烂了,还是自己做算了。

制作镜像需要用到 debootstrap 这个包,我们先安装一下:

1
sudo apt-get install -y debootstrap

然后生成一只 Debian:

1
debootstrap wheezy debian-wheezy http://mirrors.espresso.li/debian

嗯注意请把 http://mirrors.espresso.li/debian 换成你所使用的 Debian 源的地址,上面写的这个源是不对外开放的喵

接下来我们把它导入 Docker:

1
tar -C debian-wheezy -c . | sudo docker import - espresso/debian

嗯好了接下来你们自己玩儿吧我上班去了。。。

1…456…12

Siyuan Miao

35 日志
42 标签
GitHub Twitter
© 2018 Siyuan Miao
由 Hexo 强力驱动 v3.7.1
|
主题 — NexT.Mist v6.3.0