Vue项目单独部署详解·需要构建项目以生成适合生产环境的静态资源·Apache配置 安装Apache并启动服务

Vue项目单独部署详解

一、构建项目

完成Vue项目的开发后,需要构建项目以生成适合生产环境的静态资源。这通常通过执行以下命令来完成:

npm run build

构建后,会在项目根目录下生成一个dist文件夹,里面包含了所有的静态资源(比如HTML、CSS、JavaScript文件等),可以直接部署到Web服务器上。

二、配置服务器

部署Vue项目需要一个Web服务器,常用的有Nginx和Apache。

Nginx配置

  1. 安装Nginx并启动服务。
  2. 编辑Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。
  3. 添加以下配置:
server { listen 80; server_name yourdomain.com; root /path/to/your/dist; index index.html index.htm; try_files $uri $uri/ /index.html; }
  1. 保存并重启Nginx服务。

Apache配置

  1. 安装Apache并启动服务。
  2. 编辑Apache配置文件,通常位于/etc/apache2/sites-available/000-default.conf。
  3. 添加以下配置:
ServerName yourdomain.com DocumentRoot /path/to/your/dist DirectoryIndex index.html
  1. 保存并重启Apache服务。

三、部署静态资源

将dist文件夹中的所有文件上传到服务器的Web根目录。可以使用FTP、SCP等工具进行上传,确保所有文件和文件夹都上传完整。

四、配置路由

Vue项目通常使用Vue Router进行前端路由管理。为了确保页面刷新时能够正确加载,需要在Web服务器上配置重定向规则。对于Nginx和Apache,重定向通常已经在前面的配置中处理了。

五、优化部署

为了提升Vue应用的性能和用户体验,以下是一些优化措施:

开启Gzip压缩

Nginx
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
Apache
<IfModule mod_deflate.c> <Directory /path/to/your/dist> <IfModule mod_headers.c> HeaderSet Cache-Control "public, max-age=86400" </IfModule> AddOutputFilterByType DEFLATE text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript </Directory> </IfModule>

启用HTTP/2

Nginx
http2; server { listen 443 ssl http2; ... }
Apache
<IfModule mod_http2.c> <VirtualHost *:443> Protocols h2 http/1.1 ... </VirtualHost> </IfModule>

利用浏览器缓存

Nginx
location ~* \.(?:css|js|jpg|jpeg|png|gif|ico)$ { expires 30d; add_header Cache-Control "public"; }
Apache
<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 30 days" ExpiresByType image/jpeg "access plus 30 days" ExpiresByType image/png "access plus 30 days" ExpiresByType image/gif "access plus 30 days" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType application/x-javascript "access plus 1 month" ExpiresByType application/xml "access plus 1 month" ExpiresByType application/xhtml+xml "access plus 1 month" ExpiresByType application/json "access plus 1 month" ExpiresByType text/xml "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType text/x-cross-domain-html "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType application/octet-stream "access plus 1 month" ExpiresByType text/html "access plus 1 week" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff2 "access plus 1 month" ExpiresByType font/eot "access plus 1 month" ExpiresByType font/otf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/collection "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/ttf "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType font/woff