Возникли проблемы с правами доступа при попытке создать PDF-файл на сервере Apache с помощью Django. - PullRequest
0 голосов
/ 09 марта 2019

У меня проблема с развертыванием моего веб-приложения.

Я использую Django 2.1.7 на apache2.

Я установил все необходимые разрешения для папок и файлов (по крайней мере, так я думаю):

drwxr-s--- 10 bedirt www-data 4096 Mar  8 21:10 projectNal

А в папке:

-rwxr-x---  1 bedirt www-data  11357 Mar  2 20:37 LICENSE
-rwxr-x---  1 bedirt www-data     12 Mar  2 20:37 README.md
drwxr-x---  4 bedirt www-data   4096 Mar  2 20:42 addQuestion
-rwxrwx---  1 bedirt www-data 536576 Mar  2 21:51 db.sqlite3
-rwxr-x---  1 bedirt www-data    542 Mar  2 20:37 manage.py
drwxrwx---  2 bedirt www-data   4096 Mar  8 21:10 media
drwxr-x---  3 bedirt www-data   4096 Mar  8 21:53 projectNal
drwxr-x---  6 bedirt www-data   4096 Mar  8 22:49 qBank
-rwxr-x---  1 bedirt www-data    512 Mar  2 20:37 requirements.txt
drwxr-x--- 12 bedirt www-data   4096 Mar  2 20:37 static
drwxr-x---  5 bedirt www-data   4096 Mar  2 20:37 users
drwxr-x---  5 bedirt www-data   4096 Mar  2 20:37 venv

Я использую pylatex для создания латексного документа, процедура такова: он запускает компиляцию латекса и удаляет файл .tex, а также загружает pdf на медиа-папку.

Вот код:

Output_tex.py

def create_worksheet_pdf(data, title):

    # Document with `\maketitle` command activated
    doc = Document(default_filepath='../media/', documentclass='exam')
    # Title part

    doc.preamble.append(Command('headrule'))
    doc.preamble.append(Command('chead', '?'))
    doc.preamble.append(Command('lhead', '?'))
    doc.preamble.append(Command('rhead', '?'))

    # questions
    with doc.create(Section(title)):
        doc.append(Command('begin', 'questions'))
        for row in data:
            questionHead = r'\question (' + row.year + '-' + row.source + '-' + row.problemNumber + ')\\\\'
            doc.append(NoEscape(questionHead))
            doc.append(NoEscape(r"" + row.problemStatement))    
        doc.append(Command('end', 'questions'))
    # questions end

    # end
    doc.generate_pdf(filepath='media/'+title, clean_tex=True)

Детали filepath могут быть важны в этом файле, поэтому я не могу использовать MEDIA_ROOT или MEDIA_URL, так как получаю ошибку. Как видно из разрешения, я дал права на запись в apache (www-data) как для носителей, так и для БД. Мои медиафайлы и т. Д. Работают нормально на локальном компьютере, но я только что загрузил их на сервер и теперь не могу понять, почему он не работает.

Ошибка:

PermissionError at /output/
[Errno 13] Permission denied: 'Momentum-Questions.tex'

И я настроил MEDIA_ROOT и MEDIA_URL, вот оно:

Settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
  • Все работало нормально до тех пор, пока я не добавил потрясающую часть PDF. Так что мой файл conf и все в порядке, если нет ничего, что нужно добавить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...