2016-08-17 3 views
1

Я запускаю веб-сервер Flask на экземпляре EC2 Ubuntu. Цель состоит в том, чтобы захватить тело входящего POST, записать его в файл локально, а затем загрузить этот файл на S3.Разрешения флагов для записи файлов

Код, в основном:

@app.route('/', methods=['GET','POST']) 
@app.route('/index.html', methods=['GET','POST']) 
def index_home(): 
    data = request.data 
    with open('test.json', 'w') as f: 
     f.write(data) 
## Upload the stuff to S3 

Когда я запускаю его на локальном экземпляре Колба веб-сервер и отправить POST с JSon тела от Почтальон, он отлично работает. Но в экземпляре EC2 я получаю ошибку разрешений (согласно apache error.log) в файле test.json, что приводит к ошибке 500 при загрузке страницы.

Я искал Google и Stackoverflow (Here is a similar question, без решения) безрезультатно. Это похоже на легкую проблему, но я все пробовал и не могу заставить ее работать: я добавил своего пользователя в группу www-data, я изменил права на файлы/var/www и права на файлы для каждой комбинации корня, ubuntu (пользователь EC2 Ubuntu по умолчанию) и www-данных, о которых я мог думать, у меня есть прямые каталоги ... ничего не работает.

Очевидно, что я немного новичок. Есть ли файл конфигурации или что-то, что требует настройки, чтобы заставить это работать?

+0

Что абсолютный путь к файлу 'test.json'? –

+0

/var/www/FlaskApps/app/test.json. Однако я создал этот файл там, предполагая, что Flask будет читать/записывать в этот каталог. Я могу ошибаться. –

ответ

4

Вы должны убедиться, что программа на самом деле пытается записать в каталог, в который вы хотите его записать. Возможно, он пытается записать в каталог двоичного кода Python (или что-то еще), что зависит от вашей команды и текущего рабочего каталога. Для целей тестирования можно попытаться изменить путь так (убедитесь, что/ТМР записываемый для пользователя, который должен быть):

with open('/tmp/test.json', 'w') as f: 
    f.write(data) 
+0

У вас есть это: абсолютный путь. Это было глупо от меня, потрачено много времени. Тот факт, что он работал, меня отбросил. Я очень благодарен за быстрый ответ. –

+0

Без проблем, рад помочь;) – matt3o

+0

Это заняло у меня слишком много времени, чтобы исправить. Благодаря! –

Смежные вопросы