天天看点

nginx学习(一):基本安装

转载自http://summervast.blog.51cto.com/690507/385511 

注意:可能因版本不同,个别指令不起作用,需要注意版本灵活安装,我在安装时也遇到过此问题 

开始学习nginx,初步安装nginx,先熟悉一下;参考网上的资料和涨宴老师书籍。

<a href="http://nginx.org/en/download.html" target="_blank">http://nginx.org/en/download.html</a>

下载需要的版本,0.7版本的是稳定版本,0.8的是开发版本,看个人所好,我用的是nginx-0.8.48;

一、安装

1、检查安装nginx的依赖性,nginx的模块需要第三方库的支持,检查是否安装下列库:

zlib、zlib-devel、openssl、openssl-devel、prce、prce-devel

[root@mgmserver ~]# rpm -qa |grep zlib

zlib-devel-1.2.3-3

zlib-1.2.3-3

[root@mgmserver tar_packet]# rpm -qa |grep openssl

openssl-0.9.8e-12.el5

openssl-devel-0.9.8e-12.el5

[root@mgmserver tar_packet]# rpm -qa |grep pcre

pcre-6.6-2.el5_1.7

pcre-devel-6.6-2.el5_1.7

[root@mgmserver tar_packet]# rpm -qa |grep gcc

compat-libgcc-296-2.96-138

compat-gcc-34-g77-3.4.6-4

gcc-c++-4.1.2-46.el5

libgcc-4.1.2-46.el5

compat-gcc-34-3.4.6-4

compat-gcc-34-c++-3.4.6-4

gcc-java-4.1.2-46.el5

gcc-4.1.2-46.el5

gccp-gfortran-4.1.2-46.el5

[root@mgmserver tar_packet]# rpm -qa |grep autoconf

autoconf-2.59-12

[root@mgmserver tar_packet]# rpm -qa |grep automake

automake-1.9.6-2.1

automake16-1.6.3-8

automake15-1.5-16

automake17-1.7.9-7

automake14-1.4p6-13

2、添加nginx使用的用户和组 ,

[root@mgmserver ~]# groupadd nginx                   #nginx使用的组;

[root@mgmserver ~]# useradd -g nginx nginx      #nginx使用用户;

3、安装

[root@mgmserver ~]# cd /home/tar_packet/

[root@mgmserver tar_packet]# tar -zxvf nginx-0.8.48.tar.gz -C /home/install_packet/

[root@mgmserver tar_packet]# cd ../install_packet/

[root@mgmserver install_packet]# cd nginx-0.8.48/

[root@mgmserver nginx-0.8.48]# ls

auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  README  src

[root@mgmserver nginx-0.8.48]# ./configure --prefix=/usr/local/nginx \

&gt; --user=nginx \

&gt; --group=nginx \

&gt; --with-http_stub_status_module \     #启用“server status"页

&gt; --with-http_ssl_module                       #开启http ssl模块,使nginx可以支持https请求,这个模块需要已经

                                                                         安装openssl       

checking for OS

 + Linux 2.6.18-164.el5 i686

checking for C compiler ... found

checking for gcc builtin atomic operations ... not found

checking for C99 variadic macros ... found

checking for gcc variadic macros ... found

checking for unistd.h ... found

checking for inttypes.h ... found

checking for limits.h ... found

checking for sys/filio.h ... not found

checking for sys/param.h ... found

checking for sys/mount.h ... found

checking for sys/statvfs.h ... found

checking for crypt.h ... found

checking for Linux specific features

checking for epoll ... found

checking for sendfile() ... found

checking for sendfile64() ... found

checking for sys/prctl.h ... found

checking for prctl(PR_SET_DUMPABLE) ... found

checking for sched_setaffinity() ... found

checking for crypt_r() ... found

checking for sys/vfs.h ... found

checking for poll() ... found

checking for /dev/poll ... not found

checking for kqueue ... not found

checking for crypt() ... not found

checking for crypt() in libcrypt ... found

checking for F_READAHEAD ... not found

checking for posix_fadvise() ... found

checking for O_DIRECT ... found

checking for F_NOCACHE ... not found

checking for directio() ... not found

checking for statfs() ... found

checking for statvfs() ... found

checking for dlopen() ... not found

checking for dlopen() in libdl ... found

checking for sched_yield() ... found

checking for SO_SETFIB ... not found

checking for PCRE library ... found

checking for OpenSSL library ... found

checking for zlib library ... found

creating objs/Makefile

checking for int size ... 4 bytes

checking for long size ... 4 bytes

checking for long long size ... 8 bytes

checking for void * size ... 4 bytes

checking for uint64_t ... found

checking for sig_atomic_t ... found

checking for sig_atomic_t size ... 4 bytes

checking for socklen_t ... found

checking for in_addr_t ... found

checking for in_port_t ... found

checking for rlim_t ... found

checking for uintptr_t ... uintptr_t found

checking for system endianess ... little endianess

checking for size_t size ... 4 bytes

checking for off_t size ... 8 bytes

checking for time_t size ... 4 bytes

checking for setproctitle() ... not found

checking for pread() ... found

checking for pwrite() ... found

checking for strerror_r() ... found but is not working

checking for gnu style strerror_r() ... found

checking for sys_errlist[] ... found

checking for localtime_r() ... found

checking for posix_memalign() ... found

checking for memalign() ... found

checking for mmap(MAP_ANON|MAP_SHARED) ... found

checking for mmap("/dev/zero", MAP_SHARED) ... found

checking for System V shared memory ... found

checking for struct msghdr.msg_control ... found

checking for ioctl(FIONBIO) ... found

checking for struct tm.tm_gmtoff ... found

checking for struct dirent.d_namlen ... not found

checking for struct dirent.d_type ... found

Configuration summary

  + using system PCRE library

  + using system OpenSSL library

  + md5: using OpenSSL library

  + sha1 library is not used

  + using system zlib library

  nginx path prefix: "/usr/local/nginx"

  nginx binary file: "/usr/local/nginx/sbin/nginx"

  nginx configuration prefix: "/usr/local/nginx/conf"

  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"

  nginx pid file: "/usr/local/nginx/logs/nginx.pid"

  nginx error log file: "/usr/local/nginx/logs/error.log"

  nginx http access log file: "/usr/local/nginx/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"

[root@mgmserver nginx-0.8.48]#make

[root@mgmserver nginx-0.8.48]#make install

二、启动nginx

[root@mgmserver nginx]# /usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf

参数"-c"指定了配置文件的路径,如果不加'-c"参数, nginx,会默认加载其安装目录中conf子目录中的nginx.conf文件。

<a href="http://img1.51cto.com/attachment/201008/143045884.png" target="_blank"></a>

nginx学习(一):基本安装
nginx学习(一):基本安装

[root@mgmserver nginx-0.8.48]# ps -ef |grep nginx

nginx学习(一):基本安装

可以看到一个主nginx的进程信息,一个子进程;如果在安装过程指定了“-pid-path=&lt;path&gt;那么该文件就指定了nginx的主进程号,如果没有指定pid文件的存放路径,nginx.pid默认存放在nginx安装目录的logs子目录下,

[root@mgmserver logs]# ls

access.log  error.log  nginx.pid

[root@mgmserver logs]# cat nginx.pid

6019

三、nginx的信号控制

◆ TERM,INT 快速关闭

◆ QUIT 从容关闭

◆ HUP 平滑重启,重新加载配置文件

◆ USR1 重新打开日志文件,在切割日志时用途较大;

◆ USR2 平滑升级可执行程序

◆ WINCH 从容关闭工作进程

我们可以直接通过以下命令来完成平滑重启,省下寻找nginx主进程号的步骤;

kill   -"信号类型”    ‘/usr/local/nginx/logs/nginx.pid'或者nginx的主进程号

(1)、从容停止nginx

[root@mgmserver ~]# kill -QUIT 6019       #nginx主进程号

[root@mgmserver logs]# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

(2)、快速停止nginx

[root@mgmserver logs]# kill -TERM /INT   nginx主进程号

 [root@mgmserver logs]# kill -TERM /INT   `cat /usr/local/nginx/logs/nginx.pid

(3)、强制停止所有的nginx进程

#pkill   -9 nginx

(4)、平滑重启nginx

修改了nginx的配置文件要重启nginx;重启之前要检查配置文件是否正确:

[root@mgmserver html]# /usr/local/nginx/sbin/nginx -t -c  /usr/local/nginx/conf/nginx.conf

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@mgmserver conf]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

注意符号;

nginx的平滑重启

kill     -HUP Nginx主进程号

或者

kill     -HUP        ·nginx.pid文件按存放路径·

若转载请注明出处!若有疑问,请回复交流!

继续阅读