我们将使用目前最主流、最简单的组合:Linux (Ubuntu) + Nginx + MySQL + PHP,这套组合通常被称为 LEMP,是搭建动态网站的首选方案。

核心概念:网站是如何运行的?
在开始之前,你需要了解网站在服务器上的基本工作流程:
- 用户请求:你在浏览器输入
www.yourdomain.com。 - DNS 解析:DNS 服务器将域名解析到你服务器的 IP 地址。
- Web 服务器接收:服务器上的 Web 服务器软件(如 Nginx)接收这个请求。
- 处理请求:
- 如果请求的是一个静态文件(如
.html,.css,.jpg),Nginx 直接将其发送给浏览器。 - 如果请求的是一个动态文件(如
.php),Nginx 会把这个请求交给 PHP 处理器。
- 如果请求的是一个静态文件(如
- PHP 处理器:PHP 处理器执行 PHP 代码,可能会向数据库(如 MySQL)查询或写入数据。
- 返回结果:PHP 处理器将生成最终的 HTML 内容,并返回给 Nginx。
- Nginx 发送响应:Nginx 将最终的 HTML 内容发送回用户的浏览器,浏览器将其渲染成你看到的网页。
准备工作
在开始之前,你需要准备以下几样东西:
-
一台云服务器:
- 推荐服务商:阿里云、腾讯云、华为云、Vultr、DigitalOcean、Linode 等。
- 推荐系统:选择 Ubuntu 22.04 LTS 或 04 LTS 版本,社区支持好,教程多,稳定。
- 配置要求:新手入门,1核CPU、1GB或2GB内存、20GB左右硬盘即可起步。
-
一个域名:
(图片来源网络,侵删)- 在域名注册商(如 GoDaddy、Namecheap、阿里云万网等)购买一个你喜欢的域名。
- 将域名的 DNS 解析 指向你的服务器公网 IP 地址,通常在域名服务商的控制面板里设置,类型为
A记录,主机记录为 或www,记录值填你的服务器 IP。
-
连接服务器的工具:
- Windows:使用 PuTTY 或 Windows Terminal + SSH (Windows 10/11 已内置)。
- macOS / Linux:直接使用自带的 Terminal,输入
ssh命令。
详细步骤:一步步搭建你的网站
第一步:连接服务器并更新系统
-
连接服务器:打开你的终端工具,输入以下命令(将
your_server_ip替换为你的服务器实际 IP)。ssh root@your_server_ip
首次连接会提示你确认主机指纹,输入
yes,然后输入你在购买服务器时设置的 root 密码。 -
更新系统软件包:为了安全和稳定,首先更新服务器的软件包列表和已安装的软件。
(图片来源网络,侵删)# 更新软件包列表 apt update # 升级已安装的软件包 apt upgrade -y
第二步:创建一个非 root 用户(安全最佳实践)
直接使用 root 用户操作有风险,我们创建一个普通用户来执行日常操作。
-
创建新用户(用户名为
webadmin):adduser webadmin
按提示设置密码和用户信息(可以直接回车跳过)。
-
授予用户 sudo 权限:这样
webadmin就可以使用sudo命令获得 root 权限。usermod -aG sudo webadmin
-
切换到新用户:
su - webadmin
后续的所有操作,我们都将在
webadmin用户下进行。
第三步:安装 LEMP 环境
现在我们来安装网站运行所需的核心组件:Nginx, MySQL, PHP。
安装 Nginx
Nginx 是一个高性能的 Web 服务器和反向代理服务器。
# 更新包列表 sudo apt update # 安装 Nginx sudo apt install nginx -y
安装完成后,Nginx 会自动启动,你可以通过浏览器访问你的服务器 IP 地址,如果看到 "Welcome to Nginx!" 的欢迎页面,说明安装成功。
如果打不开,请检查服务器的安全组(防火墙)是否放行了 80 (HTTP) 和 443 (HTTPS) 端口。
安装 MySQL
MySQL 是一个流行的关系型数据库,用于存储网站数据(如用户信息、文章内容等)。
# 安装 MySQL sudo apt install mysql-server -y
安装完成后,运行安全脚本,它会帮你设置 root 密码、移除匿名用户等,强烈建议执行。
sudo mysql_secure_installation
按照提示操作:
- 输入 root 密码(如果刚装完可能没有,直接按回车)
- 设置 root 密码 (Y)
- 移除匿名用户
- 不允许 root 远程登录 (推荐 Y)
- 移除 test 数据库
- 重新加载权限表
安装 PHP
PHP 是一种服务器端脚本语言,用于处理动态内容。
# 安装 PHP 和一些常用扩展 sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y
php-fpm(FastCGI Process Manager) 是 Nginx 与 PHP 通信的桥梁。php-mysql等扩展是让 PHP 能够连接数据库、处理图片、解析 XML 等功能的模块。
第四步:配置 Nginx
现在我们需要告诉 Nginx 如何处理你的网站,我们将创建一个虚拟主机配置文件。
-
创建网站根目录:这是存放你网站所有文件的地方。
# 在 /var/www 目录下创建一个以你的域名命名的文件夹 sudo mkdir /var/www/yourdomain.com
-
设置目录权限:确保
webadmin用户对这个目录有读写权限。# 将目录所有者改为 webadmin sudo chown -R webadmin:webadmin /var/www/yourdomain.com # 设置最终权限 sudo chmod -R 755 /var/www/yourdomain.com
-
创建一个测试页面:
nano /var/www/yourdomain.com/index.html
在打开的编辑器中,输入以下内容:
<!DOCTYPE html> <html> <head> <title>我的第一个网站!</title> </head> <body> <h1>恭喜!网站已成功部署!</h1> </body> </html>按
Ctrl + X,然后按Y,再按Enter保存并退出。 -
创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/yourdomain.com
粘贴以下配置,并将
yourdomain.com替换成你的真实域名:server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 注意版本号,可能是 php8.0-fpm.sock } }listen 80;:监听 80 端口(HTTP)。server_name:你的域名。root:指向你刚才创建的网站根目录。location ~ \.php$:将所有.php结尾的请求交给 PHP-FPM 处理。
-
启用站点并测试配置:
# 创建一个链接到 sites-enabled 目录,以启用站点 sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ # 删除默认的欢迎页面(可选) sudo unlink /etc/nginx/sites-enabled/default # 测试 Nginx 配置文件是否有语法错误 sudo nginx -t
如果显示
syntax is ok和test is successful,说明配置正确。 -
重新加载 Nginx:让新配置生效。
sudo systemctl reload nginx
在浏览器中访问 http://yourdomain.com,你应该能看到你刚才创建的 "恭喜!" 页面了!
第五步:部署你的网站代码
假设你有一个用 WordPress 或其他 PHP 框架开发的网站项目,你需要将代码上传到服务器。
-
获取你的网站代码:通常是一个压缩包(如
.zip或.tar.gz)。 -
上传到服务器:
-
使用 Git(如果你的代码在 GitHub/GitLab 上)
# 进入网站根目录 cd /var/www/yourdomain.com # 克隆你的代码仓库 git clone https://github.com/your-username/your-project.git .
-
使用 SFTP/FTP 客户端(如 FileZilla)
- 服务器地址:你的服务器 IP
- 用户名:
webadmin - 密码:
webadmin的密码 - 端口:22
- 连接后,将本地代码文件拖拽到
/var/www/yourdomain.com目录下。
-
使用
wget或curl(如果代码包有直接下载链接)cd /var/www/yourdomain.com wget https://example.com/your-website-files.zip # 然后解压 unzip your-website-files.zip
-
第六步:配置数据库
如果你的网站需要数据库(如 WordPress),你需要创建一个数据库和数据库用户。
-
登录 MySQL:
sudo mysql
-
执行 SQL 命令:
-- 创建一个新数据库(数据库名可以自定义) CREATE DATABASE my_website_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建一个新用户(用户名和密码请自定义) CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'a_very_strong_password'; -- 给新用户授予对新数据库的所有权限 GRANT ALL PRIVILEGES ON my_website_db.* TO 'my_user'@'localhost'; -- 刷新权限,使更改生效 FLUSH PRIVILEGES; -- 退出 MySQL EXIT;
-
配置网站:打开你的网站代码中的配置文件(WordPress 的
wp-config.php),填入你刚刚创建的数据库名、用户名和密码。
第七步:可选 - 配置 HTTPS (SSL 证书)
为了网站安全,强烈建议为你的域名配置 HTTPS,这可以通过免费的 Let's Encrypt 证书实现。
-
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
-
获取并安装证书:
# Certbot 会自动检测 Nginx 配置并为你设置好 HTTPS sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按照提示操作,它会要求你输入邮箱地址,并同意服务条款,完成后,它会自动修改你的 Nginx 配置,启用 HTTPS,并设置自动续期。
恭喜!你已经成功在服务器上搭建了一个完整的网站,回顾一下,我们完成了以下步骤:
- 准备:购买服务器和域名,并连接服务器。
- 安全:创建非 root 用户。
- 安装环境:安装 Nginx、MySQL、PHP (LEMP)。
- 配置 Web 服务器:创建网站目录,配置 Nginx 虚拟主机。
- 部署代码:将你的网站文件上传到服务器。
- 配置数据库:为网站创建数据库和用户。
- 安全加固:配置 HTTPS (SSL)。
这是一个基础但完整的流程,后续你还可以学习如何使用 Docker 来简化部署流程,或者配置 监控和日志 来更好地管理你的服务器,祝你搭建顺利!
