nginx源码编译以及源码编译过程中遇到的问题

原帖地址:https://www.cnblogs.com/operationhome/p/8964191.html

本文主要讲nginx安装以及安装过程中遇到的问题。

谈到nginx 必须聊聊它的起源和发展。

nginx是由俄罗斯工程师Igor Sysoev 用C语言开发的一个免费开源的Web服务器软件,于2004年发布,聚集轻量级、高并发、高性能、低消耗等一系列优点。目前Nginx是互联网上仅次于Apache的第二流行的Web服务器软件。

接下来我们开始安装nginx,我们下面是以centos7为基础环境进行搭建,我们的安装方法:一、yum安装  二、源码安装。

一、yum 安装


1

1  yum install nginx

如果你没有yum 源的话你需要配置下yum源:

1  vim  /etc/yum.repos.d/nginx.repo 

nginx.repo里填入以下内容:

1 [nginx]
2 name=nginx repo
3 baseurl=http://nginx.org/packages/centos/7/x86_64/
4 gpgcheck=0
5 enabled=1

然后我们清除yum的缓存,进行安装


1

2

3

yum clean all

yum makecahe

yum install nginx

这样我们就成功安装好了nginx接下来讲讲源码安装,源码安装是可以个性化定制的。

二、源码安装

首先我们需要去下载源码包:

源码包下载地址:http://nginx.org/en/download.html,我们选择稳定版的包进行下载

然后我们进行解压和安装:


1

2

wget   http://nginx.org/download/nginx-1.14.0.tar.gz

tar -xzvf nginx-1.14.0.tar.gz<br>cd nginx-1.14.0

创建nginx用户和用户组


1

useradd -M -s /sbin/nologin nginx

在进行安装之前我们需要的一些通用配置选项:(官网源码编译配置文档路径:http://nginx.org/en/docs/configure.html )


1

2

3

4

5

6

7

8

--prefix=<path>  nginx 的安装的根路径,所有其他的安装路径都要依赖于该选项

--sbin-path=<path> 指定nginx二进制文件的路径。如果没有指定,那么这个路径会依赖于--prefix选项

--conf-path=<path> 如果在命令行没有指定配置文件,那么将会通过这里指定的路径,nginx将会去那里查找它的配置文件,这里的路径要精确到文件.

--error-log-path=<path> 指定错误日志文件的路径,要精确到文件。

--pid-path=<path>指定pid文件的路径,通常在/var/run/

--lock-path=<path>互斥锁文件的路径

--user=<user> worker进程运行的用户

--group=<group> worker进程运行的组

以上是自定义安装的一些配置选项:

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。接下来我们开始进行编译安装,我会把安装过程中的遇到的问题贴出来。

mkdir /opt/nginx &&chown nginx:nginx /opt/nginx/./configure  --prefix=/opt/nginx/ --sbin-path=/usr/bin/ --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx#--prefix=/opt/nginx/ 指定nginx的安装目录是/opt/nginx#--sbin-path=/usr/bin/ 指定nginx二进制文件的路径是/usr/bin#--conf-path=/etc/nginx/nginx.conf  指定配置文件的路径#--user=nginx 指定进程运行的用户#--group=nginx 指定进程运行的用户

在编译的过程中我遇到了以下的错误,这里做个记录:

第一个错误 :./configure: error: C compiler cc is not found缺少gcc编译器。

解决方法:安装gcc编译器


1

yum -y install gcc-c++ autoconf automake

第二个错误:/configure: error: the HTTP rewrite module requires the PCRE library.确少PCRE库.

解决方法:安装PCRE


1

yum   -y install pcre pcre-devel

第三个错误:./configure: error: the HTTP cache module requires md5 functions from OpenSSL library. You can either disable the module by using --without-http-cache option, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-http_ssl_module --with-openssl=<path> options. 缺少ssl错误。

解决方法:安装openssl


1

yum -y install openssl openssl-devel

第四个错误:./configure: error: the HTTP gzip module requires the zlib library. 缺少zlib库

解决办法:安装zlib库


1

yum install -y zlib-devel

还有些错误是我没有遇到的,但是我在这边做下记录,以后可能会有帮助。

错误信息:./configure: error: the HTTP XSLT module requires the libxml2/libxslt    缺少libxml2

解决办法:yum -y install libxml2 libxml2-dev && yum -y install libxslt-devel

错误信息:./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries.

解决方法:http_image_filter_module是nginx提供的集成图片处理模块,需要gd-devel的支持   yum -y install gd-devel

错误信息:./configure: error: perl module ExtUtils::Embed is required 缺少ExtUtils

解决方法:yum -y install perl-devel perl-ExtUtils-Embed

错误信息:./configure: error: the GeoIP module requires the GeoIP library. You can either do not enable the module or install the library. 缺少GeoIP

解决方法:yum -y install GeoIP GeoIP-devel GeoIP-data

以上是配置过程中可能遇到的错误,接下来我们进行编译。


1

make -j 4

-j 参数的意义是并行编译,在多核的情况下可以提升编译速度

安装:


1

make  install

然后我们需要更改一下目录的所有者和所属组,避免nginx运行时的权限问题


1

2

chown  -R nginx:nginx /opt/nginx/

chown -R nginx:nginx /etc/nginx/

查看nginx的版本:


1

2

[[email protected] etc]# /usr/bin/nginx  -v

nginx version: nginx/1.14.0

运行nginx


1

2

3

4

5

[[email protected] etc]# /usr/bin/nginx

[[email protected] etc]# ps -ef |grep nginx

root       8984      1  0 10:56 ?        00:00:00 nginx: master process /usr/bin/nginx

nginx      8985   8984  0 10:56 ?        00:00:00 nginx: worker process

root       8987   3060  0 10:56 pts/2    00:00:00 grep --color=auto nginx

然后我们就可以直接访问我们的ip的80端口(端口需要开放的)

如果开了防火墙可以关闭也可以开放80端口。

关闭防火墙:


1

systemctl stop firewalld

开放80端口:


1

2

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --reload

当我们看到这个界面就意味安装成功了:

最后我们再讲讲几个nginx的命令:


1

2

3

4

5

启动:/usr/bin/nginx

查看配置文件是否正确:/usr/bin/nginx -t

重载配置文件:/usr/bin/nginx  -s reload

重启:/usr/bin/nginx -s reopen

停止:/usr/bin/nginx -s stop

以上就是安装nginx的一个笔记。

原文地址:https://www.cnblogs.com/blackhumour2018/p/9427829.html

时间: 2024-10-29 19:11:35

nginx源码编译以及源码编译过程中遇到的问题的相关文章

Centos 7.0 编译安装LNMP(Linxu+nginx+mysql+php)之源码安装nginx (一)

nginx简介:       Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日. 其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器

Docker环境下编译android源码|编译可运行xposed

前言 因为我的电脑是Ubuntu18的版本,成功编译xposed刷入手机之后无法启动,检查了所有的环境,没有问题,发现可能是Ubuntu系统的兼容库的问题,但是我不可能重新安装系统吧,毕竟有点蠢,所以最好的方式就是在docker的Ubuntu容器中编译,统一环境问题,也可以隔离环境平时 工作开发环境,下面开始操作 安装配置docker docker加速,采用对国人友好的镜像地址 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,执行以下命令: 您可以配置 D

windows7下cygwin+vs2013编译webkit源码

先下载源码和其他依赖,然后准备cygwin的环境,安装vs2013,最后编译即可.网上没有能直接用于最新版本源码编译的教程,所以我在编译过程中也遇到了很多坑.回过头来看,这些坑都是可以避免的,想要自己尝试编译的同学,可以根据本文快速的实现自己编译webkit(~除去下载文件的时间,15分钟准备环境,1小时编译完成). 下载最近源码 最近的下载版本和源码在这里: http://nightly.webkit.org/ 我使用的源码是这个版本built on 13 October 2014 and i

在win7 下编译MySQL源码

MySQL MySQL是一款优秀的开源数据库,在阿里.网易等各个互联网公司中有着广泛的应用.尽管各种NoSQL大行其道,但是关系型数据库依然必不可少. 作为一个新手,在Win7下用源码安装MySql数据库并不容易.我自己都折腾了好几天.今天把安装过程记录下来,其一是为了方便自己以后学习,其二则是分享过程,让学习者能够从我这篇文章中受益. 1. 编译环境及源码下载 编译环境:Visual Studio 2010 (Win7 32位) 编译工具: bison-2.4.1-setup.exe 下载地址

利用Eclipse+maven编译Jedis源码成jar包和源码jar包

在GitHub上面,有很多源码都是maven项目,但是很多都没有jar包.去网上找到话第一个是比较难找,第二个是怕不够原汁原味.我们通过maven+Eclipse可以可视化将maven项目生成jar库包还有源码jar包. 1.下载maven 下载地址:http://maven.apache.org/download.html 2,解压 到本地: 3,配置环境变量 3-1,要先配置java-home变量. 新建系统变量,写入java-home值. 在系统变量的path里面添加  %JAVA_HOM

CentOS6.5上编译OpenJDK7源码

本文地址:http://www.cnblogs.com/wuyudong/p/build-openjdk7.html,转载请注明源地址. 采用开源的OpenJDK版本,获取其源码的方式有两种: 通Mercurial代码版本管理工具从Repository中直接取得源码,但是速度太慢,需要花费数小时 直接下载官方打包好的源码包(推荐) 下载源码openjdk-7u6-fcs-src-b24-28_aug_2012.zip,解压,下载地址如下: http://www.java.net/download

【转】模块编译Android源码方法

原文网址:http://blog.csdn.net/androidlover1991/article/details/17014055 实际开发中,并不需要每次都编译所有源代码,只需要编译自己修改的模块即可.Android 的编译系统提供了强大的机制支持单独模块的编译,而且十分简单.Android 提供三种方式用于编译单独模块 :1.make 模块名2.mm 来自于 envsetup.sh 脚本中注册的函数3. mmm 来自于 envsetup.sh 脚本中注册的函数下面将分别介绍这三种方法.1

编译Hadoop源码

背景: 在阅读hadoop源代码过程中会发现部分类或者函数无法找到,这是由于Hadoop2.0使用了Protocol Buffers定义了RPC协议, 而这些Protocol Buffers文件在Maven编译源代码才会生成对应的java类,因此若其他类在源代码中引用这些类则暂时无法找到. 解决办法就是先对hadoop源码进行编译,再导入eclipse工程. 一.基础软件: 软件 下载地址 推荐版本 JDK http://www.oracle.com/technetwork/java/javas

netcdf源码在windows上的编译

作者:朱金灿 来源:http://blog.csdn.net/clever101 今天搞搞netcdf源码在windows上的编译,折腾了半天,算是搞成了,特地记录一下过程.我的目标是要生成netcdf的工程文件.netcdf依赖于hdf5.zlib和curl这三个库. 首先在HDF5 Source Code下载最新的hdf5源码,然后使用CMake来生成编译hdf5的解决方案,如下图: 再下载netcdf的源码:NetCDF Downloads,开始使用CMake来生成netcdf的解决方案,