基本的部署问题:Ubuntu上的CherryPy

我正在开发一个适中的CherryPy / SQLite应用程序。 我想把它放在云中的服务器上进行客户端testing。 为此,我在Rackspace中创build了一个小型Ubuntu实例,并进行了一些初步安装(setup-tools和CherryPy)。

既不是pipe理员,也不是特别熟悉的Linux我有一些相当简单的问题,关于部署这个应用程序,我一直无法用Google来回答:

  1. 我假设我应该创build一个用户帐户专门运行该应用程序,而不是使用root或任何其他现有的帐户?

  2. 我不知道我应该在哪里移植我的应用程序文件夹。 我猜他们应该进入/ usr / user-I-created-question-1 /。 那是对的吗?

  3. 我正在使用CherryPy服务器,这似乎是足够我的这个应用程序的需求。 在putty会话中启动应用程序的正确方法是在Windows机器上终止putty会话吗?

  4. 除了我自己访问网站之外,还有哪些工具或技术可用来监控正常运行时间,或知道服务器是否变得不可用?

你知道,如果只是在有限的时间内进行testing,那么按照你所说的方式来说,可能是很好的。 虽然在这种情况下也可能是好的,以任何用户身份运行。 可能最好创build一个非特权用户并在其下运行。

你把它放在哪里? 可能位于用户主目录的子目录中,如“/ home / username / mywebapp”。

你可能想运行“screen”(apt-get install it,如果它不存在的话),然后运行web-app。 您可以使用“screen -x”重新连接,您可以使用“Control-A Control Control-D”将其分离。 这样,当你断开连接时,它不会死亡。

然而, 会这样做的方式是在Apache下运行它,所以Apache启动和停止应用程序。 它也运行在Apache用户下,这可能是好的或坏的,但通常是好的。 通常这将涉及:

  • 使用mod_wsgi。
  • 在/etc/apache2/conf.d中创build一个以应用程序命名的文件。

它应该包含:

WSGIPythonPath /path/to/webapp/root WSGIScriptAlias /appname /path/to/webapp/root/controller.py 
  • 在这种情况下,您的web应用程序将位于“controller.py”文件中。 “/ appname”是访问此应用程序的URL的一部分,例如: http : //127.0.0.1/appname
  • 那个webapp然后需要是一个WSGI应用程序,例如它应该结束于:

WSGI示例:

 cfg = config() cherrypy.config.update() application = cherrypy.APplication(None, script_name = '/appname', config = cfg) 

关键是您需要在您的控制器中创build一个“应用程序”对象。

一旦你这样做,你应该能够重新启动Apache(/etc/init.d/apache2 restart),然后通过该URL访问webapp。