What is wrong in the deploy of this Laravel applic

2019-09-19 15:51发布

I am pretty new in PHP and moreover in Laravel and I am pretty desperate trying to deploy a Laravel 5.4 application that works fine on my local environment on my Linux remote server.

So I think that it is something related to virtual host configuration or something like this (maybe also something related to the .htaccess file)

In my local environment (I am using XAMPP on Windows) I have setted this virtual host into the C:\xampp\apache\conf\extra\httpd-vhosts.conf file:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/HotelRegistration/public"
    ServerName laravel.dev
</VirtualHost>

So opening the laravel.dev URL I obtain the standard Laravel homepage (I have yet not replaced it with a landing page).

Then if I open this URL: http://laravel.dev/registration

I obtain the user registration page developed by me, this because I have this route into my web.php file into my project:

Route::resource('/registration', 'RegistrationController');

Then into my RegistrationController.php there is this method showing the resources/views/registration/index.blade.php view

public function index(){

    return view('/registration/index');

}

All works fine.

Now I have uploaded this Laravel website into my remote Linux server, into this folder: /var/www/html/HotelRegistration

But now my problem is that in this remote environment I have not virtual host (correct me if I am doing wrong assertion: from what I have understand the virtual host is used on the local environment to simulate a domain that Laravel need to point to the public folder, is it this reasoning correct?)

Anyway, this is the URL of the public folder of my deployed web site on my remote server:

http://89.36.211.48/HotelRegistration/public/

As you can see opening it the Laravel landing page is correctly shown, the problem is that I can access to the previous registration page, the only way that I have found is to open this URL:

http://89.36.211.48/HotelRegistration/public/index.php/registration

but it is pretty horrible and above all when the registration form is submitted it is generated a POST request toward this URL http://89.36.211.48/registration that end into a 404 Not Found error.

So I think that it depend by the fact that in this remote server I can't use a virtual host that simulate a domain (as I have on my local environment), but I am not sure about it.

What can I do to solve the situation? Do you think that using a effective domain (something like: www.myregistration.com) that points to this directory of my remote server http://89.36.211.48/HotelRegistration/public/ I can solve this problem?

2条回答
孤傲高冷的网名
2楼-- · 2019-09-19 16:12

You need to configure your domain in your server and need to reconfigure the apache. I'm considering you are having apache2 server so here you can do:

Step 1 Go to the apache2 folder cd /etc/apache2

Step 2 You can see sites-available folder go inside it cd sites-available

Step 3 Make a new file name it laravel.dev.conf

Step 4 Write down the following sudo nano laravel.dev.conf

Step 5 Write down the following option:

<VirtualHost *:80>
     ServerAdmin webmaster@laravel.dev
     ServerName laravel.dev
     ServerAlias www.laravel.dev
     DocumentRoot /var/www/html/laravel.dev/public/
     ErrorLog /var/www/html/laravel.dev/logs/error.log
     CustomLog /var/www/html/laravel.dev/logs/access.log combined
     <Directory /var/www/html/laravel.dev/public/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        Allow from all
        Require all granted
     </Directory>
</VirtualHost>

Step 6 Now go to this folder/create a new one cd /var/www/html/laravel.dev

Step 7 Copy/Install your laravel application here.

Step 8 Now you can enable your site by typing sudo a2ensite laravel.dev.conf

Step 9 Now restart the apache2 sudo service apache2 restart

Now you can have proper access to your domain. Hope this helps.

查看更多
一夜七次
3楼-- · 2019-09-19 16:17

Since you are using XAMPP

Add the following into your VirtualHost Directive:

<Directory "LINUX PATH TO /HotelRegistration/public">
        AllowOverride All
</Directory>

Your final VirtualHost Directive should look like:

<VirtualHost *:80>
    DocumentRoot "LINUX PATH TO /HotelRegistration/public"
    ServerName 89.36.211.48

    <Directory "LINUX PATH TO /HotelRegistration/public">
        AllowOverride All
    </Directory>
</VirtualHost>

After the configuration changes, restart Apache then you are good to go.

查看更多
登录 后发表回答