ubuntu 安装tenginx

本文档详细介绍了在Ubuntu系统中安装tenginx的步骤,包括检查Apache、安装依赖、解压安装包、配置初始化脚本、启动服务及验证安装是否成功。确保未安装Apache以避免端口冲突,并通过`apt-get`命令安装必要的库和工具,然后执行配置、编译、安装及设置开机启动等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要检查Linux环境中有没有安装Apache 因为Apache和Nginx同样占领了80 端口,如果同时开启会发生冲突。所以安装了Apache的可以先改变其默认端口。
我没有安装Apache 所以可以直接安装tenginx
步骤:
apt-get install libpcre3 libpcre3-dev
apt-get install openssl libssl-dev
apt-get install gcc g++ make
将tenginx安装包传入root文件夹下并解压
然后 ./configure
top 查看进程
make
make install
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
vim /etc/init.d/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.7.0 30-JAN-2014 jason.giedymin AT gmail.com

Notes: nginx init.d dash script for Ubuntu.

Tested with: Ubuntu 13.10, nginx-1.5.9

This script’s project home is:

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

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

MIT X11 License

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

Copyright © 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

#------------------------------------------------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NGINXPATH=/usr/local/nginx
DAEMON=$NGINXPATH/sbin/nginx

PS=“nginx”
PIDNAME=“nginx” #lets you do P S − s l a v e P I D F I L E = PS-slave PIDFILE= PSslavePIDFILE=PIDNAME.pid #pid file
PIDSPATH=$NGINXPATH/logs #default pid location, you should change it

DESCRIPTION=“Nginx Server…”

RUNAS=root #user to run as

SCRIPT_OK=0 #ala error codes
SCRIPT_ERROR=1 #ala error codes
TRUE=1 #boolean
FALSE=0 #boolean

lockfile=/var/lock/subsys/nginx
NGINX_CONF_FILE="$NGINXPATH/conf/nginx.conf"

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

Simple Tests

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

Include nginx defaults if available

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

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
}

#set exit condition
#set -e

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

Functions

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

setFilePerms(){
if [ -f P I D S P A T H / PIDSPATH/ PIDSPATH/PIDFILE ]; then
chmod 400 P I D S P A T H / PIDSPATH/ PIDSPATH/PIDFILE
fi
}

configtest() {
$DAEMON -t -c $NGINX_CONF_FILE
}

getPSCount() {
return pgrep -f $PS | wc -l
}

isRunning() {
if [ $1 ]; then
pidof_daemon 1 P I D = 1 PID= 1PID=?

    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 P I D S P A T H / PIDSPATH/ PIDSPATH/PIDFILE ]; then
rm -f P I D S P A T H / PIDSPATH/ 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 ; ; ∗ ) F U L L P A T H = / e t c / i n i t . d / 1 ;; *) FULLPATH=/etc/init.d/ 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

---------------------------------------------------------------------------------------------------华丽分割线
chmod +x /etc/init.d/nginx
在/etc/init.d目录下执行 update-rc.d nginx defaults

cd /usr/local/nginx/sbin/
./nginx
ps aux |grep nginx查看有没有成功 若成功则显示:
root 5060 0.0 0.0 32036 788 ? Ss 21:22 0:00 nginx: master process ./nginx
nobody 5061 0.0 0.1 32496 3040 ? S 21:22 0:00 nginx: worker process
root 5065 0.0 0.0 14228 940 pts/2 S+ 21:22 0:00 grep --color=auto nginx

netstat -apnt|grep 80查看80端口有没有监听
若有则成功:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5060/nginx
在网页中输入 ip地址:80
显示成功
则tenginx安装成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值