Laravel

Как вести разработку сайта через апаче на линуксе

Настройка среды для разработки сайта через апаче

Обычно разработка ведется с использованием локального сервера запущенного командой php artisan serve. У такого сервера есть недостаток, он может обрабатывать только один запрос.

Занимаясь разработкой чат бота для телеграмм, столкнулся со следующей проблемой - при передаче photo в качестве сообщения передается url изображения. В момент, когда телеграмм принимает подобный запрос, он пытается скачать это изображение. Так как локальный сервер может обработать только один запрос, то при скачивании изображения с этого же локального сервера в этот момент не происходит. И телеграмм возвращает статус 400. Для того, что бы это решить нужно использовать локальный сервер апаче. Но с ним есть ряд траблов, о которых будет рассказано в этой статье.

Апаче у меня уже установлен и работает.

1. Заходим в директорию /etc/apache2

sudo nano ports.conf

Добавляем строку Listen 84


ctr+o enter ctr+x

cd sites-available

Добавляем запись

<VirtualHost *:84>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test-laravel-project/public

<Directory /var/www/test-laravel-project/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/localhost_84_error.log
CustomLog ${APACHE_LOG_DIR}/localhost_84_access.log combined
</VirtualHost>


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