我们将以最主流的 Linux (Ubuntu) 系统 + Nginx (Web服务器) + MySQL (数据库) + PHP (编程语言) 的组合为例,这是目前性能、稳定性和灵活性都非常高的 LEMP 架构。

怎么在云服务器上搭建网站
(图片来源网络,侵删)

流程概览

整个搭建过程可以分为以下六个主要步骤:

  1. 准备工作:注册云服务商,购买并连接服务器。
  2. 初始化服务器:登录服务器,进行基础安全配置。
  3. 安装 Web 环境:安装 Nginx, MySQL, PHP。
  4. 部署网站代码:上传你的网站文件到服务器。
  5. 配置网站:配置 Nginx,让服务器知道如何处理你的网站。
  6. 上线与维护:解析域名,配置 SSL 证书,并进行日常维护。

第一步:准备工作

在开始之前,你需要准备以下几样东西:

  1. 一个云服务器

    • 选择云服务商:主流的有阿里云、腾讯云、华为云、AWS、Google Cloud、Vultr、DigitalOcean 等,对于新手,推荐国内阿里云或腾讯云,文档和社区支持比较完善。
    • 选择配置:入门级网站,选择 1核CPU / 2GB内存 / 1-2GB系统盘 / 1-5Mbps带宽 的配置通常就足够了,操作系统选择 Ubuntu 22.04 LTS (长期支持版本)。
    • 购买并创建:完成购买后,在控制台创建实例(即云服务器)。
  2. 一个域名

    怎么在云服务器上搭建网站
    (图片来源网络,侵删)
    • 你需要一个域名,yourdomain.com,你可以在阿里云、腾讯云或 Namecheap 等域名注册商处购买。
  3. 一个 SSH 客户端

    • 用于连接和管理你的云服务器。
    • Windows 用户:可以使用 PuTTYWindows 10/11 自带的 PowerShell/命令提示符 (在 Windows 11 中可以直接用 ssh 命令)。
    • macOS / Linux 用户:系统已自带 ssh 命令,直接打开终端即可。

第二步:初始化服务器

  1. 获取服务器信息

    • 在你的云服务商控制台找到你刚创建的服务器实例,记录下它的 公网 IP 地址
  2. 连接服务器

    • 打开你的终端或 PuTTY。
    • 输入连接命令,格式为:ssh root@你的服务器公网IP
    • 首次连接:系统会提示你确认服务器的指纹(The authenticity of host...),输入 yes 并回车。
    • 输入密码:输入你在创建服务器时设置的 root 用户密码。注意,输入时屏幕上不会显示任何字符,这是正常的,直接输入完回车即可。
    • 成功登录后,你会看到类似 root@your-server-name:~# 的提示符。
  3. 更新系统(非常重要!)

    怎么在云服务器上搭建网站
    (图片来源网络,侵删)
    • 为了安全性和稳定性,首先更新服务器的所有软件包。
      # 更新软件包列表
      apt update
      # 升级已安装的软件包
      apt upgrade -y
  4. 创建一个新的非 root 用户(安全最佳实践)

    • 直接使用 root 用户操作有风险,我们创建一个普通用户来执行日常操作。
      # 创建一个名为 'webadmin' 的新用户 (你可以换成你喜欢的名字)
      adduser webadmin
      # 按提示设置新用户的密码,并填写一些可选信息
  5. 为新用户添加 sudo 权限

    • sudo 允许普通用户以 root 权限执行命令。
      # 将新用户添加到 'sudo' 用户组
      usermod -aG sudo webadmin
  6. 切换到新用户

    su - webadmin

    现在你应该看到新的提示符,webadmin@your-server-name:~$


第三步:安装 Web 环境 (LEMP)

现在我们开始安装网站的三大支柱:Nginx, MySQL, PHP。

  1. 安装 Nginx (Web 服务器)

    • Nginx 负责接收用户的浏览器请求,并返回你的网站文件。
      # 安装 Nginx
      sudo apt install nginx -y
  2. 安装 MySQL (数据库)

    • MySQL 用于存储网站的数据,比如文章、用户信息等。
      # 安装 MySQL 服务器
      sudo apt install mysql-server -y
    • 运行安全脚本:安装完成后,运行一个安全脚本来设置 root 密码、移除匿名用户等。
      sudo mysql_secure_installation
    • 按照提示操作:
      • 为 root 用户设置一个密码。
      • 回答 Y (是) 来移除匿名用户、禁止 root 远程登录、移除测试数据库、重新加载权限表。
  3. 安装 PHP (编程语言)

    • PHP 负责处理网站的动态逻辑,比如连接数据库、处理表单等。
    • 安装 PHP 和一些常用的 PHP 扩展(这些扩展被 WordPress 等主流程序广泛使用)。
      sudo apt install php php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y
    • 安装完成后,PHP-FPM (FastCGI Process Manager) 会作为一个服务在后台运行,Nginx 会通过它来执行 PHP 代码。

第四步:部署网站代码

现在你的服务器环境已经准备好了,需要把你的网站文件放上去。

  1. 上传网站文件

    • 你需要将你本地电脑上的网站代码(HTML, CSS, JavaScript 文件,或者 WordPress 程序)上传到服务器。
    • 最常用的工具是 scp (secure copy),打开你本地的终端(不是服务器上的)。
    • 命令格式scp -r /本地/网站/路径 webadmin@你的服务器IP:/远程/存放路径
    • 示例:假设你的网站代码在本地的一个名为 my-website 的文件夹里,你想把它放到服务器的 /var/www/html/ 目录下(这是 Nginx 默认的网站根目录)。
      # scp -r 本地路径 用户名@服务器IP:远程路径
      scp -r ~/my-website webadmin@你的服务器IP:/var/www/html/
    • 输入密码:这里输入的是你之前创建的 webadmin 用户的密码。
  2. 设置文件权限

    • 上传后,需要确保 Nginx 有权限读取这些文件。
      # 切换到网站目录
      cd /var/www/html/
      # 将网站目录的所有者改为 webadmin 用户
      sudo chown -R webadmin:webadmin my-website
      # 给予所有者读写执行权限,给组和其他用户读和执行权限
      sudo chmod -R 755 my-website

第五步:配置网站

现在需要告诉 Nginx 如何为你的网站提供服务。

  1. 创建 Nginx 配置文件

    • Nginx 的网站配置文件存放在 /etc/nginx/sites-available/ 目录下,我们为你的网站创建一个新文件。
      sudo nano /etc/nginx/sites-available/yourdomain.com
    • nano 编辑器打开一个新文件,将以下内容复制进去,并务必修改 server_nameroot 路径
    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com; # 替换成你的域名
        root /var/www/html/my-website; # 替换成你存放网站文件的路径
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 注意:PHP版本号可能不同,php8.1-fpm.sock
        }
        location ~ /\.ht {
            deny all;
        }
    }
    • 注意fastcgi_pass 里的 php8.2-fpm.sock 可能需要根据你安装的 PHP 版本进行修改,你可以用 ls /var/run/php/ 命令来查看实际存在的文件。
  2. 启用配置文件

    • sites-available 目录只是存放配置,我们需要创建一个符号链接到 sites-enabled 目录来启用它。
      # 创建符号链接
      sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
  3. 测试并重启 Nginx

    • 在重启服务前,先测试配置文件是否有语法错误。
      sudo nginx -t
    • 如果显示 syntax is oktest is successful,说明配置正确,然后重启 Nginx 使新配置生效。
      sudo systemctl restart nginx

第六步:上线与维护

你的网站现在已经在服务器上运行了,但还需要最后一步才能通过公网访问。

  1. 解析域名

    • 登录你的域名注册商的控制台(比如阿里云、腾讯云)。
    • 找到 DNS 解析域名解析 的管理页面。
    • 添加两条 A 记录
      • 记录类型A
      • 主机记录: (代表根域名,如 yourdomain.com)
      • 记录值:填入你的 云服务器的公网 IP 地址
      • 记录类型A
      • 主机记录www (代表 www.yourdomain.com)
      • 记录值:同样填入你的 云服务器的公网 IP 地址
    • 保存并等待 DNS 生效(通常需要几分钟到几小时)。
  2. 配置 SSL 证书 (HTTPS)

    • 为了安全,强烈建议为你的网站安装 SSL 证书,启用 HTTPS,推荐使用 Let's Encrypt,它是免费的。
    • 安装 Certbot 工具:
      sudo apt install certbot python3-certbot-nginx -y
    • 自动获取并安装证书:
      # -d 指定你的域名,--nginx 表示使用 Nginx 插件自动配置
      sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    • 按照提示操作,它会自动修改你的 Nginx 配置,添加 HTTPS 设置,并设置自动续期。
  3. 访问你的网站!

    • 等待 DNS 生效后,在浏览器中输入你的域名 http://yourdomain.com,你应该就能看到你的网站了,如果配置了 SSL,访问 https://yourdomain.com 会看到一把小锁标志。

总结与后续

恭喜!你已经成功在云服务器上搭建并部署了一个网站。

后续你可能需要做的事情:

  • 备份:定期备份你的网站文件和数据库,防止数据丢失。
  • 监控:使用云服务商提供的监控工具或第三方工具(如 Prometheus + Grafana)监控服务器的 CPU、内存、磁盘使用情况。
  • 防火墙:配置云服务器自带的安全组(Security Group),只开放必要的端口(如 80, 443, 22),提高安全性。
  • 性能优化:根据网站访问量,可以考虑使用缓存(如 Redis)、CDN 等技术来提升网站速度。

这个过程虽然步骤较多,但每一步都很清晰,多操作几次,你就会变得非常熟练,如果在某个步骤遇到问题,可以随时搜索具体错误信息,或者查看你所使用的云服务商和软件的官方文档。