首先要检查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=
PS−slavePIDFILE=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安装成功