Linux服务器配置与优化是确保系统稳定、高效运行的核心工作,涉及从基础环境搭建到性能调优、安全加固等多个维度,以下从系统初始化、服务配置、性能优化、安全防护及监控维护五个方面展开详细说明。
系统初始化配置
服务器安装Linux系统后,首先需进行基础初始化,包括更新系统源:在CentOS系统中使用yum update -y,Ubuntu系统则通过apt update && apt upgrade -y确保软件包为最新版本,配置网络参数,编辑/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS)或/etc/netplan/01-netcfg.yaml(Ubuntu),设置静态IP、子网掩码、网关及DNS,重启网络服务使配置生效,时区配置需执行timedatectl set-timezone Asia/Shanghai,并同步时间服务器:安装ntpdate工具后,使用ntpdate pool.ntp.org定时同步,或配置chrony服务实现自动同步,关闭不必要的服务:通过systemctl list-unit-files | grep enabled查看开机自启服务,使用systemctl stop/disable命令关闭如firewalld(若使用第三方防火墙)、postfix等服务,减少资源占用。
核心服务配置
Web服务(以Nginx为例)
安装Nginx:yum install nginx -y(CentOS)或apt install nginx -y(Ubuntu),配置虚拟主机:编辑/etc/nginx/conf.d/default.conf,定义server块,配置监听端口(如80)、根目录(/usr/share/nginx/html)、域名及日志路径,优化性能参数:在nginx.conf的events模块中调整worker_connections(如1024),在http模块中启用gzip压缩、配置keepalive_timeout(如65)及连接池参数,启动服务并设置开机自启:systemctl start nginx && systemctl enable nginx。
数据库服务(以MySQL为例)
安装MySQL:CentOS使用yum localinstall mysql-community-release-el7-7.noarch.rpm -y后安装mysql-community-server,Ubuntu通过apt install mysql-server -y,安全初始化:执行mysql_secure_installation脚本,设置root密码、移除匿名用户、禁止root远程登录、删除测试数据库及权限刷新,配置性能:编辑/etc/my.cnf,调整innodb_buffer_pool_size(建议为物理内存的50%-70%)、max_connections(根据并发量设置,如200)、query_cache_type(建议关闭),创建数据库及用户:登录MySQL后执行CREATE DATABASE db_name;,GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'localhost' IDENTIFIED BY 'password';,刷新权限。
FTP服务(以vsftpd为例)
安装vsftpd:yum install vsftpd -y,配置匿名用户:编辑/etc/vsftpd/vsftpd.conf,设置anonymous_enable=NO关闭匿名登录,local_enable=YES允许本地用户,write_enable=YES启用写入,限制用户访问:在/etc/vsftpd/chroot_list中添加禁止切换目录的用户,配置chroot_local_user=YES,重启服务:systemctl restart vsftpd。
性能优化
内核参数调优
编辑/etc/sysctl.conf,添加以下参数优化网络和文件系统:
net.core.rmem_max = 16777216(最大接收缓冲区)net.core.wmem_max = 16777216(最大发送缓冲区)fs.file-max = 100000(最大文件句柄数)vm.swappiness = 10(减少交换空间使用)
执行sysctl -p使配置生效。
磁盘I/O优化
使用hdparm -Tt /dev/sda测试磁盘性能,若性能较低可调整/etc/sysctl.conf中的vm.dirty_ratio(如60)和vm.dirty_background_ratio(如2),控制脏页写入比例,对于SSD,启用noatime挂载选项:编辑/etc/fstab,将挂载参数中的defaults改为defaults,noatime,减少磁盘写入。
资源限制
通过/etc/security/limits.conf限制用户资源,
* soft nofile 65535* hard nofile 65535* soft nproc 32768* hard nproc 32768
防止用户进程过多导致系统资源耗尽。
安全防护
防火墙配置
使用firewalld(CentOS)或ufw(Ubuntu)配置规则。
- 开放SSH端口:
firewall-cmd --permanent --add-service=ssh - 开放Web端口:
firewall-cmd --permanent --add-port=80/tcp - 禁用ICMP:
firewall-cmd --permanent --add-rich-rule='rule protocol value="icmp" reject'
重启防火墙:firewall-cmd --reload。
SSH安全加固
编辑/etc/ssh/sshd_config,修改以下参数:
Port 2222(更改默认端口)PermitRootLogin no(禁止root登录)PasswordAuthentication no(禁用密码,使用密钥认证)MaxAuthTries 3(限制认证尝试次数)
重启SSH服务:systemctl restart sshd。
入侵检测
安装fail2ban:yum install fail2ban -y,编辑/etc/fail2ban/jail.local,配置SSH防护:
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/secure maxretry = 3 bantime = 3600
启动服务:systemctl enable fail2ban --now。
监控与维护
系统监控
安装top、htop、nethogs等工具实时查看进程、网络流量,使用crontab定时执行监控脚本,例如每5分钟记录CPU使用率到日志文件:
*/5 * * * * /usr/bin/top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}' >> /var/log/cpu_usage.log
日志管理
配置logrotate自动切割日志:编辑/etc/logrotate.conf,设置日志轮转周期(如每周)、保留数量(如4周)及压缩选项,例如Nginx日志配置:
/var/log/nginx/*.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 644 nginx nginx
}
备份策略
使用rsync实现文件增量备份,例如每天凌晨2点备份/var/www目录到远程服务器:
0 2 * * * /usr/bin/rsync -avz --delete /var/www/ user@remote_ip:/backup/www/
数据库备份可通过mysqldump定时执行,例如每天备份MySQL数据库并压缩存储:
0 3 * * * /usr/bin/mysqldump -u root -p'password' db_name | gzip > /backup/mysql/db_name_$(date +%Y%m%d).sql.gz
相关问答FAQs
问题1:如何解决Linux服务器CPU占用率过高的问题?
解答:首先使用top或htop命令找到占用CPU最高的进程,记录其PID,若为异常进程,可通过kill -9 PID强制终止,若为正常服务(如数据库),检查是否有慢查询或连接数过多,可通过mysqldumpslow分析MySQL慢查询日志,优化SQL语句或调整max_connections参数,检查系统是否感染挖矿病毒,使用ps aux --forest查看进程树,结合chkrootkit或clamav进行病毒扫描。
问题2:Linux服务器磁盘空间不足时如何排查和处理?
解答:使用df -h查看各分区使用情况,定位占用空间过高的分区,通过du -sh /*逐级排查目录,找出大文件或日志目录(如/var/log),对于日志文件,使用logrotate轮转或手动清理;对于临时文件,定期清理/tmp目录(rm -rf /tmp/*),若为数据库文件占用过大,可优化表结构或归档历史数据,必要时扩容磁盘,可通过fdisk分区、mkfs格式化后挂载新分区,或使用LVM逻辑卷管理动态扩容。
