# ThinkPHP 8 MongoDB **Repository Path**: GuoDapeng/think-php-8-mongo-db ## Basic Information - **Project Name**: ThinkPHP 8 MongoDB - **Description**: ThinkPHP 8 MongoDB 测试 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-02-15 - **Last Updated**: 2024-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 视频 https://www.bilibili.com/video/BV1Vp421d7Z4 ThinkPHP 8.0 + MongoDB 集群 =============== ## 特性 * 基于PHP`8.0+`重构 * 升级`PSR`依赖 * 依赖`think-orm`3.0版本 * `6.0`/`6.1`无缝升级 > ThinkPHP8.0的运行环境要求PHP8.0.0+ ## MongoDB 集群 创建集群互信密钥 ```shell # 生成密钥 openssl rand -base64 756 > mongo.key # 修改权限权限大了不能用 chmod 400 mongo.key ``` > 我在 `mongo_config` 目录下创建了 mongo.key 文件,所以 `-v $PWD/mongo_config:/mongo_config`。 创建一个 network bridge ```shell docker network create mongo-net ``` 启动三个 docker 容器 ```shell docker run -d \ --name mongo_1 \ -p 27017:27017 \ -v $PWD/datadir_1:/data/db \ -v $PWD/mongo_config:/mongo_config \ --network mongo-net \ mongo \ --replSet replSet1 \ --keyFile /mongo_config/mongo.key \ --auth docker run -d \ --name mongo_2 \ -p 27018:27017 \ -v $PWD/datadir_2:/data/db \ -v $PWD/mongo_config:/mongo_config \ --network mongo-net \ mongo \ --replSet replSet1 \ --keyFile /mongo_config/mongo.key \ --auth docker run -d \ --name mongo_3 \ -p 27019:27017 \ -v $PWD/datadir_3:/data/db \ -v $PWD/mongo_config:/mongo_config \ --network mongo-net \ mongo \ --replSet replSet1 \ --keyFile /mongo_config/mongo.key \ --auth ``` > `--network` 容器使用的网络 > > `--replSet` 副本集的名字,这个参数要放在后面,否则会报错。 > > `--keyFile` 密钥文件路径,用于连接到副本集。 > > `--auth` 开启用户认证。 配置副本集 ```shell docker exec -it mongo_1 mongosh # 容器内部执行的命令,下面是在主节点执行的 rs.initiate() # 初始化主节点 use admin # 进入 admin 数据库 db.createUser({user:'root',pwd:'secret',roles:[{role:'root',db:'admin'}]}) # 创建 root 用户 db.auth('root', 'secret') # 登录 db.createUser({user:'knowledge_base',pwd:'secret',roles:[{role:'dbOwner',db:'knowledge_base'}]}) rs.add('mongo_2:27017') # 添加副本 rs.add('mongo_3:27017') # 添加副本 rs.status() # 查看副本集状态 ``` ## PHP for docker ```shell # https://hub.docker.com/_/php docker pull php:8.1-apache docker run -d \ --name php_apache \ -p 8002:80 \ -v $PWD/:/var/www/html \ php:8.1-apache docker exec -it php_apache /bin/bash apt-get update apt-get install git zip unzip -y # /etc/apache2/sites-available/000-default.conf a2enmod rewrite # a2dismod rewrite 禁用 # 安装 mongodb 扩展,ini 配置文件添加 extension=mongodb.so apt-get install libssl-dev -y pecl install mongodb docker-php-ext-enable mongodb ``` ## 文档 [完全开发手册](https://doc.thinkphp.cn) ## 安装 ~~~ composer create-project topthink/think tp ~~~ 启动服务 ~~~ cd tp php think run ~~~ 然后就可以在浏览器中访问 ~~~ http://localhost:8000 ~~~ 如果需要更新框架使用 ~~~ composer update topthink/framework ~~~ ## 命名规范 `ThinkPHP`遵循PSR-2命名规范和PSR-4自动加载规范。 ## 参与开发 直接提交PR或者Issue即可 ## 版权信息 ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。 ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 更多细节参阅 [LICENSE.txt](LICENSE.txt)