Nginx相关与其基础构建

nginx相关

一款高性能,轻量级Web服务软件,具有稳定性高、系统资源消耗低、对HTTP并发连接的处理能力高等优点。单台物理服务器可支持30000-50000个并发请求。

工作原理

Nginx 由内核和模块组成。

Nginx 本身做的工作实际很少,当它接到一个 HTTP 请求时, 它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配 置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。
通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块(当然,多个 location 可以复用同一个模块)。handler 模块负责处理请求,完成响应内容的生成,而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑, Nginx 的功能才会如此强大。

模块分类

从结构上

核心模块:HTTP 模块、EVENT 模块和 MAIL 模块;
基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块;
第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。

从功能上

Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改 headers 信息等操作。Handlers 处理器模块一般只能有一个;
Filters(过滤器模块):此类模块主要对其他处理器模块输出的内容进行修改操作,最后由 Nginx 输出;
Proxies(代理类模块):此类模块是 Nginx 的 HTTP Upstream 之类的模块,这些模块主要与后端一些服务比如 FastCGI 等进行交互,实现服务代理和负载均衡等功能。

Nginx 的进程模型 在工作方式上,Nginx 分为单工作进程和多工作进程两种模式
在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;
在多工作进程模式下,每个工作进程包含多个线程。Nginx 默认为单工作进程模式。

Nginx 在启动后,会有一个 master 进程和多个 worker 进程。
master 进程主要用来管理 worker 进程,主要包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动 重新启动新的 worker 进程。 master 进程充当整个进程组与用户的交互接口,同时对进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker 进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。

Nginx+FastCGI运行原理

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每.次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

Nginx 不支持对外部程序的直接调用或者解析,所有的外部程序(包括 PHP)必须通过FastCGI 接口来调用。FastCGI 接口在 Linux 下是 socket(这个 socket 可以是文件 socket, 也可以是 ip socket)。 wrapper 为了调用 CGI 程序,还需要一个 FastCGI 的 wrapper(wrapper 可以理解为用于启动另一个程序的程序),这个 wrapper 绑定在某个固定 socket 上,如端口或者文件 socket。当 Nginx 将 CGI 请求发送给这个 socket 的时候,通过 FastCGI 接口,wrapper 接收到请求,然后 Fork(派生)出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着 wrapper 再将返回的数据通过 FastCGI 接口,沿着固定的 socket传递给 Nginx;最后 Nginx 将返回的数据(html 页面或者图片)发送给客户端。
在这里插入图片描述
客户机发送出消息是先分析动静态,静态的话,nginx自己消化,动态就将请求发送给Socket,连接到FastCGI,fastCGI接口调用第三方程序去执行FastCGI下的一些脚本,处理信息,处理完后园路返回。

服务搭建流程

在关闭防火墙之后安装必要的软件包
yum -y install pcre-devel zlib-devel
cre-devel 是perl语言的正则表达式库
zlib-devel 软件包的开发包,一个函数库,库里面包括头文件,静态库甚至源码等资源

创建不可登录,不带宿主的用户nginx
useradd -M -s /sbin/nologin nginx

解压缩,配置文件
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2/
./configure \
–prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
–user=nginx --group=nginx#指定其运行时的账户与组
–with-http_stub_status_module#将状态模块启用

安装
make && make install

创建链接:把启动该nginx命令创建一条链接,以便在本地使用
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t 语法检查 等同于apache的 httpd -t
nginx 服务启动等同于apaxhe systemctl start httpd
在这里插入图片描述
开启,关闭nginx服务简写命令
killall -1 nginx 服务启动
killall -3 nginx 服务关闭\

创建管理脚本
vi /etc/init.d/nginx
在这里插入图片描述
chmod +x /etc/init.d/nginx #添加可执行权限
chkconfig --add nginx
chkconfig --list
在这里插入图片描述
编辑配置文件
ln -s /usr/local/nginx/conf/nginx.conf /etc
vi /etc/nginx.conf
在这里插入图片描述
nginx -t 检查出现警告,原因:系统本地打开资源数默认1024,设置超过默认值
修改
ulimit -n 查看打开资源数
ulimit -n 65535 >> /etc/rc.local 修改资源数为65535
在这里插入图片描述

开启统计模块

vi /etc/nginx.conf
在这里插入图片描述
出现问题:因为磁盘上服务更改,系统要重新加载
在这里插入图片描述
需要重新告诉体统加载
在这里插入图片描述
在浏览器上访问进行检验
在这里插入图片描述
nginx status 相关
active connections 活跃的连接数量
server accepts handled requests 总共处理了n个连接,成功创建n次握手,总共处理了n个请求
reading: 读取客户端的连接数
writing: 响应数据到客户端的数量
waiting: 开启keep-alive的情况下,这个值等于active (reading+writing) 意思就是Nginx已经处理完正在等候下一次请求指令的驻留连接

查看日志
cd /usr/local/nginx/logs/
ls -lh
cat aa.com.access.log
在这里插入图片描述

配置nginx验证功能

安装软件包
yum -y install httpd-tools
设置需要验证的用户
htpasswd -c /usr/local/nginx/passwd.db ph
在这里插入图片描述
开启验证功能
vi /etc/nginx.conf
在这里插入图片描述
重启nginx后登录
在这里插入图片描述
nginx不同于apache,验证管理是按照顺序进行执行的
在这里插入图片描述
重启后任未起作用
在这里插入图片描述

配置虚拟主机

基于域名

vi /etc/nginx.conf (根处为root /var/www/aa;)
在这里插入图片描述
在这里插入图片描述
创建网页文件
mkdir -p /var/www/aa
mkdir -p /var/www/bb
echo “< h1>aaaaaaa” > /var/www/aa/index.html
echo “< h1>bbbbbbbbbb” > /var/www/bb/index.html
映射
在这里插入图片描述
检查
在这里插入图片描述

基于ip

创建虚拟网卡地址
ifconfig ens33:1 192.168.1.100/24
在这里插入图片描述
编辑配置文件
vi /etc/nginx.conf
在这里插入图片描述
重启后测试
在这里插入图片描述

基于端口

vi /etc/nginx.conf
修改端口
在这里插入图片描述
重启后检查
在这里插入图片描述

安装mysql数据库

yum -y install ncurses ncurses-devel bison cmake
ncurses ncurses-devel:字符终端下屏幕控制的基本库
bison :自动生成语法分析器程序
cmake :跨平台的安装编译工具

创建程序用户(无法登录用户)
useradd -s /sbin/nologin mysql

解压缩文件
tar zxvf mysql-boost-5.7.20.tar.gz

编辑功能模块
cd mysql-5.7.20/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc -DSYSTEMD_PID_DIR=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DWITH_SYSTEMD=1
注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache. txt文件删除,然后再重新CMAKE, 否则依然会出错
-DCMAKE_ INSTALL_ PREFIX=/usr/ local/mysql \ #安装目录 安装路径
-DMYSQL_ UNIX_ ADDR=/usr/ local/mysql/mysql. sock \ #指定套接字文件的存储路径套接字:客户端访问mysql数据库的一个接口
-DSYSCONFDIR=/etc #配置my. cnf的目录 配置文件路径,(根目录)
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #主服务进程所在路径 (进程文件目录)
-DDEFAULT_CHARSET=utf8 \ #默认字符集
-DDEFAULT_COLLATION=utf8_ general ci \ #默认编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #启用InnoDB引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #启用ARCHIVE引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #启用BLACKHOLE引擎
-DWITH_ PERFSCHEMA_STORAGE_ENGINE=1 \ #启用perfschema引擎
-DMYSQL_DATADIR=/usr/ local/mysql/data \ #数据存储路径 (数据库目录)
-DWITH_B0OST=boost \ #boost库是为C++语言标准库提供扩展的一些C++程序库的总称
-DWITH_SYSTEMD=1 这是MySQL 5.7原生支持Systemd的选项, 如果要是用systemctl启动,就必须开启。 (开机自启动,管理mysql服务)

编译安装
make && make install

权限配置,编辑配置文件
chown -R mysql.mysql /usr/local/mysql/ 权限配置
vi /etc/my.cnf 编辑配置文件
在这里插入图片描述
需要用到的环境复制给PATH
echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile
source /etc/profile
echo $PATH
在这里插入图片描述
数据库初始化设置
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
在这里插入图片描述
拷贝服务文件,并启动
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
在这里插入图片描述
设置数据库登录密码
mysqladmin -uroot -p password ‘123123’
mysql -uroot -p
在这里插入图片描述

安装配置php

yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
libjpeg libjpeg-devel :jpeg图像压缩库
libpng libpng-devel :png图像压缩库
freetype freetype-devel :字体引擎
libxml2 libxml2-devel :解析Xml程序库
zlib zlib-devel :数据压缩
curl curl-devel :传输工具
openssl openssl-devel :安全通信

解压软件包
tar jvxf php-7.1.10.tar.bz2

配置功能模块
cd php-7.1.10/
./configure --prefix=/usr/local/php --with-mysql-sock=/usr/local/mysql/mysql.sock --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-fpm --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer --enable-zip

–prefix=/usr/local/php : 安装路径
–with-mysql-sock=/usr/local/mysql/mysql.sock :套接字路径
–with-mysqli : 调用mysql存储过程
–with-zlib : 打开zlib函式库
–with-curl : 调用curl规则
–with-gd : 图像处理
–with-jpeg-dir : 支持jpeg格式
–with-png-dir : 支持png格式
–with-freetype-dir :打开字体引擎
–with-openssl : 打开ssl套接字功能
–enable-fpm : 加载fpm模块
–enable-mbstring 支持utf-8功能
–enable-xml : 支持xml文件格式
–enable-session : 开启会话
–enable-ftp : 开启ftp扩展
–enable-pdo : 访问接口
–enable-tokenizer:分词器
–enable-zip: 对zip文件支持

编译安装
make && make install

编辑配置文件
cd php-7.1.10/
cp php.ini-development /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置及优化FPM模块

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
cd /usr/local/php/etc/
vi php-fpm.conf
在这里插入图片描述
启动fpm模块
php启动时,启动php-fpm模块,模块启动时会生成9000号端口,即FastCGI接口
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini #手动启动
在这里插入图片描述
创建链接:让/usr/local/php/bin/下生成的所有命令都链接到/usr/bin下
ln -s /usr/local/php/bin/* /usr/bin

让nginx支持php功能
vi /etc/nginx.conf
在这里插入图片描述
创建php网页
vi /usr/local/nginx/html/index.php
在这里插入图片描述
在这里插入图片描述

测试数据库

mysql -uroot -p123123
create database bbs; 创建数据库
grant all privileges on bbs.* to ‘bbsuser’@‘localhost’ identified by ‘admin123’; 本地授权
grant all privileges on bbs.* to ‘bbsuser’@’%’ identified by ‘admin123’; 远程授权
flush privileges; 刷新
在这里插入图片描述
配置pjh网页
vi /usr/local/nginx/html/index.php
在这里插入图片描述
在这里插入图片描述

部署论坛

解压软件包
unzip Discuz_X3.4_SC_UTF8.zip

给安装论坛的文件加权限
cd dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs
cd /usr/local/nginx/html/bbs
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

在浏览器上访问
http://20.0.0.10/bbs/install/index.php
在这里插入图片描述
在这里插入图片描述
安装完成
在浏览器上访问
http://20.0.0.10/bbs/index.php
在这里插入图片描述

将安装目录设置为仅自己可见
mv install/ install.lock
chmod 600 install.lock/、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值