我正在用Python(在Linux系统上的Apache服务器上)编写一个Web应用程序,需要连接到Postgres数据库。因此,它需要数据库服务器的有效密码。在我的Python文件中对密码进行硬编码似乎相当不令人满意。
我确实想知道如何使用.pgpass文件,但它需要属于www-data用户,对吧?默认情况下,没有/ home / www-data目录,这是我希望存储.pgpass文件的位置。我可以创建这样的目录并将.pgpass文件存储在那里吗?如果没有,那么启用我的Python脚本连接数据库的“正确”方法是什么?
答案 0 :(得分:1)
无论您使用何种方法,以www-data
运行的其他应用程序都可以读取您的密码并以数据库的形式登录。使用peer
身份验证无法帮助您,它仍会信任在www-data
下运行的所有应用。
如果您希望应用程序能够将其数据与其他数据库隔离,则需要将其作为单独的用户ID运行。这方面的主要方法是:
其中,目前最好的选择通常是使用scgi / fcgi。它可以让您轻松地以不同的unix用户身份运行您的应用程序,但避免了反向代理的复杂性和开销。
答案 1 :(得分:1)
将应用程序及其配置文件安装在与静态文件目录不同的自己的目录中,并且只能由应用程序用户读取。
设置另一个用户来运行应用程序并使用WSGIDaemonProcess指令。
mod_wsgi site,Quick Configuration Guide,Configuration Guidelines和Configuration Directives
清楚地描述了所有这些以及更多内容