文章目录
  1. 1. Overview
  2. 2. 操作系统
    1. 2.1. 系统选择
    2. 2.2. 关于用U盘安装
    3. 2.3. 系统配置
      1. 2.3.1. /etc/sudoers
      2. 2.3.2. /etc/sysctl.conf
      3. 2.3.3. /etc/security/limits.conf
      4. 2.3.4. SELinux
      5. 2.3.5. /etc/profile
      6. 2.3.6. 同步时间
      7. 2.3.7. iptables
      8. 2.3.8. sshd监听端口
      9. 2.3.9. CPU温度检测
      10. 2.3.10. samba
      11. 2.3.11. KVM
      12. 2.3.12. CDH
  3. 3. 开发环境
    1. 3.1. yum
      1. 3.1.1. epel
      2. 3.1.2. 其他库
    2. 3.2. git
      1. 3.2.1. 基本配置
      2. 3.2.2. 自动补全
    3. 3.3. vim
      1. 3.3.1. 基本配置
      2. 3.3.2. 插件
    4. 3.4. node.js
      1. 3.4.1. 基本
      2. 3.4.2. cnpm
      3. 3.4.3. 其他包
    5. 3.5. Java
    6. 3.6. nginx(with rtmp)
    7. 3.7. Go
    8. 3.8. 其他
  4. 4. Reference

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权限,编辑完再去掉即可,在文件中添加:

1
odin ALL=(ALL) NOPASSWD: ALL

/etc/sysctl.conf

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

1
2
# max open files
fs.file-max = 409600

打开路由转发功能:

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

/etc/security/limits.conf

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

1
2
3
4
* soft nofile 409600
* hard nofile 409600
* soft core unlimited
* hard core unlimited

SELinux

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

1
SELINUX=disabled

/etc/profile

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

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

同步时间

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

1
ntpdate time.windows.com && hwclock -w

iptables

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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

1
Port 2012

CPU温度检测

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

之后执行sensors就行。

samba

1
2
3
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相当于一个比较全的第三方仓库

1
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

基本配置

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

自动补全

1
2
3
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,所以直接用二进制安装就好。

1
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

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

其他包

Java

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

1
2
3
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。

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

Go

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

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

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

其他

Reference

文章目录
  1. 1. Overview
  2. 2. 操作系统
    1. 2.1. 系统选择
    2. 2.2. 关于用U盘安装
    3. 2.3. 系统配置
      1. 2.3.1. /etc/sudoers
      2. 2.3.2. /etc/sysctl.conf
      3. 2.3.3. /etc/security/limits.conf
      4. 2.3.4. SELinux
      5. 2.3.5. /etc/profile
      6. 2.3.6. 同步时间
      7. 2.3.7. iptables
      8. 2.3.8. sshd监听端口
      9. 2.3.9. CPU温度检测
      10. 2.3.10. samba
      11. 2.3.11. KVM
      12. 2.3.12. CDH
  3. 3. 开发环境
    1. 3.1. yum
      1. 3.1.1. epel
      2. 3.1.2. 其他库
    2. 3.2. git
      1. 3.2.1. 基本配置
      2. 3.2.2. 自动补全
    3. 3.3. vim
      1. 3.3.1. 基本配置
      2. 3.3.2. 插件
    4. 3.4. node.js
      1. 3.4.1. 基本
      2. 3.4.2. cnpm
      3. 3.4.3. 其他包
    5. 3.5. Java
    6. 3.6. nginx(with rtmp)
    7. 3.7. Go
    8. 3.8. 其他
  4. 4. Reference