What are the steps to deploy of laravel project on Debian? - laravel-5

I developed my Laravel Project on Windows using xampp. So I need to deploy this project in a Debian server. In this server, I've already installed apache2, php7.3 and composer. All fine. I transfered my project from Windows to Debian by ssh. Inside the project I had run composer update. But when I try to accesss via browser, I got 404 page not found error. Do I miss some step? Someone could please help me?

I missed to create an apache config to the new project:
Something like these:
sudo nano /etc/apache2/sites-available/meuprojeto.conf
Edit this file with the follow code:
DocumentRoot /var/www/html/meuprojeto/public
ServerName seudominio.com
Options +FollowSymlinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Config apache service to be sure it's enable:
sudo systemctl stop apache2.service
sudo systemctl start apache2.service
sudo systemctl enable apache2.service
Final steps:
Enable rewrite
sudo a2enmod rewrite
Enable your project config
sudo a2ensite meuprojeto.conf
Disable default config (default apache page)
sudo a2dissite 000-default.conf
Restart apache service
sudo systemctl restart apache2.service

Related

This site can't be reached (refussed to connect) laravel project on digitalocean

I install LAMP on my droplet in digital ocean, it did works good but now just tell "this site can't be reached, refused to connection" my IP is 157.230.139.112
My project worked well, however, from one day to the next, that simply appeared. I did not have anything important and decided to delete it and create a new droplet, however the same thing happens, I can make migrations and connect with the bd but only rejects the connection.
I did install composer, all the packages, configure my db and my etc/apache2/sites-enabled/000-default.conf and point to the public folder.
Am I doing something wrong?
Your apache server block might not be pointing to your laravel location correctly.
So, you might try configuring Apahce2 site configuration file for Laravel.
Run the command below to create a new configuration file called laravel.conf
sudo nano /etc/apache2/sites-available/laravel.conf
Copy paste the content below into the file and save it. Remember to replace 'Mywebsite' with your own domain name and directory root location.Remember to point to laravel public folder for security.
<VirtualHost *:80>
ServerAdmin admin#MyWebsite.com
DocumentRoot /var/www/html/MyWebsite/public
ServerName example.com
<Directory /var/www/html/MyWebsite/public>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Save the file and exit.
Enable the Laravel and Rewrite Module
Enable the VirtualHost by running ..
sudo a2ensite laravel.conf
sudo a2enmod rewrite
Alternatively, compare your localhost apache serverblock configuration with that on the server, ie. if you are running apache locally

Laravel: 1 folder, 2 environments

I have a question about a bad practice in Laravel.
I have only one server folder available for Laravel (in IIS).
There, I have the production site.
If I want to add a copy for development and testing against the test database, where must I place it?
Inside the production's version public folder? I donth think because it's unsafe. Sure will be an obvious best practice for that.
You can open a new port for it.
Example:
Config Virtual host with Production site:
Create a configuration file our laravel production project by typing the following commands
cd /etc/apache2/sites-available
sudo nano production.conf
In the production.conf file created paste the following content to the file and close it after saving.
Replace laravelproduction.com with the domain name of your website inside the file.
<VirtualHost *:80>
ServerName laravelproduction.com
DocumentRoot /var/www/html/production/public
<Directory /var/www/html/production>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enable the newly created .conf file and disable the default .conf which is pre-created by apache and enable mode rewrite for this to function appropriately. These are the comand to help you do that.
sudo a2dissite 000-default.conf (disable the default .conf file)
sudo a2ensite production.conf (enables the newly created .conf file)
sudo a2enmod rewrite (enables the rewrite)
Also, restart your apache server so that it can pick the changes that you have made by typing this command
sudo service apache2 restart
Config Virtual Host With Dev site
Create a configuration file our laravel dev project by typing the following commands
cd /etc/apache2/sites-available
sudo nano dev.conf
In the dev.conf file created paste the following content to the file and close it after saving.
Listen 8100
<VirtualHost *:8100>
ServerName laraveldev.com
DocumentRoot /var/www/html/dev/public
<Directory /var/www/html/dev>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enable the newly created .conf file and disable the default .conf which is pre-created by apache and enable mode rewrite for this to function appropriately. These are the comand to help you do that.
sudo a2ensite dev.conf
Finally restart your apache server so that it can pick the changes that you have made by typing this command
sudo service apache2 restart
This is how I usually use it. I hope to help you. ^_^

laravel php artisan serve command works but localhost url not working in ubuntu 18.10

Login route using localhost/project/public/login url shows error:
The requested URL /test/public/login was not found on this server.
Apache/2.4.34 (Ubuntu) Server at localhost Port 80
But using php artisan serve command it works perfectly fine.
What could be wrong?
solved:
OS: ubuntu 18.10
/etc/apache2/apache2.conf
add this line into this apache2.conf file:
<Directory /var/www/html/> AllowOverride all </Directory>
There are many reasons why your local host is not working.
Following could be one of the reasons:
1.Make sure that in /etc/apache2/sites-available/your-conf.conf file contains these things :
ServerName www.your-url.test
ServerAlias your-url.test
ServerAdmin webmaster#localhost
DocumentRoot /your-path/your-project/public
<Directory /your-path/your-project>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Problem could be with your PHP version. In our machine, there are two php:
1. For CLI(command line interface)
2. For apache server
Your laravel application may require higher or lower version of php in apache server.
For fixing that either update your php version in apache server to your required version or either setup the fpm for your projects. Then your localhost will start working.
There could be an error in your laravel application.
For checking that use command:
sudo tail -f /var/log/apache2/error.log
After hitting this command you'll see the errors that your laravel application is throwing.
But since your laravel application is running fine using serve command, so most likely problem in your case will be because of different PHP versions in CLI and apache server(front-end).
So you should either setup fpm or either upgrade or downgrade the apache server php version.
I had the same problem and i fixed it by setting up the fpm for my projects.
Thanks
The most common error in this situaion is related to unable mod_rewrite in apache do this :
sudo a2enmod rewrite
systemctl restart apache2

Create a Vhost in Ubuntu 16.04

I have started working in laravel and using lampp. I have watched many tutorials that use a vhost to make user-friendly url. I want to do it on Ubuntu 16.04.
Following tutorial is not working for me:
https://ourcodeworld.com/articles/read/302/how-to-setup-a-virtual-host-locally-with-xampp-in-ubuntu
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs/basicwebsite/public"
ServerName mywebsite.dev
</VirtualHost>
Setup a virtual host for a Laravel project
First, copy the default configuration file and rename it:
$sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/myVhost
open myVhost.conf file using this command:
$sudo nano /etc/apache2/sites-available/myVhost.conf
Add the directives:
assuming that the Laravel project is in /var/www/html/
ServerAdmin webmaster#localhost
serverName www.myAwesomeLink.com
DocumentRoot /var/www/html/laravel-app/public
<Directory /var/www/html/laravel-app>
AllowOverride All
</Directory>
so now the file will look something like this:
save and close.
Now add an entry in the hosts file:
$sudo nano /etc/hosts
add this line:
127.0.0.1 www.myAwesomeLink.com
save and close.
Enable site and the rewrite mode:
$sudo a2enmod rewrite
$sudo a2ensite myVhost.conf
Restart the server:
$sudo service apache2 restart
Serve the Laravel project:
open the project folder
php artisan serve
this will serve on port 8000 by default
you can also specify the port
php artisan serve --port=4200
Open the browser:
http://www.myAwesomeLink.com:8000
or any other specified port.
Source.
Its not working because the browsers have updated their security terms and policies including SSL certificates over .dev domains. just change your extension from .dev to something else like .localhost or .test.
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs/basicwebsite/public"
ServerName dev.mywebsite.test
</VirtualHost>
Also change the extension in /etc/hosts from .dev to .test.
127.0.0.1 dev.mywebsite.test
Also keep in mind to restart the service to load the new added virtual host i.e: restart the Apache server
Hope it helps.
I think you also need to add a host in /etc/hosts. Open the hosts file and add this line:
127.0.0.1 mywebsite.dev
You will need to restart server after this.
1.Create new file under this path /etc/apache2/sites-available/myweb.conf
2.Copy the following to the file
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/mywebsite/public
ServerName dev.mywebsite.test
<Directory "/var/www/html/mywebsite/public">
Options All
AllowOverride All
Allow from all
</Directory>
3.Run "sudo a2ensite myweb.conf"
4.Add this line "Listen 80" to file "/etc/apache2/ports.conf"
5.Restart apache server

Apache2 disable 000-default.conf HTTPS redirect

I have a problem with my local Apache webserver. I've diabled and removed the 000-default.conf file using the following commands as root user.
a2dissite /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/000-default.conf
I've created this new default.conf file, that redirects HTTP requests to the HTTPS version:
<VirtualHost *:80>
Redirect permanent / https://xxx.xxx.xxx.xxx/
</VirtualHost>
Finally I've enabled the site and restarted the sever using:
a2ensite /etc/apache2/sites-available/000-default.conf
/etc/init.d/apache2 restart
My problem is that my server does not apply the new settings. To me it seems as if it still uses the deleted 000-default.conf settings.
Use this
a2ensite /etc/apache2/sites-available/default.conf
/etc/init.d/apache2 restart
Here you are using wrong file name

Resources