****Web服务:****Apache nginx tomcat
平常所浏览的网页,都是通过网页语言编写出来的,要想让其他人访问到自己编写的网页,需要将网页放到服务器上(Apache|nginx|tomcat)
网页:
静态网页: .html .htm结尾
动态网页: .jsp .php结尾
一、Nginx介绍
2006年由俄罗斯lgor sysoev编写,全称为engine X, 缩写为nginx,官方站点为http://nginx.org,2013年发出企业版本Nginx Plus,二次发行版本:Tengine, OpenResy等
nginx官网 : https://nginx.org
Apache:2W nginx:5W
Nginx是⼀个开源且⾼性能、可靠的HTTP中间件、代理服务。
开源: 直接获取源代码
⾼性能: ⽀持海量并发
常见的HTTP服务
1.HTTPD -> Apache基⾦会 三种工作模式:prefork worker event
2.IIS -> 微软
3.GWS -> Google Brog kubernets
4.openrestry
5.tengine -> 淘宝基于Nginx二次开发(开源)
6.nginx
Nginx特性:
1 模块化设计,较好的扩展性,早期不支持模块的动态装卸载
2 高可靠性,基于master/worker模式
Master:负责启动服务,分析配置文件,负责启动子进程和worker进程
Worke:真正响应用户请求进程
3 支持热部署(平滑迁移):不停机更新配置文件,更换日志文件,更新服务器程序版本
4 内存消耗低: 10K个keep-alive连接模式下的非活动连接仅消耗2.5M内存
5 支持event-driven事件驱动模型,aio驱动机制,mmap内存映射机制
nginx基本功能:
1 静态资源的web服务器,自身只能简单的接收和响应http
2 http协议的反向代理服务器
3 pop3,smtp imap4等邮件协议的反向代理
4 能缓存打开的文件(元数据缓存:文件的描述符等信息),能加快文件的打开速度
5 支持FastCGI(php-fpm),UWSGI(python web framwork框架)等协议机制,实现代理后端应用程序交互
6 模块化(非DSO机制),可扩展性
7 支持过滤器,例如ZIP,SSI(服务端包含)
8 支持SSL加密机制
二、Nginx安装部署
方法一:yum安装(需联网)
1.保证拥有epel源

2.直接安装nginx服务
yum -y install nginx
3.启动并设置开机自启
systemctl enable nginx --now

4.访问测试

方法二:源码部署
1.下载源码包
bash
wget https://nginx.org/download/nginx-1.26.3.tar.gz
tar -zxf nginx-1.26.3.tar.gz -C /usr/src
2.安装依赖组件
bash
yum -y install pcre-devel zlib-devel
3.创建nginx程序用户
bash
useradd -M -s /sbin/nologin nginx
4.编译安装
bash
cd /usr/src/nginx-1.26.3
##生成makefile
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
解释:
--prefix=/usr/local/nginx ##指定服务安装目录
--user=nginx ##指定用户
--group=nginx ##指定用户组
--with-http_stub_status_module ##支持状态统计,便于查看服务器的连接信息
5.优化命令路径
bash
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
nginx -v

6.添加systemd服务文件
bash
cat <<EOF>> /usr/lib/systemd/system/nginx.service
[Unit]
Description=Nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
bash
###重新加载服务文件
systemctl daemon-reload
7.启动nginx并设置开机自启
bash
systemctl enable nginx --now
systemctl status nginx

8.验证:
浏览器访问: http://192.168.100.101

三、Nginx常见配置和性能优化
四、实现类似京东电商网站系统(LNMP架构)
项目官网: ShopXO - 企业级B2C免费开源电商系统
1.搭建MySQL数据库
(1)安装数据库
bash
yum -y install mariadb mariadb-server
(2)启动服务并设置开机自启
bash
systemctl enable mariadb --now
(3)设置账号密码
bash
mysql
CREATE USER 'root'@'%' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
##创建数据库
create database shopxo;
quit
2.安装PHP
(1)安装php相关包
php 包是php代码的解释器
php-fpm 包用于管理php进程接收请求
php-mysql 包用于与MySQL数据库集成,可连接MySQL数据库并进行增删改查 php-gd包用于帮助
php-gd 处理图片的扩展,如生成图片、裁剪图片、缩放图片等
bash
yum -y install yum-utils http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php82
yum -y install php php-fpm php-mysqlnd php-gd mariadb mariadb-server
(2)修改配置文件
bash
vim /etc/php-fpm.d/www.conf
24 user = nginx
26 group = nginx
#取消注释,开启PHP状态页面,并改名为/php_status
240 pm.status_path = /php_status
(3)更改php时区
bash
vim /etc/php.ini
923 date.timezone = "Asia/shanghai
(4)启动php服务
bash
systemctl enable php-fpm --now

3.Nginx对接php
vim /usr/local/nginx/conf/nginx.conf
#配置文件内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
#支持php格式
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#php相关注释取消
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
}
4.搭建商城系统
(1)下载项目源码
wget https://github.com/gongfuxiang/shopxo/archive/v6.4.0.zip
(2)解压到nginx网页目录
bash
unzip v6.4.0.zip
mv v6.4.0.zip/. /usr/local/nginx/html