要将 Vue 2 项目打包并部署到服务器上,并使用 Nginx 作为 Web 服务器,可以按照以下步骤操作:
1. 打包 Vue 2 项目
首先,确保你的 Vue 2 项目已经开发完成,并且可以在本地正常运行。然后使用以下命令进行打包:
bash
npm run build
打包完成后,项目根目录下会生成一个 dist
文件夹,里面包含了所有静态文件(HTML、CSS、JS 等)。
2. 将打包文件上传到服务器
你可以使用 scp
、rsync
或者 FTP 工具将 dist
文件夹上传到服务器。以下是使用 scp
的示例:
scp -r dist/ user@your_server_ip:/path/to/your/project
-
user
是你的服务器用户名。 -
your_server_ip
是你的服务器 IP 地址。 -
/path/to/your/project
是你希望将文件上传到的服务器目录。
3. 安装和配置 Nginx
如果服务器上还没有安装 Nginx,可以通过以下命令安装:
对于 Ubuntu/Debian 系统:
sudo apt update
sudo apt install nginx
对于 CentOS/RHEL 系统:
sudo yum install nginx
安装完成后,启动 Nginx 并设置为开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
4. 配置 Nginx 以服务 Vue 应用
接下来,你需要配置 Nginx 来服务你的 Vue 应用。编辑 Nginx 的配置文件:
sudo nano /etc/nginx/sites-available/your_project
在文件中添加以下内容:
bash
server {
listen 82;
server_name your_domain_or_ip;
root /path/to/your/project/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://your_backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Origin $http_origin;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
-
listen xx
, xx是你的监听端口 -
your_domain_or_ip
是你的域名或服务器 IP 地址。 -
/path/to/your/project/dist
是你上传的dist
文件夹的路径。 -
your_backend_server
是后端 API 服务器地址(如果有的话)。/api/代表匹配前端啊baseURL='/api'的时候。例如:proxy_pass http://127.0.0.1:8002/api/;
保存并退出编辑器。
5. 启用 Nginx 配置
创建一个符号链接来启用该配置文件:
sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
然后测试 Nginx 配置是否正确:
sudo nginx -t
如果配置正确,重新加载 Nginx:
sudo systemctl reload nginx
6. 访问你的 Vue 应用
现在,你可以通过浏览器访问你的 Vue 应用了。在地址栏中输入你的域名或服务器 IP 地址,应该就能看到你的 Vue 应用正常运行。
7. (可选)配置 HTTPS
如果你有域名并且希望启用 HTTPS,可以使用 Let's Encrypt 免费 SSL 证书。安装 Certbot 并获取证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain
按照提示操作,Certbot 会自动配置 Nginx 以使用 HTTPS。
总结
通过以上步骤,你已经成功将 Vue 2 项目打包并部署到服务器上,使用 Nginx 作为 Web 服务器。如果有任何问题,可以检查 Nginx 的日志文件(通常位于 /var/log/nginx/error.log
)来排查错误。
配置 Nginx 以服务 Vue 应用的核心是通过 Nginx 将用户的请求正确地指向 Vue 应用的静态文件(如 index.html
、JavaScript、CSS 等),并确保 Vue 的路由(如 Vue Router)能够正常工作。以下是详细的步骤和解释:
1. Nginx 配置文件的基本结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/
目录下。每个站点(或应用)通常有一个独立的配置文件。
以下是一个典型的 Nginx 配置文件示例,用于服务 Vue 应用:
server {
# 监听端口(HTTP 默认是 80,HTTPS 默认是 443)
listen 80;
# 服务器域名或 IP 地址
server_name your_domain_or_ip;
# Vue 应用的静态文件路径
root /path/to/your/project/dist;
# 默认访问的文件
index index.html;
# 处理根路径请求
location / {
# 尝试按顺序查找文件或目录,如果找不到则返回 index.html
try_files $uri $uri/ /index.html;
}
# 处理 API 请求(如果有后端服务)
location /api/ {
# 将请求代理到后端服务器
proxy_pass http://your_backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 处理 50x 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
2. 关键配置项详解
1. listen
-
指定 Nginx 监听的端口号。
-
HTTP 默认端口是
80
,HTTPS 默认端口是443
。 -
例如:
listen 80;
2. server_name
-
指定服务器的域名或 IP 地址。
-
如果使用域名,需要确保域名已经解析到服务器的 IP 地址。
-
例如:
server_name example.com;
或者:
server_name 192.168.1.100;
3. root
-
指定 Vue 应用静态文件的根目录。
-
这是 Vue 打包后生成的
dist
文件夹的路径。 -
例如:
root /var/www/vue-app/dist;
4. index
-
指定默认访问的文件。
-
对于 Vue 应用,通常是
index.html
。 -
例如:
index index.html;
5. location /
-
处理根路径(
/
)的请求。 -
使用
try_files
指令来尝试查找文件或目录,如果找不到则返回index.html
。 -
这是为了支持 Vue Router 的路由功能,确保用户在直接访问非根路径时(如
/about
),Nginx 也能正确返回index.html
,由 Vue 应用处理路由。 -
例如:
location / { try_files $uri $uri/ /index.html; }
6. location /api/
-
如果你的 Vue 应用需要与后端 API 通信,可以通过 Nginx 将 API 请求代理到后端服务器。
-
例如:
location /api/ { proxy_pass http://your_backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
-
proxy_pass
:将请求转发到后端服务器。 -
proxy_set_header
:设置请求头,确保后端服务器能够获取正确的客户端信息。
-
7. error_page
-
定义错误页面。
-
例如,当服务器出现 500、502、503 或 504 错误时,返回
/50x.html
。 -
例如:
error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
3. 完整的配置示例
以下是一个完整的 Nginx 配置文件示例,适用于服务 Vue 应用:
server {
listen 80;
server_name example.com;
root /var/www/vue-app/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
4. 启用配置
-
将配置文件保存到
/etc/nginx/sites-available/
目录下,例如:sudo nano /etc/nginx/sites-available/vue-app
-
创建一个符号链接到
/etc/nginx/sites-enabled/
目录:sudo ln -s /etc/nginx/sites-available/vue-app /etc/nginx/sites-enabled/
-
测试 Nginx 配置是否正确:
sudo nginx -t
-
如果测试通过,重新加载 Nginx:
sudo systemctl reload nginx
5. 验证部署
-
在浏览器中访问你的域名或服务器 IP 地址,例如:
http://example.com
或
http://192.168.1.100
- 如果一切正常,你应该能够看到 Vue 应用的首页。
6. 常见问题排查
-
404 错误:
-
检查
root
路径是否正确指向dist
文件夹。 -
确保
try_files
配置正确。
-
-
Vue 路由不生效:
- 确保
location /
中有try_files $uri $uri/ /index.html;
。
- 确保
-
Nginx 配置测试失败:
-
使用
sudo nginx -t
检查语法错误。 -
查看 Nginx 错误日志:
/var/log/nginx/error.log
。
-
添加用户
python manage.py useradd -u 用户名 -p 密码 -n 昵称 [-s]
后台启动django启动脚本
以大屏为例:
nohup python /fishing_trace_wsp/datacenter/screenbackend/manage.py runserver 0.0.0.0:8001 >> output.log 2>>output.log &
其中 >> 代表追加到文件末尾,output.log是输出日志文件名,&表示任务在后台执行,即使ssh窗口关闭,服务依然会在后台持续运行。
如果是datacenter
则需要先切换到对应虚拟环境(datacenter),再运行启动指令
conda activate datacenter
nohup python /fishing_trace_wsp/datacenter/backend/manage.py runserver 0.0.0.0:8002 >> output.log 2>>output.log &