入门
入门型主机
¥68 /年
2核2G/3M | 个人站点
立即购买
京东云服务器推荐
轻量
轻量云主机
¥158 /年
2核4G | 5M带宽
立即购买
性能
性能型主机
¥750 /年
4核16G | 8M带宽
立即购买

Linux云服务器常用设置完整指南:从入门到生产环境部署

发布时间:2026-07-28 18:52 作者:govps

前言

搭建自己的云服务器是每个开发者都会经历的过程。从购买服务器到正式上线,中间涉及众多配置步骤。本文将系统性地梳理Linux云服务器的常用设置,帮助你从零开始搭建一个安全、高效的服务器环境。

更改默认Shell

Ubuntu系统默认使用dash作为shell,但bash在交互使用和脚本编写中更为常见。建议将默认shell更改为bash。

# 执行以下命令更改shell
dpkg-reconfigure dash

选择 <No> 后,使用以下命令验证更改:

# 查看当前shell类型
ls -l /bin/sh

用户权限管理

为了提高服务器安全性,应该创建普通用户来替代root执行日常操作,避免直接使用root账户带来的安全风险。

创建新用户

# 创建用户(Ubuntu系统需要添加-m参数以创建home目录)
useradd test -m

# 设置用户密码
passwd test

赋予管理员权限

将用户添加到sudo组,即可在执行命令前使用sudo获取root权限:

# 将test用户添加到sudo组
gpasswd -a test sudo

# 切换到test用户
su test

SSH免密登录

SSH密钥认证比密码登录更安全,且无需每次输入密码,特别适合自动化脚本和CI/CD流程。

生成SSH密钥

在本地机器上执行以下命令生成密钥对:

# 生成SSH密钥对(直接回车使用默认值)
ssh-keygen

生成的文件中:

  • id_rsa — 私钥,必须严格保密
  • id_rsa.pub — 公钥,需要上传到服务器

上传公钥到服务器

# 一键上传公钥到服务器
ssh-copy-id test@1.2.3.4

完成后,即可实现免密登录:

# 测试免密登录
ssh test@1.2.3.4

配置Git

服务器通常需要从GitHub等平台获取最新代码,因此配置Git是必不可少的步骤。

安装Git

# 更新软件包列表
apt-get update

# 安装Git
apt-get install git

常用apt-get命令

apt-get update                              # 更新软件包列表
apt-get install packagename                 # 安装软件包
apt-get remove packagename                  # 卸载软件包(保留配置)
apt-get remove --purge packagename          # 卸载软件包(删除配置)
apt-get autoremove packagename              # 删除包及其依赖

配置GitHub SSH访问

# 测试GitHub连接
ssh -T git@github.com

看到成功认证信息后,即可克隆代码:

# 克隆项目
git clone git@git.xxx/xxx.git

# 拉取最新代码
cd project
git pull

修改SSH端口

默认的SSH端口22是攻击者重点扫描的目标。修改为其他端口可以有效降低被扫描和暴力破解的概率。

注意: 此操作需要在root用户下进行,否则可能出现权限问题。

修改配置文件

编辑 /etc/ssh/sshd_config 文件,将端口改为1024以上的任意端口,例如2000。

重启SSH服务

# 重启SSH服务使配置生效
sudo service ssh restart

更新云服务商安全组

在阿里云、腾讯云等云服务商控制台的安全规则中,添加新的端口(如2000)。

配置防火墙

防火墙是服务器安全的第一道防线。通过配置iptables规则,可以精确控制进出服务器的流量。

创建防火墙规则文件

在 /etc 目录下创建 iptables.up.rules 文件:

*filter
# 允许已建立的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许出站流量
-A OUTPUT -j ACCEPT

# 允许HTTP/HTTPS
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT

# 允许SSH端口登录
-A INPUT -p tcp -m state --state NEW --dport 2000 -j ACCEPT

# 允许ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# 记录被拒绝的连接
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7

# 限制单IP连接数(防止CC攻击)
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP

# 拒绝所有其他入站连接
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

应用防火墙规则

# 使防火墙规则生效
iptables-restore < /etc/iptables.up.rules

# 查看防火墙状态
ufw status

# 开启防火墙
ufw enable

设置开机自动启动

在 /etc/network/if-up.d 目录下创建iptables脚本:

#!/bin/sh
iptables-restore /etc/iptables.up.rules

赋予执行权限:

chmod +x /etc/network/if-up.d/iptables

配置Nginx反向代理

当服务器需要运行多个应用时,Nginx可以实现端口代理、负载均衡和静态资源服务。

卸载旧版本Nginx

sudo apt-get remove nginx nginx-common
sudo apt-get purge nginx nginx-common
sudo apt-get autoremove

安装Nginx

# 更新包列表
sudo apt-get update

# 安装Nginx
sudo apt-get install nginx

配置反向代理

在 /etc/nginx/conf.d 下创建配置文件,例如 test-8081.conf

upstream backend {
    server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name 1.2.3.4;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_pass http://backend;
        proxy_redirect off;
    }
}

验证与重启

# 测试配置文件语法
sudo nginx -t

# 重启Nginx
sudo nginx -s reload

隐藏服务器信息

在主配置文件中关闭版本暴露:

# 在http块中添加
server_tokens off;

域名解析配置

使用DNSPod等DNS服务商进行域名解析,在域名注册商处设置DNS服务器。

设置DNS服务器

f1g1ns1.dnspod.net
f1g1ns2.dnspod.net

在DNSPod控制台添加域名解析记录即可。

配置SSL证书

HTTPS是现代网站的标配,可以保护用户数据传输安全,同时提升搜索引擎排名。

申请SSL证书

可以在七牛云、阿里云等平台申请免费SSL证书,建议选择文件验证方式。

创建验证目录

# 在服务器根目录创建验证目录
mkdir -p /.well-known/pki-validation

Node.js服务配置验证接口

app.get('/.well-known/pki-validation/fileauth.txt', (req, res) => {
  res.send('验证文件内容');
});

Nginx配置静态验证

location /.well-known/pki-validation {
    alias /var/www/html/.well-known/pki-validation;
}

配置HTTPS

上传证书文件后,修改Nginx配置:

server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443;
    server_name example.com;
    
    ssl on;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://backend;
    }
}

PM2自动化部署

PM2是Node.js生产环境的进程管理器,支持应用守护、日志管理和自动化部署。

安装PM2

# 全局安装PM2(必须全局安装)
cnpm install pm2 -g

PM2常用命令

pm2 start app.js                    # 启动应用
pm2 start app.js --watch            # 文件变化自动重启
pm2 list                            # 查看所有应用
pm2 monit                           # 监控CPU和内存
pm2 logs                            # 查看日志
pm2 stop all                        # 停止所有应用
pm2 restart all                     # 重启所有应用
pm2 delete all                      # 删除所有应用
pm2 startup                         # 设置开机自启

配置自动部署

在项目目录下创建 ecosystem.json

{
  "apps": [{
    "name": "myapp",
    "script": "./bin/www",
    "env": {
      "NODE_ENV": "production"
    }
  }],
  "deploy": {
    "production": {
      "user": "deploy",
      "host": ["1.2.3.4"],
      "port": "22",
      "ref": "origin/master",
      "repo": "git@git.xxx/xxx.git",
      "path": "/home/deploy/www/myapp",
      "post-deploy": "npm install && pm2 startOrRestart ecosystem.json --env production"
    }
  }
}

执行部署

# 初始化部署目录
pm2 deploy ecosystem.json production setup

# 部署应用
pm2 deploy ecosystem.json production

MongoDB安全配置

数据库安全是服务器安全的重要组成部分,需要从端口、用户权限和备份等方面进行配置。

修改MongoDB端口

编辑 /etc/mongod.conf 文件,修改默认端口27017为其他端口(如20000):

net:
  port: 20000
  bindIp: 0.0.0.0  # 注释此行允许远程访问

重启MongoDB服务:

sudo service mongod restart

创建管理员用户

// 切换到admin数据库
use admin

// 创建管理员
db.createUser({
  user: "admin",
  pwd: "your_password",
  roles: [{ role: "root", db: "admin" }]
})

// 验证管理员权限
db.auth("admin", "your_password")

创建应用数据库用户

// 进入应用数据库
use myapp

// 创建数据库用户
db.createUser({
  user: "myapp",
  pwd: "your_password",
  roles: [{ role: "dbOwner", db: "myapp" }]
})

启用认证

在 mongod.conf 中启用认证:

security:
  authorization: 'enabled'

重启服务后,使用用户名密码登录:

mongo 127.0.0.1:20000/myapp -u myapp -p your_password

数据备份脚本

创建 backup.sh 脚本:

#!/bin/sh
backFolder=/home/deploy/backup
date_now=$(date +%Y_%m_%d_%H%M)
backFileName=myapp_$date_now

cd $backFolder
mkdir -p $backFileName

# 备份数据库
mongodump -h 127.0.0.1:20000 -d myapp -u myapp -p your_password -o $backFileName

# 压缩备份文件
tar zcvf $backFileName.tar.gz $backFileName

# 删除临时目录
rm -rf $backFileName

设置定时备份

使用crontab设置定时任务:

# 编辑定时任务
sudo crontab -e

# 添加定时任务(每天凌晨2点执行备份)
0 2 * * * sh /home/deploy/backup/backup.sh

总结

Linux云服务器的配置涉及多个方面,从基础的shell设置到生产环境的自动化部署,每个环节都关系到服务器的稳定性和安全性。建议按照本文的步骤逐一配置,并定期进行安全审计和性能优化。

重点关注以下几点:

  • 使用普通用户替代root操作
  • 启用SSH密钥认证
  • 配置完善的防火墙规则
  • 使用Nginx进行反向代理和负载均衡
  • 启用HTTPS加密传输
  • 实现自动化的备份和部署

通过以上配置,你可以搭建一个安全、高效、易于维护的云服务器环境。