linux下安装nginx与配置
linux系统为Centos 64位
准备目录
[root@instance-3lm099to ~]# mkdir /usr/local/nginx
[root@instance-3lm099to ~]# cd /usr/local/nginx/
下载
从http://nginx.org/download/上下载相应的版本(或者wget http://nginx.org/download/nginx-1.5.9.tar.gz直接在Linux上用命令下载)
解压
解压 tar -zxvf nginx-1.5.9.tar.gz
解压好后移至目录
[root@instance-3lm099to nginx]# cd nginx-1.5.9/
设置Nginx安装路径,如果没有指定,默认为/usr/local/nginx
[root@instance-3lm099to nginx-1.14.0]# ./configure --prefix=/usr/local/nginx checking for OS + Linux 3.10.0-862.3.2.el7.x86_64 x86_64 checking for C compiler ... not found
如果出现红色字体错误,需要执行下
[root@instance-3lm099to nginx-1.14.0]# yum -y install gcc gcc-c++ autoconf automake make
再次执行
[root@instance-3lm099to nginx-1.14.0]# ./configure --prefix=/usr/local/nginx
可能会出现这个错误
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module 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.
如果出现了,就执行下这个
[root@instance-3lm099to nginx-1.14.0]# yum -y install openssl openssl-devel
再次执行
[root@instance-3lm099to nginx-1.14.0]# ./configure --prefix=/usr/local/nginx checking for OS + Linux 3.10.0-862.3.2.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) checking for gcc -pipe switch ... found checking for -Wl,-E switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found checking for gcc builtin 64 bit byteswap ... 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 sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found checking for openat(), fstatat() ... found checking for getaddrinfo() ... found checking for PCRE library ... found checking for PCRE JIT support ... found checking for zlib library ... found creating objs/Makefile Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" 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"
编译
make (make的过程是把各种语言写的源码文件,变成可执行文件和各种库文件)
[root@instance-3lm099to nginx-1.14.0]# make make -f objs/Makefile make[1]: Entering directory `/usr/local/nginx/nginx-1.14.0' cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/nginx.o \ src/core/nginx.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_log.o \ src/core/ngx_log.c -o objs/src/http/modules/ngx_http_upstream_keepalive_module.o \ src/http/modules/ngx_http_upstream_keepalive_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_zone_module.o \ src/http/modules/ngx_http_upstream_zone_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/ngx_modules.o \ objs/ngx_modules.c cc -o objs/nginx \ objs/src/core/nginx.o \ objs/src/core/ngx_log.o \ objs/src/core/ngx_palloc.o \ objs/src/core/ngx_array.o \ objs/src/core/ngx_list.o \ objs/src/core/ngx_hash.o \ objs/src/core/ngx_buf.o \ objs/src/core/ngx_queue.o \ objs/src/core/ngx_output_chain.o \ objs/src/core/ngx_string.o \ objs/src/core/ngx_parse.o \ objs/src/core/ngx_parse_time.o \ objs/src/core/ngx_inet.o \ objs/src/core/ngx_file.o \ objs/src/http/modules/ngx_http_upstream_keepalive_module.o \ objs/src/http/modules/ngx_http_upstream_zone_module.o \ objs/ngx_modules.o \ -ldl -lpthread -lcrypt -lpcre -lz \ -Wl,-E sed -e "s|%%PREFIX%%|/usr/local/nginx|" \ -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \ < man/nginx.8 > objs/nginx.8 make[1]: Leaving directory `/usr/local/nginx/nginx-1.14.0'
安装
make install (make install是把这些编译出来的可执行文件和库文件复制到合适的地方)
[root@instance-3lm099to nginx-1.14.0]# make install make -f objs/Makefile install make[1]: Entering directory `/usr/local/nginx/nginx-1.14.0' test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx' test -d '/usr/local/nginx/sbin' \ || mkdir -p '/usr/local/nginx/sbin' test ! -f '/usr/local/nginx/sbin/nginx' \ || mv '/usr/local/nginx/sbin/nginx' \ '/usr/local/nginx/sbin/nginx.old' cp objs/nginx '/usr/local/nginx/sbin/nginx' test -d '/usr/local/nginx/conf' \ || mkdir -p '/usr/local/nginx/conf' cp conf/koi-win '/usr/local/nginx/conf' cp conf/koi-utf '/usr/local/nginx/conf' cp conf/win-utf '/usr/local/nginx/conf' test -f '/usr/local/nginx/conf/mime.types' \ || cp conf/mime.types '/usr/local/nginx/conf' cp conf/mime.types '/usr/local/nginx/conf/mime.types.default' test -f '/usr/local/nginx/conf/fastcgi_params' \ || cp conf/fastcgi_params '/usr/local/nginx/conf' cp conf/fastcgi_params \ '/usr/local/nginx/conf/fastcgi_params.default' test -f '/usr/local/nginx/conf/fastcgi.conf' \ || cp conf/fastcgi.conf '/usr/local/nginx/conf' cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default' test -f '/usr/local/nginx/conf/uwsgi_params' \ || cp conf/uwsgi_params '/usr/local/nginx/conf' cp conf/uwsgi_params \ '/usr/local/nginx/conf/uwsgi_params.default' test -f '/usr/local/nginx/conf/scgi_params' \ || cp conf/scgi_params '/usr/local/nginx/conf' cp conf/scgi_params \ '/usr/local/nginx/conf/scgi_params.default' test -f '/usr/local/nginx/conf/nginx.conf' \ || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf' cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/html' \ || cp -R html '/usr/local/nginx' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' make[1]: Leaving directory `/usr/local/nginx/nginx-1.14.0'
启动
参数 -c 指定了配置文件的路径,如果不加的话就是使用默认的配置文件
[root@instance-3lm099to nginx-1.14.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
停止
停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的
查询nginx主进程号
ps -ef | grep nginx
发送信号
从容停止Nginx
kill -QUIT 主进程号
快速停止Nginx
kill -TERM 主进程号
强制停止Nginx
pkill -9 nginx
另外, 若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文 件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
kill -信号类型 '/usr/nginx/logs/nginx.pid'
平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx 发送信号,平滑重启。平滑重启命令:
kill -HUP 主进程号或进程号文件路径
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。
判断Nginx配置是否正确命令
nginx -t -c /usr/nginx/conf/nginx.conf或者
/usr/nginx/sbin/nginx -t
如下图:
访问
在浏览器中输入IP:端口号(默认80),出现如下图所示,说明安装成功。
加了中文注解的nginx.conf
1 user www www; 2 # 工作进程个数,可配置多个 3 worker_processes auto; 4 5 error_log /data/wwwlogs/error_nginx.log crit; 6 pid /var/run/nginx.pid; 7 worker_rlimit_nofile 51200; 8 9 events { 10 use epoll; 11 # 单个进程最大连接数 12 worker_connections 51200; 13 multi_accept on; 14 } 15 16 http { 17 include mime.types; 18 default_type application/octet-stream; 19 server_names_hash_bucket_size 128; 20 client_header_buffer_size 32k; 21 large_client_header_buffers 4 32k; 22 client_max_body_size 1024m; 23 client_body_buffer_size 10m; 24 sendfile on; 25 tcp_nopush on; 26 keepalive_timeout 120; 27 server_tokens off; 28 tcp_nodelay on; 29 30 fastcgi_connect_timeout 300; 31 fastcgi_send_timeout 300; 32 fastcgi_read_timeout 300; 33 fastcgi_buffer_size 64k; 34 fastcgi_buffers 4 64k; 35 fastcgi_busy_buffers_size 128k; 36 fastcgi_temp_file_write_size 128k; 37 fastcgi_intercept_errors on; 38 39 #Gzip Compression 40 gzip on; 41 gzip_buffers 16 8k; 42 gzip_comp_level 6; 43 gzip_http_version 1.1; 44 gzip_min_length 256; 45 gzip_proxied any; 46 gzip_vary on; 47 gzip_types 48 text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml 49 text/javascript application/javascript application/x-javascript 50 text/x-json application/json application/x-web-app-manifest+json 51 text/css text/plain text/x-component 52 font/opentype application/x-font-ttf application/vnd.ms-fontobject 53 image/x-icon; 54 gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 55 56 #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency. 57 open_file_cache max=1000 inactive=20s; 58 open_file_cache_valid 30s; 59 open_file_cache_min_uses 2; 60 open_file_cache_errors on; 61 62 ######################## default ############################ 63 # 服务器集群名称 和下面的location地址对应 64 upstream myServer { 65 # weigth参数表示权值,权值越高被分配到的几率越大 66 # server 127.0.0.1:8080 weight=1; 67 # server 127.0.0.1:8060 weight=1; 68 server 47.93.10.184:8080; 69 server 47.93.10.184:8081; 70 71 } 72 73 # 每一个server相当于一个代理服务器 74 server { 75 # 监听端口,默认80 76 listen 8848; 77 # 当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost) www.kolbe.cn,如果想局域网访问 需要改成当前的ip 78 server_name localhost; 79 #server_name _; 80 access_log /data/wwwlogs/access_nginx.log combined; 81 root /data/wwwroot/default; 82 # 当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔 83 index index.html index.htm index.php; 84 # 表示匹配的路径,这时配置了/表示所有请求都被匹配到这里 85 location / { 86 # 请求转向自定义的服务器列表 87 proxy_pass http://myServer; 88 } 89 location /nginx_status { 90 stub_status on; 91 access_log off; 92 allow 127.0.0.1; 93 deny all; 94 } 95 location ~ [^/]\.php(/|$) { 96 #fastcgi_pass remote_php_ip:9000; 97 fastcgi_pass unix:/dev/shm/php-cgi.sock; 98 fastcgi_index index.php; 99 include fastcgi.conf; 100 } 101 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { 102 expires 30d; 103 access_log off; 104 } 105 location ~ .*\.(js|css)?$ { 106 expires 7d; 107 access_log off; 108 } 109 location ~ /\.ht { 110 deny all; 111 } 112 } 113 114 ########################## vhost ############################# 115 include vhost/*.conf; 116 }
如果nginx无法访问 需要做如下操作
查看Linux服务是否启动。
ps -ef | grep nginx
解决办法:
1,添加 80 段端口配置
firewall-cmd --zone=public --add-port=80/tcp --permanent
2,重启防火墙
systemctl restart firewalld.service