我正在使用Scalr来扩展网站服务器。
在Apache服务器上,我安装了Sakai,并为Linux机器创建了一个启动脚本。
问题是,如何在Apache服务器启动之前确保启动并运行MySQL实例,因为如果Apache服务器首先启动,那么运行Sakai的连接将失败,这会导致所有类型问题。
如何确保实例以我需要的方式启动?我仍然是Scalr的新手,所以任何帮助都会受到赞赏。
由于
答案 0 :(得分:1)
如果您自己编写了Apache启动脚本,则可以检查数据库实例是否已在运行。
您可以包含一个简单的等待循环:
MYSQL_OK=1
while ["$MYSQL_OK" -ne 0] ; do
echo "SELECT version();" | mysql -utestuser -ptestpassword testdb
MYSQL_OK=$?
sleep 5
done
很明显,您必须在Mysql中创建一些testuser和test-database:
CREATE DATABASE testdb;
GRANT USAGE,SELECT ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'testpassword';
FLUSH PRIVILEGES;
简单地将while循环放在脚本中的某个位置)。如果您的系统是某种Redhat系统,您会注意到start-script /etc/init.d/httpd有这样一行:
Required-Start: $local_fs $remote_fs $network $named
如果你将$ mysqld添加到该行,Apache将在启动前坚持运行mysqld:
Required-Start: $local_fs $remote_fs $network $named $mysqld
但是,缺点是Apache启动失败而不是等待运行mylsqd。
祝你好运, 亚历克斯。