在Ubuntu上手动安装nginx软件

转载:http://blog.csdn.net/liangzi4454/article/details/47023447

1,下载nginx-1.9.3.tar.gz 两种方式:

   (1).ubuntu 下终端中(ctrl+alt+t) 执行命令: wget http://nginx.org/download/nginx-1.9.3.tar.gz ;可以进入到根目录的Downloads目录下执行该命令,这样就可以直接下载该目录下

   (2).windows或ubuntu浏览器中下载,地址为 http://nginx.org/en/download.html;本人是下载到根目录 ~/Downloads中的

下载插件:  进入根目录,直行如下两条命令 下载安装相关插件:

  sudo apt-get install libpcre3-dev  

  sudo apt-get install libssl-dev

2,安装nginx-1.9.3

   默认nginx的安装路径是/usr/local/nginx/,为了防止出现其他问题,我们在创建该目录,mkdir /usr/local/nginx/,并把nginx-1.9.3.tar.gz 解压到该目录,内容如下所示:

                                解压安装包:1.  tar -zxvf nginx-1.9.3.tar.gz  

                                进入安装目录:cd  nginx-1.9.3  

   进入/usr/local/nginx/目录,直行如下二条命令进行安装:

  (1) ./configure

 启动server状态页和https模块

  (2) make

  (3)sudo make install

   安装完成之后需要在/etc/ini.d/目录下创建nginx文件,该文件是用来启动nginx 。创建成功,加入内容:

  #! /bin/sh

### BEGIN INIT INFO

# Provides:          nginx

# Required-Start:    $remote_fs $syslog

# Required-Stop:     $remote_fs $syslog

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: nginx init.d dash script for Ubuntu or other *nix.

# Description:       nginx init.d dash script for Ubuntu or other *nix.

### END INIT INFO

#------------------------------------------------------------------------------

# nginx - this Debian Almquist shell (dash) script, starts and stops the nginx

#         daemon for Ubuntu and other *nix releases.

#

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server.  This \

#               script will manage the initiation of the \

#               server and it's process state.

#

# processname: nginx

# config:      /usr/local/nginx/conf/nginx.conf

# pidfile:     /usr/local/nginx/logs/nginx.pid

# Provides:    nginx

#

# Author:  Jason Giedymin

#          <jason.giedymin AT gmail.com>.

#

# Version: 3.9.0 12-MAY-2015 jason.giedymin AT gmail.com

# Notes: nginx init.d dash script for Ubuntu.

# Tested with: Ubuntu 14.10, nginx-1.7.9

#

# This script's project home is:

#   http://github.com/JasonGiedymin/nginx-init-ubuntu

#

#------------------------------------------------------------------------------

#                               MIT X11 License

#------------------------------------------------------------------------------

#

# Copyright (c) 2008-2013 Jason Giedymin, http://jasongiedymin.com

#

# Permission is hereby granted, free of charge, to any person obtaining

# a copy of this software and associated documentation files (the

# "Software"), to deal in the Software without restriction, including

# without limitation the rights to use, copy, modify, merge, publish,

# distribute, sublicense, and/or sell copies of the Software, and to

# permit persons to whom the Software is furnished to do so, subject to

# the following conditions:

#

# The above copyright notice and this permission notice shall be

# included in all copies or substantial portions of the Software.

#

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#------------------------------------------------------------------------------

 

 

#------------------------------------------------------------------------------

#                               Functions

#------------------------------------------------------------------------------

LSB_FUNC=/lib/lsb/init-functions

 

# Test that init functions exists

test -r $LSB_FUNC || {

    echo "$0: Cannot find $LSB_FUNC! Script exiting." 1>&2

    exit 5

}

. $LSB_FUNC

 

#------------------------------------------------------------------------------

#                               Consts

#------------------------------------------------------------------------------

# Include nginx defaults if available

if [ -f /etc/default/nginx ]; then

    . /etc/default/nginx

fi

# Minimize path

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

 

PS=${PS:-"nginx"}                             # process name

DESCRIPTION=${DESCRIPTION:-"Nginx Server..."} # process description

NGINXPATH=${NGINXPATH:-/usr/local/nginx}      # root path where installed

DAEMON=${DAEMON:-$NGINXPATH/sbin/nginx}       # path to daemon binary

NGINX_CONF_FILE=${NGINX_CONF_FILE:-$NGINXPATH/conf/nginx.conf} # config file path

 

 

PIDNAME=${PIDNAME:-"nginx"}                   # lets you do $PS-slave

PIDFILE=${PIDFILE:-$PIDNAME.pid}              # pid file

PIDSPATH=${PIDSPATH:-$NGINXPATH/logs}         # default pid location, you should change it

RUNAS=${RUNAS:-root}                          # user to run as

 

 

SCRIPT_OK=0           # ala error codes

SCRIPT_ERROR=1        # ala error codes

TRUE=1                # boolean

FALSE=0               # boolean

 

#------------------------------------------------------------------------------

#                               Simple Tests

#------------------------------------------------------------------------------

 

# Test if nginx is a file and executable

test -x $DAEMON || {

    echo "$0: You don't have permissions to execute nginx." 1>&2

    exit 4

}

# You can also set your conditions like so:

# set exit condition

# set -e

 

#------------------------------------------------------------------------------

#                               Functions

#------------------------------------------------------------------------------

 

setFilePerms(){

    if [ -f $PIDSPATH/$PIDFILE ]; then

        chmod 400 $PIDSPATH/$PIDFILE

    fi

}

configtest() {

    $DAEMON -t -c $NGINX_CONF_FILE

}

  

getPSCount() {

    return `pgrep -f $PS | wc -l`

}

 

isRunning() {

    if [ $1 ]; then

        pidof_daemon $1

        PID=$?

 

        if [ $PID -gt 0 ]; then

            return 1

        else

            return 0

        fi

    else

        pidof_daemon

        PID=$?

 

        if [ $PID -gt 0 ]; then

            return 1

        else

            return 0

        fi

    fi

}

 

#courtesy of php-fpm

wait_for_pid () {

    try=0

 

    while test $try -lt 35 ; do

        case "$1" in

            'created')

            if [ -f "$2" ]; then

                try=''

                break

            fi

            ;;

            'removed')

            if [ ! -f "$2" ]; then

                try=''

                break

            fi

            ;;

        esac

 

 

        try=`expr $try + 1`

        sleep 1

    done

}

 

 

status(){

    isRunning

    isAlive=$?

 

 

    if [ "${isAlive}" -eq $TRUE ]; then

        log_warning_msg "$DESCRIPTION found running with processes:  `pidof $PS`"

        rc=0

    else

        log_warning_msg "$DESCRIPTION is NOT running."

        rc=3

    fi

 

 

    return

}

 

 

removePIDFile(){

    if [ $1 ]; then

        if [ -f $1 ]; then

            rm -f $1

        fi

    else

        #Do default removal

        if [ -f $PIDSPATH/$PIDFILE ]; then

            rm -f $PIDSPATH/$PIDFILE

        fi

    fi

}

 

 

start() {

    log_daemon_msg "Starting $DESCRIPTION"

 

 

    isRunning

    isAlive=$?

 

 

    if [ "${isAlive}" -eq $TRUE ]; then

        log_end_msg $SCRIPT_ERROR

        rc=0

    else

        start-stop-daemon --start --quiet --chuid \

        $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON \

        -- -c $NGINX_CONF_FILE

        status=$?

        setFilePerms

 

 

        if [ "${status}" -eq 0 ]; then

            log_end_msg $SCRIPT_OK

            rc=0

        else

            log_end_msg $SCRIPT_ERROR

            rc=7

        fi

    fi

 

 

    return

}

 

 

stop() {

    log_daemon_msg "Stopping $DESCRIPTION"

 

 

    isRunning

    isAlive=$?

 

 

    if [ "${isAlive}" -eq $TRUE ]; then

        start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE

 

 

        wait_for_pid 'removed' $PIDSPATH/$PIDFILE

 

 

        if [ -n "$try" ]; then

            log_end_msg $SCRIPT_ERROR

            rc=0 # lsb states 1, but under status it is 2 (which is more prescriptive). Deferring to standard.

        else

            removePIDFile

            log_end_msg $SCRIPT_OK

            rc=0

        fi

    else

        log_end_msg $SCRIPT_ERROR

        rc=7

    fi

 

 

    return

}

 

 

reload() {

    configtest || return $?

 

 

    log_daemon_msg "Reloading (via HUP) $DESCRIPTION"

 

 

    isRunning

 

 

    if [ $? -eq $TRUE ]; then

        kill -HUP `cat $PIDSPATH/$PIDFILE`

        log_end_msg $SCRIPT_OK

        rc=0

    else

        log_end_msg $SCRIPT_ERROR

        rc=7

    fi

 

 

    return

}

 

 

quietupgrade() {

    log_daemon_msg "Peforming Quiet Upgrade $DESCRIPTION"

 

 

    isRunning

    isAlive=$?

 

 

    if [ "${isAlive}" -eq $TRUE ]; then

        kill -USR2 `cat $PIDSPATH/$PIDFILE`

        kill -WINCH `cat $PIDSPATH/$PIDFILE.oldbin`

 

 

        isRunning

        isAlive=$?

 

 

        if [ "${isAlive}" -eq $TRUE ]; then

            kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin`

            wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin

            removePIDFile $PIDSPATH/$PIDFILE.oldbin

 

 

            log_end_msg $SCRIPT_OK

            rc=0

        else

            log_end_msg $SCRIPT_ERROR

 

 

            log_daemon_msg "ERROR! Reverting back to original $DESCRIPTION"

 

 

            kill -HUP `cat $PIDSPATH/$PIDFILE`

            kill -TERM `cat $PIDSPATH/$PIDFILE.oldbin`

            kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin`

 

 

            wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin

            removePIDFile $PIDSPATH/$PIDFILE.oldbin

 

 

            log_end_msg $SCRIPT_OK

            rc=0

        fi

    else

        log_end_msg $SCRIPT_ERROR

        rc=7

    fi

 

 

    return

}

 

 

terminate() {

    log_daemon_msg "Force terminating (via KILL) $DESCRIPTION"

 

 

    PIDS=`pidof $PS` || true

 

 

    [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`

 

 

    for i in $PIDS; do

        if [ "$i" = "$PIDS2" ]; then

            kill $i

            wait_for_pid 'removed' $PIDSPATH/$PIDFILE

            removePIDFile

        fi

    done

 

 

    log_end_msg $SCRIPT_OK

    rc=0

}

 

 

destroy() {

    log_daemon_msg "Force terminating and may include self (via KILLALL) $DESCRIPTION"

    killall $PS -q >> /dev/null 2>&1

    log_end_msg $SCRIPT_OK

    rc=0

}

 

 

pidof_daemon() {

    PIDS=`pidof $PS` || true

 

 

    [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`

 

 

    for i in $PIDS; do

        if [ "$i" = "$PIDS2" ]; then

            return 1

        fi

    done

 

 

    return 0

}

 

 

action="$1"

case "$1" in

    start)

        start

        ;;

    stop)

        stop

        ;;

    restart|force-reload)

        stop

        # if [ $rc -ne 0 ]; then

        #     script_exit

        # fi

        sleep 1

        start

        ;;

    reload)

        $1

        ;;

    status)

        status

        ;;

    configtest)

        $1

        ;;

    quietupgrade)

        $1

        ;;

    terminate)

        $1

        ;;

    destroy)

        $1

        ;;

    *)

        FULLPATH=/etc/init.d/$PS

        echo "Usage: $FULLPATH {start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy}"

        echo "       The 'destroy' command should only be used as a last resort."

        exit 3

        ;;

esac

exit $rc

 

  或者在终端中执行如下命令:

  wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx  将nginx下载到/etc/init.d/该目录

  保存之后进入该目录,终端执行如下  付权限  命令和开机自启动命令:

  sudo chmod +x nginx

  sudo update-rc.d -f nginx defaults

  此时nginx-1.9.3安装完成

  注:安装完成之后若是不想开机启动,最简单的方法是将/etc/init.d/niginx文件改成niginx.template。不过该方法不可取。

 

 3.启动nginx-1.9.3

 

  终端执行命令:  /etc/init.d/nginx start  启动之后,浏览器中执行 http://127.0.0.1 看到nginx欢迎页面,说明安装成功。

  执行启动命令可能会报错;

 nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)

 2015/07/23 16:43:44 [emerg] 8753#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)

 根据报错提示,在/usr/local/nginx/logs/目录下创建error.log和access.log文件就可以了。

 

另注:

 apt-get intall nginx 安装该软件有时候出现错误,改成编译安装之后也总是出问题,所以删除apt-get安装的方式如下:

 root权限下载命令行敲入如下命令:

 rm -rf /etc/nginx/

 rm -rf /usr/sbin/nginx

 rm /usr/share/man/man1/nginx.1.gz

 apt-get remove nginx*

转载于:https://www.cnblogs.com/ding-treaving/p/5783031.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值