购买服务器以后要做的第一件事就是安装操作系统了,这里推荐安装CentOS 6.5 x86 64,安装系统时要选择最小化安装(不需要图形),在使用服务器时要记住一个原则,系统安装的应用程序包越少,服务器就会越稳定。至于服务器单机性能调优,应本着稳定安全的原则,尽量不要改动系统原有的配置(CentOS系统自身的文件和内存机制就很优秀),以下配置优化部分也适合Amazon Linux系统,大家可以对比参考。

准备工作:配置虚拟机ip以便xshell连接,以使操作方便化。

进入网卡所在路径:

cd /etc/sysconfig/network-scripts/

用vi命令修改相应网卡信息,如ifcfg-eth0:

vi ifcfg-eth0

 

重启网卡服务后,

service network restart

用命令ping验证:

进入xshell连接状态:

外网连接验证:

ping www.baidu.com

CentOS wget是一个从网络上自动下载文件的自由工具:

yum install wget

1.系统的基础优化

1.1更新yum官方源

1)下载repo文件,命令如下:

wget https://mirrors.163.com/.help/CentOS6-Base-163.repo

2)备份并替换系统的repo文件,命令如下:

cd /etc/yum.repos.d/

ls

mv CentOS-Base.repo CentOS-Base.repo.bak

ls

mv CentOS6-Base-163.repo CentOS-Base.repo

ls

3)执行yum源更新,命令如下:

查看当前repo源:

cat CentOS-Local.repo

清楚yum缓存:

yum clean all

重建缓存:

yum makecache

升级linux系统:

yum update

增加epel源,详细步骤如下所示。

1)下载rpm文件并进行安装,命令如下:

wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

2)安装yum-priorities源优先级工具,命令如下:

yum install  yum-priorities

yum-priorities源优先级工具是yum-plugin-priroites插件,用于给”m源划分优先级。
比如说系统存在官方源、epel } puppetlabs3个yum源,这3个yum源中可能含有相同的软件,yum管理器会应用该工具来分辨安装软件时采用哪个yum源的软件。如果说,设置官方的yum源优先级最高,epel yum源第二,puppetlabs第三(用1到99来表示,1最高),那么在安装程序的时候,就会先寻找官方的yum源。如果该源里面有所要的程序,那就停止寻找,直接安装找到的;如果没有找到,则依次寻找epel和puppetlabs的源。如果说3个yum源都含有同一个软件,那就安装优先级最高的官方yum源的。添加优先级的过程比较简单,只需要编辑对应的repo文件,在文件最后添加如下内容即可:

priority=对应优先级数字

注意,要想开启yum源的优先级功能,就要先确保priorities.conf文件里面有如下内容,需要先打开此文件,打开文件的命令如下:

vi /etc/yum/pluginconf.d/priorities.conf

确保文件里面包含如下内容:

[main]
enabled=1

2.关闭不需要的服务

众所周知,服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务。建议把不需要的服务关闭掉,这样做的好处是减少内存和CPU资源占用。首先可以看下系统中存在着哪些已经启动了的服务,查看命令如下:

首先安装ntsysv插件:

yum install ntsysv

安装之后再次查看:

ntsysv

下面列出的是需要启动的服务,未列出的服务一律关闭。
0 crond:自动计划任务。
0 network : Linux系统的网络服务,很重要,若不开启此服务的话,服务器就不能联网。
0 sshd: OpenSSH服务器守护进程。
0 rsyslog : Linux的日志系统服务(CentOS 5.8下此服务名称为syslog),必须要启动。

ntsysv 的界面和文本模式的安装程序的工作方式相仿,使用上下箭头来上下查看列表,使用空格键来选择或取消选择服务,或用来“按” 「确定」和「取消」按钮,要在服务列表和「确定」、「取消」按钮中切换,使用 [Tab]键。* 标明某服务被设为启动。[F1] 键会弹出每项服务的简短描述。

3.关闭不需要的TTY

可用vim编辑器打开vim /etc/init/start-ttys.conf文件,文件内容如下所示:

vi /etc/init/start-ttys.conf

这段代码使init打开了6个控制台,可分别用ALT+F1到ALT+F6进行访问。此6个控制台默认都驻留在内存中,用ps aux命令即可看到,命令如下:

事实上没有必要使用这么多,那如何关闭不需要的进程呢?

通常保留两个控制台就可以了,打开/etc/init/start-ttys.conf文件,注意以下代码内容:

env ACTIVE_CONSOLES=/dev/tty[1一6]

将!1-6]修改为〔1-2],然后再打开/etc/sysconfig/init文件,注意以下代码内容:

ACTIVE_CONSOLES=/dev/tty[1一6]

将[[1-6]修改为[1-2],然后重启机器即可。

4.对TCP/IP网络参数进行调整

调整TCP/IP网络参数,可以加强对抗SYN Flood的能力,命令如下:

echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf

5.修改SHELL命令的history记录个数

用vim编辑器打开/etc/profile文件,关注HISTSIZE=1000:

vi /etc/profile

在找到HISTSIZE=1000后,将其改为HISTSIZE=100(这条可根据实际工作环境而定)。
不需要重启系统也可让其生效,命令如下:

source /etc/profile

6.定时校正服务器的时间

我们可以定时校正服务器的时间,命令如下:

yum install ntp

crontab -e

 

ntp.api.bz是一组NTP服务器集群,之前是6台服务器,位于上海电信;现在是3台服务器,分散于上海和浙江电信,可以用dig命令查看:

dig net.api.bz

接下来安装dig插件:

yum -y install bind-utils

安装dig后即可查看:

7.停止IPv6网络服务

在CentOS 6.4默认的状态下,IPv6是被启用的,可用如下命令查看:

lsmod | grep ipv6

有些网络和应用程序还不支持IPv6,因此,禁用IPv6可以说是一个非常好的选择,以加强系统的安全性,并提高系统的整体性能。不过,首先要确认一下IPv6是不是处于被启动的状态,命令如下:

ifconfig -a

然后修改相应的配置文件,停止IPv6,命令如下:

#每当系统需要加载工Pv6模块时,强制执行/bin/true来代替实际加载的模块

echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf

#禁用基于工Pv6网络.使之不会被触发启动

echo "IPV6INIT-no" >> /etc/sysconfig/network-scripts/ifcfg-eth0

8.调整Linux的最大文件打开数

要调整一下Linux的最大文件打开数,否则运行Squid服务的机器在高负载时执行性能将会很差;另外,在Linux下部署应用时,有时候会遇上“Too many open files”这样的问题,这个值也会影响服务器的最大并发数。其实Linux是有文件句柄限制的,但默认值不是很高,一般是1024,生产服务器很容易就会达到这个值,所以需要改动此值。
下面打开/etc/security/limit.conf命令,在最后一行添加如下命令:

*soft nofile 65535
*hard  nofile  65535

除了以上步骤之外,还要在系统的/etc/rc.local文件里添加如下内容:

ulimit -SHn 65535

另外,ulimit -n命令并不能真正看到文件的最大文件打开数,可用如下脚本查看:

在线上环境找一台cms业务机器,执行此脚本,显示结果如下所示:

9.启动网卡

在配置CentOS 6.5的网卡IP地址时,容易忽略的一项是Linux在启动时未启动网卡,其后果很明显,那就是该Linux机器永远也没有IP地址。下面是一台线上环境服务器网卡
/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置内容:

10.关闭写磁盘I/O功能

Linux文件默认有3个时间,分别如下所示。
* atime:对此文件的访问时间。
*ctime:此文件mode发生变化的时间。
*mtime:此文件的修改时间。

如果有多个小文件(比如Web服务器的页面上有多个小图片),通常是没有必要记录文件的访问时间的,这样就可以减少写磁盘的I/O,可这要如何配置呢?
首先,修改文件系统的配置文件/etc/fstab,然后,在包含大量小文件的分区中使用noatime和nodiratime这两个命令。例如:

/dev/sda5 /data/pics ext3 noatime,nodiratime 0  0

这样文件被访问时就不会再产生写磁盘的I/O了。

11.修改SSH登录配置

ssH服务配置优化,请保持机器中至少包含一个具有sudo权限的用户,下面的配置会禁止root远程登录,代码内容如下所示:

12.增加具有sudo权限的用户

添加用户的步骤和过程比较简单(这里略过),由于系统已经禁止了root远程登录,因此需要一个具有sudo权限的admin用户,权限跟root相当,这里用vim命令,在打开的/etc/sudoers文件内容里添加如下内容: