Laravel 5.4 на хостинге Timeweb

Редакция автор: stain

Последние новости первыми
требования для Laravel 5.6: PHP >= 7.1.3 + модули
простой путь для ubuntu 16.04lts на vps/vds/локальном сервере

sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/apache2
sudo apt update
apt-get install php7.2 #установить php7.2
sudo apt upgrade #обновиться
sudo a2dismod php7.0 #выключить php7.0
sudo a2enmod php7.2 #включить php7.2
sudo service apache2 reload #перезапустить apache2

#Установка лары 5.6
composer create-project - -prefer-dist laravel/laravel .
Удалить папку public_html и создать символическую ссылку на public
ln -s public public_html
#Далее надо выполнить две вещи в корне проекта
cp .env/example .env
php artisan key:generate
#выставить права, как указано ниже.
#После этого Лара заработает.

Чтобы не заливать вендоров туда сюда и иметь возможность работать с git(без его захламления)
положить на сайте hook

touch .git/hooks/post-receive
cat < .git/hooks/post-receive
#!/bin/sh
cd ..
GIT_DIR='.git'

if [ -e "composer.json" ];
 then
  if [ -d "vendor" ];
    then
      /opt/php7.2/bin/php -d memory_limit=500M ~/.utils/composer.phar install --no-dev
  else
      /opt/php7.2/bin/php -d memory_limit=500M ~/.utils/composer.phar update --no-dev
  fi
fi
git reset --hard

EOF
chmod +x .git/hooks/post-receive

====
Чтобы этот хук срабатывал нужно чтобы подтягивалась в консоли нужная версия php, для этого
положить композер в ~/.utils/
создать в корне сайта или всего хостинга файл .bash_profile с алиасом к нужной версии php, иначе вендоры не установятся.!!! НЕ ПОМОЖЕТ так как этот профиль запускается только если вы активный пользователь консоли. а в скрипте не выйдет, поэтому выше скрипт написан с полными путями php на текущий момент 2019/02/23? а вот composer придется залить например в ~/.utils, composer.phar хоть и присутствует в системе, но мало вероятно что вам позволят его обновлять.

cat < .bash_profile
alias composer='/opt/php7.2/bin/php -d memory_limit=500M ~/.utils/composer.phar'

EOF2

Как узнать где лежит нужня версия php
Вводим whereis php
По результам увидим нужные пути, например /opt/php70/bin/php
Запустить команду от php 7.0: /opt/php70/bin/php /путь/script.php

Все что ниже, предыдущие опыты, совершенно не актуальны, и по большей части ошибочны.

Composer уже стоит.
Создаю поддомен.
В настройках сайта ставлю по дефолтом php 7.
Вхожу через ssh в корень сайта public_html.
Выполняю команду:

composer create-project --prefer-dist laravel/laravel .

Вроде что то ставится, к сожалению выпадаю в ошибку после установки в момент конфигурации. Похоже дело в выбранной версии php. так и есть по умолчанию в консоли версия 5.3...! Чтобы успешно запустить скрипт artisan, нужно добавить расположение нужной консольной версии php в команду:

/opt/php7.0/bin/php artisan optimize

Не знаю нужно ли что то еще, надо проверять на локальной машине, чтобы знать наверняка, что после выполнения скрипта установка завершена. или смотреть код 🙂

Below are steps I've set on a hosting with cPanel without any changes in laravel_app:

check out/copy laravel_app code to your home, /home/your_user/laravel_app

set permissions:

chmod 755 /home/your_user/laravel_app/ 
chmod 755 /home/your_user/laravel_app/public/
chmod 644 /home/your_user/laravel_app/public/index.php 
chmod -R 777 /home/your_user/laravel_app/storage 
chmod -R 777 /home/your_user/laravel_app/bootstrap/cache 

create symlink

ln -s /home/your_user/laravel_app/public ~/public_html/laravel_app_public

create ~/public_html/.htaccess .htaccess

Options -Indexes

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/laravel_app_public/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ laravel_app_public/$1 
RewriteRule ^(/)?$ laravel_app_public/index.php [L] 

Чиним composer.json прописал в нем пути к php 7-мой версии (там аж 4 места для правки было), но все тщетно 🙂 Скрипт успешно исполняется, но ошибки в гуи не исчезают. Оказывается нужно сгенерировать ключ:

/opt/php7.0/bin/php artisan key:generate

По итогу.
Установил laravel в папку .laravel (чтоб не пересекалась с сайтами, хотя по сути получается что в ней будут храниться файлы сайта, в корень которого будет положена симлинка)
Правка файла composer.json чтобы команды корректно отрабатывали из консоли.
Запуск команды composer update для переактивации установленного с ошибкой конфигурирования laravel
Генерация ключей.

И вроде как все. Почти уверен что траблы не привязанного жестко php еще всплывут, так как скорее всего в процессе работы laravel со всем его комбайном обязательно обратится к консольной версии php.

P.S.: В стандартном мануале большая часть проблем описана. Так например траблы с ключом решаются переименованием файла env.example и там же описано как перегенерировать ключ, и при генерации файлик "env" с вписанным ключом появляется.

Так же там указано что следует дать полный доступ к bootstrap/cache.

Вроде как все ясно), но понимая что придется использовать препроцессоры, все снова упирается в локальный сервер, собственно оно и для git будет удобнее. В последствии буду плясать от локального размещения, и последующего запуливания на сервер(в данном случае на хостинг), и уже по проторенной дорожке и в соответствии с ней настраивать работоспособность готового продукта.

Полезно знать:
Database.
Session.
Cache.
OAuth2 - Laravel Passport.
Laravel Elixir - api для работы с препроцессорами.
Инсталяция 5-той версии.
Объяснение основ.
Laravel проект в Docker контейнерах. Github project LaraDock.
Try-laravel online course.
Первоисточник английских вкраплений.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.