Laravel 9: run project without using php artisan serve command - php

I want to run my laravel 9 app without 'php artisan serve'
i know how to do it in older version but laravel 9 don't have the server.php file in root directory
so how to do it now
and i don't want to use 'localhost/project/public/' url
I am currently on
laravel: version 9.19
OS: Ubuntu 22.04.1 LTS
php: 8.1.2
Server: Apache/2.4.52 (Ubuntu)

First step is to add your project to list of virtual hosts in XAMPP that is located in \apache\conf\extra > httpd-vhosts.conf
It can be something like:
<VirtualHost *:80>
DocumentRoot "{pathToProject}\public"
ServerName projectname.localhost
<Directory "{pathToProject}">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Second step is to add host in your hosts file that is located in same disk as your OS then \Windows\System32\drivers\etc > hosts
It should probably be something like
127.0.0.1 projectname.localhost
If you've changed default address settings, you will have to change address in hosts as well.
Restart XAMPP and you're good to go.

Related

Start laravel app on apache2.4 on windows 10

I have a laravel app, which I test with php artisan serve.
I discovered that this is a bad practise, because it is not used on production.
I have installed apache2.4, it worked, when I open localhost I see 'It Works'.
Now I try to start my laravel app through apache on my PC.
For this I have done the following steps:
Edited the httpd.conf in Apache\conf, I uncommented this line:
LoadModule rewrite_module modules/mod_rewrite.so
Edited the httpd-vhosts.conf in Apache\conf\extra, I added:
<VirtualHost *:80>
DocumentRoot "Y:/PHP-Projects"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "Y:/PHP-Projects/Project-Admin-PHP/public"
ServerName localhost.eu
</VirtualHost>
Edited the hosts file in Windows\System32\drivers\etc, I added:
127.0.0.1 www.localhost.eu localhost.eu
After every step I restarted the Apache2.4 service, but I still cant access my laravel application. The only thing, what changed is that I now get 'It Works' also on this domain: localhost.eu
What have I missed?
Currently I am starting my laravel app through php artisan serve. I can then access the app at localhost:8000.
Also I know I could set up homestead. But I discovered it too late. I have already configured and installed everything myself, and besides this one issue, everything works.
I'd like to understand how I would connect my laravel app to the apache server correctly myself.
Probably you forgot include file httpd-vhosts.conf file in httpd.conf. Sometimes this line commented by default and you should uncomment this line. After then you should restart apache2 service.
Add server alias on your file config
<VirtualHost *:80>
DocumentRoot "Y:/PHP-Projects/Project-Admin-PHP/public"
ServerName localhost.eu
ServerAlias www.localcost.eu
</VirtualHost>

VirtualHost on MacOS Mojave with MAMP doesn't work

I have a project developed on symfony 2.4 that run on correctly on my main computer using WAMP.
However, I need to move it to my laptop MacOS Mojave (v 10.14.5). To do that I install MAMP and try to set the virtual host.
Here the steps I did:
1. Installed MAMP 5.4 and set the port as default:
Apache port : 80
MySQL Port: 3306
Updated the hosts file located at /private/etc/by adding the following code:
127.0.0.1 mysite.fr
::1 mysite.fr
Updated the file httpd.conf located at /MAMP/conf/apache by removing the # before Virtual hosts line:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
4.Updated the file httpd-vhosts.conflocated at /MAMP/conf/apache/extra/ by adding the following code:
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/mysite⁩Symfony2.4⁩/web"
ServerName mysite.fr
</VirtualHost>
Restart MAMP
Open my browser and move to the url mysite.fr
My Virtualhost setting on my Mac and my Windows are exactly identical. However, it's works on my Windows only, here the error message I get on my Mac at mysite.fr
Not Found
The requested URL / was not found on this server.

What is wrong in the deploy of this Laravel application? Need I an effective domain instead the vhost used on my local environment?

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?
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.
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.

VirtualBox Ubuntu server guest: serving of symfony app ends up with: attempt denied by server configuration

I'm running Ubuntu Server using VirtualBox to develop symfony app. I've set up shared folder, changed apache default folder /var/www/html to /media/sf_apache_shared which is shared folder, for convenient development.
The default apache's index.html file, denoting that apache is set up correctly, works fine. The problematic moment comes into play, once I try to run symfony app.
If I try to create default symfony app, I get the following result:
Although I can create symfony app using the same way, but outside of that folder, for example inside of /var/www/html.
I've checked the permission of sf_apache_shared folder with the result of 770, using the following command:
stat -c %a directory
But even aside of that fact, I manually copied symfony app project to sf_apache_shared and tried to access that project, from windows host, using chrome. The result apache's logs are:
client denied by server configuration: /media/sf_apache_shared/my_project_name/app/
client denied by server configuration: /media/sf_apache_shared/my_project_name/src/
Here is my server configuration:
i´m not too sure if this will be a final fix for your problem
but you definetly have to set the DocumentRoot and Directory in you conf
to /media/sf_apache_shared/web
ins symfony app the /web folder is designed to be the document root
also you should set ServerName and access your server via the hostname
and try Allow from All
example.
<VirtualHost *:80>
ServerName hostname.com
DocumentRoot "/media/sf_apache_shared/web"
<Directory "/media/sf_apache_shared/web">
Options Indexes FollowSymLinks
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
also check/compare the owners of the folder (ls -lrta)

How to create virtual hosts in apache ubuntu 11.04

I want to create virtual hosts for my project in zend framework. I have frontend and backend (admin) functionality. I created the virtual host for my frontend functionality with necessary configuration and it running properly.
Example: In /etc/apache2/sites-available I created the file roomstays and my code is in var/www folder.
<VirtualHost *:80>
DocumentRoot "/var/www/roomstays/public"
ServerName localhost
#This should be omitted in the production environment
SetEnv APPLICATION_ENV development
<Directory "/var/www/roomstays/public">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
And it running properly with localhost.
Now I have admin i.e.backend code and as previous one I want to run this code. I put my newer code into same var/www directory with named roomstaysback. My question is how to create virtual host for this backend code. I want to run both frontend and backend side code.
Please give me any solution I am completely new in it thanks.....
You can handle both front end and back end from same virtual host. zend framework provides the concept of modules. Here is one example. Have a look
Setup multi modules in Zend Framework v1.9 with 13 steps
and the detailed one is here
Using a Conventional Modular Directory Structure
1.Create a conf file for virtual host
$sudo gedit /etc/apache2/sites-available/HOST_NAME.conf
2.then paste following contents to this file
<VirtualHost *:80>
ServerName www.HOST_NAME.com (set host name here)
DocumentRoot /var/wwww/HOST_FOLDER (point to host path )
</VirtualHost>
Add host name
$sudo gedit /etc/hosts
Then paste following contents
127.0.0.1 www.HOST_NAME.com
enable the site
$sudo a2ensite HOST_NAME.conf
Restart apache server
$sudo service apache2 reload
The process is over and you can browse www.HOST_NAME.com :)

Categories