linux下nginx安装
环境:CentOS Linux release 7.4.1708
安装必要的支持库:
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
安装pcre支持
cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz tar -zxvf pcre-8.42.tar.gz cd pcre-8.42/ ./configure make && make install
安装zlib
cd /usr/local/src wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz?download tar -zxvf zlib-1.2.11.tar.gz?download cd zlib-1.2.11 ./configure make make install
安装openssl
cd /usr/local/src wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz tar -zxvf openssl-1.0.2o cd openssl-1.0.2o ./config make && make install
安装nginx
cd nginx目录里
./configure \
--user=www \
--group=www \
--prefix=/usr/local/webserver/nginx-1.14.2 \
--sbin-path=/usr/local/webserver/nginx-1.14.2/sbin/nginx \
--conf-path=/usr/local/webserver/nginx-1.14.2/nginx.conf \
--pid-path=/usr/local/webserver/nginx-1.14.2/nginx.pid \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--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=/usr/local/src/pcre-8.44 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.0.2o
make -j4
make install
安装可能出现的问题
src/os/unix/ngx_user.c: 在函数‘ngx_libc_crypt’中:
src/os/unix/ngx_user.c:36:7: 错误:‘struct crypt_data’没有名为‘current_salt’的成员
cd.current_salt[0] = ~salt[0];
A: 安装的nginx版本过低,由1.12.2去除,重新下载1.14.2后ok
查看nginx可运行状态:
/usr/local/nginx-1.13.11/sbin/nginx -t
mkdir -p /var/tmp/nginx/clientmkdir -p /var/tmp/nginx/client
启动nginx:
/usr/local/nginx-1.13.11/sbin/nginx
或者指定配置文件启动
/usr/local/webserver/nginx-1.14.2/sbin/nginx -c /usr/local/webserver/nginx-1.14.2/conf/nginx.conf
若nginx成功运行后,通过 curl 'http://localhost' 地址无法访问服务器 则可能是防火墙的问题 需要开放80端口或关闭防火墙
开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
重启防火墙
firewall-cmd --reload
或者永久关闭防火墙
systemctl stop firewalld.service //停止防火墙
systemctl disable firewalld.service //不再开机停止运行防火墙
参考地址:https://www.linuxidc.com/Linux/2016-08/134110.htm