Linux 部署 nginx(下载、安装、启动)
问题现象Linux 系统如何部署 nginx(下载、安装、启动、使用)?解决方法:1、下载官网下载 nginx 镜像文件:nginx: download选择稳定版本 下的镜像文件进行下载,下载完成:2、linux系统上安装nginx2.1、把 下载好的 nginx 的 tar.gz 压缩包 上传到linux服务器:2.2、解压:# 进入 nginx 压缩包所在目录cd nginx 压缩包所在目录#
目录
2.1、把 下载好的 nginx 的 tar.gz 压缩包 上传到linux服务器:
5.2、编辑 nginx 文件,把脚本信息拷贝进去,保存退出
问题现象
Linux 系统如何部署 nginx(下载、安装、启动)?
解决方法:
1、下载
官网下载 nginx 镜像文件:
选择稳定版本 下的镜像文件进行下载,
下载完成:
2、linux系统上安装nginx
2.1、把 下载好的 nginx 的 tar.gz 压缩包 上传到linux服务器:
2.2、 解压:
# 进入 nginx 压缩包所在目录
cd nginx 压缩包所在目录
# 解压
tar -zxvf nginx-1.20.2.tar.gz
解压成功:
2.3、安装 nginx 的相关依赖:
# 安装 nginx 的相关依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
出现如下信息,则表示正在安装和安装成功:
注意:
如果不安装依赖,直接解压的话,会出现如下报错:
./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.
2.4、生成 Makefile 可编译文件
# 进入解压后的 nginx-1.20.2 目录
cd nginx-1.20.2 目录
# 执行configure脚本,设置安装nginx的初始化配置(--with-http_ssl_module:启动 SSL 的支持),生成 Makefile 可编译文件
./configure --with-http_ssl_module
其他参数:
--prefix=PATH:指定 nginx 的安装目录(默认/usr/local/nginx)
--conf-path=PATH:指定 nginx.conf 配置文件路径
--user=NAME:nginx 工作进程的用户
--with-pcre:开启 PCRE 正则表达式的支持
--with-http_ssl_module:启动 SSL 的支持
--with-http_stub_status_module:用于监控 Nginx 的状态
--with-http-realip_module:允许改变客户端请求头中客户端 IP 地址
--with-file-aio:启用 File AIO
--add-module=PATH:添加第三方外部模块
执行成功:
生成 Makefile 可编译文件:
2.5、编译和安装
编译:
# 编译
make
编译成功:
安装:
# 安装
make install
安装成功:
红框中的就是默认安装路径(/usr/local/nginx)
3、启动nignx
# 进入 nginx 安装目录下的sbin目录
cd nginx 安装目录(默认 /usr/local/nginx/sbin)
可以看到 nginx 脚本:
执行 nginx 脚本,启动 nginx 服务:
# 执行脚本启动 nginx 服务
./nginx
查看 nginx 进程:
查看 nginx 进程:
ps -ef | grep nginx
根据 ./nginx 启动命令,可以得知我们需要的 nginx进程id 是 31049,接着查看该 进程id 所占用的端口号:
# 查看 进程id 所占用的端口号
netstat -nap | grep 进程id
可以看见 nginx 服务默认占用的是 80 端口,接下来是要查看linux 防火墙,如果防火墙是开启状态的话,则需要确认防火墙开放的端口列表中,是否包含 80 端口:
# 查看已开放端口
sudo firewall-cmd --zone=public --list-ports
不出意外是没有的,那就需要我们去开放 80 这个端口:
# 开放 80 端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
开放端口后,还需要重启防火墙才能生效:
sudo firewall-cmd --reload
再次查看防火墙开放的端口列表,发现 80 端口已经开放成功:
4、使用
先用浏览器访问 linux服务器ip(浏览器访问 ip 默认是80端口,所以不带 80端口号也可以),查看是否可以正常访问 上面 部署好的 nginx 服务:
至此,可以正常使用了!!!
5、拓展:
到本文章的 第 4 步 为止,nginx服务已经是可以正常使用了,所以以下部分不带有硬性执行要求,只提供给感兴趣的小伙伴。
由于 nginx 的常用命令执行起来比较繁琐,所以官网提供了脚本文件以便简化 nginx 命令,如下,已经修改了其中的 nginx 和 NGINX_CONF_FILE 配置:
# nginx执行文件路径
nginx="/usr/local/nginx/sbin/nginx"# nginx配置文件路径
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
#!/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
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# 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/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/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命名的文件中;并放至linux服务器的 /etc/init.d 目录下即可:
5.1、创建 名为 nginx 的文件
# 进入 /etc/init.d 目录
cd /etc/init.d
# 创建 名为 nginx 的文件
touch nginx
5.2、编辑 nginx 文件,把脚本信息拷贝进去,保存退出
# 编辑 nginx 文件,写入脚本信息
vi nginx
给 nginx 脚本文件 赋予执行权限:
# 赋予执行权限
chmod +x nginx
如果不授权,则执行脚本命令时会报错,如:
增加nginx的系统服务,让chkconfig 指令可以管理该服务:
# 增加nginx的系统服务,让chkconfig 指令可以管理该服务
chkconfig --add nginx
执行脚本命令,重启nginx,没有报错了:
浏览器也能正常访问 nginx 首页:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)