目录

nginx部署前端项目详细教程

nginx部署前端项目详细教程

nginx部署前端项目详细教程

1.背景

在很多年前,那时候还是前后端不分离的时代,没有专门的前端工程师,或者说前端工程师并不太需要自己去部署网站,一般都是把这部分事情交给后端工程师或者运维工程师处理就可以。

进入前后端分离的时代之后,这一切都变了。前端工程师很有可能需要自己部署前端项目,然而前端工程师一般很少接触到服务器等知识,所以部署网站时总是出现问题。

2.准备工作

一个前端项目+一台服务器。前端项目可以很简单,可以是一个空脚手架,甚至可以只是一个html文件。服务器则可以去阿里/华为/京东等官网去租用(怎么租用或者购买满足自己需求的服务器可以直接百度或者在官网看相关文档,这一块我发现有些朋友不太会,后续我写个教程)。

3.初始化项目

直接用vue脚手架新建一个项目(后续将都以该项目为例)。

 vue create first-project

https://i-blog.csdnimg.cn/direct/6c69c5812beb469a8cf00a950a6bcc9d.png

按dos提示执行以下命令

 cd first-project && npm run serve

https://i-blog.csdnimg.cn/direct/4d8457a7f5eb4c379f8b9ff627373b3c.png

用浏览器访问http://localhost:8080,如下,说明前端项目已经准备完毕。

https://i-blog.csdnimg.cn/direct/e09c56a59eb54565b8d95b8b06dfbd34.png

4.在服务器安装Nginx

Nginx是一款轻量级的Web服务器和反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用,我们的网站经常部署到Nginx服务器上(当然也可以选择其它web服务器)。

我租的服务器是阿里云Centos系统,所以下面将以Centos为例,其它服务器道理与此类似。

(1)判断服务器是否安装Nginx

先登录阿里云平台,找到自己租用的服务器界面,进行远程连接,连接成功之后,使用以下命令判断服务器是否安装Nginx:

 whereis nginx

如果出现如下界面,则代表未安装Nginx: https://i-blog.csdnimg.cn/direct/3556242224484dcd95138f6510b4aa5c.jpeg

由于我的服务器已经安装Nginx,所以出现以下界面(显示Nginx安装路径):

https://i-blog.csdnimg.cn/direct/048895ef7ecb449395c9a68ffe1b6a46.png

(2)安装Nginx

命令如下:

 yum install -y nginx 

如果未配置yum源的,可参考网上如何使用yum安装Nginx(后续有空我也出个教程),出现如下界面则代表安装完成。 https://i-blog.csdnimg.cn/direct/e6b3422411ce46d0b367edef494eb2eb.jpeg

(3)判断是否安装成功

可以使用上面提到过的whereis nginx命令

 whereis nginx

出现Nginx安装路径表示成功 https://i-blog.csdnimg.cn/direct/7f9140fd9ec346b89f35784af0e8eb1d.png 也可以查看Nginx版本来判断

 nginx -v

出现Nginx版本表示成功

https://i-blog.csdnimg.cn/direct/59883304ff9c49f680530271ee250b86.jpeg

5.服务器启动Nginx

(1)启动

直接输入Nginx即可启动服务。 https://i-blog.csdnimg.cn/direct/e96ad6f8bb704cb6a70f05bd1bbcf7df.jpeg

打开浏览器,访问服务器地址,出现如下界面则代表启动成功。

https://i-blog.csdnimg.cn/direct/a9e4760610df44d2a1e076158361f3f6.png

这里访问默认的是80端口,因为Nginx服务就是默认的80端口,如果不能访问,大致有几种原因:

  • Nginx未启动

  • 服务器安全组未加入80端口

    不了解服务器安全组知识的朋友可以去研究研究。

  • Nginx配置错误

(2)停止

终止Nginx https://i-blog.csdnimg.cn/direct/835a8a9393ea42ea84d9274bd31dae0d.jpeg

此时访问浏览器则无法访问:

https://i-blog.csdnimg.cn/direct/7b63a388bc3d449b97de697d0f526e1c.png

(3)重启

重启Nginx服务, 一般用于修改配置文件之后(不然会提示找不到路径) ,命令如下:

https://i-blog.csdnimg.cn/direct/3ec911beeb604b3baa28c87212749403.jpeg

6.修改Nginx配置

找到Nginx配置文件存放位置,命令如下:

https://i-blog.csdnimg.cn/direct/00c3a7afe5aa42808c694c50e2beffb7.jpeg

此时/etc/nginx就是Nginx配置文件存放的位置,进入该文件夹:

 cd /etc/nginx
 ll

https://i-blog.csdnimg.cn/direct/e178123a688246e6ad36c03888dc5285.jpeg

其中nginx.conf就是默认配置文件,编辑该文件:

 vim nginx.conf

https://i-blog.csdnimg.cn/direct/d21218ddfc274571b0c5e6c5ded03113.jpeg

往下拉可以看到server选项。如下:

https://i-blog.csdnimg.cn/direct/5b840223d4f44bf1b80f2f4b1dbdfd2d.jpeg

上面界面我们基本上不用改什么,重要的是server这个对象,可以看到默认监听的是80端口,所以我们直接访问服务器ip即可,接下来我们改为9000端口:

https://i-blog.csdnimg.cn/direct/4f94625b25474d88a29905567f0e7735.jpeg

按下ESC键后输入“ :wq! ”退出保存。

重启Nginx,命令如下:

 nginx -s reload

此时访问时则需要带上端口号(服务器安全组需要开启9000端口,怎么配置安全组我后续会出个教程)。也要记得启动Nginx服务器。

https://i-blog.csdnimg.cn/direct/6a4acd76f7bd48e4af9a09d95257efcc.png

我们再回过头来看nginx.conf文件中server中的root字段。

https://i-blog.csdnimg.cn/direct/2c009ef116d64a01b6c7a4e20cd6a0f3.jpeg

该字段后面跟着的就是网站页面路径,也就是网站存放的路径。假设我们网站的存放路径为:

 /home/www/dist

我们就需要需改该文件:(按i键进入修改模式),修改后按ESC再:wq!退出。

https://i-blog.csdnimg.cn/direct/a82433fd01934275b0406803d360cb35.jpeg

再重启Nginx后,我们的网站无法访问了,因为我们没有这个文件夹。

https://i-blog.csdnimg.cn/direct/ad3082a725614cc88ab8f477fd51cd4f.png

7.新建网站文件夹

刚刚我们设置了网站存放的文件夹路径为:/home/www/dist,此时我们需要在服务器上新建www文件夹:

 cd /home
 mkdir www

https://i-blog.csdnimg.cn/direct/4987f61bab4b4a74bd48681d119f1de9.jpeg

我没有新建dist文件夹,因为后续vue项目打包就会生成dist文件夹。

8.打包部署项目

(1)项目打包

使用vue打包命令,生成dist文件夹:

 npm run build

(2)上传至服务器

我们可以使用ftp工具将dist文件夹上传至/home/www目录下,当然也可以使用命令(我更喜欢用命令行):

 scp -r dist/ root@xxx.xx.xx.216:/home/www

在我们的项目目录下用git打开命令行,将本地的dist整个文件夹复制到服务器,需要注意的是window不支持scp命令,所以使用了git命令行工具。

https://i-blog.csdnimg.cn/direct/05ce631380a7419893ac0d14cbcb1e55.png

此时无需重启Nginx,刷新浏览器,可以看到我们的网站已经部署成功了。

https://i-blog.csdnimg.cn/direct/f469470a4d2443e583f0ce547b8d0fe8.png

9.解决刷新路由404问题

当我们切换路由后,然后再刷新页面,会出现404的情况。(为什么会出现404问题,我在之前的文章“ ”中已经说明)

https://i-blog.csdnimg.cn/direct/5d3350c0d1354be8a0f5fe450c993844.png

解决问题的办法有两种:一种方案是将路由模式改为hash模式(这种不太美观,有个#);另外一种方案是 修改Nginx配置 。我们还是到nginx.conf文件中:

https://i-blog.csdnimg.cn/direct/8b16284d330147ce9255abfd62c93980.jpeg

 location / {
   try_files $uri $uri/ /index.html; ---解决页面刷新404问题
 } 

如下加这一行代码是为了让页面一直都在index.html页面上,因为vue是单页应用。

https://i-blog.csdnimg.cn/direct/8aa9972bc25f45f082389cee79dfd242.jpeg

按esc键后按“ :wq! ”退出并且保存。重启Nginx。

https://i-blog.csdnimg.cn/direct/3fe091e5e8714b07b247181e17c5a6d4.jpeg

修改之后重启Nginx,这个时候刷新浏览器则不会出现404了。

https://i-blog.csdnimg.cn/direct/5f57d3267c6d48c7a2440a71138acaf0.png