博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu 16.04安装Nginx
阅读量:6342 次
发布时间:2019-06-22

本文共 7064 字,大约阅读时间需要 23 分钟。

在ubuntu中安装nginx有两种方式,分别是apt安装和源码安装,如果想要安装最新版就需要下载源码编译安装。

apt安装

sudo apt-get install nginx复制代码

/usr/sbin/nginx : 主程序位置

/etc/nginx:nginx文件配置
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
有关nginx映射配置文件默认放在/etc/nginx/sites-available/中的default文件,但为了方便管理,一般会在/etc/nginx/conf.d/中创建一个新的配置文件。
使用apt安装可以不用配置使用如下命令:

sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}的命令启动。复制代码

源码安装

安装nginx依赖库

安装gcc g++的依赖库
apt-get install build-essentialapt-get install libtool复制代码
安装 pcre依赖库
sudo apt-get updatesudo apt-get install libpcre3 libpcre3-dev复制代码
安装 zlib依赖库
apt-get install zlib1g-dev复制代码
安装 ssl依赖库
apt-get install openssl复制代码

安装nginx

#下载最新版本:wget http://nginx.org/download/nginx-1.11.3.tar.gz#解压:tar -zxvf nginx-1.11.3.tar.gz#进入解压目录:cd nginx-1.11.3#配置:./configure --prefix=/usr/local/nginx #编辑nginx:make注意:这里可能会报错,提示“pcre.h No such file or directory”,具体详见:http://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory需要安装 libpcre3-dev,命令为:sudo apt-get install libpcre3-dev#安装nginx:sudo make install#启动nginx:sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。#查看nginx进程:ps -ef|grep nginx复制代码

源码安装时,启用nginx需要使用/usr/local/nginx/sbin/nginx 如果不输入路径需要配置软连接即

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx复制代码

设置开机启动

设置之前先来了解下update-rc.d命令, 该命令是用来自动的升级System V 类型初始化脚本,就是你想要哪些东西在系统引导初始化时运行,那些东西是希望在关机或重启时停止。

我们先要在/etc/init.d目录下创建一个nginx的命令脚本, 命令 sudo vi 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/binDAEMON=/usr/local/nginx/sbin/nginxNAME=nginxDESC=nginx# Include nginx defaults if availableif [ -r /etc/default/nginx ]; then    . /etc/default/nginxfiSTOP_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 pidfilePID=$(cat /usr/local/nginx/conf/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)if [ -z "$PID" ]; then    PID=/run/nginx.pidfiif [ -n "$ULIMIT" ]; then    # Set ulimit if it is set in /etc/default/nginx    ulimit $ULIMITfistart_nginx() {    # Start the daemon/service    #    # Returns:    #   0 if daemon has been started    #   1 if daemon was already running    #   2 if daemon could not be started    start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \        || return 1    start-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 occurred    start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAME    RETVAL="$?"    sleep 1    return "$RETVAL"}reload_nginx() {    # Function that sends a SIGHUP to the daemon/service    start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAME    return 0}rotate_logs() {    # Rotate log files    start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAME    return 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 killed    if start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then        # Wait for both old and new master to write their pid file        while [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; do            cnt=`expr $cnt + 1`            if [ $cnt -gt 10 ]; then                return 2            fi            sleep 1        done        # Everything is ready, gracefully stop the old master        if start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; then            return 0        else            return 3        fi    else        return 1    fi}case "$1" in    start)        log_daemon_msg "Starting $DESC" "$NAME"        start_nginx        case "$?" in            0|1) log_end_msg 0 ;;            2)   log_end_msg 1 ;;        esac        ;;    stop)        log_daemon_msg "Stopping $DESC" "$NAME"        stop_nginx        case "$?" in            0|1) log_end_msg 0 ;;            2)   log_end_msg 1 ;;        esac        ;;    restart)        log_daemon_msg "Restarting $DESC" "$NAME"        # Check configuration before stopping nginx        if ! test_config; then            log_end_msg 1 # Configuration error            exit $?        fi        stop_nginx        case "$?" in            0|1)                start_nginx                case "$?" in                    0) log_end_msg 0 ;;                    1) log_end_msg 1 ;; # Old process is still running                    *) log_end_msg 1 ;; # Failed to start                esac                ;;            *)                # Failed to stop                log_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; then            log_end_msg 1 # Configuration error            exit $?        fi        reload_nginx        log_end_msg $?        ;;    configtest|testconfig)        log_daemon_msg "Testing $DESC configuration"        test_config        log_end_msg $?        ;;    status)        status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?        ;;    upgrade)        log_daemon_msg "Upgrading binary" "$NAME"        upgrade_nginx        log_end_msg $?        ;;    rotate)        log_daemon_msg "Re-opening $DESC log files" "$NAME"        rotate_logs        log_end_msg $?        ;;    *)        echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2        exit 3        ;;esac复制代码

然后设置服务有执行权限并注册服务

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

sudo ps -ef | grep nginx查看nginx进程情况。

如果要取消开机启动可以这样 update-rc.d -f nginx remove
现在安装基本完成,便可以使用如下nginx命令

sudo service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}复制代码

参考:

新手上车,请多指教,如有问题,请联系本人:young5678@qq.com

转载地址:http://wjyla.baihongyu.com/

你可能感兴趣的文章
A10 平板开发二搭建Android开发环境
查看>>
HDU4712-----Hamming Distance------超级大水题
查看>>
sscanf用法
查看>>
统计中的t检验
查看>>
python 自动生成C++代码 (代码生成器)
查看>>
svn经常使用命令具体解释(非常全,非常有用)
查看>>
DevExpress licenses.licx 的解决方法 z
查看>>
NOI第一天感想&小结
查看>>
<聪明的投资者(第四版点评)>读书笔记
查看>>
[ES6] 20. Polyfills
查看>>
第15章 I/O(输入/输出)
查看>>
软件介绍(apache lighttpd nginx)
查看>>
30岁的程序猿坐的太久,也要用一下脑子
查看>>
2016华为实习编程题:停车管理系统
查看>>
POJ 1113 Wall 凸包
查看>>
模板方法模式
查看>>
MySQL数据库读写分离、读负载均衡方案选择
查看>>
C# 值类型和引用类型
查看>>
操作系统——进程与线程
查看>>
jvisualvm图解
查看>>