目录
一、nginx
1、nginx网站服务:
是一个高性能,轻量级的web服务软件,稳定性强,对系统的资源消耗低
高性能:对http并发连接的处理能力高,单台物理服务器可支持30000-50000个并发请求。(在实际操作中,为了维持服务器的稳定,一般会设置在15000-20000个左右)
轻量级:nginx软件很小,安装所需的空间也很小
2、nginx的主要功能:
- 处理静态网页:支持html、htm 图像
- 支持反向代理(负载均衡)。负载均衡靠算法实现
- 有处理动态内容能力较差,有Tomcat或者srpingclound处理动态的程序
- 虚拟主机:一个nginx可以配置多个虚拟主机。每一个虚拟主机都可以作为一个域名和站定。每个虚拟主机都可以拥有独立的配置和资源
- 可以实现URL重定向:可以对URL的请求进行修改和重新定向(跳转页面)
- nginx自带缓存机制:既可以缓存静态文件也可以缓存动态内容
- 日志记录:服务日志,访问日志和报错日志(在nginx程序目录中)。控制日志还是在/var/log/messages中
- 可作为代理服务器,通过代理可以访问其他的后端服务器
3、安装nginx:
先关闭防火墙和安全机制:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
然后安装依赖环境;
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
创建程序用户:useradd -M -s /sbin/nologin nginx
安装包解压
开始配置:
./configure --prefix=/usr/local/nginx \ #指定安装目录
--user=nginx \ #指定运行用户
--group=nginx \ #指定运行组
--with-http_ssl_module \ #开启对http的ssl加密支持
--with-http_v2_module \ #支持http2.0协议
--with-http_realip_module \ #允许nginx获取客户端的真实ip
--with-http_stub_status_module \ #启动了stud_status模块,可以获取nginx的访问和状态信息
--with-http_gzip_static_module \ #支持压缩文件内容 图片
--with-pcre \ #相当于动态库
--with-stream \ #开启tcp/udp的代理模块支持,也就是四层转发
--with-stream_ssl_module \ #支持四层转发的ssl加密
--with-stream_realip_module #nginx可以从四层转发的头部信息中获取客户端的真实ip
编译安装make && make install
进入软件目录:
conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件
html:保存nginx的web文件,.html结尾的文件,图片
50x.html:是nginx默认的报错提示页面
logs:保存日志的目录,路径可以改
access.log:记录的是访问日志记录
error.log:记录报错日志403 404 500
sbin:放的是nginx的二进制启动脚本
chown -R nginx.nginx /usr/local/nginx #修改权限
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ #让系统识别nginx的操作命令
vim /lib/systemd/system/nginx.service #修改配置文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
mkdir -p /usr/local/nginx/run/
#创建目录
vim /usr/local/nginx/conf/nginx.conf
#修改配置文件
pid /usr/local/nginx/run/nginx.pid;
#找到 pid的位置修改
改配置文件,一定要重启服务
systemctl daemon-reload
#重新加载配置
systemctl start nginx.service
vim /usr/local/nginx/html/index.html
100 dd 删除原内容
添加新内容:
this is test!
打开浏览器,访问ip地址
4、nginx命令:
nginx -t:检测nginx配置文件以及配置文件语法是否正确
nginx -v:只查看版本
nginx -V:及查看版本又查看nginx支持的配置模块
nginx -s:给nginx主程序发送信号,不能开启nginx服务
nginx -s信号类型:stop、restart、reload
yum安装方式:需要epel源,直接安装nginx
工作中关键的应用程序以编译安装为主
5、nginx的配置文件内容:
1、主配置文件:nginx.conf
vim /usr/local/nginx/conf/nginx.conf
全局配置:
2、events块:
配置影响nginx服务器与用户的网络连接
一般设置并发15000-20000个
进入limits.conf
vim /etc/security/limits.conf
最后一行添加:
# 65535 为Linux系统最大打开文件数
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
没办法source和sysctl -p,修改完之后只能重启reboot
注意:设置保存后,需要重新ssh连接才会看到配置更改的变化
vim /etc/security/limits.conf
# 65535 为Linux系统最大打开文件数
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
reboot
设置完以上的才能应用最大并发:
3、http块:
http块:配置代理 缓存 日志 虚拟主机和第三方模块
4、http中的server模块:
配置虚拟主机的设备。在http的模块中可以有多个server(可以配置多个虚拟主机)
5、location块:
location模块只能配置在server模块中,作用是匹配uri,一个server模块中可以有多个location,可以匹配多个location
注意:location 匹配的内容来源是来自网页的URI,而不是URL
(URL代表整个链接如:www.baidu.com/images/search,而URI则是/images/search。
所以nginx的location匹配的是URI)
6、root目录和alias目录:
nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:
alias:指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;root指定访问页面的根目录是拼接
root:指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;alias指定的是完整目录绝对路径
location /:/表示nginx配置文件的家目录,默认就是/。所以访问20.0.0.10就是20.0.0.0/
location /test:表示访问test目录。20.0.0.10/test。
访问20.0.010/test,就会跳转到下一行root/alias目录里执行index.html文件
6、nginx的四大功能模块:
1、proxy:代理模块,核心的功能模块之一,配置反向代理的功能
proxy_pass 指定
proxy_pass定义在location当中
- headers功能模块:
处理请求和头部的响应信息,主要用来获取客户端的真实ip
- upstream模块:
七层反向代理模块,只能配置在http模块中,或者stream模块中
- stream模块:
四层反向代理模块,只能配置在全局模块中(最上面),不能在http模块中
7、实验:
1、统计nginx的访问状态:status
一个server里可以有多个location
Active Connections:2
表示当前活动连接数
server accepts 表示已经处理的连接数
handled 表示成功的tcp握手次数
requests 已经处理的请求数
Reading:0 服务端正在从客户端读取数据,正在读取客户端请求的连接数
Writing:1 服务器正在将响应数据发送给客户端,正在向客户端写入相应的连接数
Waiting:1 表示有链接处于空闲状态,当前等待客户端请求的连接数。time_wait
2、配置nginx的虚拟主机
1、基于域名的虚拟主机
创建域名家目录
vim /etc/hosts 配置本地hosts文件,做域名映射,一个ip可以对应对个域名
再去虚拟机浏览器访问域名:
3、基于ip的虚拟主机
ifconfig ens33:0 20.0.0.100/24
加一个监听地址+端口就行
4、基于端口配置虚拟主机:
20.0.0.100:8888
5、基于授权的访问控制:(一般内部来值访问控制)
先安装httppasswd工具
yum install -y httpd-tools
实验4、基于客户端的访问控制:
删除设密码
二、LNMP构建DIscuz论坛
1、LNMP:
LNMP:企业网站的应用模式之一,早期的论坛架构,就是LNMP搭建的
L:linux,平台,操作系统,是另外是哪个组件的运行平台
N:nginx 提供前端页面
M:MySQL数据库,开源关系型的数据库,主要用来保存用户的账号信息
P:PHP,是一种开发动态页面的编程语言,解析动态页面,起到中间件的作用(在nginx和数据库的中间),在中间沟通nginx和数据库,以请求数据库上的信息。
2、安装配置步骤
装数据库:
8g内存,4核
先清一下缓存
关闭防护墙和安全机制
mysql -u root -p123456 登录
然后安装PHP
PHP的三个配置文件:
php-fpm.conf #PHP的主配置文件(进程服务)
php.ini #PHP的主配置文件(对全局生效)
www.conf #PHP的扩展配置文件
1170gg
/usr/local/php/etc/php-fpm.conf文件
先cp改名,去掉后缀
/usr/local/php/erc/php-dpm.d/www.conf
起一个服务看一下端口,端口起服务真正可用
配置nginx:
fastcgi:是一种用于连接web服务器(nginx httpd)与应用程序之间的通信协议
可以提供一种高效 可靠 灵活的方式处理动态页面的内容请求
web服务程序和动态应用程序之间进行交互
fastcgi_pass 127.0.0.1:9000 设置fastcgi的服务器地址和端口
也就是PHP的监听地址和端口
fastcgi_index index.php:指定请求目录时默认访问的文件名
.php .gsp就是动态页面的结尾
.html 静态页面的结尾
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
修改路径,将请求的根目录设备为nginx的默认工作目录。匹配root html
fastcgi
$document_root:表示nginx的根目录,默认的工作目录,把这个工作目录的值再传给PHP,让PHP可以调用这个工作目录
include fastcgi_params;
集成,把fastcgi
在数据库操作,让PHP能访问数据库的内容
exit退出
安装论坛文件:
unzip