最近在开发一个的nginx的打点服务器,选择了nginx配合日志信息作为打点数据的方式,所以就需要编译安装nginx。编译过程中出现很多坑,想把这些问题分享给大家,希望大家在编译安装nginx的时候避免掉这些问题,废话不多说,咱们开始。
准备阶段
由于我的电脑是win11系统,所以我选择了win11系统自带子系统wsl工具,使用wsl工具之前。需要开启win11自带的wsl功能。在控制面板上找到启用和关闭window功能
分别勾选上以上的三项,确定之后重启电脑。之后我们去下载 Ubuntu 20.4; 我是在Microsoft Store下载的,之所以选择20.4版本,后面说到ubuntu的时候再讲。到此我们的前期准备工作已经完成。
编译阶段
我们打开下载的Ubuntu工具,第一步我们应该修改镜像源,因为这关系到我们对于nginx编译插件的安装速度。我使用的是阿里云镜像,如果大家想下载速度起飞,去某度看看教程,这里就不细嗦。
-
执行sudo apt-get update先更新一下nginx包管理工具,避免安装过程不能下载到我们想要的插件版本。
-
下载编译nginx的必要插件,执行 sudo apt-get install build-essential zlib1g-dev libpcre3-dev libssl-dev; 执行这个命令的时候,Ubuntu的版本应选择20.4,否则zlib1g-dev 和 libpcre3-dev安装过程中会掉包,我原来所用的版本是23.0,结果费了老半天的劲也没安装下来,最新版本的Ubuntu找一个安装zlib和pcre的教程都找不到,我只好换版本了。安装完后再sudo apt-get update一下
-
去nginx官网把nginx要安装的压缩包链接复制一下,回到ubuntu界面,把nginx源码包下载下来。执行wget + copy path 把源码包下载到ubuntu; 然后tar -zxvf nginx.xxx.tar.gz解压源码包,cd 到nginx.xxx目录下面,输入 ./configure --prefix=/usr/local/nginx 然后分别执行make和make install 这个时候nginx编译成功。在usr/local/nginx下安装了nginx
-
切换到usr/local/nginx,nginx的执行文件在sbin目录下,这个时候我们输入./sbin/nginx就可以运行nginx啦。如果你没有发生意外的情况下你一定发生意外了,意外一般是两种情况导致的,第一是nginx的启动某些文件的访问权限问题,还有某些文件找不到的问题
设置访问权限
由于nginx启动过程中会访问nginx目录下的logs/error.log文件和logs/access.log文件,如果没有开启sudo对这个文件的写入权限的话,启动是没法进行下去的。
这个时候我们执行:
sudo chmod 644 /usr/local/nginx/logs/error.log
sudo chmod 644 /usr/local/nginx/logs/access.log
这个两个命令是告诉当前的用户,nginx启动你放心更改error.log文件和access.log文件。执行完成,切换到/usr/local/nginx/logs目录下,这两个文件还没有创建,所以我们还要创建它们
sudo touch error.log
sudo touch access.log
文件权限设置就已经完成了,尝试启动nginx, cd 到nginx的sbin目录,./nginx启动没有输出信息的话证明nginx已经被我们安装好了。