我正在开发一个普通的 CherryPy / SQLite 应用程序。我想把它放在云服务器上进行客户端测试。为此,我在 Rackspace 上启动了一个小型 Ubuntu 实例并进行了一些初步安装(安装工具和 CherryPy)。
由于我既不是管理员,也不是特别熟悉 Linux,所以我对部署此应用程序有一些相当简单的问题,但我无法使用 Google 来回答:
我认为我应该专门创建一个用户帐户来运行该应用程序,而不是使用 root 或任何其他现有帐户?
我不确定应该将应用程序文件夹移植到哪里。我猜它们应该放在 /usr/user-I-created-question-1/ 中。对吗?
我正在使用 CherryPy 服务器,它似乎足以满足我对这个应用程序的需求。在 Putty 会话中启动应用程序然后在 Windows 机器上终止 Putty 会话是否是正确的方法?
除了亲自访问网站之外,还有哪些工具或技术可以监控正常运行时间,或者了解服务器是否已不可用?
答案1
你知道,如果只是为了在有限的时间内进行测试,那么按照你所说的方式运行可能没问题。尽管在这种情况下,以任何用户身份运行也可能没问题。最好创建一个非特权用户并让它在该用户下运行。
你把它放在哪里?可能放在该用户主目录的子目录中,例如“/home/username/mywebapp”。
您可能想要运行“screen”(如果不存在,则使用 apt-get 安装),然后在其下运行 Web 应用程序。您可以使用“screen -x”重新连接,也可以使用“Control-A COntrol-D”断开连接。这样,当您断开连接时它就不会死机。
然而,我这样做的方法是将其运行在 Apache 下,这样 Apache 就可以启动和停止应用程序。然后它还会在 Apache 用户下运行,这可能是好事也可能是坏事,但通常是好事。通常这将涉及:
- 使用 mod_wsgi。
- 在 /etc/apache2/conf.d 中创建一个以您的应用程序命名的文件。
它应该包含:
WSGIPythonPath /path/to/webapp/root
WSGIScriptAlias /appname /path/to/webapp/root/controller.py
- 在这种情况下,您的 webapp 将位于“controller.py”文件中。“/appname”是访问此应用程序的 URL 的一部分,例如:http://127.0.0.1/应用程序名称
- 然后,该 web 应用程序需要是一个 WSGI 应用程序,例如,它应该以以下内容结尾:
WSGI示例:
cfg = config()
cherrypy.config.update()
application = cherrypy.APplication(None, script_name = '/appname', config = cfg)
关键是您需要在控制器中创建一个“应用程序”对象。
完成后,您应该能够重新启动 Apache(/etc/init.d/apache2 restart),然后通过该 URL 访问 webapp。