(总结)64M超小内存VPS里优化Debian 5.x

4,647次阅读
没有评论

共计 4824 个字符,预计需要花费 13 分钟才能阅读完成。

CentOS/RHEL 官方推荐的最小配置(不带图形界面)虽然是 64MB 内存,但是考虑到同时要跑 MySQL,PHP,WordPress 等程序 64MB CentOS就有点吃力了。还有一个考虑就是运行一次 yum 需要比 apt-get 多得多的内存资源。所以按照我的 VPS 配置,64MB内存,128MB 交换,2.5GB 的硬盘,就只能选 Debian 了。

Debian 是一个古老,严谨,自由而且流行的 Linux 发行版,有 n 多的软件包可以用,有很好的稳定性和安全性,是各大 Linux hosting 服务商的主流系统之一,几乎所有 Linux VPS 都支持 Debian 版本。安装 Debian 的系统最低内存要求是 64MB,但是官方文档也说了真正的最低内存配置要比 64MB 低一些,根据不同的硬件体系安装在只有 48MB 的 i386 上也是可能的。

查看 VPS 配置

1、查看以下 VPS 的硬件信息,做到心中有数

# free  # cat /proc/cpuinfo

安装和升级系统

2、登录 VPS 安装 Debian 5

3、安装完毕后马上升级整个系统

# apt-get update && apt-get upgrade

寻找小资源的替代软件

4、用 pdksh 替代 bash

当你在使用 64MB VPS 的时候,为了多压榨一些可用的内存通常不得不去用一些轻量的程序替代那些笨重的程序,比如用 niginx/lighttpd 替代 apache,把省下来的内存留给那些必须的程序,像省钱一样不是吗?,把一些不必要的开支省下来应付那些必不可少的开支,用在刀刃上。

Bash 是现在大多数 Linux 发行版本的默认 shell, 是大多数 Linux 命令行用户的默认界面。从本人十多年前接触 Linux 以来,换过很多发行版本,换过不同的邮件服务器,换过不同的 web/ftp 服务器。不过从来没有换过 shell,期间试过一些不同的 shell,如csh,korn shell,不过总是感觉不满意。随着 bash 功能的增强,多年下来 bash 也变得越来越臃肿,消耗越来越多的 CPU 资源,占据越来越多的内存。由于我的电脑也在与时俱进的更新换代,硬件越来越强大,所以 bash 用到的那一点点资源都不是问题,甚至都感觉不到。当有一天我需要在一个 64MB 的 VPS 上运行 WordPress的时候,才发现 bash 的”身材”一点也不苗条。一个只有 64MB 的机器如果有多人同时登录的话,bash 占据的内存就显得比较可观了(那可是只有 64MB 的 VPS)。所以需要用一个轻量级的 shell 来替换 bash。

在网上搜了一圈,最终落在 pdksh 上,pdksh 是从 korn shell 的分出来的一个版本,这里有更多关于 pdksh 的介绍。 运行一个 bash 需要 4MB 左右的内存,而运行一个 pdksh 只要 1MB 左右。如果你的习惯和我一样一登录上来就启6个 ssh 的话,那么替换掉bash绝对必要,那可是约 18MB 左右的内存,对于只有 64MB 的主机来说是一个大买卖。让我来解释一下买卖 : ),对于一般用户来说现在 VPS 提供的硬盘够用了,带宽够了,CPU 也够了,唯独 VPS 配置里面最紧缺的就是内存。现在提供 64MB VPS 主机的 hosting服务商一般都把价格定在8美元每月到20美元每月之间,那 18MB 可就是省了2美元到6美元每个月。pdksh 看上去像是个很好的 bash 替代品,简单,自动 tab 补齐, history 记录,bourne shell 的语法(如果你不喜欢 csh/tcsh 的话),这已经足够了,正是我需要的。如果你对 shell 感兴趣的话,这里有更多关于不同shell的比较

# ps -C bash v    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND   1254 ?        Ss     0:00     26   663  2272    36  1.2 /bin/bash --    # apt-get install pdksh  # chsh -s /bin/pdksh    重新用 ssh 登录 VPS    # ps -C pdksh v    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND  27700 pts/0    Rs     0:00     17   174  1765   344  0.5 -pdksh

值 得注意的是,如果你用的是 VPSLink 的 VPS 的话会发现即使替换掉了 bash 系统还是会自动启动一个bash进程出来,原来 VPSLink 在 /etc/inittab 的最后加了一行,只要把最后一行的 /bin/bash 改成 /bin/sh 或者 /bin/pdksh,运行 init q 重新载入 init(1),然后 kill 掉那个 bash 进程就可以了。

shell 是个很个人的事情,一旦你习惯了一种 shell 就不大容易马上替换掉它,就像虽然我知道 nano 比 vi 更小巧更简单,需要的内存更少,但是我也不会用 nano 来替换 vi 的,我不能没有 vi。

5、用 Dropbear 替代 OpenSSH

OpenSSH 是个必不可少的服务程序,不过如果同时很多次登录 ssh 的也会吃掉很多内存,用一个轻量级的程序替代的话会省下更多的内存。Dropbear 是一个相对较小的 SSH 2 服务器,这里有更多关于 Dropbear介绍 的信息。如果不需要 OpenSSH 其他强大的功能的话 Dropbear 是一个不错的替代品,很多嵌入式产品,如:路由器,交换机等都把 Dropbear 作为默认的 SSH 服务。Dropbear 体积小还有一个原因是:如果你用非 root 用户登录,Dropbear 只需要创建1个进程,而 OpenSSH 则需要创建2个进程,更多的进程意味着更多的地址空间,更多的内存资源。虽然从功能上说 Dropbear 目前还不如 OpenSSH 强大,不过如果只想拿它来做远程登录 VPS,打打几个命令来管理一下 VPS 还是可以的。重要的是相对于 OpenSSH 的庞大体积来说,Dropbear 省了大约30%到50%的内存。

# touch /etc/ssh/sshd_not_to_be_run  # apt-get install dropbear  # vi /etc/default/dropbear  # /etc/init.d/dropbear start

6、用 syslog-ng 替代 rsyslog

Rsyslog 是 Debian 5 的默认日志工具,是一个专注于安全和稳定的增强型多线程日志工具,有着丰富的功能,强大的可定制能力,可以把日志写入数据库(支持 MySQL,PostgresSQL,Oracle 等),E-mail 警报,可定制的日志输出等等,不过对于一个运行在 64MB VPS 的博客/网站来说,Rsyslog 未免显得过于强大,功能强大就意味着占用更多的 CPU/内存 资源。但是也不能没有一个日志工具,没有系统日志记录功能的系统是非常危险的,尤其是受到外部或者内部的威胁的时候,监控排错都需要一个好的日志系统的支 持。不用日志系统就像用 gcc 不用 gdb 一样,调试程序不用 debug 一样。

Syslog-ng 是一个不错的 Rsyslog 替代品,被 SUSE,Fedora,旧版本 Debian, Gentoo 等发行版当作默认日志工具。不过 apt-get install syslog-ng 后发现 syslog-ng需要 libevtlog0, libglib2.0-0,libglib2.0-data 软件包,并且需要约 5349KB 的额外硬盘空间,这对一个只有2.5GB硬盘的 VPS 来说”太”大了,5MB 空间可以写500篇左右的博客啊。

syslog-ng 的增强功能对于这个小小 VPS 来说不必要,用简单的 syslogd 就可以满足我的要求,于是决定用 syslogd 来替代 Rsyslog。注意安装 syslogd 的软件包名字是 sysklogd。

# apt-get install sysklogd && dpkg --purge rsyslog
# ps -C rsyslogd v    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND   20441 ?        Sl     0:00      0   27 32836  1220  1.8 /usr/sbin/rsyslogd -c3    # apt-get install sysklogd && dpkg --purge rsyslog    # ps -C syslogd v    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND  27769 ?        Ss     0:00     11    25  1806   324  0.4 /sbin/syslogd

7、既然要优化,那就删除一下Debian自带的不必要程序好了:

# apt-get remove acpi acpi-support-base acpid eject man-db manpages nano vim laptop-detect bsdmainutils busybox dmidecode

8、更新Debian:

# apt-get update && apt-get upgrade

9、安装必要的一些组件:

# apt-get install automake wget zip unzip make time

10、安装LNMP:

懒人可以使用lowendbox制作的低内存Debian/Ubuntu版LNMP,在Debian 32bit下使用只有42.9M。

11、防火墙设置:

要保证服务器安全,防火墙是少不了的,用 root 帐号执行:

iptables -F

iptables -N FIREWALL

iptables -F FIREWALL

iptables -A INPUT -j FIREWALL

iptables -A FORWARD -j FIREWALL

iptables -A FIREWALL -p tcp -m tcp –dport 110 –syn -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –dport 80 –syn -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –dport 443 –syn -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –dport 22 –syn -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –dport 25 –syn -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –dport 3306 –syn -j ACCEPT

iptables -A FIREWALL -i lo -j ACCEPT

iptables -A FIREWALL -p udp -m udp –dport 161 -j ACCEPT

iptables -A FIREWALL -p udp -m udp –sport 6277 -j ACCEPT

iptables -A FIREWALL -p udp -m udp –sport 24441 -j ACCEPT

iptables -A FIREWALL -p tcp -m tcp –syn -j REJECT

iptables -A FIREWALL -p udp -m udp -j REJECT

iptables-save > /etc/firewall-rules

iptables-restore < /etc/firewall-rules

这 里设置的相对宽松一些,22 端口对所有 IP 都开放了,为的是方便管理。最好修改一下ssh端口号。161 端口是 snmp 端口,我开这个是为了远程监控,所以是可选项。 6277、24441 这几个端口是 Razor/Pyzor/DCC/SA 要访问的端口。请根据自己的情况开放。

执行

iptables -L

可以看到你设定的规则,如果不对,可以用 iptables -F 清空,然后重设。

如果想要开机运行,那么编辑 /etc/network/interfaces,在 iface lo inet loopback 之后加入:

pre-up iptables-restore < /etc/firewall-rules

或者是放在启动脚本里: /etc/init.d/bootmisc.sh

这里是iptables的一些资料, 介绍的很详细:

http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html (iptables使用指南)

正文完
 0
评论(没有评论)

空瓶子部落

文章搜索
推荐阅读
如何用四川话委婉的表达东西难吃

如何用四川话委婉的表达东西难吃

——今天的编辑 余飞 四川人评价一道菜好吃,永远的标准答案就是,“留到下面”。 四川人评价一道菜难吃,各有各的...
知识体系构建:打造你的个人竞争力

知识体系构建:打造你的个人竞争力

在快速变化的现代社会中,个人竞争力的提升已成为职业发展的关键。而这一切的基石,便是构建一个坚实的知识体系。本文...
【基础知识】粗牙与细牙螺纹的应用场景及选用原则

【基础知识】粗牙与细牙螺纹的应用场景及选用原则

螺纹作为连接和紧固的重要元件,在机械设计和制造中扮演着至关重要的角色。其中,粗牙螺纹和细牙螺纹是两种常见的螺纹...
你必须知道的质量检验三部曲

你必须知道的质量检验三部曲

质量检验就是对产品的一项或多项质量特性进行观察、测量、试验,并将结果与规定的质量要求进行比较,以判断每项质量特...
最新文章
Free TV:全球免费电视频道 M3U 播放列表,狂揽数万 Star

Free TV:全球免费电视频道 M3U 播放列表,狂揽数万 Star

https://github.com/Free-TV/IPTV 项目简介 Free TV 是一个精心维护的开源...
群晖 Let’s Encrypt 泛域名证书自动更新

群晖 Let’s Encrypt 泛域名证书自动更新

目前acme协议版本更新,开始支持泛域名(wildcard),也就是说,可以申请一个类似*.domain.co...
可以卸载TV Box 了,这款支持「绅士模式」的影视神器你值得拥有

可以卸载TV Box 了,这款支持「绅士模式」的影视神器你值得拥有

还在为找优秀片源难、广告多、平台会员太贵而烦恼?今天给大家挖到一款真正的影视宝藏工具——小猫影视! 作为开源免...
【收藏】一次性解决TV点播/直播自由

【收藏】一次性解决TV点播/直播自由

很多时候,资源就在面前,但是我们视而不见,因为长久的安逸,已经让人失去动手的兴趣。但是每次我需要挨个切换APP...
OpenWrt 存储空间扩容的两种方案

OpenWrt 存储空间扩容的两种方案

说明:当我们通过群晖 VMM 虚拟机安装 Open­Wrt 时,默认会分配一个 10GB 的存储空间,而实际情...
热门文章
提高过程能力指数(CP/CPK)的途径

提高过程能力指数(CP/CPK)的途径

编者按:过程能力指数(CP/CPK)想必各位质量人都耳熟能详、运用自如,质量工程师之家前期也共享过数篇关于过程...
SPC控制图的八种模式分析

SPC控制图的八种模式分析

SPC控制图有八种模式,即八种判断异常的检验准则,每一种检验准则代表一种异常现象,应用SPC控制图进行过程评估...
测量高手放大招:圆跳动测量技巧总结

测量高手放大招:圆跳动测量技巧总结

01. 前言 在五金机加工厂实际的测量工作中,经常碰到要求测量两个要素的圆跳动问题, 利用不同的测量辅件及夹具...
过程能力分析(CP&cpk)

过程能力分析(CP&cpk)

引入过程能力分析的目的? 在我们现有的管理过程中,我们经常会遇到有些具体指标总是不尽人意,存在许多需要改进的地...
新能源汽车 “两会”精神宣贯会

新能源汽车 “两会”精神宣贯会

此次和大家分享新能源汽车相关政策: [embeddoc url=”https://www.ctro...
最新评论
多乐士 多乐士 通过摸索发现ssh拉取会报错,直接网页访问下载会报404错误,不知道原因;但是可以通过群晖CM注册表访问下载,其方法如下: Container Manager-注册表-设置-新增-注册表名称随便写,注册表URL填你的加速地址,勾选信任的SSL自我签署证书,登录信息不填-应用-使用你的地址,这是注册表会显示了,在搜索栏中输入映像名称,搜索结果在每一页的最后一个,你需要划到最后一个进行下载,实测可正常下载安装。 以上供网友参考。
多乐士 多乐士 还有一个比较简单的方法,只是需要一些外部工具。 1、讲损毁硬盘取出,装入外部移动硬盘 2、打开Diskgenius,定位到硬盘 3、格式化系统分区 4、重新插入硬盘 5、存储池->修复存储池即可
多乐士 多乐士 写的不错的文章
辞了老衲 辞了老衲 这个确实有帮助。
渋驀 渋驀 当然任何时候都可以用curl命令和crontab来实现动态更新DDNS的ip地址: 1、安装crontab之后为root用户创建文件/var/spool/cron/root 2、创建并配置ddnsupdate.sh,放到/usr/bin/文件下,文件内容(以he.net为例): Autodetect my IPv4/IPv6 address: IPV4:curl -4 "http://dyn.example.com:password@dyn.dns.he.net/nic/update?hostname=dyn.example.com" IPV6:curl -6 "http://dyn.example.com:password@dyn.dns.he.net/nic/update?hostname=dyn.example.com" 3、添加执行权限chomod +x /usr/bin/ddnsupdate.sh 4、编辑root用户的crontab:*/10 * * * * /usr/binddnsupdate.sh,每10分钟执行一次。好了,可以享受你的DDNS了
21410 21410 请问下载链接在那里?
madkylin madkylin 不错,不错,谢谢分享了,好东西啊 :lol:
feilung feilung 求方法
zengsuyi zengsuyi 应该挺不错的
zise zise 看看是怎么操作的。。 :oops: