nginx版本 :nginx-1.18.0

操作实施环境 : Ubuntu 16.04.6 LTS

                        SUSE Linux Enterprise Server 12 SP4  (x86_64)

   注:因为是源码安装,操作系统事先安装好gcc编译环境和所需的库,如果可以联网可执行下面命令安装

apt-get install build-essential libtool gcc automake autoconf make

    若是无网环境,可另外下载安装包上传安装 

一、安装包准备

      下载nginx-1.18.0.tar.gz  http://nginx.org/en/download.html

二、安装

        此次nginx的上传目录为 /opt/

1.解压nginx-1.18.0.tar.gz

tar zxvf nginx-1.18.0.tar.gz

2. 进入到刚解压的目录

linux:/opt # cd nginx-1.18.0/
linux:/opt/nginx-1.18.0 # pwd
/opt/nginx-1.18.0
linux:/opt/nginx-1.18.0 # ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src

3.编译

./configure --prefix=/usr/local/nginx
make
make install

4.nginx 服务注册

groupadd nginx   //新增用户组
useradd nginx -g nginx -s /sbin/nologin  //新增nginx启动用户

增加 /etc/systemd/system/nginx.service文件,文件内容如下

[Unit]
Description=nginx - high performance web server
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=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

User=nginx
Group=nginx

[Install]
WantedBy=multi-user.target

 5.nginx服务端口更改

  nginx默认端口为80,只用root用户才能使用1024以下端口,现在nginx启动用户为nginx,所以需要更改端口值大于1024

vi /usr/local/nginx/conf/nginx.conf

6.nginx目录所属用户更改

chown -R nginx:nginx /usr/local/nginx

 

7.启动服务

systemctl start nginx

用浏览器访问 http://IP:端口  ,例如我的IP是192.168.101.126  端口值为  8054  则为http://192.168.101.126:8054如果出现以下页面则安装成功

 三、可能遇到的问题

1.执行./configure --prefix=/usr/lcoal/nginx 后出现下图错误     

 是因为nginx依赖 pcre,此时需要安装pcre

pcre安装包下载 :https://ftp.pcre.org/pub/pcre/

tar -zxvf pcre-8.40.tar.gz
cd pcre-8.40.tar.gz
./configure
make && make install

2.服务启动失败

打开系统日志查看具体出错信息

tail -n 500 /var/log/message  或者  /var/log/syslog   不同操作系统  系统日志文件略有差异  

从错误信息看出是缺少libpcre.so.0 ,执行以下命令查看它到底是从什么位置查找libpcre.so.0

linux:/usr/local # ldd $(which /usr/local/nginx/sbin/nginx)
	linux-vdso.so.1 (0x00007ffd61bf9000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f64d1b21000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f64d1904000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f64d16c9000)
	libpcre.so.0 => not found
	libz.so.1 => /lib64/libz.so.1 (0x00007f64d14b2000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f64d110d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f64d1d25000)

从输出信息中可以看出它是从 /lib64/ 目录下查找文件,此时我们就需要在系统中找到libpcre.so.0的实际位置并做一个软件到/lib64/目录,libpcre.so.0的位置一般为 /usr/lcoal/lib/libpcre.so.0

ln -s /usr/local/lib/libpcre.so.0  /lib64/libpcre.so.0

 

Logo

更多推荐