要将 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 &