1

我已经开发 PHP 页面好几个星期了,对我的代码越来越有信心了。我已经通过 Bluehost 获得了一个托管帐户,并准备开始制作一些实时页面。以前我一直在 Windows 上使用 XAMPP,并在本地计算机上开发我的所有页面。我正在尝试确定在本地创建我的页面然后轻松将其移动到我的托管服务器的最佳实践。我使用 Filezilla 传输文件。以下是我的主要问题:

1.) 如何确保我的本地和实时 MySQL 数据库保持同步?我一直在本地手动创建数据库,然后采用相同的代码并将其应用于我的实时服务器。(我在本地和实时服务器上有 phpmyadmin,但不知道如何使用它来简化此过程)

2.) 在将所有文件从本地服务器移动到实时服务器之前,我必须更改所有文件的 mysql 密码和连接凭据。有没有解决的办法?

4

7 回答 7

3

对于问题 1,您可以在每次上传时转储数据库并在生产端导入它,或者您可以使用 mysql 复制。

对于问题 2,将数据库连接详细信息放在单独的 php 文件中,然后将该文件包含在需要连接到数据库的每个页面的顶部是很常见的

然后您可以只更改一个文件,或者只上传一个带有生产数据库详细信息的文件。

数据库.php

<?php
$dbuser="";
$dbpass="";
$dbname="";
$dbserver="";
?>

我的文件.php

<?php
include("db.php");
$conn = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);
//....
?>
于 2012-10-17T21:03:32.543 回答
0

您可以将 mysql_connect() 主机指向新服务器的 IP 地址。因此,无论您的代码在哪里,它都会连接到套接字。

$link = mysql_connect('<your ip here>', 'mysql_user', 'mysql_password');
于 2012-10-17T21:06:23.087 回答
0

我总是制作我的项目,因此我必须更改 1 行代码才能在开发和生产之间波动。

我有一个基本文件,我在其中指定我的环境,如下所示:

$env = 'dev'

然后在我的数据库设置变量中,我有这样的东西:

if($env == 'dev') {
    specify dev variables
} else if($env == 'prod') {
    specify prod variables
}

这样做的好处是,当我想在 dev 和 prod 之间移动时,我只需要更改 1 个变量。

于 2012-10-17T21:07:50.587 回答
0

使用版本控制系统,如 svn 或 git;查看用于数据库管理的 phpmig,查看 capistrano 等部署工具,确保在生产服务器的副本上进行测试(即使您只是使用虚拟主机)

于 2012-10-17T21:09:42.827 回答
0

我和你的情况差不多,这就是我打算这样做的方式。

  1. 我不打算将本地数据库与实时数据库同步,而是在完成后将本地数据库一次移动到在线数据库。我这样做的方法是,在 PHPMyAdmin 中选择我想要的数据库并将其导出为 .sql 文件。然后在在线服务器上,我只需导入该文件。

  2. 我知道的最好的方法是有一个单独的文件,其中有一个看起来像这样的函数:

    function connectToDB(){ $mysqli = new mysqli("localhost", "root", "123", "myDatabase"); return $mysqli; }

    然后,当您想使用它时,只需将文件导入其他 PHP 文件的顶部并像这样使用它:

    $mysqli = connectToDB();

这是我的做法。如果有人知道更好的方法,我会很高兴知道。

于 2012-10-17T21:14:44.877 回答
0

从开发部署到生产不是一项简单的任务,而且可能非常复杂。公司投入大量资源以使部署成为一个合乎逻辑且稳定的过程。我建议将您的问题分解并提出更具体的问题。

作为对您的问题的回答,我会做什么:

1)当部署需要更改数据库结构时,将这些更改写在 sql 脚本中。部署时,您需要运行这些脚本并更新代码(如您所见,中间的时间会使应用程序不稳定或损坏)。在任何事情之前,将生产数据库的副本带到开发中,并首先在开发中尝试脚本。每次部署时,您都会使数据库同步。

2)如何保存密码取决于您是否使用框架。遵循框架,这是定义环境变量并根据环境(开发或生产)设置密码的好方法。

至于代码部署,即使您是一个独特的开发人员,我也会使用 svn 或 git 将您的项目保存在版本控制之下。如果您为每个部署创建标签,它将使代码更新更加简单,并帮助您在需要时回滚。

于 2012-10-17T21:48:00.010 回答
0

最佳实践是编写数据库迁移脚本,对其进行版本控制。然后每次上传到生产环境时,将这些版本的值存储在数据库中。只运行您以前没有运行过的版本。

在存储库之外有不同的本地配置文件。这允许您使用主配置文件在 repo 中维护必要的应用程序配置,然后本地配置文件覆盖数据库和环境设置。

于 2012-10-18T00:13:52.280 回答