在Linux中安装Nginx-1.10.1

  Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。现在项目需要搭载集群服务器,故采用Nginx反向代理负载均衡来实现。安装环境CentOS 7.2,安装Nginx版本1.10.1。

准备工作

1、安装必备工具:

$ yum -y install gcc gcc-c++ autoconf automake
$ yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

说明:
pcre: 用来作地址重写的功能。
zlib:nginx 的gzip模块,传输数据打包,省流量(但消耗资源)。
openssl:提供ssl加密协议。

2、新建一个系统级用户组和匿名用户,以及下面编译时使用。

$ sudo groupadd -r nginx
$ sudo useradd -s /sbin/nologin -g nginx -r nginx-user

下载&解压&编译安装

1、下载Nginx,下载最新版本查看链接:http://nginx.org/en/download.html

$ cd /usr/local
$ wget -c http://nginx.org/download/nginx-1.10.1.tar.gz

2、解压

$ tar -zxvf nginx-1.9.2.tar.gz

3、编译

$ cd nginx-1.9.2/

$ ./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_spdy_module \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

其中 --with-http_spdy_module \在1.10.1版本中可能不需要。
上面的参数的作用可以通过--help来查看。

$ ./configure --help

编译日志:

checking for OS

  • Linux 3.10.0-229.4.2.el7.x86_64 x86_64
    checking for C compiler … found
  • using GNU C compiler
  • gcc version: 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
    checking for gcc -pipe switch … found
    checking for gcc builtin atomic operations … 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 EPOLLRDHUP … found
    checking for O_PATH … 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 SO_REUSEPORT … found
    checking for SO_ACCEPTFILTER … not found
    checking for TCP_DEFER_ACCEPT … found
    checking for TCP_KEEPIDLE … found
    checking for TCP_FASTOPEN … not found
    checking for TCP_INFO … found
    checking for accept4() … found
    checking for eventfd() … found
    checking for int size … 4 bytes
    checking for long size … 8 bytes
    checking for long long size … 8 bytes
    checking for void * size … 8 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 byte ordering … little endian
    checking for size_t size … 8 bytes
    checking for off_t size … 8 bytes
    checking for time_t size … 8 bytes
    checking for setproctitle() … not found
    checking for pread() … found
    checking for pwrite() … found
    checking for sys_nerr … 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 POSIX semaphores … not found
    checking for POSIX semaphores in libpthread … 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
    checking for sysconf(_SC_NPROCESSORS_ONLN) … found
    checking for openat(), fstatat() … found
    checking for getaddrinfo() … found
    checking for PCRE library … found
    checking for PCRE JIT support … found
    checking for OpenSSL library … found
    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”
nginx binary file: “/usr/sbin/nginx”
nginx configuration prefix: “/etc/nginx”
nginx configuration file: “/etc/nginx/nginx.conf”
nginx pid file: “/var/run/nginx/nginx.pid”
nginx error log file: “/var/log/nginx/error.log”
nginx http access log file: “/var/log/nginx/http.log”
nginx http client request body temporary files: “/var/tmp/nginx/client”
nginx http proxy temporary files: “/var/tmp/nginx/proxy”
nginx http fastcgi temporary files: “/var/tmp/nginx/fcgi”
nginx http uwsgi temporary files: “uwsgi_temp”
nginx http scgi temporary files: “scgi_temp”

4、安装

$ make && make install

5、启动

$ nginx -c /etc/nginx/nginx.conf

如果提示缺什么包,直接用yum安装

$ yum install xxxxx

如果提示:

nginx: [emerg] mkdir() “/var/tmp/nginx/client_temp” failed (2: No such file or directory)

则用管理员去mkdir 创建文件夹后再启动。

$ mkdir -p /var/tmp/nginx/client_temp

相关指令

1、查看Nginx的安装目录:

$ whereis nginx

2、检查配置文件是否正确:

$ cd /etc/nginx
$ nginx -t

3、启动:

$ nginx -c /etc/nginx/nginx.conf

4、重启:

$ cd /etc/nginx
$ nginx -s reload

5、停止服务器:

$ ps -ef | grep nginx
$kill -9 [pid] [pid2]

停止服务器

常见问题

如果安装Nginx前的准备工作没有新建系统级用户组和匿名用户,启动Nginx时会出现如下情况:

nginx: [emerg] getpwnam(“nginx”) failed

解决方法:

$useradd -r -M nginx

解决方法其他参考链接:

文章目录
  1. 1. 准备工作
  2. 2. 下载&解压&编译安装
  3. 3. 相关指令
  4. 4. 常见问题