在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