总结与整理:Ubuntu系统下安装、配置Nginx及其他注意事项

在Ubuntu下安装Nginx有以下方法,但是如果想要安装最新版本的就必须下载源码包编译安装。

 

一、基于APT源安装

sudo apt-get install nginx

 

1、安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

 

2、从上面的根目录文件夹可以知道:

Linux系统的配置文件一般放在/etc,日志一般放在/var/log,运行的程序一般放在/usr/sbin或者/usr/bin。

当然,如果要更清楚Nginx的配置项放在什么地方,可以打开/etc/nginx/nginx.conf

Nginx如果指定默认加载/etc/nginx/nginx.conf的配置文件。如果要查看加载的是哪个配置文件,可以用这个命令

sudo nginx -t(检查语法是否正确)或者ps -ef | grep nginx

然后通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx新建服务脚本,然后就可以使用

sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

 

的命令执行相关操作。

 

二、通过源码包编译安装

 

这种方式可以自定安装指定的模块以及最新的版本。方式更灵活。

官方下载页面:http://nginx.org/en/download.html

configure配置文件详解:http://nginx.org/en/docs/configure.html

 

1、安装gcc g++的依赖库

sudo apt-get install build-essential
sudo apt-get install libtool

 

2、安装pcre依赖库(http://www.pcre.org/)

sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

 

3、安装zlib依赖库(http://www.zlib.net)

sudo apt-get install zlib1g-dev

 

4、安装SSL依赖库(16.04默认已经安装了)

sudo apt-get install openssl

 

5、安装Nginx

#下载最新版本:
wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解压:
tar -zxvf nginx-1.13.6.tar.gz
#进入解压目录:
cd nginx-1.13.6
#配置:
./configure --prefix=/usr/local/nginx 
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx

 

6、配置软链接

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

 

现在就可以不用路径直接输入nginx启动。

 

三 、配置开机启动服务

 

在/etc/init.d/下创建nginx文件,sudo vim /etc/init.d/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/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx# Include nginx defaults if available
if [ -r /etc/default/nginx ]; then. /etc/default/nginx
fiSTOP_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 pidfile
PID=$(cat /usr/local/nginx/conf/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)
if [ -z "$PID" ]; thenPID=/run/nginx.pid
fiif [ -n "$ULIMIT" ]; then# Set ulimit if it is set in /etc/default/nginxulimit $ULIMIT
fistart_nginx() {# Start the daemon/service## Returns:#   0 if daemon has been started#   1 if daemon was already running#   2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \|| return 1start-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 occurredstart-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAMERETVAL="$?"sleep 1return "$RETVAL"
}reload_nginx() {# Function that sends a SIGHUP to the daemon/servicestart-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAMEreturn 0
}rotate_logs() {# Rotate log filesstart-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAMEreturn 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 killedif start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then# Wait for both old and new master to write their pid filewhile [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; docnt=`expr $cnt + 1`if [ $cnt -gt 10 ]; thenreturn 2fisleep 1done# Everything is ready, gracefully stop the old masterif start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; thenreturn 0elsereturn 3fielsereturn 1fi
}case "$1" instart)log_daemon_msg "Starting $DESC" "$NAME"start_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;stop)log_daemon_msg "Stopping $DESC" "$NAME"stop_nginxcase "$?" in0|1) log_end_msg 0 ;;2)   log_end_msg 1 ;;esac;;restart)log_daemon_msg "Restarting $DESC" "$NAME"# Check configuration before stopping nginxif ! test_config; thenlog_end_msg 1 # Configuration errorexit $?fistop_nginxcase "$?" in0|1)start_nginxcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_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; thenlog_end_msg 1 # Configuration errorexit $?fireload_nginxlog_end_msg $?;;configtest|testconfig)log_daemon_msg "Testing $DESC configuration"test_configlog_end_msg $?;;status)status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?;;upgrade)log_daemon_msg "Upgrading binary" "$NAME"upgrade_nginxlog_end_msg $?;;rotate)log_daemon_msg "Re-opening $DESC log files" "$NAME"rotate_logslog_end_msg $?;;*)echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2exit 3;;
esac

 

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

 

现在基本上就可以开机启动了,

 

四、常用命令

sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

 

五、需要注意问题

 

1、nginx配置

nginx.conf中,设置以下几个参数,增加超时时间

fastcgi_connect_timeoutfastcgi连接超时时间,默认60秒fastcgi_send_timeoutnginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒fastcgi_read_timeoutfastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒

2、上传超过1M大的客户端文件无法正常上传,nginx直接报错

上传文件太大,修改了下nginx的配置,就可以了。

client_max_body_size 10M;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1710. 卡车上的最大单元数(排序,模拟)

文章目录1. 题目2. 解题1. 题目 请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] [numberOfBoxesi, numberOfUnitsPerBoxi] : numberOfBoxesi 是类型 i 的箱子的数量。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载…

hdu 1505 City Game

http://acm.hdu.edu.cn/showproblem.php?pid1505 先处理每一行上每一个F为底往上所到达的高度&#xff0c;然后再左右处理。 1 #include <cstdio>2 #include <cstring>3 #include <algorithm>4 #define maxn 10015 using namespace std;6 7 int t;8 int n,m…

使用Python requests post上传图片及示例demo

一、需求&#xff1a; 利用python写demo&#xff0c;上传图片&#xff0c;调用接口&#xff0c;并返回数据 二、requests上传图片参数&#xff1a; resrequests.request("POST",url, dataNone, filesfiles) 三、demo示例&#xff1a; import json import osimpo…

LeetCode 1712. 将数组分成三个子数组的方案数(前缀和 + 二分查找)

文章目录1. 题目2. 解题221 / 3117&#xff0c;前7.1%574 / 9692&#xff0c;前 5.9%周赛前2题如下&#xff1a; LeetCode 5641. 卡车上的最大单元数&#xff08;排序&#xff0c;模拟&#xff09; LeetCode 5642. 大餐计数&#xff08;map计数 二分查找&#xff09; 第4题&am…

总结python处理图片等比例压缩与质量处理的方法

一、使用PIL image 处理 1、在使用PIL image处理图像要获取高质量的关键地方是下面两点&#xff1a; 1、处理时要用 ANTIALIAS&#xff1b;2、保存时是要设置 quality&#xff1b; 2、在python ide 可以这样处理&#xff1a; im.resize(box, Image.ANTIALIAS) im.save(path…

第六周交流会内容

第六周 交流会 -bO莱特 一、接口作为参数&#xff0c;不同的接口调用不同的方法&#xff0c;例如&#xff1a;输出“I love Game”或输出“我喜欢游戏” 接口的思想&#xff1a;在于可以增加很多类都需要实现的功能。比如&#xff1a;各式各样的商品&#xff0c;可能隶属不同公…

Python基础代码练习(30个示例)

1、冒泡排序 2、计算x的n次方的方法 3、计算a*a b*b c*c …… 4、计算阶乘 n! 5、列出当前目录下的所有文件和目录名 6、把一个list中所有的字符串变成小写&#xff1a; 7、输出某个路径下的所有文件和文件夹的路径 8、输出某个路径及其子目录下的所有文件路径 9、输出某个路…

LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)

文章目录1. 题目2. 解题1. 题目 给你一个数组 target &#xff0c;包含若干 互不相同 的整数&#xff0c;以及另一个整数数组 arr &#xff0c;arr 可能 包含重复元素。 每一次操作中&#xff0c;你可以在 arr 的任意位置插入任一整数。 比方说&#xff0c;如果 arr [1,4,1,…

ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项

一、NVIDAI driver显卡驱动安装 首先看一下笔记本显卡型号 lspci |grep VGA 在命令行敲过这个命令后&#xff0c;有些台式机或笔记本会显示nvidia显卡&#xff0c;如下所示&#xff1a; 但是我的笔记本电脑 只显示nouveau卡&#xff08;集成显卡&#xff09; 需要执行下面命…

LeetCode 552. 学生出勤记录 II(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个正整数 n&#xff0c;返回长度为 n 的所有可被视为可奖励的出勤记录的数量。 答案可能非常大&#xff0c;你只需返回结果mod 10^9 7的值。 学生出勤记录是只包含以下三个字符的字符串&#xff1a; A : Absent&#xff0c;缺勤 L : L…

ubuntu定时执行python脚本方法及实例代码

一、前言 本文将介绍ubuntu系统下如何定时执行shell脚本、python脚本&#xff0c;ubuntu系统有一个定时任务的管理器crontab&#xff0c;我们只需要编辑定时任务&#xff0c;然后重启定时任务服务就好了。 二、工具&#xff1a;crontab a、编辑定时任务&#xff1a; crontab -…

LeetCode 940. 不同的子序列 II(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 S&#xff0c;计算 S 的不同非空子序列的个数。 因为结果可能很大&#xff0c;所以返回答案模 10^9 7. 示例 1&#xff1a; 输入&#xff1a;"abc" 输出&#xff1a;7 解释&#xff1a;7 个不同的子序列分别是 &qu…

[Jmeter]Jmeter环境搭建

Jmeter环境搭建 1、 拷贝 \\szpc1450\apache-jmeter-2.7 整个目录到本机(我是放在D盘&#xff0c;以下路径说明以D盘为例) 2、 拷贝\\szpc1450\Tools\autotest softwares\jdk-6u11-windows-i586-p.exe到本机之后进行安装 安装完毕之后添加环境变量 JAVA_HOME C:\Program File…

Python获取磁盘使用信息,python获取GPU信息,python根据进程号获取进程信息,pynvml 获取GPU信息,psutil 获取进程信息,系统信息等

一、工具&#xff1a;psutil模块 psutil是一个跨平台模块&#xff0c;试用相应方法可以直接获取计算机CPU&#xff0c;内存&#xff0c;磁盘&#xff0c;网络等资源使用情况&#xff1b;可以使用我们学习知识与这模块用来做系统监控&#xff0c;性能分析&#xff1b;如果大家熟…

LeetCode 907. 子数组的最小值之和(单调栈)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 A&#xff0c;找到 min(B) 的总和&#xff0c;其中 B 的范围为 A 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此返回答案模 10^9 7。 示例&#xff1a; 输入&#xff1a;[3,1,2,4] 输出&a…

Python环境下,提高pip安装库速度的方法!

一、前言 学习 Python 的话&#xff0c;仅掌握标准库是远不够的&#xff0c;有很多好用的第三方库我们也需要用到的 大家发现 pip install 包名 的方式 安装第三方库的时候&#xff0c;下载速度很慢&#xff0c;有时还会超时&#xff0c;遇到第三方库比较大时候&#xff0c;…

静态变量与静态方法

1&#xff0e;静态变量在C#程序中&#xff0c;没有全局变量的概念&#xff0c;这意味着所有的成员变量只有该类的实例才能操作这些数据&#xff0c;这起到了“信息隐藏”的作用。但有些时候&#xff0c;这样做却不是个明智的选择。假设我们要定义一个图书类&#xff0c;要求该类…

LeetCode 792. 匹配子序列的单词数(二分查找)

文章目录1. 题目2. 解题1. 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。 示例: 输入: S "abcde" words ["a", "bb", "acd", "ace"] 输出: 3 解释: 有三个是 S 的子序列的单词: "…

利用Python从字幕网上下载自己所需要的字幕(热门电影、美剧等)

一、前言 主要需求&#xff1a;利用python从字幕库网站上下载字幕 字幕网址&#xff1a;http://www.zimuku.la/ 二、方法&#xff1a; 1、打开网站&#xff0c;搜索自己所需要的字幕&#xff1a; 2、开始写代码&#xff1a; a、配置标头&#xff0c;手动输入下载的字幕名字…

ASP.NET开发,简化与封装

微软的ASP.NET的开发&#xff0c;就是面向对象的编程&#xff0c;当然前端也能体验至面向对象的话&#xff0c;使用Web控件也必须的。任一控件&#xff0c;我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来。很多场合里&#xff0c;在开发ASP.NET开发中&#xff0c;后…