我有一个Web应用程序,它使用环境变量进行某些配置(数据库凭据,API密钥等).我目前正在使用Elastic Beanstalk进行部署,并且可以在AWS中轻松设置这些,这很好,因为我的代码库中没有这些敏感数据.
但是,我正在考虑从Elastic Beanstalk切换,以便我可以在我的Web实例中利用更多的灵活性,当然我正在考虑使用CodeDeploy部署(来自我的Codeship CI设置).CodeDeploy非常简单,我已经将它与Codeship集成得很好,但我注意到没有内置功能来设置CodeDeploy的环境变量,就像Elastic Beanstalk一样.有没有人有这个过程的最佳实践?
背景:我曾经使用MAMP进行开发,并且在几个月/几年内我积累了一个大型的mysql数据库(几个演出),我用它来开发我的不同项目.我终于开始使用Vagrant设置一个虚拟机了,除了我的数据库之外,我已经完成了所有设置和工作.我在OSX主机上运行CentOS 6.5来宾框.
我的问题:我需要我的数据库是完全持久的,所以我可以根据我的需要流浪/销毁尽可能多的盒子,但是mysql仍然存在.
我的解决方案#1:我最初使用vboxsf安装了一个同步文件夹.这很好用,到目前为止似乎是我最好的选择,但性能非常糟糕.我的开发站点上的查询密集型页面需要1-3秒才能加载,而它们通常需要一秒钟才能加载.
我的解决方案#2:然后我尝试使用nfs挂载同步文件夹,因为性能应该更好.这里的问题是mysql抱怨b/c,鉴于nfs的性质,它无法将数据目录chown到mysql:mysql用户.尝试启动mysqld服务时出现以下错误:
chown: changing ownership of '/www/mysql': Operation not permitted
chmod: changing permissions of '/www/mysql': Permission denied
Sooo,我的问题是:有没有更好的方法来完成我需要的东西?我觉得NFS是最好的解决方案,但我不知道如何使用Vagrant自动解决整个所有权/权限问题.任何帮助,将不胜感激.
我认为这样的查询很容易,因为关系数据库的性质,但它似乎给了我一个合适的.我也搜索过,但没有发现真正有用的东西.情况如下:
假设我对产品和产品标签有简单的关系.这是一对多关系,因此我们可以拥有以下内容:
productid | tag
========================
1 | Car
1 | Black
1 | Ford
2 | Car
2 | Red
2 | Ford
3 | Car
3 | Black
3 | Lexus
4 | Motorcycle
4 | Black
5 | Skateboard
5 | Black
6 | Skateboard
6 | Green
Run Code Online (Sandbox Code Playgroud)
什么是最有效的查询方式(Ford OR Black OR Skateboard) AND NOT (Motorcycles OR Green)?我需要做的另一个问题就是所有问题(Car) or (Skateboard) or (Green AND Motorcycle) or (Red AND Motorcycle).
products表中有大约150k条记录,tags表中有600k条记录,因此查询需要尽可能高效.这是我一直在讨论的一个问题(示例#1),但它似乎需要大约4秒左右.任何帮助将非常感激.
SELECT p.productid …Run Code Online (Sandbox Code Playgroud) 这个问题可能过于笼统,但这里......
我想接受用户上传的图片并在S3上托管它们.这是最好的做法是什么?我在考虑以下几点:
Mysql - 创建一个包含所有图像元数据的表:
S3 - 创建一个新桶以保存图像
站点后端 - 处理上传的逻辑:
-
这是使用S3作为我的Web服务的云提供商的标准做法吗?如何确保数据库和S3保持彼此更新?例如,如果从数据库中手动删除记录会发生什么?我该如何处理孤立的S3对象?或者另一方面,如果从S3删除图像而不是mysql表中的相应记录呢?是否由我来编写一个验证两个系统之间完整性的脚本?
我刚开始在我的应用程序中使用Redis,但由于某种原因,从PHP初始连接到Redis服务器几乎只需要1秒钟.使用Predis时,延迟问题直到第一次get()调用才会发生,如果我尝试手动连接,则会在初始连接时发生延迟fsockopen().
我已经阅读了redis延迟文档,但没有任何信息与我的案例相关.跑步redis-cli --latency似乎产生了乱七八糟的混乱.我想我的问题是解决这个问题的最佳方法是什么?任何帮助将非常感激.
Predis客户端实例化:
$redis = new Predis\Client(array(
'host' => 'localhost',
'port' => 6379
));
Run Code Online (Sandbox Code Playgroud)
以下是一些相关信息: