当前位置: 首页 > news >正文

github 上的php项目

github 上的php项目

项目的网址 (Loong1996/LikeGirlSite: 情侣网站、情侣网页、恋爱记录网站)

在这里插入图片描述

# 修改
# admin/Config_DB.php//localhost 为数据库地址 一般使用默认的即可 或(127.0.0.1)
$db_address = "mysql_php";//数据库用户名
$db_username = "root";//数据库密码
$db_password = "root123";//数据库表名
$db_name = "love";//敏感信息修改安全码 建议设置复杂一些
$Like_Code = "Love";//版本号
$version = 20240612;

创建网桥

docker network create -d bridge php_net 

mysql镜像的启动

docker run \
-itd  --name mysql_php \
--network php_net \
--restart unless-stopped  \
-e MYSQL_USER="php" \
-e MYSQL_PASSWORD="php123" \
-e MYSQL_ROOT_PASSWORD="root123" \
mysql:8.0.23 \
--default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin

修改数据库

# 找到数据库的ip [root@docker-110 LikeGirlSite]# docker inspect mysql_php | grep -i ipaddr "SecondaryIPAddresses": null,"IPAddress": "","IPAddress": "172.23.0.2",
# 登录数据库
[root@docker-110 LikeGirlSite]# mysql -h 172.23.0.2  -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.23 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> # 创建一个数据库
MySQL [(none)]> create database love;
Query OK, 1 row affected (0.00 sec)# 导入文件
MySQL [(none)]> USE love;
Database changed
MySQL [love]> source /root/LikeGirlSite/love20240612.sql;# 检查一下MySQL [love]> show tables;
+----------------+
| Tables_in_love |
+----------------+
| IPerror        |
| about          |
| article        |
| diySet         |
| leavSet        |
| leaving        |
| login          |
| loveImg        |
| lovelist       |
| text           |
| warning        |
+----------------+
11 rows in set (0.00 sec)

启动phpmyadmin镜像\

  1. 看dockerhub,给了什么资料,(这里需要科学上网,我这里就截图了)
    https://hub.docker.com/_/phpmyadmin

  2. docker history
    docker run 去分析 入口点脚本,启动脚本,都调用了哪些变量

在这里插入图片描述

docker run -d --restart=always  \
--name blog_phpadmin \
--network php_net \
-e PMA_HOST=mysql_php \
-p 888:80
phpmyadmin

在这里插入图片描述

看到数据了,表示phpadmin 和 数据库连接成功 !!!! 

最后是nginx

  1. 当你已http协议去访问这个源的时候
    http://10.0.0.7:80/test-info.php

    到达nginx,找到test-info.php

    fastcg_pass 127.0.0.1:9000; (php-fpm去读取,执行test-info.php)

    返回执行结果给nginx

    用户浏览器看到这个代码的结果

这里是 bitnami/php-fpm 也就是处理php代码的

version: '3'services:db:image: mysql:8.0.23restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: mydbMYSQL_USER: userMYSQL_PASSWORD: passwordvolumes:- mysql-data:/var/lib/mysqlnetworks:- app-networkphp-fpm:image: bitnami/php-fpmrestart: alwaysvolumes:- /opt/test_php:/var/www/html  # 挂载你的 PHP 代码depends_on:- dbnetworks:- app-networknginx:image: nginxrestart: alwaysports:- "80:80"volumes:- /opt/test_php:/var/www/html- /opt/test_php/nginx.conf:/etc/nginx/conf.d/default.conf  # 需要创建 nginx.confdepends_on:- php-fpmnetworks:- app-networknetworks:app-network:volumes:mysql-data:

创建 Nginx 配置文件 (nginx.conf)

server {listen 80;server_name localhost;root /var/www/html;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass php-fpm:9000;  # 指向 php-fpm 服务fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.+)$;}
}

创建 PHP 测试文件 (test.php)

<?php
try {$pdo = new PDO('mysql:host=db;dbname=mydb;charset=utf8mb4','user',         // 数据库用户名'password',     // 数据库密码[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,]);echo "数据库连接成功!";// 测试查询$stmt = $pdo->query("SELECT 1+1 AS result");$row = $stmt->fetch();echo "测试查询结果: " . $row['result'];} catch (PDOException $e) {die("连接失败: " . $e->getMessage());
}

启动容器

docker-compose up -d

测试

访问 http://localhost/test.php,如果看到以下输出,则连接成功:

在这里插入图片描述

看到这我们就ok了。开始部署

  1. 我们先把代码下到opt目录下
[root@docker-110 opt]# mv LikeGirlSite-master love-project
[root@docker-110 love-project]# ls
about.php  Botui      favicon.ico  head.php   ipjc.php  leaving.php  list.php    love20240612.sql  page.php   Style
admin      error.php  footer.php   index.php  ip.php    LICENSE      little.php  loveImg.php       README.md
# 修改
# admin/Config_DB.php//localhost 为数据库地址 一般使用默认的即可 或(127.0.0.1)
$db_address = "db";//数据库用户名
$db_username = "root";//数据库密码
$db_password = "root123";//数据库表名
$db_name = "love";//敏感信息修改安全码 建议设置复杂一些
$Like_Code = "Love";//版本号
$version = 20240612;
version: '3'services:db:image: mysql:8.0.23restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: root123MYSQL_DATABASE: loveMYSQL_USER: userMYSQL_PASSWORD: passwordvolumes:- mysql-data:/var/lib/mysqlnetworks:- app-networkphp-fpm:image: bitnami/php-fpmrestart: alwaysvolumes:- /opt/love-project:/var/www/html  # 挂载你的 PHP 代码depends_on:- dbnetworks:- app-networknginx:image: nginxrestart: alwaysports:- "80:80"volumes:- /opt/love-project:/var/www/html- /opt/love-project/nginx.conf:/etc/nginx/conf.d/default.conf  # 需要创建 nginx.confdepends_on:- php-fpmnetworks:- app-networknetworks:app-network:volumes:mysql-data:

nginx.conf

server {listen 80;server_name localhost;root /var/www/html;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass php-fpm:9000;  # 指向 php-fpm 服务fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.+)$;}
}

test.php

<?php
try {$pdo = new PDO('mysql:host=db;dbname=love;charset=utf8mb4', //注意修改dbname'root',         // 数据库用户名'root123',     // 数据库密码[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,]);echo "数据库连接成功!";// 测试查询$stmt = $pdo->query("SELECT 1+1 AS result");$row = $stmt->fetch();echo "测试查询结果: " . $row['result'];} catch (PDOException $e) {die("连接失败: " . $e->getMessage());
}

在这里插入图片描述

测试一下呗

在这里插入图片描述

导入数据

[root@docker-110 love-project]# mysql -u root -p root123 -h 172.26.0.2
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'172.26.0.1' (using password: YES)
[root@docker-110 love-project]# mysql -uroot -proot123 -h172.26.0.2
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 8.0.23 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> 
<?php
// 设置页面编码
header("Content-Type:text/html; charset=utf-8");$db_config = ['host'     => 'db',          // 使用容器名'port'     => '3306','username' => 'user',        // 使用Docker创建的用户'password' => 'password',    // 使用Docker设置的密码'dbname'   => 'love','charset'  => 'utf8mb4'
];// 安全配置
$security_config = ['like_code' => 'Love','version'   => '20240612'
];// 创建数据库连接
try {// 修复:在DSN中添加端口配置$pdo = new PDO("mysql:host={$db_config['host']};port={$db_config['port']};dbname={$db_config['dbname']};charset={$db_config['charset']}",$db_config['username'],$db_config['password'],[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);// 开发环境测试连接if (isset($_SERVER['APP_ENV']) && $_SERVER['APP_ENV'] === 'development') {echo "数据库连接成功!";}
} catch(PDOException $e) {// 开发环境显示详细错误if (isset($_SERVER['APP_ENV']) && $_SERVER['APP_ENV'] === 'development') {die("数据库连接失败: " . $e->getMessage());}// 生产环境记录日志并显示友好错误error_log("数据库连接失败: " . $e->getMessage());die("系统暂时无法访问,请稍后再试");
}// 设置错误报告级别(根据环境调整)
if (isset($_SERVER['APP_ENV']) && $_SERVER['APP_ENV'] === 'development') {error_reporting(E_ALL);ini_set('display_errors', 1);
} else {error_reporting(0);ini_set('display_errors', 0);
}
?>

在这里插入图片描述

可惜最后没运行出来

http://www.lryc.cn/news/575005.html

相关文章:

  • 【LLaMA-Factory 实战系列】四、API 篇 - 部署推理服务与批量调用实战
  • Vue 3 响应式核心:深入理解 ref 与 reactive 的选择之道
  • Java中的synchronized和锁
  • 在NPU平台上,如何尝试跑通Ktransformers + DeepSeek R1?
  • 基于LangChat搭建RAG与Function Call结合的聊天机器人方案
  • 前端使用rtsp视频流接入海康威视摄像头
  • QT 学习笔记摘要(三)
  • HCIA-IP路由基础
  • C++ 多线程深度解析:掌握并行编程的艺术与实践
  • 基于CMS的黄道吉日万年历源码(自适应)
  • 商务年度总结汇报PPT模版分享
  • 板凳-------Mysql cookbook学习 (十--10)
  • LeetCode 3258.统计满足K约束的子字符串数量1
  • HTML表单元素
  • 线性结构之链表
  • 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  • 机器学习01
  • SpringBoot高校党务系统
  • SpringBoot项目快速开发框架JeecgBoot——数据访问!
  • ros (二) 使用消息传递点云+rviz显示
  • Happy-LLM-Task06 :3.1 Encoder-only PLM
  • C++设计模式(GOF-23)——04 C++装饰器模式(Decorator)(一个类同时继承和组合另一个类)解决类爆炸问题、模板装饰器
  • python3文件操作
  • Node.js特训专栏-实战进阶:8. Express RESTful API设计规范与实现
  • python的智慧养老院管理系统
  • klayout db::edge 里的 crossed_by_point 的坑点
  • mbedtls ssl handshake error,res:-0x2700
  • 从零开始的云计算生活——第二十三天,稍作休息,Tomcat
  • Excel数据转SQL语句(增删改查)
  • 阿里云Web应用防火墙3.0使用CNAME接入传统负载均衡CLB