网站部署
网站运行机制与上线部署
更新于 2026-09-24
一、网站运行机制
1、名词解释
域名
- www.baidu.com
- www.taobao.com
- www.qq.com
域名俗称网址,是由一串用点分隔的名字组成,用于标识互联网上的计算机。原本用于标识互联网上计算机的是 IP 地址,但是由于 IP 地址不便于记忆,所以人们设计出比较容易记忆的域名,然后通过 DNS 将域名和 IP 地址关联,这样就可以通过记忆域名直接访问到对应的计算机。
DNS 服务器
DNS(Domain Name System)可以理解为互联网上的一项服务,它可以将域名转换成对应的 IP 地址。可以把它理解为字典,字典中存储的就是域名和 IP 地址一一对应的键值对。
本机 hosts 文件也能做这种对应:
- Windows:C:\windows\system32\drivers\etc\hosts
- Mac:/etc/hosts
服务器
服务器其实就是一台计算机,但这台计算机和我们自己的 PC 不一样,不是日常使用的,而是用来提供某项互联网服务的。比如 Web 服务器提供网页服务,Email 服务器提供电子邮件服务,FTP 服务器提供文件存储服务。为计算机安装不同的服务应用程序,即可提供相应的服务。
常见的 Web 服务应用程序:Apache、Nginx、IIS、Node.js。
2、网站请求流程(简化版)
静态页面
网页只请求和响应简单的 HTML、CSS、JavaScript 文件,没有和服务端进行任何数据通信。这样的页面叫做静态页面。
动态页面
页面内有和服务器进行的数据通信,这样的页面叫做动态页面。
前后端分离的页面
前后端分离的项目中,页面中的数据渲染是在浏览器中完成的。
前后端分离的页面请求分为两部分:静态页面请求 + Ajax 数据请求。


前后端不分离的页面
前后端不分离的项目中,页面中的数据渲染操作是在服务器端完成的。
前后端不分离的页面一次请求就能完成。

二、网站上线部署流程
1、服务器购买
国内服务器:阿里云 ECS(Elastic Compute Service)、腾讯云 CVM(Cloud Virtual Machine)等。
国外服务器:日本 Vultr、美国 Linode、谷歌云、微软 Azure、亚马逊 AWS 等。
这一步需要创建好服务器实例,分配好外网 IP 地址。
2、域名购买
- 国内:万网(阿里)、腾讯等
- 国外:GoDaddy
3、域名解析(配置 DNS)
注册好域名之后,需要将域名映射到自己服务器对应的 IP 地址,这样别人才能通过域名访问到我们的服务器。这个步骤叫做域名解析,通过域名服务商提供的后台就可以操作。一般域名解析都会有延迟,不是即时生效的。
4、服务器环境搭建
配置服务器时,Mac 系统下直接用终端即可。Windows 下需要用到 Git Bash,或者其他工具(PuTTY)。
shell
# 远程连接
ssh root@域名
# 展示当前文件夹路径
pwd
# 切换文件夹目录
cd 目录路径
# 展示当前文件夹中的内容
ls
# 编辑文件
vim 文件路径
# 传输文件
scp 本地文件路径 root@域名:远程路径
# 解压文件
unzip4.1 安装 CentOS 开发人员相关包
shell
yum groupinstall 'Development tools'4.2 配置免密登录
在自己电脑上生成本地密钥对。参考:git 生成密钥。
shell
# 生成的位置
# mac 在 ~/.ssh
# windows 在 C:\users\你的用户名\.ssh
# 在服务器创建 .ssh 文件夹
mkdir .ssh
# 切换到这个文件夹
cd .ssh
# 创建 authorized_keys
touch authorized_keys
# 把本机 id_rsa.pub 的内容放进去
echo "公钥内容" >> authorized_keys
# 退出服务器,下次即可免密登录
exit4.3 安装 Nginx
shell
# 添加 Nginx 源
sudo yum install epel-release
# 安装 Nginx
sudo yum install nginx
# 启动 Nginx
nginx
# 配置防火墙规则
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload4.4 安装 Node.js
shell
# yum 自带源中没有 Node.js,所以首先要获取 Node.js 资源
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
# 安装 Node.js
yum install -y nodejs
# 安装完成之后测试是否成功
node -v
# 安装 pm2,用来管理 Node.js 程序
npm i pm2 -g
# 使用 pm2 启动 Node.js 项目
pm2 start 文件名
# 停止
pm2 stop 文件名或者id
# 从 pm2 的管理列表中删除
pm2 delete 文件名或者id4.5 安装 MySQL
shell
# 下载并安装 MySQL 源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm
# 安装 MySQL
sudo yum install mysql-community-server -y
# 如果上一步报认证密钥的错,把 /etc/yum.repos.d/mysql-community.repo 中的 gpgcheck 改为 0
# gpgcheck=0
# 如果上一步报错,先执行下面的语句,再重新执行安装
sudo yum module disable mysql
# 启动 MySQL
sudo systemctl start mysqld
# MySQL 安装完毕之后会自动设置一个默认密码
grep 'temporary password' /var/log/mysqld.log
# 连接到 MySQL 并修改密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '要修改的密码';远程连接到 MySQL 时,如果报错 1130 - Host ... is not allowed to connect to this MySQL server,先在服务器上连接到数据库,再执行下面的语句。
mysql
SHOW DATABASES;
USE mysql;
SHOW TABLES;
SELECT Host, User FROM user;
UPDATE user SET Host = '%' WHERE User = 'root';
FLUSH PRIVILEGES;执行完后刷新权限,使更改立即生效,然后重新使用可视化工具测试连接。参考:MySQL 远程连接 1130。
5、上传网站资源
可以使用 scp 命令,也可以安装 FTP(vsftpd)工具。
shell
scp 本地文件 root@域名:远程路径
# 在服务器创建文件夹
mkdir /home/nginx/
# 把网页文件移动到创建好的文件夹里
mv ./dist.zip /home/nginx/
# 解压压缩文件
cd /home/nginx
unzip ./dist.zip
# 修改文件夹名字
mv dist admin
# 结果就是 /home/nginx/admin 这个文件夹中放的是网页文件6、配置 Nginx
创建一个 ilovefe.conf 文件。
shell
cd /etc/nginx/conf.d
# 创建配置文件
touch ilovefe.conf
vim ilovefe.conf
# 按 i 进入插入模式,粘贴配置
# 按 esc 退出编辑模式,输入 :wq 保存退出ilovefe.conf:
nginx
server {
listen 80;
server_name zzf.net.cn;
location / {
root /usr/local/src/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}7、接口项目部署步骤
- 修改配置文件中的 MySQL 数据库密码
- 上传项目压缩文件到服务器
- 在服务器上解压项目文件到 /home/nginx/ilovefeadmin
- 为项目安装依赖项:npm i
5. 修改 MySQL 数据库密码规则:
mysql
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
-- 查看是否已经修改成功
SELECT user, host, plugin FROM user WHERE user = 'root';6. 创建新的数据库:
mysql
CREATE DATABASE mysite;7. 在 Nginx 配置文件中添加反向代理:
nginx
location ^~ /api/ {
rewrite ^/api/(.*)$ /api/$1 break;
proxy_pass http://127.0.0.1:3001;
}8. 配置后台管理系统的目录:
nginx
location /admin {
alias /usr/local/src/admin;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}9. 配置静态文件目录:
nginx
location /static/ {
alias /usr/local/src/server/public/static/;
}