Uwsgi,MySQL以错误的顺序重启

时间:2014-05-12 05:45:36

标签: mysql ubuntu uwsgi

我正在尝试在EC2上设置一个django网站,基本上我想启动MySQL服务器,并在重启后启动Uwsgi。

为了让MySQL重启,我做了:

sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/
sudo update-rc.d mysql.server defaults

为了让Uwsgi重启,我创建了一个文件/etc/init/uwsgi.conf:

description "ubuntu uwsgi instance"
start on runlevel [2345]
stop on runlevel [06]
exec uwsgi --ini /home/ubuntu/uwsgi.ini

然而问题是我需要首先启动mysql,现在它看起来像Uwsgi首先启动,并尝试连接到mysql,它失败了,mysql永远不会启动。

有人可以帮我解决这个问题吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

当您的计算机启动时,它不会直接运行init.d脚本。相反,根据所谓的“运行级别”,它运行/etc/rcN.d中的脚本(其中N是运行级别)。您可以使用runlevel命令确定当前运行级别;我的正常运作返回2。这意味着当计算机启动时,它会在/etc/rc2.d中运行脚本。 rc2.d的内容只是/etc/init.d中脚本的符号链接,根据它们是应该启动还是停止来命名,以及它们应该运行的顺序。

使用runlevel命令查找您的计算机所处的运行级别(可能是2),然后在/etc/rc2.d中查找名为smthing的链接,如uwsgi,这将是/etc/init.d的符号链接。 / uwsgi,并将其重命名为zzz999 - 或者使其在其他条目之后进行排序所需的任何内容 - 这将导致它最后运行。

有关于https://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts

的init.d脚本和运行级别的更多信息

答案 1 :(得分:0)

即使您在uWSGI之前启动MySQL,也无法保证在uWSGI管理请求时可用。 在开始时,MySQL会对数据库进行一些检查,加载InnoDB索引,从事务日志中恢复,甚至可能会挂起。

你不应该依赖这种方法。

而是添加应用程序逻辑,确保您正确处理数据库的不可用性,即重试或向用户显示错误页面,要求重试。