使用我的 Django 应用程序,我可以很好地从数据库中读取数据。当应用程序没有访问文件的权限时,它给了我这个错误:
尝试写一个只读数据库
这是有道理的。所以我编辑了文件的权限,让Apache进程有写权限。但是,我收到了这个神秘的错误,而不是能够写入:
无法打开数据库文件
如果它有用,这里是整个输出:
Request Method: POST
Request URL: http://home-sv-1/hellodjango1/polls/1/vote/
Exception Type: OperationalError
Exception Value:
unable to open database file
Exception Location: /usr/lib/pymodules/python2.5/django/db/backends/sqlite3/base.py in execute, line 193
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: ['/var/www', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/pymodules/python2.5', '/usr/lib/pymodules/python2.5/gtk-2.0']
Server time: Sun, 23 Aug 2009 07:06:08 -0500
Run Code Online (Sandbox Code Playgroud)
如果需要堆栈跟踪,请告诉我。
根据Linux 目录结构指南,/usr/适用于应用程序文件,/var/适用于更改的文件(我认为这意味着“属于应用程序的文件”)。这样对吗?
如果是这种情况,那么我在使用两者之间有点纠结。网站是一个应用程序(如果它是动态的,可以这么说),但在其他情况下,它只是 Apache 使用的文件集合。
默认的 www 目录位于/var/www/,所以我们应该通过使用/var/websites/(或类似的东西)来效仿,还是/usr/websites/因为它们可能是应用程序而选择?
这是一个非常微不足道的问题,但它仍然困扰着我。对于我们的案例,我倾向于/usr/web或类似的东西,因为我们的网站都是应用程序。
这是针对我们公司的网站;它不是共享托管服务器,因此我们无需担心将它们分开/home/或类似的事情。
以下是我希望对您有所帮助的一些输出:
nick@home-sv-1:~$ crontab -e
/var/spool/cron/crontabs/nick: Permission denied
nick@home-sv-1:~$ echo $EDITOR
emacs
nick@home-sv-1:~$ ls /var/spool/cron/crontabs
ls: cannot open directory /var/spool/cron/crontabs: Permission denied
nick@home-sv-1:~$ sudo ls -al /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab 4096 2009-10-25 20:45 .
drwxr-xr-x 3 root root 4096 2009-05-18 01:19 ..
-rw------- 1 root root 612 2009-10-25 01:20 root
Run Code Online (Sandbox Code Playgroud)
crontab 没有 setguid,也不在 crontab 组中。
home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-xr-x 1 root root 32048 2009-08-30 03:34 /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)
作为根...
home-sv-1:~# chown root.crontab /usr/bin/crontab
home-sv-1:~# chmod g+s /usr/bin/crontab …Run Code Online (Sandbox Code Playgroud) 如果 Windows 服务器有数千个端口处于打开LAST_ACK状态(如 netstat 所示),这意味着什么?是因为一个端点正在等待另一个端点响应吗?
我想我会在这里分享我的问题然后回答,因为似乎有很多人坚持我的立场 - 但没有明确的答案。问题是,如果你 apt-get remove mysql-server,它不会清理配置和数据库文件,所以如果你以某种方式把它们搞砸了,那么再次安装,不会替换它们。所以似乎有很多人在问“我如何彻底删除mysql-server,以便我可以重新安装一个新的?” -- 每个人都回答apt-get remove --purge mysql-server-- 我不知道为什么,但这并没有完全卸载。我的回答如下...
每个教程似乎对此都有不同的看法。对于我的 ISC BIND 区域,我应该使用/etc/bind/zones/还是/var/cache/bind/?在上次安装中,我使用/var/cache/bind/但只是因为我被引导这样做;但是,我刚刚在该新 Debian 安装中发现了一个 pid 文件,因此我认为使用“工作目录”来存储区域文件可能不是最好的主意。似乎许多管理员都使用它,因此他们在声明新区域时不必键入完整路径。
例如:
file "/etc/bind/zones/db.foobar.com";
Run Code Online (Sandbox Code Playgroud)
代替:
file "db.foobar.com";
Run Code Online (Sandbox Code Playgroud)
显然更容易打字,但这是好还是坏的做法?
有些人可能还建议将工作目录设置为/etc/bind/zones:
options {
// directory "/var/cache/bind";
directory "/etc/bind/zones";
}
Run Code Online (Sandbox Code Playgroud)
...但有些东西告诉我这不是一个好习惯,因为我认为 pid 文件将在那里创建(除非它只是/var/cache/bind巧合)。
我查看了联机帮助页,但似乎没有说明目录选项的用途,任何想法到底是为什么设计的?
如果我在 Debian Lenny 上运行以下命令:
apt-get install git
Run Code Online (Sandbox Code Playgroud)
...我无法使用 git:
# git --version
bash: git: command not found
Run Code Online (Sandbox Code Playgroud) 我正在尝试部署 Django 应用程序,但遇到了障碍。在 Debian(最新)上,到目前为止我已经运行了这些命令:
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python python-django
Run Code Online (Sandbox Code Playgroud)
我已经尝试在 Apache 2 配置文件中手动添加模块,但老实说我完全迷失了。它与我多年前使用的 Apache 版本 1 完全不同。
Syntax error on line 7 of /etc/apache2/sites-enabled/000-default:
Invalid command 'PythonHandler', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到我的sites-available/default文件中的标签之间。
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE hellodjango1.settings
PythonDebug Off
</Location>
Run Code Online (Sandbox Code Playgroud)
以下是我到目前为止使用过的教程,但运气不佳:
我试图浏览到 .html、.png、.css、.txt 文件,但页面只是空白。我试过从其他机器浏览 - 同样的问题。此外(可能不相关)没有我期望它们的日志文件:C:\inetpub\logs- 它只包含 1 个空wmsvc目录。有任何想法吗?
有一些类似的问题,我试图从中找出答案,但到目前为止我一直没有成功。请告知我如何始终将 http 重定向到 https(并在此过程中从主机名中删除www.)。还有一个附带说明,最好在主 Apache conf 中执行此操作而不是.htaccess- 但我想这不适用于大多数人。
我已将此代码段添加到一个VirtualHost部分:
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
...但它在我访问时没有效果http://www.domain(它应该重定向到https://domain)
它没有效果,因为我没有使用RewriteEngine on- 所以它现在可以工作:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud) debian ×2
django ×2
.htaccess ×1
apache-2.2 ×1
bind ×1
cron ×1
debian-lenny ×1
directory ×1
git ×1
http ×1
iis-7 ×1
linux ×1
mod-python ×1
mysql ×1
named-conf ×1
sqlite ×1
tcp ×1
website ×1