前端项目开发完成后,需要将生成的静态文件部署到服务器上,以便用户能够访问和使用。而Nginx作为一个轻量级、高性能的Web服务器,能够提供静态文件的服务,并且支持反向代理、负载均衡等功能,适合用于前端项目的部署。使用Nginx进行部署可以提高网站的访问速度和并发能力,提供更好的用户体验。
下面的内容,是Nginx从0到1的安装部署过程:
(一)安装Homebrew
由于Homebrew是Mac上的一个包管理工具,它简化了软件安装过程,使我们可以通过简单的命令行操作来安装和管理软件。使用Homebrew安装Nginx可以避免手动下载和配置的复杂性。 所以,配置nginx之前,我们先安装Homebrew:
方式一:官网(brew.sh/)的安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
方式二:使用国内镜像安装Homebrew
(Homebrew在国内使用时可能会遇到下载速度慢的问题。为了解决这个问题,可以通过使用国内镜像来加速Homebrew的安装和软件包的下载)
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”
看执行结果,这里有两个问题需要解决:
- 问题一:全局设置了http和https代理,需要移除
- 问题二:安装Homebrew没有存放位置,需要手动创建
解决问题一:
- 查看全局配置项,执行命令: git config —global -l
- 取消全局https.proxy和http.proxy,并查看全局配置
解决问题二:
进入/usr/local目录,并创建Homebrew文件夹,执行以下命令:
- cd /usr/local
- sudo mkdir homebrew
上述两个问题解决完事儿,再次执行安装命令:
到这里,Homebrew就下载完了。
我们可以执行brew -v 查看他的版本号:
能看到版本号,说明Homebrew安装成功!
(二)Nginx的安装、启动、结束
- 安装nginx
1. brew install nginx
2. nginx -v
有版本号,说明安装成功!
- 启动nginx
执行命令:
nginx
在浏览器运行http://localhost:8080: (如下图所示,启动成功)
- 结束Nginx进程:
nginx -s stop
或者
nginx -s quit
如果nginx没有正常响应,还可以强制结束进程:
pkill nginx
或者
killall nginx
(三)查看Nginx存放位置
方式一:如果是通过Homebrew安装的Nginx,可用brew查看nginx信息(这将列出Nginx的信息,包括安装路径。)
brew info nginx
方式二:nginx -t
nginx -t
(四)修改nginx.conf文件配置
步骤一:在命令行中执行:(或者将nginx.conf文件以文本的形式编辑也可以)
vim /usr/local/etc/nginx/nginx.conf
步骤二:将打包好的dist文件路径配置到root中(在nginx.conf 文件的server中 的 location 的root),如下所示:
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /Users/weitiantian/Desktop/vite-demo/vite-project/dist; // 如果一个请求的URI是/index.html时,web服务器将会返回服务器上的/Users/weitiantian/Desktop/vite-demo/vite-project/dist/index.html的文件。
index index.html index.htm;
}
}
步骤三:修改后重新加载配置文件
nginx -s reload
(五)在浏览器访问:http://localhost:8080/index.html
如果页面能正常访问,说明部署成功!
——————————————————————————————
踩坑指南:
在这个过程中,可能会遇到下面这个问题:(当然,没遇到的同学最好,遇到的同学可参考以下解决方案)
报错:nginx: [alert] kill(63221, 1) failed (3: No such process)
分析错误:
错误信息 nginx: [alert] kill(进程号, 1) failed (3: No such process) 表明Nginx在尝试发送信号给指定的进程时失败了。具体来说,kill(进程号, 1) 是一个系统调用,用于向指定的进程发送信号。这里的 1 表示 SIGHUP 信号,通常用于重新加载配置文件或平滑重启服务。然而,当Nginx尝试发送这个信号时,系统返回了一个错误码 3,表示“没有这样的进程”。
所以,可能是以下这几种原因引起的:
- 进程已不存在:Nginx试图发送信号的进程可能已经被其他操作终止,或者根本没有启动过。
- 配置文件错误:Nginx的配置文件中可能存在错误,导致Nginx无法正确识别或管理其进程。
- 权限问题:当前用户可能没有足够的权限来发送信号给指定的进程。
- 系统资源限制:系统可能因为资源限制(如进程数量限制)而无法创建新的进程。
排查问题 && 解决方案:
- 查找所有与nginx相关的进程信息,执行命令:
ps aux | grep nginx
观察输出:若Nginx正在运行,会看到与Nginx相关的进程信息;若没有任何输出,说明没启动nginx,需要我们执行nginx命令。【解决上述问题1】
- 如果哪个nginx进程是目前用不到的,执行下面命令终止掉:【解决上述问题4】
sudo kill -9 <进程ID>
- 执行nginx -t, 如果输出以下内容,说明nginx.conf配置没有问题【排除上述问题2】
- 还有一个是mac权限问题,需要我们在执行命令时,前面加sudo【解决上述问题3】