Nginx安装教程[email protected]的博客-程序员宅基地

技术标签: yum  nginx  gcc  

nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。

正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。

ububtu平台编译环境可以使用以下指令

apt-get install build-essential
apt-get install libtool

centos平台编译环境使用如下指令

安装make:

yum -y install gcc automake autoconf libtool make

安装g++:

yum install gcc gcc-c++

下面正式开始

一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。

1.选定源码目录
可以是任何目录,本文选定的是/usr/local/src

cd /usr/local/src

2.安装PCRE库
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz 
tar -zxvf pcre-8.37.tar.gz
cd pcre-8.34
./configure
make
make install

3.安装zlib库
http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:

cd /usr/local/src

wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

4.安装ssl(某些vps默认没装ssl)

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz

5.安装nginx

Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:

cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 \
--with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 \
--with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t

make
make install

–with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。
–with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。

安装成功后 /usr/local/nginx 目录下如下

fastcgi.conf            koi-win             nginx.conf.default
fastcgi.conf.default    logs                scgi_params
fastcgi_params          mime.types          scgi_params.default
fastcgi_params.default  mime.types.default  uwsgi_params
html                    nginx               uwsgi_params.default
koi-utf                 nginx.conf          win-utf

6.启动
确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx,

netstat -ano|grep 80

如果查不到结果后执行,有结果则忽略此步骤(ubuntu下必须用sudo启动,不然只能在前台运行)

sudo /usr/local/nginx/nginx

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。


到这里nginx就安装完成了,如果只是处理静态html就不用继续安装了

如果你需要处理php脚本的话,还需要安装php-fpm。

下面安装排错

附:可能遇到的错误和一些帮助信息

1.1编译pcre错误

libtool: compile: unrecognized option `-DHAVE_CONFIG_H'
libtool: compile: Try `libtool --help' for more information.
make[1]: *** [pcrecpp.lo] Error 1
make[1]: Leaving directory `/usr/local/src/pcre-8.34'
make: *** [all] Error 2

解决办法:安装g++,别忘了重新configure

apt-get install g++
apt-get install build-essential
make clean
./configure
make

1.2 make出错

make: *** No rule to make target `build', needed by `default'.  Stop.
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

按照第4步的安装方法或
ubuntu下

apt-get install openssl
apt-get install libssl-dev

centos下

yum -y install openssl openssl-devel

2.nginx编译选项

make是用来编译的,它从Makefile中读取指令,然后编译。

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本,执行结束时,它会创建一个Makefile文件。nginx的configure命令支持以下参数:

--prefix=path    定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path 设置nginx的可执行文件的路径,默认为  prefix/sbin/nginx.
--conf-path=path  设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path  设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
--http-log-path=path  设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
--user=name  设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
--group=name  设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
--with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
--without-http_rewrite_module  不编译重写模块。编译并运行此模块需要PCRE库支持。
--without-http_proxy_module — 不编译http_proxy模块。
--with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
--with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
--with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
--with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
--with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib".

典型实例(下面为了展示需要写在多行,执行时内容需要在同一行)

./configure
    --sbin-path=/usr/local/nginx/nginx
    --conf-path=/usr/local/nginx/nginx.conf
    --pid-path=/usr/local/nginx/nginx.pid
    --with-http_ssl_module
    --with-pcre=../pcre-4.4
    --with-zlib=../zlib-1.1.3

传送门:http://www.nginx.cn/install

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34707744/article/details/74894596

智能推荐

微信小程序中父组件向子组件传值与子组件向父组件传递参数_BUG创建者的博客-程序员宅基地

wx小程序中父组件向子组件传值可以通过标签属性进行传值父组件子组件中在js文件中的properties中 properties:{ fu:{ type:Number, value:"" }}以上是子组件向父组件传递参数wx小程序中子组件向父组件传值可以通过事件的方式传递的(自定义事件)子组件中点击事件触发的时候触发父组件中的自定义事件 同时传递数据给 父组件this.triggerEvent(“父组件中自定义事件的名称”,要传递的参数)this.trigger

bash: ./xxx.py: /usr/bin/python^M: bad interpreter: No such file or directory_魏N来的博客-程序员宅基地

1.windows下编写的python文件运行在linux系统由于结尾符不同造成的解决方法:a.VSCode点击右下角CRLF 改为LF保存即可b.也可以使用Uedit编辑器修改点击 文件File-》转换-》DOS到UNIXc.linux下可以vi 打开xxx.py文件利用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 fileformat=unix 利用如下命令修改文件格式 :set ff=unix

centos7DNS服务器基本使用_爱吃牢饭的农夫的博客-程序员宅基地

1,配置ip地址[[email protected] /]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 //编辑网络配置TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static" //网卡绑定方式dhcp:自动获取ip地址等/static:静态IP地址DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV

Android studio gradle 配置阿里镜像_-------江湖-------的博客-程序员宅基地

首先确保你的Android studio未使用代理1 首先检查配置2 检查gradle.properties中的代理配置在C:\Users\SJ-001.gradle如果有代理将其注释掉3 创建init.gradle在C:\Users\SJ-001.gradle内容如下:allprojects{ repositories { def ALIYUN_REP...

linux环境刷amd显卡bios,amd显卡刷bios方法_weixin_39664995的博客-程序员宅基地

学习啦小编以AMD显卡6系卡为例,给大家介绍一下amd显卡刷bios方法,希望大家喜欢。amd显卡怎么刷biosA卡6系卡使用RBE这个工具可以方便地修改bios,参数各种详细功能各种的强大,然而七系之后rbe工具停止了更新 坑了个爹啊。。废话不多说,直接入正题。首先我们打开ATI_WinFlash工具(链接我在最后给出)如图,点击保存,将显卡bios提取成ROM文件。然后我们打开VBE7,点op...

【Python】plt.bar绘制柱状图参数详解_Asher117的博客-程序员宅基地_plt.bar参数

bar(x, height, width=0.8, bottom=None, ***, align='center', data=None, **kwargs)x 表示x坐标,数据类型为int或float类型,height 表示柱状图的高度,也就是y坐标值,数据类型为int或float类型,width 表示柱状图的宽度,取值在0~1之间,默认为0.8bottom 柱状图的起始位置,也就是y轴的起始坐标,align 柱状图的中心位置,"center","lege"边缘color 柱状图颜色ed

随便推点

Hibernate框架2--Hibernate入门程序_潜行者__的博客-程序员宅基地

一、创建项目1.打开idea,file--new--project--maven,创建新项目。如下图: 2.pom.xml文件的配置&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi...

mysql经典基础语录_daxiang2788的博客-程序员宅基地

一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', '...

Anaconda/Jupyter无法打开或点击闪退_偏偏是闷豆豆的博客-程序员宅基地

之前在慕课网学的Python是2.X版本的,于是自然而然地装了2.X版本的Anaconda,结果按网上说的点开开始菜单里的Jupyter Notebook一直闪退。开始以为是安装出了错,结果网上安装教程全都很简单,几乎没人在这一步遇到困难。后来试着在命令行里敲各种conda命令,一直提示同一条错误信息:UnicodeDecodeError: ‘utf8’ codec can’t decode...

python脚本里面运行shell命令的方法_TriumPhSK的博客-程序员宅基地_python run shell

python脚本里面运行shell命令subprocesssubprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。subprocess.call()

内部表与外部表详解_未闻花名sunny的博客-程序员宅基地_内部表和外部表

内部表&amp;外部表定义:未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);区别:内部表数据由Hive自身管理,外部表数据由HDFS管理;内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一

腾讯面试,居然凉在MySQL上,卧薪尝胆后二次面试入职腾讯_普通网友的博客-程序员宅基地

爱因斯坦说过“耐心和恒心总会得到报酬的”,我也一直把这句话当做自己的座右铭,这句箴言在今年也彻底在“我”身上实现了。每一个程序员都拥有一座大厂梦,我也不例外,去年面试腾讯,竟然被MySQL问倒了,很多相关性的问题都没有答上来,才2面就凉凉了。回去之后也潜心复习了,准备了二战,如今终于进入了腾讯,被录用。以下展示的腾讯面试题(含答案)、学习资料、实战文档等,均可以免费分享给大家,需要的朋友,...

推荐文章

热门文章

相关标签