【发布时间】:2021-10-21 11:27:21
【问题描述】:
我的 python 应用程序正在使用 sentence_transformers 包,它尝试写入我的 ubuntu 系统上的 /var/www/ 目录。
这是它当前显示的错误:
Thu Aug 19 18:33:32.980245 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] mod_wsgi (pid=50371): Failed to exec Python script file '/var/www/html/flaskapp/production.wsgi'.
[Thu Aug 19 18:33:32.980302 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] mod_wsgi (pid=50371): Exception occurred processing WSGI script '/var/www/html/flaskapp/production.wsgi'.
[Thu Aug 19 18:33:32.980465 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] Traceback (most recent call last):
[Thu Aug 19 18:33:32.980514 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/var/www/html/flaskapp/production.wsgi", line 7, in <module>
[Thu Aug 19 18:33:32.980520 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] from run_app import app as application
[Thu Aug 19 18:33:32.980531 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/var/www/html/flaskapp/run_app.py", line 4, in <module>
[Thu Aug 19 18:33:32.980536 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] import utils as helper
[Thu Aug 19 18:33:32.980546 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/var/www/html/flaskapp/utils.py", line 5, in <module>
[Thu Aug 19 18:33:32.980551 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] model = SentenceTransformer('stsb-roberta-large')
[Thu Aug 19 18:33:32.980561 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/var/www/html/flaskapp/venv/lib/python3.8/site-packages/sentence_transformers/SentenceTransformer.py", line 81, in __init__
[Thu Aug 19 18:33:32.980566 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] model_path_tmp = snapshot_download(model_name_or_path,
[Thu Aug 19 18:33:32.980577 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/var/www/html/flaskapp/venv/lib/python3.8/site-packages/sentence_transformers/util.py", line 424, in snapshot_download
[Thu Aug 19 18:33:32.980582 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] os.makedirs(nested_dirname, exist_ok=True)
[Thu Aug 19 18:33:32.980592 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980597 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980607 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980611 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980621 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980625 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980635 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] File "/usr/lib/python3.8/os.py", line 223, in makedirs
[Thu Aug 19 18:33:32.980640 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] mkdir(name, mode)
[Thu Aug 19 18:33:32.980640 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] PermissionError: [Errno 13] Permission denied: '/var/www/.cache'
/var/www目录的权限设置:
ubuntu@ip-xxx-xx-xx-xxx:/var$ ls -l
total 48
drwxr-xr-x 3 root root 4096 Aug 18 19:38 www
drwxr-xr-x 2 root root 4096 Aug 19 13:24 backups
drwxr-xr-x 14 root root 4096 Aug 19 11:03 cache
drwxrwxrwt 2 root root 4096 Apr 30 23:25 crash
drwxr-xr-x 39 root root 4096 Aug 18 19:38 lib
drwxrwsr-x 2 root staff 4096 Apr 15 2020 local
lrwxrwxrwx 1 root root 9 Apr 30 23:15 lock -> /run/lock
drwxrwxr-x 10 root syslog 4096 Aug 18 19:38 log
drwxrwsr-x 2 root mail 4096 Apr 30 23:15 mail
drwxr-xr-x 2 root root 4096 Apr 30 23:15 opt
lrwxrwxrwx 1 root root 4 Apr 30 23:15 run -> /run
drwxr-xr-x 6 root root 4096 Apr 30 23:36 snap
drwxr-xr-x 4 root root 4096 Apr 30 23:17 spool
drwxrwxrwt 7 root root 4096 Aug 19 18:11 tmp
将chmod 777 设置为/var/www/ 是否理想?
【问题讨论】:
-
chmod 777从来都不是一个好主意。顺便说一句:这与权限无关,还与这些权限是谁的权限有关! -
@UlrichEckhardt 所说的:这不是一个好主意,永远不会(除非它是
/tmp并且设置了粘性位)。我会考虑将运行 uWSGI 应用程序的用户组设为所有者并授予该组写权限。但是,仅当您不打算同时运行多个网站时才适用。如果您执行后者,则在每个应用程序的/var/www下创建一个子目录并拥有不同的所有权。您可以更细化并创建.cache并使其归该组所有。 -
@tink,现在说得通了。但是,我仍然不确定如何授予组写入权限。能否请您指教。
-
例如
touch /var/www/.cache; chgrp www-data /var/www/.cache; chmod g+w /var/www/.cache -
@tink 谢谢!你的解决方案对我有用!!!