本文在centos7.9下分别尝试了yum安装和手动安装,记录一下试验过程。为后来者少踩点坑。
下载
下载地址:链接 。建议下载稳定版本,也就是Stable Version,这里下载的是 nginx-1.24.0
# 我下载在如下文件夹
mkdir/opt/apps
cd /opt/apps
# 用wget下载
wget https://nginx.org/download/nginx-1.24.0.tar.gz
确认依赖库
需要以下依赖库
-
gcc
用以下命令确认是否已安装gcc:
gcc –-version
如果没有安装,用以下命令安装:
yum install gcc
-
PCRE
确认是否安装:
rpm -qa pcre
如果没有安装,请用如下指令安装:
yum install -y pcre pcre-devel
-
Zlib
确认:
rpm -qa zlib
安装:
yum install -y zlib zlib-devel
-
OpenSSL
确认:
openssl version
如果是1.1或以上就可以,如果不是则需要升级
SSL升级如下:
# 1.安装对应的依赖库 sudo yum install -y zlib yum install zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++# 2. 下载openssl安装文件 mkdir /tmp/sslbak cd /tmp/sslbak wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz --no-check-certificate# 3. 解压安装openssl,并进入openssl的目录 tar -zxvf openssl-1.1.1k.tar.gz cd openssl-1.1.1k# 设置输出为中文,可忽略 export LANG=zh_CN.UTF-8 export LANGUAGE=zh_CN.UTF-8# 编译和安装 ./config --prefix=/usr/local/openssl shared zlib sudo make && make install# 4. 备份当前openssl mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/include/openssl /usr/include/openssl.bak # 5. 配置使用新版本 ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl # 6. 更新动态链接库数据并重新加载 echo /usr/local/openssl/lib >> /etc/ld.so.conf ldconfig -v # 7. 查看是否升级成功 openssl version # 8. 如果缺少libssl.s0.1.1 ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
-
检查nginx是否已安装
find / -name "*nginx*"
继续安装nginx
-
首先,我们进入到下载的nginx文件的目录,执行解压命令,然后进入到该文件夹
cd /opt/apps tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0/
-
进行安装配置,可以参考如下语句
注意,如果上面升级了openssl,这里需要修改nginx对openssl的默认设置,否则make时会报错
# 进入如下目录 cd /opt/apps/nginx-1.24.0/auto/lib/openssl vim conf
去掉下图中的
/.openssl
回到nginx解压目录,运行如下命令,各参数意义请参考链接
./configure --prefix=/opt/nginx --with-openssl=/usr/local/openssl --with-http_ssl_module --with-http_gzip_static_module
注意,此处的—prefix安装路径不能和下载路径是一个路径。
可选设置,可以通过如下参数设置log位置
--error-log-path=/var/log/nginx/nginx.log --pid-path=/var/log/nginx/pid
如果不设置,log默认路径在安装路径下的logs文件夹下
-
编译和安装
make && make install
启动服务
进入安装目录
/opt/nginx/sbin
启动nginx
# 添加一个nginx用户,因为默认用户是nobody,这是为了安全性
useradd nginx -s /sbin/nologin -M
./nginx
开放端口
防火墙需要开启80端口
**# 开启80端口
firewall-cmd --add-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload**
加入系统菜单
nginx目录无法直接使用,每次还要到/opt/nginx的 sbin 目录,来启动ngin。我们通过如下方式加入系统菜单,这样就可以直接使用nginx命令了:
# 修改profile文件
vim /etc/profile# 在最后加上如下语句,注意路径,然后wq保存退出
export PATH=$PATH:/opt/nginx/sbin# 让profile生效
source /etc/pfofile
测试访问
输入ip进行访问测试,出现Nginx的欢迎界面,说明安装成功。
设置开机启动
首先需要创建nginx服务
vim /etc/init.d/nginx# 将下面脚本复制进去保存,注意路径要和安装路径对上
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ ""$NETWORKING"" = ""no"" ] && exit 0nginx=""/opt/nginx/sbin/nginx""
prog=$(basename $nginx)NGINX_CONF_FILE=""/opt/nginx/conf/nginx.conf""[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() {# make required directoriesuser=`nginx -V 2>&1 | grep ""configure arguments:"" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`options=`$nginx -V 2>&1 | grep 'configure arguments:'`for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d ""="" -f 2`if [ ! -d ""$value"" ]; then# echo ""creating"" $valuemkdir -p $value && chown -R $user $valuefifidone
}start() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6make_dirsecho -n $""Starting $prog: ""daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval
}stop() {echo -n $""Stopping $prog: ""killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval
}restart() {configtest || return $?stopsleep 1start
}reload() {configtest || return $?echo -n $""Reloading $prog: ""killproc $nginx -HUPRETVAL=$?echo
}force_reload() {restart
}configtest() {$nginx -t -c $NGINX_CONF_FILE
}rh_status() {status $prog
}rh_status_q() {rh_status >/dev/null 2>&1
}case ""$1"" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $""Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}""exit 2
esac
保存后,进入该目录,执行以下操作
cd /etc/init.d/
# 添加执行权限
chmod +x nginx
# 添加到系统服务
chkconfig --add nginx
# 查看是否添加成功
chkconfig --list nginx
# 添加到开机启动
chkconfig nginx on
# 再次查看
chkconfig --list nginx
# 以下结果说明添加成功
# 0:off 1:off 2:on 3:on 4:on 5:on 6:off
常用命令
# 启动
nginx
# 关闭
nginx -s stop
# 刷新配置
nginx -s reload
# 配置测试
nginx -t
yum安装Nginx
yum安装就比较简单了
yum install nginx
在centos7.9中,yum安装默认的版本是Nginx1.20
yum安装文件位置
yum安装的各常用文件位置如下:
- nginx的配置文件在/etc/nginx/nginx.conf
- 自定义的配置文件放在/etc/nginx/conf.d
- 项目文件存放在/usr/share/nginx/html/
- 日志文件存放在/var/log/nginx/
另外,yum安装的版本,默认首页是centos首页,看不到那个Nginx的欢迎页面。