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.tpcf.cn/diannao/88458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区间求最值问题高效解决方法

对于区间求最值场景&#xff0c;如果区间不定长度的&#xff0c;可以使用稀疏表进行求解&#xff0c;如果区间是固定长度的&#xff0c;则可以使用分块的思想&#xff08;与稀疏表原理类似&#xff09;&#xff0c;都是通过压缩状态个数&#xff0c; 1 关于稀疏表的原理详见&a…

Linux程序设计:什么时候选择开发内核模块?

最近看一个CPU使用率高的问题,从perf里看,是下面的一个占用的比较多是下面一个 Overhead Source:Line Symbol Shared Object - 8.48% [vdso][1129] 0x1129 B [.] 0x0000000000001129

OpenCV CUDA模块设备层-----欧几里得距离函数hypot()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于计算两个无符号字符向量&#xff08;uchar1&#xff09;的欧几里得距离&#xff08;即直角三角形的斜边长度&#xff09;&#xff0c;…

惠普HP LaserJet Pro P1106 打印机信息

基本信息 产品类型&#xff1a;黑白激光打印机。上市时间&#xff1a;2011 年。最大打印幅面&#xff1a;A4。网络打印&#xff1a;不支持网络打印。双面打印&#xff1a;手动双面打印。 性能参数 打印速度&#xff1a;黑白打印速度&#xff08;ISO&#xff0c;A4&#xff09;正…

通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例

一、智能体模式的核心能力 通义灵码的智能体模式区别于传统代码补全工具&#xff0c;具备&#xff1a; 语义级理解&#xff1a;解析业务需求、代码上下文及错误日志。自主任务闭环&#xff1a;从问题诊断→ 代码生成→ 测试覆盖→ 文档生成全流程自动化。环境感知&#xff1a…

SQL学习笔记2

DDL、DML、DQL、DCL基础语法 1、DDL 查询 查询所有数据库&#xff1a;show databases; show databases; 查询当前数据库&#xff1a;select database(); select database(); 数据库创建 创建数据库:create database [if not exist(若存在重名数据库&#xff0c;则不创建…

VScode常用快捷键【个人总结】

注&#xff1a;快捷键以 Windows/Linux 为主&#xff0c;Mac 用户将 Ctrl 替换为 Cmd&#xff0c;Alt 替换为 Option。 1. 编辑相关 快速复制与剪切 Alt Shift ↓&#xff1a;复制当前行到下方Alt Shift ↑&#xff1a;复制当前行到上方Ctrl X&#xff1a;剪切整行&…

数据结构与算法:线性表-顺序表(顺序存储)

一、线性表的定义&#xff08;逻辑结构&#xff09; 线性表是由 n (n > 0) 个相同数据类型的数据元素组成的有限序列&#xff0c;其中 n 为线性表的表长&#xff0c;当 n 0 时&#xff0c;线性表为空表。如果用 L 命名线性表&#xff0c;那么一般表示为&#xff1a;L (a1…

从源码到实践:Java集合框架面试核心知识点全解析

在Java开发中&#xff0c;集合框架&#xff08;Java Collections Framework&#xff09;是最基础也最常用的工具集。无论是处理业务逻辑时的数据暂存&#xff0c;还是高性能场景下的算法优化&#xff0c;集合的使用都贯穿始终。因此&#xff0c;Java集合相关的面试题几乎是所有…

【深度学习新浪潮】空间计算的医疗应用技术分析(简要版)

空间计算是一种通过融合计算机视觉、传感器技术与三维渲染,将虚拟内容精准锚定到物理空间,实现数字世界与现实世界无缝交互的技术体系。其核心在于让计算机理解真实环境的结构、位置和动态,从而支持自然交互(如手势、语音、眼动)和沉浸式体验。例如,苹果Vision Pro通过实…

win电脑没有xcode怎么上传ipa

在上架IOS项目的时候&#xff0c;遇到一个问题&#xff0c;如下图&#xff0c;在app store connect上架的时候&#xff0c;需要选择一个构建版本&#xff0c;然后它在下方提示&#xff0c;点击查看上传工具后&#xff0c;会发现需要下载xcode或mac命令行等工具来上传编译后的文…

相机标定与3D重建技术通俗讲解

一、什么是相机标定&#xff1f;能解决什么问题&#xff1f; 相机标定是计算机视觉中的基础技术&#xff0c;简单来说&#xff0c;就是确定相机从3D世界拍摄到2D图像时的"转换规则"。具体解决两个核心问题&#xff1a; 相机内部属性&#xff1a;如焦距&#xff08;…

DeepSeek-Reasoner推理模型示例

《DEEPSEEK原生应用与智能体开发实践 王晓华 书籍 图书》【摘要 书评 试读】- 京东图书 在之前讲解的示例中&#xff08;指这个示例&#xff1a;通过Prompt提示构建思维链-CSDN博客&#xff09;&#xff0c;无论是进行日常对话还是调用特定工具&#xff0c;我们所依赖的底层技…

常说的电源芯片到底指什么?

电源芯片是电子系统中用于管理、转换和分配电能的集成电路&#xff0c;根据功能和应用场景的不同&#xff0c;主要分为以下几类&#xff1a; 一、线性稳压器&#xff08;LDO, Low Dropout Regulator&#xff09; LDO内部的基本电路情况如下&#xff1a; LDO内部主要分为四大部…

【大模型学习】项目练习:套壳DeepSeek

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;AI入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 &#x1f4…

笔记03:布线-过孔的调用与添加

布线-过孔的调用与添加 &#xff08;1&#xff09;在进行PCB设计时&#xff0c;都必须使用到过孔&#xff0c;对走线进行换层处理。在走线进行打过孔之前&#xff0c;必须先要添加过孔&#xff0c;这样在PCB布线时才可以使用过孔。 &#xff08;2&#xff09;需要使用pad des…

在vscode中,Python程序的内置对象、关键字、自定义函数名/类名、字符串进行着色,说明分别是什么颜色?

在 VS Code 中&#xff0c;Python 代码的着色完全取决于你当前使用的主题。不同主题&#xff08;如 Dark, Monokai, Solarized Dark, Light, Quiet Light 等&#xff09;对不同类型的代码元素会使用不同的颜色。 一、Default Dark&#xff08;默认的深色主题&#xff09; impo…

Visual Studio 中使用 AddressSanitizer 指南

Visual Studio 中使用 AddressSanitizer 指南 基于 Microsoft Visual Studio 2022&#xff0c;支持 MSVC 和 Clang 编译器链&#xff0c;本文详细说明如何在 VS 中配置和使用 AddressSanitizer&#xff0c;用于检测内存误用&#xff0c;如消息释放后访问、超界读写等类型错误。…

Flink Sink函数深度解析:从原理到实践的全流程探索

在Flink的数据流处理体系中&#xff0c;Sink函数作为数据处理的最终出口&#xff0c;肩负着将处理后的数据写入外部存储引擎的关键使命。它如同数据旅程的终点站&#xff0c;决定着数据的最终归宿与应用价值。深入理解Sink函数的工作原理、核心概念及实现方式&#xff0c;对构建…

Codex+ 自建中转 API 部署教程(Windows 版)

&#x1f4cc; 一、前置环境准备 安装 Node.js 和 Codex CLI&#xff1a; npm install -g openai/codex准备 OpenAI API Key 确保你已有的中转接口兼容 OpenAI 格式&#xff0c; &#x1f4cc; 二、设置 PowerShell 环境变量 # 设置你的 API Key&#xff08;使用哪家的看你的…