导航:首页 > 源码编译 > nginx编译教学入门

nginx编译教学入门

发布时间:2022-04-13 11:47:21

Ⅰ 怎么编译安装nginx1.8.1

要编译安装Nginx,首先我们要安装依赖包 pcre-devel 和 zlib-devel:
# yum install pcre-devel zlib-devel -y
程序默认是使用 nobody 身份运行的,我们建议使用 nginx 用户来运行,首先添加Nginx组和用户,不创建家目录,不允许登陆系统
# groupadd nginx
# useradd -M -s /sbin/nologin -g nginx nginx

准备工作完成后就是下载编译安装Nginx了,可以从我提供的网盘下载,也可以去Nginx的官网下载。
首先解压源码包:
# tar xf nginx-1.4.4.tar.gz
然后 cd 到解压后的目录就可以执行 ./configure 了
# cd nginx-1.4.4
指定安装目录和运行时用的属主和属组,并启用状态监控模块等
# ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_mole \
--with-http_flv_mole \
--with-http_stub_status_mole \
--with-http_gzip_static_mole \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
等配置完成后就可以 make && make install 了
# make && make install
# mkdir /var/tmp/nginx/client/ -pv

等编译安装完成后在 /usr/local 下就会出现 Nginx 这个目录了,进入这个目录后发现目录非常简单。它的配置文件存放在 conf 目录中,网页文件存放在 html 中,日志文件存放在 logs 中,sbin 目录下只有一个可执行程序 "nginx"
接下来我们简单的为它提供一个服务脚本吧!
# vim /etc/init.d/nginx
新建文件/etc/rc.d/init.d/nginx,内容如下:
#!/bin/bash
# chkconfig:235 85 15
# description: Nginx is an HTTP server
. /etc/rc.d/init.d/functions
start() {
echo "Start..."
/usr/local/nginx/sbin/nginx &> /dev/null
if [ $? -eq 0 ];then
echo "Start successful!"
else
echo "Start failed!"
fi
}

stop() {
if killproc nginx -QUIT ;then
echo "Stopping..."
fi
}

restart() {
stop
sleep 1
start
}

reload() {
killproc nginx -HUP
echo "Reloading..."
}

configtest() {
/usr/local/nginx/sbin/nginx -t
}

case $1 in
start)
start ;;
stop)
stop ;;
restart)
restart ;;
reload)
reload ;;
configtest)
configtest ;;
*)
echo "Usage: nginx {start|stop|restart|reload|configtest}"
;;
esac

之后给这个文件可执行权限:
# chmod +x /etc/init.d/nginx
好了,现在可以使用 start,stop 这些参数控制Nginx服务了

由于脚本是我自己写的,还有许多不尽人意的地方,欢迎大家修改和完善!
现在我们就试试启动服务看看效果吧:
# service nginx start
记得关闭 SElinux 和 iptables 防火墙哦,
# service iptables stop
# setenforce 0
接下来就在浏览器中访问你服务的IP看看效果吧!是不是出项了欢迎的字样呢

接下来就研究下 Nginx 的配置文件吧!
# vim /usr/local/nginx/conf/nginx.conf
各项参数的意义如下:
worker_processes 1; 工作进程数量

error_log logs/error.log; 日志文件位置
pid logs/nginx.pid; pid文件位置
worker_connections 1024; 没进程的连接数
listen 80; 监听端口
server_name localhost; 主机名
root html; 网站根目录
index index.html index.htm; 网站索引页
error_page 500 502 503 504 /50x.html; 访问错误页面
剩下的其他被注释掉的代码块:
location ~ \.php$ { . . . . . . } 对PHP的支持,需要安装PHP
server { . . . . . . } 添加server代码块能添加虚拟主机
剩下还有监听443端口的超文本传输安全协议 HTTPS server 需要在编译Nginx时添加ssl的支持

接下来我们试着添加一台虚拟主机吧,虚拟主机的添加可以基于端口,可以基于IP,也可以基于主机名,我们挨个来看看:
基于端口:
首先编辑配置文件,添加server代码块,记得要写到http{ . . . . . . }这个大的代码块中。
server {
listen 8080;
server_name localhost;

location / {
root /var/www/html;
index index.html index.htm;
}
}
这样就添加了一个监听8080端口的服务,你也可以定义自己喜欢的端口哦。
接下来检查下配置文件有没有问题,如果最后一个单词显示successful就代表没问题了,可以重新启动Nginx了
# service nginx configtest
# service nginx restart
接下来就给第二个虚拟主机写一个index吧!首先创建目录
# mkdir -pv /var/www/html
# echo '<h1>Hi! This is 8080!</h1>' > /var/www/html/index.html
好了 接下来试着在浏览器中访问访问,记得第二个主机要加上端口访问哦

现在试着用不同的IP建立虚拟主机吧!我们可以在一块网卡上绑定多个IP地址的方式来实现
# ifconfig eth0:0 10.0.0.4/8
记得把IP换成你自己的哦!然后ifconfig看看是不是多出来一个网卡IP了呢
让后继续修改配置文件,这回要修改两个地方,一个是原本自带的站点的 listen 项,一个是自己添加的站点的 listen 项。
基于IP:
server {
listen 10.0.0.3:80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}

server {
listen 10.0.0.4:80;
server_name localhost;

location / {
root /var/www/html;
index index.html index.htm;
}
}
让他们只监听不同的IP,用相同的端口

接下来再浏览器上用不同的IP来访问试试吧,及的还得重启Nginx,先检查一下,出现错误了看看哪里配置的不对,然后就可以重启了。
# service nginx congiftest
# service nginx restart
如果配置给网卡的第二个IP不想要了,把它停掉就可以了
# ifconfig eth0:0 down
再 ifconfig 看看是不是没有了呢

现在试试用不同的主机名吧!也是企业用的最多的方式。我们把两个站点的listen项都改为80,然后修改service_name项为定义的主机名
基于主机名:

server {
listen 80;
server_name ybmq.com;

location / {
root html;
index index.html index.htm;
}
}

server {
listen 80;
server_name zhzz.com;

location / {
root /var/www/html;
index index.html index.htm;
}
}

然后重启Nginx吧!

可是我们在浏览器上怎么通过域名访问呢?要知道我们访问 啊,qq 啊之类的是通过DNS服务器的,难道我们还要配置一台DNS服务器?其实不然,我们通过修改客户机的 hosts 文件就可以了。hosts文件是一个本地的域名解析文件,我们要解析哪些域名只要把域名和对应的IP写到一起就可以了。在Windows XP之后的系统中,这个文件位于:
C:\Windows\System32\drivers\etc\hosts
我们用文本编辑器打开,添加两个相同的IP对应的两个不同的主机名就可以了。
如下图所示

如果你打开这个文件发现已经有很多IP地址了,可以直接在最后加入这两行,也可以直接清空这个文件,不会有什么问题的。这个文件的用途还可以屏蔽一些网站哦,只需要把网址对于的IP改为 127.0.0.1 也就是本地回环地址,浏览器查询域名对应的IP时时先通过查询这个文件的,如果查询到了,不管对错都不会访问DNS服务器了,所以我们给它一个错误的地址,那它一辈子也打不开被屏蔽掉的网站了。
好了 接下来就在浏览器中试试用用域名访问你的两个站点吧。
如果大家还用IP访问会是什么情况呢?我不说了,大家还是自己测试吧 哈哈o(^▽^)o

Ⅱ 用C++开发nginx插件,如何进行编译

如果强行说有原因的话,完全优化的C程序要比C++略快。其实也快不了很多,毕竟编译出来的binary本来也差不太多,但是对于工业标准来说,C还是比C++普及的。
现代的C++最注重的是代码的易维护,而不是纯粹的效率。一个小工程要追求极致的效率,还是要找C。

Ⅲ 如何 编译 ngx

一、必要软件准备
1.安装pcre

为了支持rewrite功能,我们需要安装pcre

复制代码代码如下:
# yum install pcre* //如过你已经装了,请跳过这一步

2.安装openssl
需要ssl的支持,如果不需要ssl支持,请跳过这一步

复制代码代码如下:
# yum install openssl*

3.gzip 类库安装

复制代码代码如下:
yum install zlib zlib-devel

4.安装wget
下载nginx使用,如果已经安装,跳过这一步

复制代码代码如下:
# yum install wget

二、安装nginx

1.下载

复制代码代码如下:
wget http://nginx.org/download/nginx-1.7.0.tar.gz

2.解压

复制代码代码如下:

tar -zxvf nginx-1.7.0.tar.gz

3.编译和安装
执行如下命令

复制代码代码如下:

# cd nginx-1.7.0
# ./configure --prefix=/usr/local/nginx-1.7.0 \
--with-http_ssl_mole --with-http_spdy_mole \
--with-http_stub_status_mole --with-pcre

–with-http_stub_status_mole:支持nginx状态查询
–with-http_ssl_mole:支持https
–with-http_spdy_mole:支持google的spdy,想了解请网络spdy,这个必须有ssl的支持
–with-pcre:为了支持rewrite重写功能,必须制定pcre

最后输出如下内容,表示configure OK了。

复制代码代码如下:

checking for zlib library ... found
creating objs/Makefile
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx-1.7.0"
nginx binary file: "/usr/local/nginx-1.7.0/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx-1.7.0/conf"
nginx configuration file: "/usr/local/nginx-1.7.0/conf/nginx.conf"
nginx pid file: "/usr/local/nginx-1.7.0/logs/nginx.pid"
nginx error log file: "/usr/local/nginx-1.7.0/logs/error.log"
nginx http access log file: "/usr/local/nginx-1.7.0/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# make //确定你的服务器有安装make,如果没有安装请执行yum install make

# make install

三、启动、关闭、重置nginx
启动:直接执行以下命令,nginx就启动了,不需要改任何配置文件,nginx配置多域名虚拟主机请参考后续文章.

复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx

试试访问:直接使用curl命令来读取web信息

复制代码代码如下:

[root@ns conf]
# curl -s http://localhost | grep nginx.com
nginx.com.

关闭:

复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s stop

重置:当你有修改配置文件的时候,只需要reload以下即可

复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s reload

整个nginx的安装就到这里结束了。

四、nginx编译参数详解

复制代码代码如下:

–prefix= 指向安装目录
–sbin-path 指向(执行)程序文件(nginx)
–conf-path= 指向配置文件(nginx.conf)
–error-log-path= 指向错误日志目录
–pid-path= 指向pid文件(nginx.pid)
–lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
–user= 指定程序运行时的非特权用户
–group= 指定程序运行时的非特权用户组
–builddir= 指向编译目录
–with-rtsig_mole 启用rtsig模块支持(实时信号)
–with-select_mole 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:–without-select_mole
–with-poll_mole 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
–with-file-aio 启用file aio支持(一种APL文件传输格式)
–with-ipv6 启用ipv6支持
–with-http_ssl_mole 启用ngx_http_ssl_mole支持(使支持https请求,需已安装openssl)
–with-http_realip_mole 启用ngx_http_realip_mole支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
–with-http_addition_mole 启用ngx_http_addition_mole支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
–with-http_xslt_mole 启用ngx_http_xslt_mole支持(过滤转换XML请求)
–with-http_image_filter_mole 启用ngx_http_image_filter_mole支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
–with-http_geoip_mole 启用ngx_http_geoip_mole支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_mole变量)
–with-http_sub_mole 启用ngx_http_sub_mole支持(允许用一些其他文本替换nginx响应中的一些文本)
–with-http_dav_mole 启用ngx_http_dav_mole支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启
–with-http_flv_mole 启用ngx_http_flv_mole支持(提供寻求内存使用基于时间的偏移量文件)
–with-http_gzip_static_mole 启用ngx_http_gzip_static_mole支持(在线实时压缩输出数据流)
–with-http_random_index_mole 启用ngx_http_random_index_mole支持(从目录中随机挑选一个目录索引)
–with-http_secure_link_mole 启用ngx_http_secure_link_mole支持(计算和检查要求所需的安全链接网址)
–with-http_degradation_mole 启用ngx_http_degradation_mole支持(允许在内存不足的情况下返回204或444码)
–with-http_stub_status_mole 启用ngx_http_stub_status_mole支持(获取nginx自上次启动以来的工作状态)
–without-http_charset_mole 禁用ngx_http_charset_mole支持(重新编码web页面,但只能是一个方向–服务器端到客户端,并且只有一个字节的编码可以被重新编码)
–without-http_gzip_mole 禁用ngx_http_gzip_mole支持(该模块同-with-http_gzip_static_mole功能一样)
–without-http_ssi_mole 禁用ngx_http_ssi_mole支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的)
–without-http_userid_mole 禁用ngx_http_userid_mole支持(该模块用来处理用来确定客户端后续请求的cookies)
–without-http_access_mole 禁用ngx_http_access_mole支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址)
–without-http_auth_basic_mole禁用ngx_http_auth_basic_mole(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容)
–without-http_autoindex_mole 禁用disable ngx_http_autoindex_mole支持(该模块用于自动生成目录列表,只在ngx_http_index_mole模块未找到索引文件时发出请求。)
–without-http_geo_mole 禁用ngx_http_geo_mole支持(创建一些变量,其值依赖于客户端的IP地址)
–without-http_map_mole 禁用ngx_http_map_mole支持(使用任意的键/值对设置配置变量)
–without-http_split_clients_mole 禁用ngx_http_split_clients_mole支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等)
–without-http_referer_mole 禁用disable ngx_http_referer_mole支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求)
–without-http_rewrite_mole 禁用ngx_http_rewrite_mole支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。)
–without-http_proxy_mole 禁用ngx_http_proxy_mole支持(有关代理服务器
–without-http_fastcgi_mole 禁用ngx_http_fastcgi_mole支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。 )FastCGI一个常驻型的公共网关接口。
–without-http_uwsgi_mole 禁用ngx_http_uwsgi_mole支持(该模块用来医用uwsgi协议,uWSGI服务器相关)
–without-http_scgi_mole 禁用ngx_http_scgi_mole支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计 更容易实现。)
–without-http_memcached_mole 禁用ngx_http_memcached_mole支持(该模块用来提供简单的缓存,以提高系统效率)
-without-http_limit_zone_mole 禁用ngx_http_limit_zone_mole支持(该模块可以针对条件,进行会话的并发连接数控制)
–without-http_limit_req_mole 禁用ngx_http_limit_req_mole支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件)
–without-http_empty_gif_mole 禁用ngx_http_empty_gif_mole支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)
–without-http_browser_mole 禁用ngx_http_browser_mole支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如 果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1)
–without-http_upstream_ip_hash_mole 禁用ngx_http_upstream_ip_hash_mole支持(该模块用于简单的负载均衡)
–with-http_perl_mole 启用ngx_http_perl_mole支持(该模块使nginx可以直接使用perl或通过ssi调用perl)
–with-perl_moles_path= 设定perl模块路径
–with-perl= 设定perl库文件路径
–http-log-path= 设定access log路径
–http-client-body-temp-path= 设定http客户端请求临时文件路径
–http-proxy-temp-path= 设定http代理临时文件路径
–http-fastcgi-temp-path= 设定http fastcgi临时文件路径
–http-uwsgi-temp-path= 设定http uwsgi临时文件路径
–http-scgi-temp-path= 设定http scgi临时文件路径
-without-http 禁用http server功能
–without-http-cache 禁用http cache功能
–with-mail 启用POP3/IMAP4/SMTP代理模块支持
–with-mail_ssl_mole 启用ngx_mail_ssl_mole支持
–without-mail_pop3_mole 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)
–without-mail_imap_mole 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)
–without-mail_smtp_mole 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)
–with-google_perftools_mole 启用ngx_google_perftools_mole支持(调试用,剖析程序性能瓶颈)
–with-cpp_test_mole 启用ngx_cpp_test_mole支持
–add-mole= 启用外部模块支持
–with-cc= 指向C编译器路径
–with-cpp= 指向C预处理路径
–with-cc-opt= 设置C编译器参数(PCRE库,需要指定–with-cc-opt=”-I /usr/local/include”,如果使用select()函数则需要同时增加文件描述符数量,可以通过–with-cc- opt=”-D FD_SETSIZE=2048”指定。)
–with-ld-opt= 设置连接文件参数。(PCRE库,需要指定–with-ld-opt=”-L /usr/local/lib”。)
–with-cpu-opt= 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
–without-pcre 禁用pcre库
–with-pcre 启用pcre库
–with-pcre= 指向pcre库文件目录
–with-pcre-opt= 在编译时为pcre库设置附加参数
–with-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护)
–with-md5-opt= 在编译时为md5库设置附加参数
–with-md5-asm 使用md5汇编源
–with-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名)
–with-sha1-opt= 在编译时为sha1库设置附加参数
–with-sha1-asm 使用sha1汇编源
–with-zlib= 指向zlib库目录
–with-zlib-opt= 在编译时为zlib设置附加参数
–with-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium, pentiumpro
–with-libatomic 为原子内存的更新操作的实现提供一个架构
–with-libatomic= 指向libatomic_ops安装目录
–with-openssl= 指向openssl安装目录
–with-openssl-opt 在编译时为openssl设置附加参数
–with-debug 启用debug日志

Ⅳ nginx怎样编译filter模块

使用nginx的反向代理功能搭建nuget镜像服务器时,需要针对官方nuget服务器的响应内容进行字符串替换,比如将www.nuget.org替换为镜像服务器的主机名,将https://替换为http://。而nginx没有内置这个功能,需要使用第三方mole,比如subs_filter。
在nginx中配置mole,不像apache那么简单(复制mole文件,修改配置文件),需要将mole的源码引入nginx的源码,自己编译nginx并安装。

Ⅳ centos7怎么编译安装nginx

安装环境为:最小化安装的centos7,关闭seliunx。
最小化安装centos:
关闭selinux
sed –i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

开始安装nginx1.7.8
创建群组
groupadd www
创建一个用户,不允许登陆和不创主目录
useradd -s /sbin/nologin -g www -M www
#下载最新版nginx
wget -C http://nginx.org/download/nginx-1.7.8.tar.gz
tar zxvf nginx-1.7.8.tar.gz
#编译基本能运行的nginx
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_mole --with-http_ssl_mole --with-http_gzip_static_mole
make
make install

如果有错误提示:
./configure: error: C compiler cc is not found
解决方法:
yum install gcc gcc-c++

如果有错误提示:
./configure: error: the HTTP rewrite mole requires the PCRE library.
You can either disable the mole by using –without-http_rewrite_mole
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using –with-pcre=<path> option.
解决方法:
yum install pcre-devel

如果有错误提示:
./configure: error: SSL moles require the OpenSSL library.
You can either do not enable the moles, 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.
解决方法:
yum install openssl-devel

以上错误提示依次解决后:再一次的运行
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_mole --with-http_ssl_mole --with-http_gzip_static_mole
make
meke install

编译参数解释:
#指定运行权限的用户
--user=www
#指定运行的权限用户组
--group=www
#指定安装路径
--prefix=/usr/local/nginx
#支持nginx状态查询
--with-http_stub_status_mole
#开启ssl支持
--with-http_ssl_mole
#开启GZIP功能
--with-http_gzip_static_mole

因此要顺利的通过nginx编译安装必须安装的依赖关系有:
yum install gc gcc gcc-c++ pcre-devel zlib-devel openssl-devel

2、在 centos7 中为nginx的启动、重启、重载配置添加脚本
nginx直接启动的方法:
/usr/local/nginx/sbin/nginx

但是不是很方便,因此使用下面的脚本来控制nginx的启动关闭重载更加合理一些。
编辑文件:vim /usr/lib/systemd/system/nginx.service 添加下面的脚本,注意路径 !
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl的一些使用方法:
systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable xxx.service #开机运行服务
systemctl disable xxx.service #取消开机运行
systemctl start xxx.service #启动服务
systemctl stop xxx.service #停止服务
systemctl restart xxx.service #重启服务
systemctl reload xxx.service #重新加载服务配置文件
systemctl status xxx.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

因此,添加上面脚本后,centos7 中操作nginx的方法有
systemctl is-enabled nginx.service #查询nginx是否开机启动
systemctl enable nginx.service #开机运行nginx
systemctl disable nginx.service #取消开机运行nginx
systemctl start nginx.service #启动nginx
systemctl stop nginx.service #停止nginx
systemctl restart nginx.service #重启nginx
systemctl reload nginx.service #重新加载nginx配置文件
systemctl status nginx.service #查询nginx运行状态
systemctl --failed #显示启动失败的服务

Ⅵ 如何编译windows nginx php

作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验。自我感觉良好。
这种方法并非以前所流行的apache 加 php_mole 的方式运行,我是采用nginx 作为web服务器,以fastcgi的方式运行php。
linux下编译:
nginx我还是习惯选择8.54的版本,它的编译依赖以下几个软件包,解压这些源码包,在configure中设置好这些源码的路径,nginx在编译的时候会自己将他们编译进去的:
pcre: 主要用于rewrite等模块
zlib:这个不用说了
openssl: 如果你还知道https这个东西,那么你懂的~~~(当然你可以不需要这个功能)
md5 /sha1: 这两者都是用于生成信息摘要的希哈算法,这俩个东西不是必须的,但是我发现如果不选择其中一个那么openssl是不会成功地编译进nginx的
下面是我自己写的一个安装脚本,有temp-path字样的编译选项所设置都是nginx在运行时产生的临时文件的路径,pid-path,lock-path也是临时文件路径,log-path是日志文件路径,我因为自己机子上一些权限的问题所以要设置一下.一般情况下其实这些是不必要的,nginx默认会统统把生成的这些文件放在自己的安装目录下.
tmp=/tmp/nginx
log=/home/jsck/log
pcre=~/Downloads/pcre-8.02
zlib=~/Downloads/zlib-1.2.5-src
openssl=~/Downloads/openssl-0.9.8q
md5=~/Downloads/md5-1.3.0
./configure --prefix=/usr/local/nginx \
--http-proxy-temp-path=${tmp}/nginx-proxy.tmp \
--http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \
--http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \
--http-scgi-temp-path=${tmp}/nginx-scgi.tmp \
--http-client-body-temp-path=${tmp}/nginx-client.tmp \
--pid-path=${tmp}/nginx.pid \
--lock-path=${tmp}/nginx.lock \
--http-log-path=${log}/http.log \
--error-log-path=${log}/http-error.log \
--with-pcre=$pcre \ #pcre 源码包的路径
--with-zlib=$zlib \ #zlib 源码包的路径
--with-http_ssl_mole \ #起用ssl支持
--with-openssl=$openssl #openssl 源码包路径
make
make install
php(5.2)的编译可以复杂点,也可以简单点,因为我们编译php时主要目的是编译它的脚本引擎和一些核心库,很多外围的东西不一定非要在编译php的时候加进去,可以在需要的时候将它们编译成扩展库再修改配置文件来加载它们。
我的编译代码如下:
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \#设置mysql的安装路径
--enable-fastcgi \ #开启fastcgi支持
--enable-debug #支持调试
make
make install
其实关于mysql的那一句都是可以不要的,只是我懒得再编译一次mysql扩展,所以就这样把它直接编译进php了,这样做的前提是你必须先安装mysql。
令外还有一些注意事项:编译php时必须确保系统中拥有libxml2与libxml2-dev这俩个软件包,因为php默认会将xml的功能编译进去,所以xml的支持是必不可少的。还有一个就是autoconf这条命令了,在编译扩展的时候,phpize会调用系统中的这个命令来生成扩展包的configure文件,没有它你就不能作扩展了,这一点也是要记住的,毕竟linux下的php不像windows版那样事先把所有的扩展都编译好了。
至于window下nginx,php的安装就没有什么难度了,下个zip包,解压就能用,只要稍微配置就可以了.
配置:
如果只是想让php能运行的话那么直接输入命令:
./php-cgi -b 3344
这样就开启了php的fastcgi进程了,-b参数是绑定该进程的侦听端口,随便找个没用的端口填就可以了,这里绑定的是3344.
然后在nginx的配置文件中加上这么几行:
location ~ \.php$ {
root /home/jsck/www; #这是你网站的根目录
fastcgi_pass127.0.0.1:3344; #这里指定了fastcgi进程侦听的端口,nginx就是通过这里与php交互的
fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
如果要改nginx的侦听端口的话找到"listen"这么一项,改就是了.运行nginx,在/home/jsck/www目录中写一个测试文件test.php:
<?php
phpinfo();
?>
访问http://localhost:8080/test.php,如果显示了php所以的配置信息,那么就基本没什么问题,已经可以用这个环境写些php代码了.
至于php的调试器我选择xdebug,不为什么,习惯所致。加载xdebug时,在配置文件中的写法根据系统的不同好像也有点不同。linux下是:zend_extension_debug=<path>,window中加载的dll有两种,一种文件名会带有ts的后缀,这种要这要样写:zend_extension_ts=<path>另外一种就这样:zend_extension=<path>,path一定要写绝对路径。虽然ts为何意我也不是很清楚,但是这些设置是一定不可以搞错的。
设置好后重新运行php-cgi,然后重新访问test.php,如果有xdebug的那一块出现了,那么就成功了.
当然这是一个很简单的配置,只能让你运行php,要想真正做成你需要的开发环境,还需要你根据自己的需要修改php和nginx的配置文件,这些配置内容很多,我自己也在学习中,就不好多讲了.
另外有一点需要注意,php的配置文件在它的源码包中有两个:php.ini-dist和php.ini-recommended,分别是针对生成环境和开发环境的配置.你需要把其中一个改名为php.ini.重启后查看phpinfo()的页面,靠上的地方有一项"Loaded Configuration File",它的值如果就是你的php.ini的路径,那么就没问题了,如果不是话,就看看上面一项"Configuration File (php.ini) Path",你把你的php.ini文件移到这个目录下在重启就可以了.因为php默认会在这个路径下寻找php.ini的.当然你也可以在运行php-cgi的时候设置你的php.ini路径,比如这样:
php-cgi -b 3344 -c /home/jsck/php.ini
这样就是把/home/jsck/php.ini这个文件作为配置文件了.
按钮!!

Ⅶ 如何源码编译安装nginx

安装前提
在安装nginx前,需要确保系统安装了g++、gcc
1.安装openssl软件
#
#进入安装目录
cd /usr/local/
#删除原有安装
rm -rf openssl
rm -rf openssl-1.0.2d
#解压
tar -zxv -f openssl-1.0.2d.tar.gz
#进入源码目录
cd openssl-1.0.2d
#配置
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/conf
#编译安装
make && make install
#检验安装
/usr/local/openssl/bin/openssl version -a
2.安装pcre软件
#进入安装目录
cd /usr/local/
#删除原有安装
rm -rf pcre
rm -rf pcre-8.37
#解压
tar -zxv -f pcre-8.37.tar.gz
#进入源码目录
cd pcre-8.37
#执行配置
./configure --prefix=/usr/local/pcre/
#编译安装
make && make install
3.安装zlib软件
#进入安装目录
cd /usr/local/
#删除原有安装
rm -rf zlib
rm -rf zlib-1.2.8
#解压
tar -zxv -f zlib-1.2.8.tar.gz
#进入源码目录
cd zlib-1.2.8
#配置
./configure --prefix=/usr/local/zlib/
# 编译安装
make && make install
4. 安装nginx软件
#----------------------------------------------------------------
# 安装前提: openssl、pcre、zlib
# 注意:
# 不使用自已安装的openssl的时候,要安装openssl-devel,否则编译不通过。
# yum install openssl-devel 此时参数可以不使用--with-open_ssl=/usr/local/openssl-1.0.1g
#----------------------------------------------------------------
#添加www用户和组
groupadd www
useradd -g www www
#创建网站根目录
mkdir -p /var/www/root/
chmod -R 775 /var/www/root/
#进入安装目录
cd /usr/local
#删除原有安装
rm -rf nginx
rm -rf nginx-1.8.0
#解压
tar -zxvf nginx-1.8.0.tar.gz
#进入安装目录
cd nginx-1.8.0
#配置(使用openssl、pcre、zlib的源码路径)
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_mole \
--with-openssl=/usr/local/openssl-1.0.2d \
--with-pcre=/usr/local/pcre-8.37 \
--with-zlib=/usr/local/zlib-1.2.8 \
--with-http_stub_status_mole \
--with-threads
#编译安装
make && make install
#验证
/usr/local/nginx/sbin/nginx -V

Ⅷ 如何在windows下编译nginx,并加上H.264的模块

编译的nginx可以根据自己的需求添加或删除一些模块,功能更强大linux中也可以通过rpm安装nginx,不过这种方式安装包通常较旧,更新没有源码更新的快
在windows中如果需要定制某些功能,也可以编译源码,只是一般用windows的人很少会编译源码

Ⅸ nginx编译安装需要哪些库

如果有网的情况,不用管这些。进入你的nginx文件夹,进行以下操作:
通常至少需要以下库:
pcre(正则) , gcc(C编译器) , net-tools(使用netstat命令)。
一般有了上述的库就能完成编译,如果还不行,运行
./configure --prefix=你希望安装到的目录
命令,最下方提示error少了什么库,你就 yum -y install 库名(错误的提示里面)就可以自动下载安装了。

阅读全文

与nginx编译教学入门相关的资料

热点内容
推荐算法创新点 浏览:17
汽油机压缩是什么 浏览:279
如何获得网站源码 浏览:822
搜索本机加密软件 浏览:209
三星迷你日记加密 浏览:818
优加密试卷五年级上册数学 浏览:932
社区购物app源码 浏览:123
程序员去北京完整视频 浏览:272
linuxscan 浏览:902
查看linux默认shell 浏览:151
百鸡问题java 浏览:714
通信信号调制识别原理与算法源码 浏览:721
e72手机安装什么app 浏览:177
程序员cv岗 浏览:257
ps下载解压后怎么找安装包 浏览:120
运动手环软件如何扫码下载安卓 浏览:468
程序员前期报道 浏览:155
游戏主文件夹是什么意思 浏览:800
极光电商app是什么软件 浏览:70
php调用html5 浏览:501