nginx是一个高性能的HTTP和方向代理web服务器,在我们日常开发中进行会使用nginx实现相关的功能:如正向代理、反向代理、负载均衡等等。接下来我们将演示在Linux中安装NGINX。
安装NGINX的方式有很多种,在这里介绍两种常用的方式:安装包安装、yum安装
安装包安装
一、下载安装包
自动下载
使用wget
命令下载:如下载1.20.0版本:wget http://nginx.org/download/nginx-1.20.0.tar.gz
手动下载
在nginx官方网站下载linux版本的nginx,如下图所示
二、解压安装包
如果我们是手动下载的,我们需要把下载好的安装包传送到Linux服务器上。传输的方式有:xftp方式和scp命令方式。
tar -zxvf 压缩包
:解压到当前路径下
tar -zxvf 压缩包 -C 指定路径
:解压到指定的路径
三、运行配置文件
进入解压后的目录,运行命令:./configure
,这种方式是按照默认方式进行安装,安装的目录为/usr/local/nginx
如果需要指定目录,我们可以在./configure后面指定安装目录
./configure --prefix=安装路径
问题一:提示C编译器没有找到,如下图所示
解决方法:通过yum安装C编译器
yum -y install gcc-c++
问题二:提示http的相关错误
解决方法:
1、nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。执行yum -y install pcre pcre-devel
2、nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。执行yum -y install zlib zlib-devel
3、nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。执行yum -y install openssl openssl-devel
四、编译并安装
make && make install
:编译安装
五、创建软链接【可以省略】
本次是通过默认安装的,安装的路径为/usr/local/nginx,所以为nginx
创建软链接:
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin
六、启动nginx
如果执行过第五步,则直接运行:nginx
如果没有执行第五步,则运行:/usr/local/nginx/sbin/nginx
运行成功后,可以通过ps
命令来查看nginx进程的状态
ps aux | grep nginx
通过网址访问的nginx截图
如果访问失败,可以查看服务器的防火墙。
七、nginx常用命令
1、验证配置文件是否能正常启动:nginx -t
2、启动nginx:
nginx
3、正常停止nginx:
nginx -s quit
4、快速停止nginx:
/nginx -s stop
5、修改过配置文件后,重新加载nginx:
nginx -s reload
6、查看nginx版本信息:
nginx -v
八、设置nginx开机自启动
1、在/etc/init.d下创建文件nginx:vim /etc/init.d/nginx
2、脚本内容为nginx官网提供:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/,内容如下:
!/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
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $prog -HUP
retval=$?
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" in
start)
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
需要修改
nginx="/usr/local/nginx/sbin/nginx"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
3、设置/etc/init.d/nginx
文件的执行权限:chmod a+x /etc/init.d/nginx
4、将脚本添加到chkconfig中进行管理【系统服务中】:chkconfig --add /etc/init.d/nginx
5、设置开机自启动:chkconfig nginx on
之后就可以通过以下方法进行控制:
centos7以下:
service nginx start # 开启nginx
service nginx stop # 停止nginx
service nginx restart # 重启nginx
service nginx reload # 重新加载nginx
centos7及其以上:
systemctl start nginx.service # 开启nginx
systemctl stop nginx.service # 停止nginx
systemctl restart nginx.service # 重启nginx
systemctl reload nginx.service # 重新加载nginx
问题一:-bash: /etc/init.d/nginx: /bin/bash^M:bad interpreter: No such file or directory
原因:可能是你的编码错误
解决方案:
1)打开nginx服务:vim /etc/init.d/nginx
2)在命令模式下查看编码,输入:set ff?
结果为fileformat=dos
3)修改fileformat,在命令模式下输入:set ff=unix
4)保存并退出:wq
总结:
1、gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc
yum install gcc-c++
2、PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
3、zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
4、openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
5、通过默认路径安装nginx时,解压到/usr/local
路径下的nginx文件不能以nginx
命名,这样的话与默认配置文件冲突了。