linux_nginx环境配置
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
# 安装阿里的epel源
国内使用web站点最多的www服务是Nginx
官方网址:nginx.org
什么是Nginx?
开源、支持高性能、高并发的www服务软件,一种http协议的实现
优点:
高并发(静态资源)
占用资源少
功能丰富(反向代理、负载均衡)
高效稳定
Nginx有哪些应用?
- 经典组合 LAMP(linux apache mysql php)
- 现在组合: LNMP(linux nginx mysql php)
- web服务软件,具有反向代理功能,稳定高效运行
- 可以运行在任何已知的平台
Nginx总体为何比apache性能高?
1. Nginx采用epoll IO模型,而apache采用传统select IO模型
2. 对于要求高并发的站点,采用epoll更加高效
Nginx有哪些常见的模块?
1. Nginx核心模块
负责Nginx全局应用,对应配置文件的Main区块和Events区块,包含nginx必须的全局参数配置
2. 标准的http功能模块集合
默认自动安装到Nginx中,不建议改动默认,软件默认配置一般都是最优
如何编译安装Nginx?
安装前首先明白这几个问题,选择什么版本?选择安装目录是什么?下载包放哪?安装Nginx软件相关依赖
这里按照http://www.cnblogs.com/2bjiujiu/p/8067201.html 策略选择版本,并且web集群中其他节点都统一使用该版本,选择其中任何一版稳定版
任何通过编译安装,安装目录统一规定放到 /application 目录下
统一规定,从网站上下载的包放到当前用户家目录下 tools目录下
2. 安装Nginx软件相关依赖
安装依赖软件:pcre pcre-devel openssl openssl-devel
yum install -y pcre pcre-devel openssl openssl-devel # pcre库,开发正则,为了支持Nginx的URL重写rewrite模块 # openssl库,安全加密相关的库
3. 下载并解压
mkdir ~/tools # 创建统一存放下载包的目录 cd ~/tools # 切到这个目录下 wget -q http://nginx.org/download/nginx-1.12.2.tar.gz # 下载源码包 tar -xf nginx-1.12.2.tar.gz # 解压 cd nginx-1.12.2 # 进入源码包
4. 隐藏Nginx软件包信息
1. 更改nginx软件名
vim src/core/nginx.h # 修改全局的参数 13 #define NGINX_VERSION "1.12.2" # 更改版本号
# 更改为 apache最新版本号,迷惑性 14 #define NGINX_VER "nginx/" NGINX_VERSION
# 更改掉 nginx,更改为www 22 #define NGINX_VAR "NGINX"
# 更改NGINX,这个是软件名,更改为WWW
vim src/http/ngx_http_header_file_module.c 49 static u_char ngx_http_server_string[] = "Server: nginx" CRLF; # 把49行 "Server: nginx"改为 "Server: www" # 注意其中空格和格式
2. 更改错误提示
vim src/http/ngx_http_special_response.c 36行 "<hr><center>nginx</center>" CRLF # 把<center>nginx</center> 改为 <center>www</center> # 这里还可以添加标签"<hr><center>www(www.baidu.com) </center>"
3. 添加软件运行用户,编译和安装
useradd web_nginx -s /sbin/nologin -M # 添加web_nginx运行的用户 id web_nginx # 检查 ./configure --user=web_nginx --group=web_nginx --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.12.2/ # --user= 和 --group= 指定用什么身份运行 # --with-http_ssl_module 为HTTPS提供了必要的支持,需要OpenSSL库 # --with-http_stub_status_module 提供对基本状态信息的访问 # --prefix= 指定安装路径,需要后面再指定一个nginx源码包名字目录,做版本号区分 make && make install # 编译和安装
4. 创建软链接
ln -s /application/nginx-1.12.2/ /application/nginx # 去掉版本号,然开发不需要关注版本信息,软件升级的时候,对于开发来说没有任何影响 # 软件调用时候,也不需要关系版本号,软件升级也不影响开发和软件调用
5. 测试
1. 启动Nginx
/application/nginx/sbin/nginx -t # 检查配置文件是否正确 /application/nginx/sbin/nginx # 启动nginx netstat -lntup | grep 80 # 检查
2. 检查
打开浏览器访问 host_ip # 访问主机外网IP地址 # 如果返回Nginx欢迎页面表示Nginx安装成功 curl -I host_ip # 检查是否隐藏了版本号和版本信息
Nginx安装过程中可能出现的错误有哪些?
1. 启动Nginx报错,nginx: [emerg] getpwnam(“web_nginx”) faild
原因: 没有添加nginx运行需要的用户
解决方法: useradd web_nginx -s /sbin/nologin -M
2. 编译过程报错,gcc不全导致错误
解决方法: yum install -y gcc-c++
3. 检查系统初始化时候有没有安装基础包
yun grouplist # 查看已经安装的包 # 重点关注以下包,如果没安装通过 yum groupinstall -y "包名" 进行安装 # Base # Compatibility libraries # Debugging Tools # Development tools
4. 检查服务本地端口、进程和URL
lsof -i :80 # 检查端口80是否有服务
ps -ef | grep nginx # 检查是否有nginx进程 # 检查浏览器输入的主机地址是否正确,是不是主机外网IP,端口连接符号是否是英文格式
5. 查看错误日志信息
其日志文件路径: /application/nginx/logs/error.log # 前提是Nginx安装目录规范为/application和软链接建立正确
# cat /application/nginx/logs/error.log
Web服务错误如何排错
1. 客户端 ping 服务器ip地址
ping 10.0.0.8 # 排除物理线路故障
2. 客户端上telnet 服务器ip地址
telnet 10.0.0.8 80 # 排除防火墙故障
3. liunx客户端检查
curl 10.0.0.8 # 模拟浏览器请求
# wget 10.0.0.8 会把网页下载下来
Nginx配置文件参数
位置: /application/nginx/conf/nginx.conf
worker_processes # 进程数量
events # 模型
worker_connections # 一个进程连接最大连接数
http # http相关配置
include # 包含配置文件关键字
sendfile # 高效分发模式
keepalive_timeout # 一个活着的连接保持时间
server # 虚拟主机,对应一个站点
listen # 监听端口
server_name # 域名,多个中间空格隔开
location # 对域名后字段进行匹配
root # 站点根目录
index # 返回首页地址
error_page # 错误页面信息
什么是虚拟主机?
配置文件中一个server字典对
web服务器中独立的站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序和资源目录,可独立对外提供服务让用户访问
有三个分类
1. 域名
最为广泛,应用外部网站,通过请求头进行区分,直接ip地址访问,默认第一个虚拟主机,在http模块中,多个server就会有多个虚拟主机,通过域名来区分主机
2. 端口
应用于公司内部,网站后台,通过端口来区分主机
3. IP
不支持辅助ip,几乎不用
更改配置文件原则是什么?
1. 备份原文件,格式为: 原配置文件名_时间_修改版本号,这个是规范
/application/nginx/conf/nginx.conf{,._$(date +%F)_v1}
2. 任何单独修改完成,第二次修改需要备份一次,版本号+1
3. 有检查错误方法,先调用检查,一般为 -t 参数
4. 服务通过 reload 进行优雅重启
5. 出现错误立马回滚,回到上一个版本
如何实现资源下载展示?
- 在对应的server中,添加 autoindex on; 字段,在访问没有资源的情况下,将会就这个资源根目录下所有内容都会列出来,提供下载。正常没有这个参数,会提示403错误
Nginx如何配置多个站点?
- 对于多个站点,需要多个server,都写在主配置文件中显得不太专业
- 在conf配置目录下,创建extra目录,用于存放站点server
- 在主配置文件http中添加 include extra/*.conf ,统一包含extra中配置
Nginx状态查看
vim extra/status.conf # 添加nginx状态的虚拟机 server{ listen 80;
server_name status.benmenchuixue.com location /beimen { stub_status on; access_log off; #allow 172.16.1.0设置允许访问的ip段 #deny all,禁止访问
} } # 重启Nginx,然后访问这个域名实现获取nginx状态 # 这里联合监控使用,如果用户直接访问ip,通过rewrit跳转到首页,如果后面有有特殊标# 识将匹配到返回状态信息 # 注意html目录下index.html 和 50x.html会暴露软件版本信息,需要对这两个文件做信息脱敏处理,去掉特征信息展示
如何禁止用户直接通过ip访问服务器?
vim forbid_ip.conf # 写入一下内容 server {
listen 80 default;
server_name _;
return 500;
} # 直接通过ip访问,返回500错误
一键安装nginx
#!/bin/sh # author: beimenchuixue
# email: 422083556@qq.com
# blog: http://www.cnblogs.com/2bjiujiu/ . /etc/init.d/functions install_path="/application"
nginx_package_name="nginx-1.12.2.tar.gz"
nginx_download_url="http://nginx.org/download/$nginx_package_name"
nginx_run_user="nginx"
down_path="$HOME/tools"
nginx_relay="pcre-devel openssl-devel gcc-c++"
change_name="www"
change_version="2.2.15" [ -d $down_path ] || {
mkdir $down_path -p
action "init download path is" /bin/true
} download_nginx() {
cd $down_path
wget -q $nginx_download_url
[ $? -eq 0 ] && {
action "download nginx is" /bin/true
} || {
action "download nginx is" /bin/false
exit 1
}
}
# download_nginx install_nginx_relay() {
yum install -y $nginx_relay &> /dev/null
[ $? -eq 0 ] || {
action "install_nginx_relay is" /bin/false
exit 2
}
action "install_nginx_relay is" /bin/true
}
# install_nginx_relay add_run_nginx_user() {
id $nginx_run_user &> /dev/null
[ $? -eq 0 ] || {
useradd $nginx_run_user -s /sbin/nologin -M
}
action "add_run_nginx_user is" /bin/true
}
# add_run_nginx_user untar_nginx() {
cd $down_path
tar -xf $nginx_package_name
[ $? -eq 0 ] || {
echo "$nginx_package_name not exit"
action "install nginx is" /bin/false
exit 3
}
action "tar -xf $nginx_package_name is" /bin/true
} hiden_version() {
cd $down_path
cd `echo "$nginx_package_name"|sed "s#.tar.gz##g"`
sed -i "s/`echo "$nginx_package_name"| sed "s/.tar.gz//g"\
|sed "s/nginx-//g"`/${change_version}/g" src/core/nginx.h
sed -i "s/nginx\//${change_name}\//g" src/core/nginx.h
sed -i "s/\"NGINX\"/\"`echo $change_name|tr '[a-z]' '[A-Z]'`\"/g" src/core/nginx.h
sed -i "s/Server: nginx/Server: ${change_name}/g" src/http/ngx_http_header_filter_module.c
sed -i "s/<center>nginx</<center>${change_name}</g" src/http/ngx_http_special_response.c
action "nginx hiden version is" /bin/true
}
# hiden_version install_nginx() {
cd $down_path
cd `echo "$nginx_package_name"|sed "s/.tar.gz//g"`
./configure \
--user=$nginx_run_user \
--group=$nginx_run_user \
--with-http_ssl_module \
--with-http_stub_status_module \
--prefix=$install_path/`echo "$nginx_package_name"|sed "s#.tar.gz##g"` &> /dev/null
[ $? -eq 0 ] && {
action "nginx configure is" /bin/true
} || {
action "nginx configure is" /bin/false
exit 4
} make &> /dev/null && {
action "nginx make is" /bin/true
} || {
action "nginx make is" /bin/false
exit 5
} make install &> /dev/null && {
action "nginx make install is" /bin/true
} || {
action "nginx make install is" /bin/true
eixt 6
} ln -s $install_path/`echo "$nginx_package_name"|sed "s#.tar.gz##g"` $install_path/nginx && {
action "create softlink is" /bin/true
} || {
action "create softlink is" /bin/false
exit 7
}
action "nginx install is" /bin/true
}
# install_nginx main() {
download_nginx
untar_nginx
hiden_version
install_nginx_relay
add_run_nginx_user
install_nginx
}
main
linux_nginx环境配置的更多相关文章
- uboot环境配置
uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...
- 史上最全Windows版本搭建安装React Native环境配置
史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...
- Electron的环境配置
原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...
- Python开发环境配置
好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...
- PHP_环境配置_python脚本_2017
Apache配置 需要安装:VC2015 httpd-2.4.16-win32-VC14.zip VC14就是2015的环境. 又比如:php-5.6.12-Win32-VC11-x86 VC11就是 ...
- PHP环境配置
PHP环境配置 1.Apache的安装 第一步: 1. 双击httpd-2.2.17-win32-x86-no_ssl.msi.出现 Windows 标准的软件安装欢迎界面,直接点“Next”继 ...
- Visual studio 通用开发环境配置:SDL,FFMPEG为例
引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...
- windows 7下React Native环境配置
React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...
- seL4环境配置
转载声明:希望大家能够从这里收获知识之外,也能够体会到博主撰写博客的辛苦.个人博客势单力薄,对于强转甚至转载博客访问量高于原文的例子不在少数. 希望能够得到大家关注的同时,也能够稍微体谅一下博主的 ...
随机推荐
- 【HTTP协议】
一.简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议 ...
- C++继承分析
面向对象的三大特性之一就是继承,继承运行我么重用基类中已经存在的内容,这样就简化了代码的编写工作.继承中有三种继承方式即:public protected private,这三种方式规定了不同的访问权 ...
- mimtproxy和arpspoof实现局域网MITM
本地环境 环境:kali系统 目标机器:192.168.0.101 局域网网关:192.168.0.1 当前网络网卡端口:wlan0 arp欺骗流程 命令行开启本地数据转发: echo > /p ...
- [转载]mysql中实现行号,oracle中的rowid
mysql中实现行号需要用到MYSQL的变量,因为MySql木有rownumber. MYSQL中变量定义可以用 set @var=0 或 set @var:=0 可以用=或:=都可以,但是如果变量用 ...
- Java 中的函数式编程(Functional Programming):Lambda 初识
Java 8 发布带来的一个主要特性就是对函数式编程的支持. 而 Lambda 表达式就是一个新的并且很重要的一个概念. 它提供了一个简单并且很简洁的编码方式. 首先从几个简单的 Lambda 表达式 ...
- 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备
在上一篇 分布式文件系统FastDFS如何做到高可用 中已经介绍了FastDFS的原理和怎么搭建一个简单的高可用的分布式文件系统及怎么访问. 高可用是实现了,但由于我们只设置了一个group,如果现在 ...
- Spring mvc之 发邮件(qq.163...)
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
- BZOJ 1293: [SCOI2009]生日礼物【单调队列】
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2534 Solved: 1383[Submit][Stat ...
- HDU2988-Dark roads,HDU1233-还是畅通工程-最小生成树
最小生成树: 中文名 最小生成树 外文名 Minimum Spanning Tree,MST 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...