Ubuntu安装Nginx

在Ubuntu下安装Nginx有以下方法,但是如果想要安装最新版本的就必须下载源码包编译安装。

一、基于APT源安装

sudo apt-get install nginx

安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

其实从上面的根目录文件夹可以知道,Linux系统的配置文件一般放在/etc,日志一般放在/var/log,运行的程序一般放在/usr/sbin或者/usr/bin。

当然,如果要更清楚Nginx的配置项放在什么地方,可以打开/etc/nginx/nginx.conf

我猜测,Nginx如果指定默认加载/etc/nginx/nginx.conf的配置文件。如果要查看加载的是哪个配置文件,可以用这个命令sudo nginx -t或者ps -ef | grep nginx

然后通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx新建服务脚本,然后就可以使用sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}的命令启动。

脚本如下:

#!/bin/sh### BEGIN INIT INFO
# Provides:      nginx
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx# Include nginx defaults if available
if [ -r /etc/default/nginx ]; then. /etc/default/nginx
fiSTOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}"test -x $DAEMON || exit 0. /lib/init/vars.sh
. /lib/lsb/init-functions# Try to extract nginx pidfile
PID=$(cat /etc/nginx/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)
if [ -z "$PID" ]; thenPID=/run/nginx.pid
fiif [ -n "$ULIMIT" ]; then# Set ulimit if it is set in /etc/default/nginxulimit $ULIMIT
fistart_nginx() {# Start the daemon/service## Returns:#   0 if daemon has been started#   1 if daemon was already running#   2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \|| return 1start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \$DAEMON_OPTS 2>/dev/null \|| return 2
}test_config() {# Test the nginx configuration$DAEMON -t $DAEMON_OPTS >/dev/null 2>&1
}stop_nginx() {# Stops the daemon/service## Return#   0 if daemon has been stopped#   1 if daemon was already stopped#   2 if daemon could not be stopped#   other if a failure occurredstart-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAMERETVAL="$?"sleep 1return "$RETVAL"
}reload_nginx() {# Function that sends a SIGHUP to the daemon/servicestart-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAMEreturn 0
}rotate_logs() {# Rotate log filesstart-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAMEreturn 0
}upgrade_nginx() {# Online upgrade nginx executable# http://nginx.org/en/docs/control.html
    ## Return#   0 if nginx has been successfully upgraded#   1 if nginx is not running#   2 if the pid files were not created on time#   3 if the old master could not be killedif start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then# Wait for both old and new master to write their pid filewhile [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; docnt=`expr $cnt + 1`if [ $cnt -gt 10 ]; thenreturn 2fisleep 1done# Everything is ready, gracefully stop the old masterif start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; thenreturn 0elsereturn 3fielsereturn 1fi
}case "$1" instart)log_daemon_msg "Starting $DESC" "$NAME"start_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;stop)log_daemon_msg "Stopping $DESC" "$NAME"stop_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;restart)log_daemon_msg "Restarting $DESC" "$NAME"# Check configuration before stopping nginxif ! test_config; thenlog_end_msg 1 # Configuration errorexit $?fistop_nginxcase "$?" in0|1)start_nginxcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;reload|force-reload)log_daemon_msg "Reloading $DESC configuration" "$NAME"# Check configuration before stopping nginx## This is not entirely correct since the on-disk nginx binary# may differ from the in-memory one, but that's not common.
        # We prefer to check the configuration and return an error# to the administrator.if ! test_config; thenlog_end_msg 1 # Configuration errorexit $?fireload_nginxlog_end_msg $?;;configtest|testconfig)log_daemon_msg "Testing $DESC configuration"test_configlog_end_msg $?;;status)status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?;;upgrade)log_daemon_msg "Upgrading binary" "$NAME"upgrade_nginxlog_end_msg $?;;rotate)log_daemon_msg "Re-opening $DESC log files" "$NAME"rotate_logslog_end_msg $?;;*)echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2exit 3;;
esac
脚本

还有一个好处,创建好的文件由于放在/usr/sbin目录下,所以能直接在终端中使用nginx命令而无需指定路径。

二、通过源码包编译安装

这种方式可以自定安装指定的模块以及最新的版本。方式更灵活。

官方下载页面:http://nginx.org/en/download.html

configure配置文件详解:http://nginx.org/en/docs/configure.html

安装gcc g++的依赖库

Nginx是C语言开发,安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境

sudo apt-get install build-essential
sudo apt-get install libtool
centos的话:yum install gcc-c++ 

安装pcre依赖库(http://www.pcre.org/)

是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
centos的话:yum install -y pcre pcre-devel

安装zlib依赖库(http://www.zlib.net)

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库

sudo apt-get install zlib1g-dev
centos的话:yum install -y zlib zlib-devel

安装SSL依赖库(16.04默认已经安装了)

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

sudo apt-get install openssl
centos的话:yum install -y openssl openssl-devel

安装Nginx

复制代码
#下载最新版本:
wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解压:
tar -zxvf nginx-1.13.6.tar.gz
#进入解压目录:
cd nginx-1.13.6
#配置:
./configure --prefix=/usr/local/nginx 
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx
复制代码

关于configure、make、make install

源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)其中–prefix选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。为了便于集中管理某个软件的各种文件,可以配置–prefix,如:
./configure –prefix=/usr/local
可以把所有资源文件放在/usr/local的路径中,就不会分散了。

配置软链接

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

现在就可以不用路径直接输入nginx启动。

配置开机启动服务

在/etc/init.d/下创建nginx文件,sudo vim /etc/init.d/nginx,内容如下:

#!/bin/sh### BEGIN INIT INFO
# Provides:      nginx
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx# Include nginx defaults if available
if [ -r /etc/default/nginx ]; then. /etc/default/nginx
fiSTOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}"test -x $DAEMON || exit 0. /lib/init/vars.sh
. /lib/lsb/init-functions# Try to extract nginx pidfile
PID=$(cat /usr/local/nginx/conf/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)
if [ -z "$PID" ]; thenPID=/run/nginx.pid
fiif [ -n "$ULIMIT" ]; then# Set ulimit if it is set in /etc/default/nginxulimit $ULIMIT
fistart_nginx() {# Start the daemon/service## Returns:#   0 if daemon has been started#   1 if daemon was already running#   2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \|| return 1start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \$DAEMON_OPTS 2>/dev/null \|| return 2
}test_config() {# Test the nginx configuration$DAEMON -t $DAEMON_OPTS >/dev/null 2>&1
}stop_nginx() {# Stops the daemon/service## Return#   0 if daemon has been stopped#   1 if daemon was already stopped#   2 if daemon could not be stopped#   other if a failure occurredstart-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAMERETVAL="$?"sleep 1return "$RETVAL"
}reload_nginx() {# Function that sends a SIGHUP to the daemon/servicestart-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAMEreturn 0
}rotate_logs() {# Rotate log filesstart-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAMEreturn 0
}upgrade_nginx() {# Online upgrade nginx executable# http://nginx.org/en/docs/control.html
    ## Return#   0 if nginx has been successfully upgraded#   1 if nginx is not running#   2 if the pid files were not created on time#   3 if the old master could not be killedif start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then# Wait for both old and new master to write their pid filewhile [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; docnt=`expr $cnt + 1`if [ $cnt -gt 10 ]; thenreturn 2fisleep 1done# Everything is ready, gracefully stop the old masterif start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; thenreturn 0elsereturn 3fielsereturn 1fi
}case "$1" instart)log_daemon_msg "Starting $DESC" "$NAME"start_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;stop)log_daemon_msg "Stopping $DESC" "$NAME"stop_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;restart)log_daemon_msg "Restarting $DESC" "$NAME"# Check configuration before stopping nginxif ! test_config; thenlog_end_msg 1 # Configuration errorexit $?fistop_nginxcase "$?" in0|1)start_nginxcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;reload|force-reload)log_daemon_msg "Reloading $DESC configuration" "$NAME"# Check configuration before stopping nginx## This is not entirely correct since the on-disk nginx binary# may differ from the in-memory one, but that's not common.
        # We prefer to check the configuration and return an error# to the administrator.if ! test_config; thenlog_end_msg 1 # Configuration errorexit $?fireload_nginxlog_end_msg $?;;configtest|testconfig)log_daemon_msg "Testing $DESC configuration"test_configlog_end_msg $?;;status)status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?;;upgrade)log_daemon_msg "Upgrading binary" "$NAME"upgrade_nginxlog_end_msg $?;;rotate)log_daemon_msg "Re-opening $DESC log files" "$NAME"rotate_logslog_end_msg $?;;*)echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2exit 3;;
esac
脚本

-

#设置服务脚本有执行权限
sudo chmod +x /etc/init.d/nginx
#注册服务
cd /etc/init.d/ sudo update-rc.d nginx defaults

现在基本上就可以开机启动了,常用的命令如下:

sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

 

转载于:https://www.cnblogs.com/dongye95/p/11196118.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML标题h,HTML H标题标签

可以将HTML标题或HTML h标签定义为要在网页上显示的标题或副标题。当你将文本放在标题标签……… h1>内时, 它在浏览器中以粗体显示, 并且文本的大小取决于标题的数量。从到标签定义了六个不同的HTML标题, 从最高级别h1(主标题)到最低级别h6(最重要的标题)。h1是最大的标题标…

Android 多线程之几个基本问题

Android中的进程和线程 Android中的一个应用程序一般就对应着一个进程,多进程的情况可以参考Android 多进程通信之几个基本问题 Android中更常见的是多线程的情况,一个应用程序中一般都有包括UI线程等多个线程。Android中规定网络访问必须在子线程中进行…

Web下的整体测试

随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进行测试成为日益迫切的问题。有许多测试人员来信问我B/S的测试如何做,由于工作较繁忙,对大家提出的问题也是头痛医头脚痛医脚,没有对WEB的…

一步一步SharePoint 2007之五:向网站中添加一个子网站

一步一步SharePoint 2007之五:向网站中添加一个子网站摘要感受完看到成果的激动,感受完邻家女孩的漂亮、可爱和端庄,不要停止,来,让我们一起来动手打造心目中的完美女神吧!本篇文章将介绍如何向一个网站中添…

微型计算机系统分为哪几个层次,计算机系统分为哪4层?

满意答案al053192014.06.23采纳率:49% 等级:12已帮助:7516人第一层:物理层(PhysicalLayer),规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲&#xff0c…

ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计。本章节我们将介绍 ASP.NET Core 中的一些新的概念和它们是如何帮助我们开发现代化的 Web 应用程序 尽管 ASP.NET Core 是跨平台的&a…

ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Windows 环境配置 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计。本章节我们将介绍 ASP.NET Core 中的一些新的概念和它们是如何帮助我们开发现代化的 Web 应…

go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)

2019独角兽企业重金招聘Python工程师标准>>> 问题背景 在windows 中编译 go 的pipe时由于pipe依赖sqlite,需要通过cgo进行编译。出现如下异常 gcc.exe fatal error no input files compilation terminated 问题分析 由于 windows中缺少c 的编译环境 解决…

安装mysql-connector-python-8.0.11-py3.6遇到问题

1.提示“This application requires Visual Studio 2015 Redistributable” 下载vc_redist.x86安装即可。 下载链接:https://download.microsoft.com/download/6/D/F/6DF3FF94-F7F9-4F0B-838C-A328D1A7D0EE/vc_redist.x86.exe https://download.microsoft.com/downl…

画闭合的多边形 - HTML5 Canvas 作图

10、function DrawPolygon(Canvas,P)功能&#xff1a;画闭合的多边形参数&#xff1a;P是一个包含各个顶点坐标的数组实例&#xff1a;<html><script type"text/javascript" src"bigengineer.js"></script><body><canvas id&qu…

计算机网络硬件的作用是什么,网络技术在计算机软硬件的作用

网络技术在计算机软硬件的作用电子信息工程是一种建立在计算机系统软件技术和计算机网络技术上的工程,在现代国防、科研和通讯等领域发挥着巨大的作用。下面是小编搜集整理的相关内容的论文&#xff0c;欢迎大家阅读参考。摘要&#xff1a;随着我国经济的飞速发展&#xff0c;科…

VS历程简单记录

当时一开始装VS2015&#xff0c;是用了很长时间了。装了之后是可以用的&#xff0c;打了不少代码的。 后来很长一段时间没用它了&#xff0c;时隔良久&#xff0c;双击快捷方式竟然打开不了&#xff0c;让我“重装”。 其实也不用重装&#xff0c;本机用的Win10&#xff0c;去控…

智能文件名排序

默认排序问题 windows排序 Windows的资源管理中&#xff0c;提供了文件名的智能排序功能&#xff0c;可以识别出文件名中数字&#xff08;数字位数不相同&#xff09;&#xff0c;然后比较数字大小进行排序&#xff0c;如下图&#xff1a; 代码默认排序 但在C#中的列表排序中则…

VS2005 Web Application Project启用WSE(Ver 3.0)的方法

使用过WSE的朋友都知道&#xff0c;若要启用Server端Projects的WSE功能&#xff0c;需要选中如下所示的两个单选框:Enable this project for Web Services Enhancements和Enable Microsoft Web Services Enhancement Soap Protocol Factory.但是在WSE3.0中对于Web Application …

计算机英语课程背景,专家讲座第十五讲:信息化背景下高质量大学英语课程建设与教学设计...

11月27日下午&#xff0c;南京大学王海啸教授应邀到我院开展题为“信息化背景下高质量大学英语课程建设与教学设计”学术讲座。讲座由外国语言文学学院胡元江副院长和鲍贵教授共同主持&#xff0c;学院全体教师和研究生参加了本次学术活动。王海啸教授目前兼任教育部高等学校大…

ORA-28001: the password has expired

原创文章地址:https://blog.csdn.net/zdw_wym/article/details/38066745 Oracle提示错误消息 ORA-28001: the password has expired&#xff0c;是由于Oracle11G的新特性所致&#xff0c;Oracle11G创建用户时缺省密码过期限制是180天&#xff08;即6个月&#xff09;&#xff0…

使用c#操作IBM WebSphere MQ

IBM WebSphere MQ 5.3升级到CSD05之后&#xff0c;提供了使用.net操作MQ的类库&#xff0c;安装完成之后&#xff0c;会在MQ的安装目录的bin文件夹下面多出一个amqmdnet.dll文件&#xff0c;把这个DLL作为引用添加到你的.net工程中&#xff0c;你的.net程序中就可以操作IBM Web…

计算机office二级app,计算机二级office

计算机二级office是一款为用户提供各种计算机二级知识的软件&#xff0c;用户可以在应用中快速的学习计算机二级office知识&#xff0c;顺利通过二级考试&#xff1b;应用拥有海量的精选计算机二级考试题库&#xff0c;不放过每一个考题&#xff0c;让用户全面的学习二级知识&a…

影响员工敬业度的三大因素

敬业的员工通常业绩比较突出&#xff0c;对企业做的贡献很大。经理人当然希望自己的员工个个都是敬业的员工&#xff0c;但实际上&#xff0c;在中国只有8%的员工具有敬业精神&#xff0c;相比全球的平均水平14%还有很大的差距。 是什么因素造成员工不敬业呢&#xff1f;根据世…

计算机答辩答不上来怎么回答,答辩答不上来怎么办

论文答辩成为了不少同学的最后一次考试&#xff0c;从开题报告、论文定稿到格式排版大家一定都花费了大量的时间和精力&#xff0c;然而有时也会有一点小错误。所以&#xff0c;答辩前怎么准备&#xff0c;答辩的时候应该怎么灵活表现才能让自己最有可能通过答辩呢&#xff1f;…