我已经开发了几个星期的PHP页面,并且对我的代码越来越有信心了。我通过Bluehost获得了一个托管帐户,并准备开始制作一些实时页面。以前我一直在Windows上使用XAMPP并在我的本地计算机上开发所有页面。我正在尝试确定在本地创建页面的最佳实践,然后轻松将其移动到我的托管服务器。我使用Filezilla来传输我的文件。以下是我的主要问题:
1.。)如何确保本地和实时MySQL数据库保持同步?我一直在本地手动创建数据库,然后使用相同的代码并将其应用到我的实时服务器。 (我在本地和现场服务器上有phpmyadmin,但不知道如何使用它来简化这个过程)
2。)在将所有文件从本地服务器移动到实时服务器之前,我必须更改所有文件的mysql密码和连接凭据。有没有解决的办法?
答案 0 :(得分:3)
对于问题1,您可以转储数据库并在每次上传时将其导入生产端,或者您可以使用mysql复制。
对于问题2,将数据库连接详细信息放在单独的php文件中然后包含该文件位于需要连接到数据库的每个页面的顶部是很常见的
然后,您只需更改该文件,或仅上传包含生产数据库详细信息的文件。
db.php中
<?php
$dbuser="";
$dbpass="";
$dbname="";
$dbserver="";
?>
myfile.php
<?php
include("db.php");
$conn = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);
//....
?>
答案 1 :(得分:0)
您可以将mysql_connect()主机指向新服务器的IP地址。因此,无论您的代码在哪里,它都将连接到套接字。
$link = mysql_connect('<your ip here>', 'mysql_user', 'mysql_password');
答案 2 :(得分:0)
我总是制作我的项目,以便我必须更改1行代码以在开发和生产之间波动。
我有一个基本文件,我在这里指定我的环境:
$env = 'dev'
然后在我的数据库设置变量中我有这样的东西:
if($env == 'dev') {
specify dev variables
} else if($env == 'prod') {
specify prod variables
}
这就是当我想在dev和prod之间移动时,我只需要更改1个变量。
答案 3 :(得分:0)
使用版本控制系统,例如svn或git;查看用于数据库管理的phpmig,查看capistrano等部署工具,确保在生产服务器的副本上进行测试(即使您只是使用虚拟主机)
答案 4 :(得分:0)
我和你几乎处于相同的位置,这就是我打算如何做到这一点。
我不打算将我的本地数据库与实时数据库同步,而是在完成后将本地数据库移动到在线数据库一次。我这样做只是在PHPMyAdmin中选择我想要的数据库并将其导出为.sql文件。然后在在线服务器上我只导入该文件。
我知道最好的方法是有一个单独的文件,你有一个看起来像这样的函数:
function connectToDB(){
$mysqli = new mysqli("localhost", "root", "123", "myDatabase");
return $mysqli;
}
然后,当您想要使用它时,只需将文件导入其他PHP文件的顶部,然后像这样使用它:
$mysqli = connectToDB();
这是我这样做的方式。如果有人知道更好的方式,我会很高兴知道它。
答案 5 :(得分:0)
从开发到生产的部署并非易事,而且可能非常复杂。公司投入大量资源,以使部署成为一个合乎逻辑且稳定的过程。我建议将你的问题分解成几个部分并提出更具体的问题。
作为回答你的问题,我会做什么:
1)当部署需要更改数据库结构时,请在sql脚本中写入这些更改。部署时,您需要运行这些脚本并更新代码(正如您所知,中间的时间会使应用程序不稳定或损坏)。在此之前,将生产数据库的副本放到开发上,然后在开发时首先尝试脚本。每次部署时,您都会同步数据库。
2)如何保存密码取决于您是否使用框架。遵循框架,这是一种定义环境变量并根据环境(开发或生产)设置密码的好方法。
关于代码部署,即使您是一个独特的开发人员,我也会使用svn或git在版本控制下保存您的项目。如果需要为每个部署创建标记,它将使代码更新变得更加简单并帮助您回滚。
答案 6 :(得分:0)
最佳做法是编写数据库迁移脚本,对其进行版本化。然后,每次上载到生产环境时,都会将这些版本的值存储在数据库中。仅运行之前未运行的版本。
在存储库之外有不同的本地配置文件。这允许您使用主配置文件在repo中维护必要的应用程序配置,然后本地配置文件将覆盖数据库和环境设置。