当前位置:首页 » 网页前端 » 前端dist放到服务器上就能运行了吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端dist放到服务器上就能运行了吗

发布时间: 2023-08-19 08:52:36

‘壹’ webpack打包后的代码,如何部署到服务器上

本文章前端代码是基于vue+webpack开发的

Nginx是一款轻量级的Web 服务器/反向代理服务器

首先,webpack配置如下

在开发过程中,我们是通过npm run dev在开发环境中运行代码
如果要部署到生产环境中,可以运行npm run build进行上线打包

打包完成后,会发现项目中多了dist这个文件夹

执行结果和webpack的配置文件一致。

代码被webpack打包完成后下一步就是部署到服务器上,此文仅适合于前端代码是部署在windows操作系统的nginx服务中。
这里假设:
Windows操作系统:windows server 2008 64位
Nginx服务:nginx-1.12.2 64位

1.下载nginx-1.12.2 64位解压,假设nginx-1.12.2放在D:nginx-1.12.2目录中,nginx目录结构。如图下

2、前端代码放在D:nginx-1.12.2html目录中,dist目录就是刚刚前端打包完的代码。如图下

3、在D:nginx-1.12.2conf目录中,有个nginx.conf配置文件,进行编辑这个文件


4、假设前端的端口号为8082,如果端口号被占用,请修改为其它端口号。后台服务访问地址http://192.168.121.**:8080,

5、打开cmd控制台,进入目录D:nginx-1.12.2中,用start nginx命令启动服务,然后用tasklist /fi "imagename eq nginx.exe",查看nginx服务是否启动。

4、如果改变配置文件时,需要用nginx -s reload 命令重启nginx工作进程。

5、关闭服务
nginx -s stop
nginx -s quit 安全关闭
taskkill /F /IM nginx.exe > nul 关闭所有nginx服务

‘贰’ 云服务器部署前端服务

yum install -y nginx

进入/etc/ngin文件夹,并且新建自己的配置目录如:myconfig,并且进入此目录,衫老燃新建一个配置文件如:ghmall.conf,编辑以下内容并且保存:

上传前端文件(执行npm run build后,项目下会生成一个dist文件夹)至该配含友置文件中配置或虚的地址如:/usr/portal/ghmall-portal/dist

进入/etc/ngin文件夹,编辑配置文件:vim nginx.conf

修改为自己的server配置:

server {

      listen 9527;

      server_name localhost;

      location / {

        root /usr/portal/ghmall-portal/dist;

      }

      location /ghmall/ {

        proxy_pass http://localhost:8118;

      }

然后重新启动nginx:nginx -s reload

输入systemctl start nginx开启 nginx 服务

浏览器上输入yourIpAdress:9090/便可以访问你的页面了

另外systemctl status nginx可以查看 nginx 的运行状态

以及systemctl stop nginx可以关闭 nginx 服务

‘叁’ web前端项目部署到服务器:

执行成功后会生成dist文件

4.1 进入到nginx配置目录:/usr/local/nginx/conf,对 nginx.conf 文件进行配置

使用include可以配置多个.conf文件,如一个项目一个配置文件。在同目录下创建demo文件夹,并创建demo.conf配置文件

下面使用是以ip地址的方式创建的的配置文件

访问地址:

其中dist名称时可以修改,保持与/usr/local/nginx/html下cp名称一致,否则会访问不到;并且/usr/local/nginx/html目录可存在同一ip下多个web项目。

域名与ip绑定

配置域名demo.conf
eg: 域名 - demo.cn

4.2阿里云配置域名前缀
阿里云->域名->域名列表—>域名 管理-> 域名解析->解析设置

如图:记录值 填写当前服务ip

学习过程中所记录,有问题或者有好的方式欢迎指点。不胜感激 🤗 🤗 🤗

‘肆’ 前端vue与后端Thinkphp在服务器的部署

vue在服务端部署时,我们都知道通过npm run build 指令打包好的dist文件,通过http指定是可以直接浏览的,Thinkphp通过域名指向index.php文件才可以浏览。要使前端正常调用后端数据,有两种方法:1、前端跨域调用后端数据,2、前端打包文件部署在后端的服务器文件夹下(同域)。

web服务器: apache

一、跨域

在服务器配置站点:

在路径/home/www/  下创建test项目文件夹,用来放项目文件。  

找到httpd-vhosts.conf文件配置站点  

前端站点:  

    ServerName test.test.com  

    DocumentRoot "/home/www/test/dist"    

    DirectoryIndex index.html  

后端站点:  

    ServerName test.testphp.com  

    DocumentRoot "/home/www/test/php"    

    DirectoryIndex index.php  

将前端打包好的dist文件放在/home/www/test/ 文件夹下,运行http://test.test.com可浏览,当路径改变时,刷新会出现404错误。此时dist文件下创建一个.htaccess文件,当路径不存在时,路径指向http://test.test.com/index.html能解决此问题。

  RewriteEngine On  

  RewriteBase /  

  RewriteRule ^index\.html$ - [L]  

  RewriteCond %{REQUEST_FILENAME} !-f  

  RewriteCond %{REQUEST_FILENAME} !-d  

  RewriteRule . /index.html [L]  

在/home/www/test文件夹下创建项目根目录php文件夹,将thinkphp文件放在php下。TP5的入口文件在public文件下,在这将public下的入口文件index.php挪到php文件夹下(个人习惯将入口文件放在项目根目录), 后端绑定Index模块。

前端调用后端接口,存在跨域,跨域解决方法有好几种,在这我将在后端php做配置,解决跨域问题,在公用控制器设置跨域配置:

class Common extends Controller  

{  

    public $param;  

    // 设置跨域访问  

    public function _initialize()  

    {  

        parent::_initialize();  

        isset($_SERVER['HTTP_ORIGIN']) ? header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']) : '';  

        header('Access-Control-Allow-Credentials: true');  

        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');  

        header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");  

$param =  Request::instance()->param();  

$this->param = $param;  

    }  

}  

前端调用登录接口: this.axios.post('http://test.testphp.com/index.php/base/login', {user: '', password: ''})。

(可在webpack.base.conf.js文件下可定义接口:http://test.testphp.com/index.php/)

二、同域

后端配置同上,公共配置器中的header配置注释。将前端的dist文件下的所有文件(包含.htaccess),放在php文件夹下。将后端index控制器的index方法的路径重定向php下的index.html文件:

namespace app\index\controller;  

use think\Controller;  

class Index extends Controller  

{  

    public function index() {  

$this->redirect('/index.html');  

    }  

}  

前端调用登录接口: this.axios.post('/index.php/base/login', {user: '', password: ''})

转自:https://blog.csdn.net/qq_35465132/article/details/78986675