[英]Capistrano: HowTo deploy MySQL database for a PHP application?
我正在开发一个基于PHP的应用程序,并使用Capistrano将其部署到我的网络服务器。
到目前为止,我没有使用数据库,因此,部署运行良好。
但是,现在我正在尝试使用MySQL数据库和这个应用程序,并且想知道,如果有可能部署数据库,以及使用Capistrano的远程服务器 - 这是为Rails的数据库完成的方式。
问候
尼基尔古普塔
关于这个问题,我迟到了,但无论如何都要发帖,因为这是一个很少回答的常见问题。 我一起使用Phing和Liquibase取得了巨大的成功,您可以使用Liquibase以高度正式的方式向前和向后滚动数据库更改,甚至可以跟踪版本控制中的更改。
我已经多次介绍过这个主题并将我的幻灯片(HTML格式)发布到GitHub: https : //github.com/wjgilmore/Automating-Deployments-with-Phing--Capistrano-and-Liquibase
包括使用Capistrano部署PHP网站的奖励材料。 :-)
数据库部署的全部魔力是RoR的本机功能,您可能希望模仿它以获得相同的结果。
您需要准备用于迁移数据库的脚本,因此不要使用一个脚本,每次更改数据库都需要一个新脚本。 您还需要存储已经执行的迁移的某个列表,rails使用数据库表,但是文件也可能对此有用。
您可能想尝试使用此代码:
set :mysql_params, "-u user -ppassword"
set :mysql_db_name, "database_name"
after :deploy, :migrate
desc "migrate database on server"
task :migrate do
run "touch #{shared_path}/migration.list ;
ls -1v #{current_path}/sql/*.sql 2>/dev/null > #{shared_path}/migration.available;
diff #{shared_path}/migration.available #{shared_path}/migration.list | awk \"/^</ {print \\$2}\" | while read f ;
do echo \"migrating $(basename $f)\"; mysql #{mysql_params} #{mysql_db_name} < $f && echo $f >> #{shared_path}/migration.list ; done;
rm -f #{shared_path}/migration.available"
end
after "deploy:setup", :create_db
desc "create database on server"
task :create_db do
run "mysql #{mysql_params} -e \"CREATE DATABASE #{mysql_db_name}\""
end
最重要的是保留迁移顺序,您应该使用连续数字或date_time命名迁移,因此ls -1v #{current_path}/migrations/*.sql
示例输出如下所示:
0001_create_database.sql
0002_create_user_table.sql
0003_add_password_to_users.sql
20101205_141534_add_admin_user.sql
20110108_090712_create_post_table.sql
20110210_165609_create_comment_table.sql
date_time条目使用格式YYYYmmdd_hhMMss_title.sql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.