跟上时代,用宝塔第一次部署vue项目。
打开宝塔,点击【网站】,点击【添加站点】,选择【传统网站】,输入域名,根目录下会自动追加域名对应的目录,点击确定创建
点击【软件商店】安装nginx,如果没有的话,点击软件名称nginx,选择【配置文件】,编辑配置文件,贴一下全部,供参考(启用了ssl证书的写法)
user www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log crit; pid /www/server/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; stream { log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time'; access_log /www/wwwlogs/tcp-access.log tcp_format; error_log /www/wwwlogs/tcp-error.log; include /www/server/panel/vhost/nginx/tcp/*.conf; } events { use epoll; worker_connections 51200; multi_accept on; } http { include mime.types; #include luawaf.conf; include proxy.conf; lua_package_path "/www/server/nginx/lib/lua/?.lua;;"; default_type application/octet-stream; server_names_hash_bucket_size 512; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/json image/jpeg image/gif image/png font/ttf font/otf image/svg+xml application/xml+rss text/x-js; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server_tokens off; access_log off; server { listen 443 ssl http2; server_name 域名; ssl_certificate /www/server/panel/vhost/cert/域名/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/域名/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; root /www/wwwroot/域名; index index.html index.htm; location / { try_files $uri $uri/ /index.html; index index.html; } # 静态资源缓存 location /assets { expires 7d; add_header Cache-Control "public, no-transform"; } #error_page 404 /404.html; # include enable-php.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /\. { deny all; } location /api { proxy_pass https://xx/api; # 后端API地址 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; # 跨域配置 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers '*'; add_header Access-Control-Expose-Headers '*'; if ($request_method = 'OPTIONS') { return 204; } } access_log /www/wwwlogs/access.log; } # HTTP重定向HTTPS server { listen 80; server_name 域名/; return 301 https://$server_name$request_uri; } include /www/server/panel/vhost/nginx/*.conf; }
- 接下来部署vue(vue3) 配置vite
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' // https://vite.dev/config/ export default defineConfig({ base: process.env.NODE_ENV === 'production' ? '/' : './', plugins: [vue()], resolve: { alias: { '@': path.resolve(__dirname, 'src') } }, // 关闭生成map文件 sourcemap: false, // 打包输出目录 outDir: 'dist', server: { port: 3000, host: '0.0.0.0', open: true, proxy: { '/aicon': { target: 'https://xx/', // target: 'http://localhost:8000', changeOrigin: true, secure: false, rewrite: (path) => path.replace(/^\/aicon/, '') } } } })
然后确认路由模式,官方的解释https://router.vuejs.org/guide/essentials/history-mode
文件在router下的index.js,网路上说配置不配置成hash模式要在nginx中增加location,大概是这样
# 支持history路由模式 location /xx { try_files $uri $uri/ /index.html; }
但是我没有配置也成功了,尚且不知道为什么
最后打包部署
npm run build:prod
发布vue
回到宝塔,选择【文件】,在域名目录下点击【上传文件】,将上一部build产生的dist目录下所有文件拖动上传。切记应该是所有文件在域名目录下,而不是dist目录,否则nginx就要更改配置。完成部署
回到nginx,重载配置,重启,就完成了,使用https访问域名,这种配置可以解决刷新页面404和白屏的问题
Top comments (0)