自用服务器配置小记-系统篇不定期更新


Overview

按照我取机器名用马刺队员的习惯,我决定将这台机器命名为DannyGreen,希望这台屌丝的DIY服务器可以像格林一样,成为一个廉价但是超值的服务器。

操作系统

系统选择

操作系统自然选择国内生产环境使用最多的CentOS(RHEL)系列,目前最新版本是7.x,使用gcc 4.8+和kernel 3.x,不过7的系统配置管理方面修改了太多,我用6.x的比较多,而且国内基本还是用6的多,所以我还是选择了6系的最新版本6.7。

关于用U盘安装

我最开始用UltraISO做的启动U盘,但是启动时一直卡在Press the <Enter> key to begin the installation process画面,用Win32 Disk Imager制作就没问题了。之前做前厂的系统也用过一次U盘,也是卡在那,还以为是镜像的问题。安装的具体过程就不说了,反正大家都会。

系统配置

/etc/sudoers

root密码被我设置成一个复杂的密码了,所以自己账号的sudo权限加上比较方便,注意这个文件是没有写权限的,所以先给一个u的w权限,编辑完再去掉即可,在文件中添加:

odin    ALL=(ALL)       NOPASSWD: ALL

/etc/sysctl.conf

这里主要配置最大打开文件数,配置完后执行sysctl -p /etc/sycctl.conf生效,在文件结尾添加:

# max open files
fs.file-max = 409600

打开路由转发功能:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

/etc/security/limits.conf

这里主要是配置最大打开文件数和core文件限制,也就是ulimit的配置,在文件中添加:

* soft nofile 409600
* hard nofile 409600
* soft core unlimited
* hard core unlimited

SELinux

这东西没卵用,还是禁用了吧,编辑/etc/selinux/configSELINUX改成disabled,貌似要重启,即:

SELINUX=disabled

/etc/profile

这里其实就是把/usr/local系的加入到相关环境变量,免得各个用户再配,在文件中添加:

export PATH="/usr/local/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"

同步时间

每次装完系统,时间都不对,只能重新设置一下:

ntpdate time.windows.com && hwclock -w

iptables

直接上执行service iptables save命令后的/etc/sysconfig/iptables好了:

# Generated by iptables-save v1.4.7 on Tue Nov  3 19:56:09 2015
*nat
:PREROUTING ACCEPT [2:486]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 199.9.249.0/24 -i eth0 -j REDIRECT
-A PREROUTING -d 199.9.251.0/24 -i eth0 -j REDIRECT
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Nov  3 19:56:09 2015
# Generated by iptables-save v1.4.7 on Tue Nov  3 19:56:09 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6117:1304278]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m multiport --dports 80,1935,2012 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -s 192.168.199.0/24 -j ACCEPT
-A FORWARD -d 192.168.199.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Nov  3 19:56:09 2015

sshd监听端口

服务器放在家里,白天上班时在公司通过ssh访问,但是国内22端口root密码暴利破解的太多了,安全起见还是改一下端口吧,修改/etc/ssh/sshd_config

Port 2012

CPU温度检测

sudo yum install -y lm_sensors
sudo sh -c "yes|sensors-detect"

之后执行sensors就行。

samba

yum install -y samba samba-client samba-swat
# 给用户设置samba密码
smbpasswd -a odin

KVM

详见在CentOS 6上安装部署KVM虚拟机

CDH

详见Installation Path A - Automated Installation by Cloudera Manager

开发环境

yum

epel

epel相当于一个比较全的第三方仓库

wget http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm && rpm -ivh epel-release-latest-6.noarch.rpm

其他库

这里收录所有用yum安装的类库

  • mcelog
  • clang
  • clang-devel
  • pcre-devel
  • lm_sensors
  • libicu-devel
  • samba
  • samba-client
  • samba-swat

git

基本配置

git config --global user.email=odinushuaia@gmail.com
git config --global user.name="Liu Yiding"
git config --global core.editor=vim

自动补全

git clone https://github.com/markgandolfo/git-bash-completion.git
#再在.bashrc中添加一段source即可:
source /path/to/git-completion.bash

vim

基本配置

vim基本只要把$HOME/.vimrc$HOME/.vim拷贝一下就能用,这里有空再整理吧

插件

node.js

基本

由于node.js最新版编译安装需要g++ 4.8以上,而CentOS 6默认是4.4,所以直接用二进制安装就好。

wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz`

在.bashrc中添加NODE_HOME环境变量,以及将$NODE_HOME/bin添加到PATH

cnpm

npm太慢,直接上淘宝的cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

其他包

Java

首先需要卸载openjdk,rpm -qa | grep java,看看安装了哪些包,卸载一下就行。Oracle坑爹的网站下载真是太慢了,下好之后解压缩就行,然后配环境变量,顺便下个maven,很多工程要用到。在.bashrc中添加相关环境变量,记得把bin加到PATH中:

export M2_HOME="$HOME/app/maven"
export JAVA_HOME="$HOME/app/jdk"
export CLASS_PATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar"

nginx(with rtmp)

首先用yum安装pcre-devel,之后下载nginx和nginx-rtmp-module。

./configure --add-module=../nginx-rtmp-module --with-http_ssl_module --prefix=/opt/nginx
make -j 10 && sudo make install

Go

懒得编译一个了,所以直接下载二进制分发就行。主要配置两个环境变量:

# for go
export GOROOT="$HOME/app/go"
export GOPATH="$HOME/gospace"

其中GOROOT是解压出来的go目录,而GOPATH是go的包管理体系需要用到的路径,前者系统共用无所谓,后者放到自己家目录比较方便。

其他

Reference


文章作者: Odin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Odin !
  目录