部署 Vue 项目到阿里云云服务器 (CentOS/Ubuntu 为例)
核心步骤: 在本地构建 Vue 项目生成静态文件,然后将这些文件上传到服务器,并使用 Nginx 作为 Web 服务器提供服务。
前提条件:
- 一台运行 Linux (如 CentOS 或 Ubuntu) 的阿里云 ECS 实例。
- 本地开发环境已安装 Node.js 和 npm/yarn。
- 本地已安装 SSH 客户端 (如 OpenSSH)。
- 服务器已安装 Nginx。
- 拥有服务器的 SSH 登录权限 (用户名和密码或密钥对)。
详细步骤:
1. 本地构建 Vue 项目
-
打开终端,进入你的 Vue 项目根目录。
-
运行构建命令生成静态文件:
bashnpm run build # 或者使用 yarn yarn build -
构建完成后,项目目录下会生成一个
dist文件夹。这个文件夹里包含了所有优化压缩后的 HTML、CSS、JavaScript 和静态资源文件。这就是你需要上传到服务器的内容。
2. 服务器环境准备
-
登录服务器: 使用 SSH 登录你的阿里云服务器。
bashssh username@your_server_ip # 如果使用密钥,可能需要指定密钥路径 ssh -i /path/to/your-key.pem username@your_server_ip -
安装 Nginx (如果未安装):
-
Ubuntu:
bashsudo apt update sudo apt install nginx -
CentOS:
bashsudo yum update sudo yum install nginx
-
-
启动并设置 Nginx 开机自启:
bashsudo systemctl start nginx sudo systemctl enable nginx -
配置防火墙 (如果启用): 确保防火墙允许 HTTP (端口 80) 和 HTTPS (端口 443) 的流量。阿里云安全组也需要在控制台开放这些端口。
-
Ubuntu (ufw):
bashsudo ufw allow 'Nginx Full' # 允许 HTTP(80) 和 HTTPS(443) -
CentOS (firewalld):
bashsudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
-
3. 上传构建文件到服务器
-
在本地终端 (不是在服务器上),使用
scp命令将dist文件夹上传到服务器的一个目录。选择一个合适的目录,例如/var/www/your_project_name或用户家目录下的某个位置。bashscp -r /path/to/your/local/vue-project/dist username@your_server_ip:/path/to/target/directory/on/server # 示例: scp -r ./dist user@123.123.123.123:/var/www/my-vue-app-r: 递归复制整个目录。- 替换
/path/to/your/local/vue-project/dist为你的本地dist文件夹的实际路径。 - 替换
username为你的服务器用户名。 - 替换
your_server_ip为你的服务器公网 IP 地址。 - 替换
/path/to/target/directory/on/server为你想存放dist文件夹内容的服务器目标路径。确保该目录存在,或者先登录服务器创建它 (mkdir -p /path/to/target/directory)。
4. 配置 Nginx
-
登录服务器。
-
创建一个新的 Nginx 服务器块 (Server Block) 配置文件。通常放在
/etc/nginx/conf.d/或/etc/nginx/sites-available/(Ubuntu) 并在sites-enabled/创建符号链接。这里以/etc/nginx/conf.d/为例:bashsudo nano /etc/nginx/conf.d/your_project_name.conf -
在打开的编辑器中,输入类似下面的配置:
nginxserver { listen 80; server_name your_domain.com www.your_domain.com; # 替换为你的域名,或者用服务器IP时写 _ (下划线) # server_name _; # 如果没有域名,使用 IP 访问,可以用这个 root /path/to/your/dist/folder/on/server; # 替换为 dist 文件夹在服务器上的实际路径 index index.html; location / { try_files $uri $uri/ /index.html; # 对于 Vue Router 的 history 模式非常重要 } # 可选:配置错误页面 error_page 404 /index.html; }- 关键点:
root: 必须指向你上传的dist文件夹的路径。try_files $uri $uri/ /index.html;: 这是处理前端路由 (如 Vue Router 的 history 模式) 的关键。它告诉 Nginx 在找不到文件时尝试加载index.html,由 Vue 应用处理路由。server_name: 如果你有域名,填域名。如果只用 IP 访问,可以写server_name _;。
- 关键点:
-
保存并退出编辑器 (在
nano中按Ctrl + O保存,Ctrl + X退出)。 -
测试 Nginx 配置: 运行以下命令检查配置文件语法是否正确:
bashsudo nginx -t如果输出显示
syntax is ok和test is successful,则配置正确。 -
重新加载 Nginx: 让新的配置生效:
bashsudo systemctl reload nginx
5. 访问你的应用
- 打开浏览器。
- 访问你的服务器公网 IP 地址 (例如
http://123.123.123.123) 或者你配置的域名 (例如http://your_domain.com)。 - 如果一切配置正确,你应该能看到部署好的 Vue 应用了。
补充说明:
- HTTPS (SSL/TLS): 强烈建议在生产环境中使用 HTTPS。你需要获取 SSL 证书 (可以从阿里云 SSL 证书服务购买或使用 Let's Encrypt 免费证书),并在 Nginx 配置中添加监听 443 端口的
server块,配置ssl_certificate和ssl_certificate_key路径。配置完成后也需要sudo nginx -t和sudo systemctl reload nginx。 - 域名绑定: 如果你使用域名,需要在你的域名注册商处将域名解析 (A 记录) 指向你的阿里云服务器的公网 IP 地址。阿里云域名解析在阿里云 DNS 控制台操作。
- 权限问题: 确保 Nginx 进程 (通常是
www-data或nginx用户) 对你上传的dist文件夹及其内容有读取权限。如果遇到 403 Forbidden 错误,检查权限 (ls -l /path/to/dist) 并可能需要修改 (sudo chmod -R 755 /path/to/dist,sudo chown -R nginx:nginx /path/to/dist- 根据你的 Nginx 用户调整)。 - 路由刷新问题: 如果使用 Vue Router 的 history 模式,并且刷新页面时出现 404,一定是 Nginx 配置中缺少或错误配置了
try_files $uri $uri/ /index.html;这行。仔细检查。
按照以上步骤操作,你应该能够成功地将你的 Vue 项目部署到阿里云服务器上。