Как вести разработку сайта через апаче на линуксе
Обычно разработка ведется с использованием локального сервера запущенного командой php artisan serve. У такого сервера есть недостаток, он может обрабатывать только один запрос.
Занимаясь разработкой чат бота для телеграмм, столкнулся со следующей проблемой - при передаче photo в качестве сообщения передается url изображения. В момент, когда телеграмм принимает подобный запрос, он пытается скачать это изображение. Так как локальный сервер может обработать только один запрос, то при скачивании изображения с этого же локального сервера в этот момент не происходит. И телеграмм возвращает статус 400. Для того, что бы это решить нужно использовать локальный сервер апаче. Но с ним есть ряд траблов, о которых будет рассказано в этой статье.
Апаче у меня уже установлен и работает.
1. Заходим в директорию /etc/apache2
sudo nano ports.conf
Добавляем строку Listen 84
ctr+o enter ctr+x
cd sites-available
Добавляем запись
ctr+o enter ctr+x
Перезагружаем апаче
sudo systemctl restart apache2
Заходим в директорию
cd /var/www
Создаем директорию для проекта
sudo mkdir test-laravel-project
Внимание! Для создания директории нужно использовать sudo, потому что директория /var/www принадлежит пользователю root. Теперь если мы откроем ее через vsCode то он будет ругаться на то, что он не может сохранять файлы в этой директории. Можно будет авторизовать vscod как root, но созданные файлы попадут в git с неправильными правами. В общем с этим куча нюансов. Надо сделать следующее:
Меняем собственника директории
sudo chown -R den:den test-laravel-project
Посмотреть чья директория можно командой ls -la.
Далее открываем данную директорию в vscode и все стандартные действия при разворачивании проекта
git clone git@github.com:DVKuklin/xxxxxxxxx.git .
composer install
Создаем файл .env
php artisan key:generate
php artisan storage:link при необходимости
sudo php artisan backpack:install при необходимости (sudo потому что могут быть записаны некоторые файлы в storage)
Далее идем в браузер и вводим localhost:84 и видим это:
Это означает, что все работает. Осталось изменить права у некоторых директорий. Можно уже в консоли vscode
cd storage
chmod -R 777 logs
chmod -R 777 framework
chmod -R 777 app
Примечание: видимо после этого некоторые файлы .gitignore попали в git stage. Просто отменить их изменения.
Возможно еще это надо седалть, что бы работал файл .htaccess
sudo a2enmod rewrite sudo service apache2 restart
