Сначала несколько деталей
Итак, я сделал небольшое веб-приложение с Flask. Теоретически он должен получать IP каждый раз, когда кто-то запрашивает или посещает веб-сайт. У меня все сделано (на Windows мой код работает отлично), но я установил Flask и перенес свой проект на сервер Linux, где у меня установлен Apache2. Я настроил Apache, чтобы он обрабатывал запросы к веб-приложению Flask. Все хорошо, как и мои шаблоны загружаются просто отлично, но часть с протоколированием IP не работает. Я думаю, что получить IP не проблема, хотя хранить его, скажем, файл json Каждый раз, когда я пытаюсь запустить, я получаю ошибку 500 на своем веб-сайте.
Apache Error Log : [Errno 13] Permission denied '/opt/iplogs/iplog.json'
Код Python
def writeToJSONFile(path, fileName, data):
filePathNameWExt = path + fileName + '.json'
with open(filePathNameWExt, 'a') as fp:
json.dump(data, fp, indent=2)
fp.close()
@app.route("/")
def getIP():
visit = {}
ip_visit = request.remote_addr
now = datetime.now()
request_time = now.strftime("%d/%m/%Y %H:%M:%S")
visit["IP"] = str(ip_visit)
visit["date"] = str(request_time)
writeToJSONFile("/opt/iplogs/", "iplog", visit) # WHEN i comment this function out there is no 500 error
return render_template("home.html")
Основная проблема
Так что в Windows в среде разработки он работает нормально, но также и в linux, когда я просто позволяю Flask работать без apache обработки его запросов, только когда я запускаю сайт через Apache Я получаю сообщение об ошибке «Отказано в доступе». Поэтому он должен что-то делать с apache и его правами на запись?
Обратите внимание, что папка, в которой находится мой flask (python код), полностью отличается от того, где регистрируются ips + я использую Ubuntu и я ничего не менял в отношении разрешений для файлов или около того, черт возьми, я даже пробегаю root (я знаю, что я не должен этого делать, но это только для тестирования очень небольшой проект)
Это все, что я могу дать вам, ребята
Спасибо за все ответы