目录
2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。
3)然后在 Microsoft Store 里安装任意 Linux 版本。
4)使用 windows 子系统,需要在 Microsoft Store 安装 windows Terminal 工具,方便进入 Linux 子系统
2)nginx 模块 ngx_http_fastcgi_module 配置文档(php 配置部分)
2)本案例的 fastcgi_params 内的文件内容如下:
八、Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来处理这些映射关系
这只能是一种构想,现实中并不是随心所欲都能够去配置主机,也许别人包含了一段配置在根目录下面,权限受限的情况怎么办?比如说像百度云的虚拟主机就是这样的,对于许多中小型网站来说性能已经足够了。今天,就用 CodeIgliter 来开刀改造一下,把 public 下面的 index.php 文件放入根目录下面,里面的目录和文件暴露在根目录下面,也就暴露在互联网下面了(这种方法是不可取的,以前的 CodeIgliter 就是这样干的),修改了一下代码,使框架运行正常,这就是 CodeIgliter 原来的样子,现在越来越像 laravel 了。
根目录下面添加进 phpMyAdmin Mysql 数据库管理、phpRedisAdmin Redis 数据库管理和 Kodexplorer 资源管理器。这些文件和目录全都暴露在根目录下,也就暴露在了互联网中。下面的配置就是解决在这种情况下,如何加密和禁用这些目录和敏感文件。
一、统一环境:
1)安装docker-desktop:
Docker Desktop for Mac and Windows | Dockerhttps://www.docker.com/products/docker-desktop
2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。
WSL 允许你在 Windows 10 上运行 Linux 二进制文件。关于如何安装并启用 WSL2,请参阅微软开发者文档:
安装 WSL | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/wsl/install
3)然后在 Microsoft Store 里安装任意 Linux 版本。
4)使用 windows 子系统,需要在 Microsoft Store 安装 windows Terminal 工具,方便进入 Linux 子系统:
5)lnmp 镜像地址:.2233466866/lnmp - Docker Image | Docker Hubhttps://hub.docker.com/r/2233466866/lnmp6)docker 操作命令,几个命令就可以解决了:
# 以下步骤要一个一个地来
# 以下内容如果复制,不要复制 $
# 如果不是root用户,还需将当前用户加入 docker 用户组
$ sudo gpasswd -a ${USER} docker
# 1.拉取镜像
$ docker pull 2233466866/lnmp
# 2.生成容器命令
$ docker run -dit \
-p 80:80 \ # 与宿主机绑定端口,才能用 http://localhost 访问
-p 443:443 \ # 与宿主机绑定端口,才能用 https://localhost 访问(需要配置)
-p 3306:3306 \ # MySQL 数据库访问端口
-p 9000:9000 \ # nginx 与 php 服务通信端口,同一容器下其实不用配置,官方偏要这样
-v /home/user/www:/www \ # 容器内站点目录绑定到宿主机目录
-v /home/user/mysql:/data/mysql \ # 容器内数据库目录绑定到宿主机目录
--restart=always \ # 开机容器自启
--privileged=true \ # 使用该参数,容器内的 root 用户拥有真正的 root 权限。
--name=lnmp \ # 容器名称
2233466866/lnmp # 镜像名称
# user 是你自己的用户名,不要完全照抄。
# 以上的多行命令复制到 windows Terminal 命令行,按确定键即可。
# 3. 遍历容器,主要是获取容器 id,命令中 lnmp 可以换成 id
$ docker ps
# 4.进入容器命令,注意:容器名称要一致
$ docker exec -it lnmp /bin/bash
# 5.修改 Nginx 配置
$ vi /usr/local/nginx/conf/nginx.conf
# 注释掉 server 及以后的内容,添加 include /www/nginx.conf
7)MySQL 数据库可能要用到密码破解,这里不再详述,请搜索其它文章解决。
8)不要在 Windows 环境下尝试 nginx 配置,特别是在像 phpStudy、Wamp等等这样的环境下尝试 nginx 配置,因为 Windows 环境下安装的软件比较多,有些软件自带环境,相互干扰,使配置失效。尤其同时安装上 docker-desktop 和 phpStudy 这两个软件,干扰更大。
9)进入子系统站点目录编辑 code . 即可打开 VSCode 编辑器并且打开此目录,代码如下:
myusername@DESKTOP-J1SOKCR:~$ code .
二、站点目录结构:
三、nginx 详细配置文件:
参照官方文档:
1)nginx http 核心模块:
2)nginx 模块 ngx_http_fastcgi_module 配置文档(php 配置部分):
3)php 官方安装配置示例:
PHP: Unix 系统下的 Nginx 1.4.x - Manualhttps://www.php.net/manual/zh/install.unix.nginx.php
# 站点日志配置
error_log /www/writable/logs/z_error.log;
access_log /www/writable/logs/z_$host.log main;
# 防爆破破解密码,每秒钟只能允许访问 80 次,超过报错。
# zone=name:size,分配一个以 name 为名的并且大小为 size 的内存空间,用来存储访问的频次信息,对应:limiter:10m;
# rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过。
# 参考官方文档配置:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
#
# 注意:这里 rate=80r/s 的值不要太低,否则 phpMyAdmin 连接数据库时会报 503 错误(设置成 50r/s 就开始报错了)!!
limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s;
# 站点配置
server {
listen 80; # 访问站点的端口
server_name localhost; # 访问站点的域名
root /www; # 站点映射的本地绝对目录。绝对目录: /directory/subdirectory 相对目录: ./directory/subdirecto