比起其它操作系统,用linux搭建服务器最适合草根用户。原因有多个:
- 价格低廉,甚至免费
- 开源普及
- 硬件需求低
- 安全稳定
本文介绍作者自己如何设置ubuntu服务器环境,对于其它linux操作系统也可以作为参考。
Contents [hide]
安装系统
网上的安装ubuntu的资料很多。这里就不再介绍。
远程登录
服务器通常用ssh远程登录。
取消sudo输入密码
服务器一般都要禁止root直接登录,能更好的防止暴力破解密码。但是如果让管理员每次执行sudo的时候都要输入密码,那真的是一件痛苦的事情。所以我们需要取消输入密码。这可以通过修改配置文件 /etc/sudoer 来做到,在里面加上这一行:
ubuntu ALL=(ALL) NOPASSWD:ALL
这里ubuntu是指用户名。
值得注意的是,如果要这样做,必须按照以下步骤来做:
- 切换成root用户
- 增加 /etc/sudoers 写的权限
- 修改文件 /etc/sudoers
- 去除 /etc/sudoers 写的权限
证书登录
ssh支持证书登录,可以参考我的文章 ssh证书 。
windows的ssh工具(可选)
XShell
putty
putty也是我常用的ssh工具,如下优点:
- 小巧,无需安装
- 免费使用
- 支持证书登录
- 支持UTF-8字符编码
当然,它的缺点也不少,如下:
- 不管理证书(也就是说证书必须以文件形式存在,不安全)
- 不能记住登录密码
- 不支持多标签
- 依赖于windows的程序 cmd.exe ,因而界面太简单了
可以看看这篇文章—— putty详细使用说明 ,讲得很细。
linux中文环境(可选)
如果不涉及中文化,可以忽略。
检查中文环境
先看看环境是否正确设置,如果看到类似下面的东西,就已经支持中文;不然就要做下面的设置。
root@ubuntu:~# locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=zh_CN.UTF-8
支持中文UTF-8
root@ubuntu:~# locale-gen --lang zh_CN.UTF-8
设置默认环境
/etc/default/locale
root@ubuntu:~# cat /etc/default/locale LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_ALL="zh_CN.UTF-8"
/var/lib/locales/supported.d/local
确认第一行是 zh_CN.UTF-8 UTF-8 。
root@ubuntu:~# cat /var/lib/locales/supported.d/local zh_CN.UTF-8 UTF-8 en_US.UTF-8 UTF-8
/etc/environment (可选)
root@ubuntu:~# cat >> /etc/environment LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_ALL="zh_CN.UTF-8"
设置时间
如果时间不对,可以考虑设置时区
cp /etc/localtime /etc/localtime.bak cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
如果时间还不对,那么就要用date命令修改时间了,例如
date -s "2007-08-03 14:15:00"
禁止错误报告(可选)
程序 whoopsie 会上传错误报告给ubuntu总部。修改文件 /etc/default/whoopsie ,禁止错误报告:
report_crashes=false
同时停止服务 whoopsie
/etc/init.d/whoopsie stop
停止无用的服务
/sbin/getty
用 ps 等命令,可以看到有这样一些进程 /sbin/getty -8 38400 tty1 ,实际上不大需要它们,保留一个就行了。这些程序由 init 程序守护着,用 kill 命令是杀不死的,只能用 initctl 来停止。
initctl stop tty2 initctl stop tty3 initctl stop tty4 initctl stop tty5 initctl stop tty6
rsyslog
rsyslog 用来传输远程系统日志,如果不需要这个功能,也可以停止它。
initctl stop rsyslog
必备工具
apt
修改文件 /etc/apt/sources.list ,并执行 apt-get update 。国内推荐使用163的源地址。
emacs/vim
我主要是用emacs,vim则作为临时的工具。
安装nox版emacs
root@ubuntu:~# apt-get install emacs23-nox -y
下载emacs配置文件
我把自己的emacs配置文件都在github上
root@ubuntu:~# apt-get install git -y root@ubuntu:~# git clone git://github.com/wuyao721/51dotemacs.git root@ubuntu:~# cp 51dotemacs/.emacs . root@ubuntu:~# cp 51dotemacs/.screenrc . root@ubuntu:~# cp -r 51dotemacs/.emacs.d .
screen
可以这样说,如果linux用在服务器上,那么screen是必须知道的工具。参考我这篇文章 一个emacser的screen 。
个人博客
服务器用途之一便是搭建网站,我的这个博客就是这么弄的。可以参考我这篇文章 wordpress环境快速搭建 。
常见问题
Failed to fetch bzip2:/**** Hash Sum mismatch
如果系统所在的网络使用了缓存,可能会导致文件过期,使用代理更新apt源能解决这个问题:
apt-get -o Acquire::http::proxy="http://127.0.0.1:8087/" update
ubuntu老版本不再被支持
ubuntu版本更新较快,老的版本慢慢的不被支持,导致 apt-get 等命令安装软件就会出现找不到软件包的问题。幸好老的发行版有备份,放在域名 old-releases.ubuntu.com 下。修改 sources.list 即可。
deb http://old-releases.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
以下是ubuntu的版本列表
- Ubuntu 4.10 (Warty Warthog)
- Ubuntu 5.04 (Hoary Hedgehog)
- Ubuntu 5.10 (Breezy Badger)
- Ubuntu 6.06 LTS (Dapper Drake)
- Ubuntu 6.10 (Edgy Eft)
- Ubuntu 7.04 (Feisty Fawn)
- Ubuntu 7.10 (Gutsy Gibbon)
- Ubuntu 8.04 LTS (Hardy Heron)
- Ubuntu 8.10 (Intrepid Ibex)
- Ubuntu 9.04 (Jaunty Jackalope)
- Ubuntu 9.10 (Karmic Koala)
- Ubuntu 10.04 LTS (Lucid Lynx)
- Ubuntu 10.10 (Maverick Meerkat)
- Ubuntu 11.04 (Natty Narwhal)
- Ubuntu 11.10 (Oneiric Ocelot)
- Ubuntu 12.04 LTS (Precise Pangolin)
- Ubuntu 12.10 (Quantal Quetzal)
- Ubuntu 13.04 (Raring Ringtail)
- Ubuntu 13.10 (Saucy Salamander)
参考资料
Footnotes:
1 实际上emacs有些按键还是用不上了,比如说按键 C-M-f 被屏蔽了,又比如按键 M-DEL 被转成 C-M-h 。哪个大牛帮我解决这个问题。