Настройте удаленное приложение Laravel для доступа из браузера

#php #apache #laravel-5 #centos7

#php #apache #laravel-5 #centos7

Вопрос:

Все проекты laravel, над которыми я работал, были установлены / настроены другими людьми. Давным-давно мне удалось установить проект Laravel на компьютер с Windows с помощью WAMP, и, насколько я помню, это было проще. Недавно я получил доступ к чистой капле из digitalocean.com с установленным Centos 7. Я думаю, что droplet — это что-то вроде VPS. У вас есть IP-адрес и доступ по SSH После некоторой головной боли мне удалось успешно установить laravel с помощью composer. Я также установил mysql и apache (httpd) Теперь у меня есть

/var/www/laravel

папка с установкой последней версии Laravel (5.3)

Я зашел в /var/www/ и вызвал

создание композитора-проект laravel / laravel mypro

Теперь у меня есть оболочка приложения laravel для нового приложения по адресу

/var/www/mypro

Я хотел бы получить к нему доступ из браузера, чтобы я мог начать работать над ним, но я не знаю, что мне нужно делать. Есть много руководств о том, как это сделать, но они меня очень смущают.

Что я должен сделать дальше, чтобы иметь возможность видеть результаты того, над чем я работаю? Если в браузере я получаю доступ к droplet по IP, например

http://xxx.xxx.xxx.xxx

Я получаю

Не найден запрошенный URL / не найден на этом сервере.

То же самое, если я добавлю к URL-адресу имя моего приложения, например

http://xxx.xxx.xxx.xxx/mypro

Я полагаю, что я должен настроить httpd? Или, может быть, переместить папку проекта куда-нибудь еще?

Я попытался переместить папку моего проекта в папку /var/ www / html, поэтому

/var/www/html/mypro

и теперь, когда я пытаюсь получить доступ к URL-адресу, я получаю пустую страницу (просмотр источника страницы браузера также возвращает пустую страницу) Я даже пытался

http://xxx.xxx.xxx.xxx/mypro/server.php

поскольку существует server.php файл в корне папки моего проекта … тот же результат

Я даже добавил conf в папку /etc/httpd/conf.d/ с именем mypro.conf, куда я добавил эти строки:

 <VirtualHost *:80>
   ServerName mypro
   DocumentRoot "/var/www/html/mypro/public"
   <Directory /var/www/html/mypro/public>
      AllowOverride all
   </Directory>
</VirtualHost>
 

Ничего нового не происходит
Я делал «перезапуск службы httpd» каждый раз, когда что-то менял.

Я даже пытался

php artisan serve —хост xxx.xxx.xxx.xxx —порт 8000

и попробовал url http://xxx.xxx.xxx.xxx:8000

Теперь я получаю страницу «Не удается подключиться» из браузера, поэтому я остановил «подачу»

Что мне нужно сделать, чтобы наконец начать работать?

Ответ №1:

Ниже приведен способ, как я это делаю в Ubutnu 16.04 (это можно сделать с некоторыми изменениями в Centos).

Обновите репозиторий пакетов.

 sudo apt update
 

Обновите пакеты.

 sudo apt dist-upgrade
 

Установите PHP

 apt install php
 

Установите apache2

 apt install apache2
 

Установка плагинов PHP

 apt install php-mbstring php-pdo php-tokenizer php-xml php-mcrypt php-gd libapache2-mod-php php-curl php-mysql
 

Включить mcrypt

 phpenmod mcrypt

a2enmod rewrite
 

Перезапустите сервер Apache

 service apache2 restart
 

Установить Composer

 curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer
 

Установите Git

 apt install git
 

Установите mysql-сервер

 apt install mysql-server
 

Установите Phpmyadmin (необязательно)

 apt install phpmyadmin
 

Установите zip и распакуйте

 apt install zip unzip
 

Теперь создайте конфигурацию виртуального хоста apache для вашего веб-сайта.

 cd /etc/apache2/sites-available

touch pqr.xyz.com.conf
 

Основным содержанием является pqr.xyz.com.conf

 #content of pqr.xyz.com.conf
<VirtualHost *:80>
    ServerName pqr.xyz.com

    ServerAdmin webmaster@xyz.com
    DocumentRoot /var/www/html/pqr.xyz.com/public

    <Directory /var/www/html/pqr.xyz.com>
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
 

Теперь goto /var/www/html

 cd /var/www/html/
 

Создайте каталог с именем вашего веб-сайта

 mkdir pqr.xyz.com
 

Теперь добавьте пользователя, потому что при создании проекта laravel не рекомендуется работать с composer от имени root.

 adduser admin --ingroup admin
 

Теперь сделайте администратора владельцем этого каталога

 chown -R admin pqr.xyz.com
 

Теперь войдите в систему как администратор

перейдите в /var/www/html

 cd /var/www/html
 

Установите Laravel с помощью composer

 composer create-project laravel/laravel pqr.xyz.com

cd /var/www/html/pqr.xyz.com
 

Теперь ваше хранилище и каталог начальной загрузки должны иметь разрешение на запись для сервера apache 2, поэтому сделайте apache владельцем этих двух каталогов.

 chown -R www-data storage

chown -R www-data bootstrap
 

Теперь войдите в систему как root

Активируйте pqr.xyz.com.conf

 a2dissite 000-default.conf

service apache2 reload

a2ensite shopperstock.eveningx.com.conf

service apache2 reload

service apache2 restart
 

Возможно, это не лучший способ работы с любым проектом larave, поэтому не стесняйтесь комментировать или предлагать правки.

Комментарии:

1. Поэтому, если вы прочитаете вопрос, вы поймете, что я уже установил mysql, php, apache, unzip, git и laravel. Я тоже создал этот проект. В centos у меня есть служба httpd и пользователь apache, но в остальном я сделал все, что вы предлагаете. Мой файл httpd conf (mypro.conf) находится в другом месте (как указано в вопросе), но содержит все соответствующие части из того, что вы предлагаете. Он по-прежнему не работает. Есть какие-нибудь предложения о том, как действовать дальше? (Для CENTOS, пожалуйста)

2. Это может быть что-то о htaccess … или других файлах конфигурации … ?

3. Похоже, что apache не может найти ваш общедоступный каталог. Итак, вы активировали свой конфигурационный файл apache, как я сделал в последнем разделе моего ответа? Я думаю, что проблема связана с вашим конфигурационным файлом виртуального хоста apache . Вы должны проверить файлы журналов apache . В ubuntu файлы журнала apache находятся по адресу /var/log/apache2/error.log .

4. Следуя вашей рекомендации, я просмотрел файлы журнала apache и обнаружил свою проблему. Итак, моя конфигурация в конце концов хороша, но мне пришлось выполнить «php artisan config: cache» и «php artisan cache: очистить». Спасибо вам за то, что направили меня в правильном направлении

5. Приветствую @user1137313, я рад, что это помогло вам.