Author |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Fri 14 Jul '23 22:08 Post subject: Apache2 only partially loading a page |
|
|
Hello there,
I uploaded a laravel 10 project to an ubuntu 22 server with apache2, the thing is, just the starting position is showed by the laravel, the other ones are not and aren't even found at all by the apache.
the relevant parts of the apache2 config file are: https://hastebin.com/share/ohejewoyil.php
I suspect the apache2 is unable to find them but i don't know how to correct it, any suggestions or help?
Have a nice day |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Mon 17 Jul '23 12:54 Post subject: |
|
|
IIRC Lavaravel requires the use of .htaccess files.
So instead of Options None You may allow overrides
Code: | Options AllowOverride | . |
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Tue 18 Jul '23 0:35 Post subject: |
|
|
Could you develop a little bit more?
Like, i just remove the "None" of the three related segments?
How can i apply what you suggest?
I ask this because i do remove all the "None" in the three blocks and it doesn't work |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Tue 18 Jul '23 11:51 Post subject: |
|
|
replace the Options None with Options AllowOverride.
After that restart httpd (apache)
Code: |
<VirtualHost *:80>
DocumentRoot /var/www/html/VirtualDocs/public
ServerName VirtualDocs.test
<Directory "/var/www/html/VirtualDocs/public">
allow from all
Options AllowOverride
Require all granted
</Directory>
</VirtualHost>
|
|
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Thu 20 Jul '23 8:33 Post subject: |
|
|
"allow from all" can be removed, that is the old syntax. "Require all granted" does the job in version 2.4.
Sorry, for the mistake.
Correct is
Code: |
<VirtualHost *:80>
DocumentRoot /var/www/html/VirtualDocs/public
ServerName VirtualDocs.test
<Directory "/var/www/html/VirtualDocs/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
|
|
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Thu 20 Jul '23 18:39 Post subject: |
|
|
It doesn't work
I mean, it doesn't drop any error that stop it from work like before but doesn't fix the main issue that bring me here either, and the issue itself is very weird, let me show you with images maybe that help to have a clear picture about it:
This is the arriving page:
https://imgur.com/a/8e4XpiQ
This is Any other page after that:
https://imgur.com/a/VVPci47
And let me assure you than both pages work perfectly in local. |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Sat 22 Jul '23 13:59 Post subject: |
|
|
It seems like mod rewrite is no loaded. |
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Mon 24 Jul '23 17:37 Post subject: |
|
|
Can you develop a little bit what do you mean by that?
And how can i fix it? |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Thu 27 Jul '23 8:22 Post subject: |
|
|
The 404 URLs are redirected to the index.php since those are only virtual paths that don't exist as files on the system. Like your "contracto" URL.
So you may try to enable mod_rewrite
Code: |
sudo a2enmod rewrite
sudo systemctl restart apache2
|
|
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Sun 30 Jul '23 17:59 Post subject: |
|
|
James Blond wrote: | The 404 URLs are redirected to the index.php since those are only virtual paths that don't exist as files on the system. Like your "contracto" URL.
So you may try to enable mod_rewrite
Code: |
sudo a2enmod rewrite
sudo systemctl restart apache2
|
|
ĦThanks a lot!
It works like a Charm
I just came back here to say thank you about this.
Can i ask if may there is a way to set the virtualhost in order to publish two laravels at the same time?
Considering the virtualhost you already see here.
And again, thanks a lot, ĦIt Works! |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7360 Location: Germany, Next to Hamburg
|
Posted: Mon 31 Jul '23 11:40 Post subject: |
|
|
The easiest way is to add another vhost. |
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Mon 31 Jul '23 23:39 Post subject: |
|
|
Try that, i experiment a little bit trying with another port and it doesn't work even when that port is actually open
https://hastebin.com/share/awirumufef.php
Any suggestions on how to do it?
Is there a way to do it by the name?
What other approaches do you know and recommend? |
|
Back to top |
|
tangent Moderator
Joined: 16 Aug 2020 Posts: 346 Location: UK
|
Posted: Tue 01 Aug '23 21:47 Post subject: |
|
|
As James has said, you need to add another VirtualHost entry with appropriate ServerName directive(s), which looking at your hastebin shared configuration, you have done. Presume you added a second listen entry for port 81, so what does "httpd -S" produce? For me I get:
Code: | C:\Apache24\bin>httpd -S
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 VirtualDocs.test (C:/Apache24/conf/httpd.conf:567)
*:81 Appmunimarket.test (C:/Apache24/conf/httpd.conf:577)
ServerRoot: "C:/Apache24"
Main DocumentRoot: "C:/Apache24/htdocs"
Main ErrorLog: "C:/Apache24/logs/error.log"
Mutex default: dir="C:/Apache24/logs/" mechanism=default
PidFile: "C:/Apache24/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: SRVROOT=C:/Apache24 |
and the sites work as expected, provided your name services (DNS or local hosts file) resolve the site names for the browser.
If you read the VirtualHost documentation https://httpd.apache.org/docs/current/mod/core.html#virtualhost, you'll note that the first VirtualHost block for a given port, is also the default entry, if a specific ServerName match isn't found in a subsequent VirtualHost block.
Either way, the whole point of VirtualHosts, is you don't need to use different ports for multiple sites, so I suggest you check your Apache configuration and logs for more clues. |
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Wed 02 Aug '23 13:24 Post subject: |
|
|
Ok perfect, i dig a little bit through the docs you send me but i have some question
How can i set the thing in order to being able to connect through a ServerName (or ServerAlias if apply) without the use of a DNS?
Is there even a way?
Is there a special way to indicate this to the browser so i can go to that other side instead of the default?
The VirtualHosts so far https://nopaste.linux-dev.org/?1338976
Bear in mind i'm in ubuntu 22 (if relevant) |
|
Back to top |
|
tangent Moderator
Joined: 16 Aug 2020 Posts: 346 Location: UK
|
Posted: Thu 03 Aug '23 20:37 Post subject: |
|
|
Apologies, I should have noted you were on Ubuntu, not Windows.
So in which file have you placed your two VirtualHost entries? If it's /etc/apache2/apache2.conf, then you've not followed the recommended layout for configuration files on Ubuntu (Debian) - see the comments at the top of the apache2.conf file.
Split (move) your two vhost entries into suitably named site files, e.g.
/etc/apache2/sites-available/www.certera.test.conf
and
/etc/apache2/sites-available/other.certera.test.conf
Enable the sites and reload the Apache configuration
Code: | $ sudo su -
# a2ensite www.certera.test.conf
# a2ensite other.certera.test.conf
# systemctl reload apache2 |
Verify the configuration is what you expect
Code: | # source /etc/apache2/envvars
# /usr/sbin/apache2 -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost other.certera.test (/etc/apache2/sites-enabled/other.certera.test.conf:1)
port 80 namevhost www.certera.test (/etc/apache2/sites-enabled/www.certera.test.conf:1
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP VHOSTS
Define: DUMP_RUN_CFG
Define: ENABLE USR LIB CGI BIN
User: name="www-data" id=33
Group: name="www-data" id=33 |
Apache will determine which VirtualHost configuration to use based on the host header passed through the http request.
So you don't have to have DNS entries to test this type of configuration, as long as the browser is able to resolve the http host to know where to send the request. Edit the appropriate local hosts file (Linux or Windows) and add entries for your test sites. |
|
Back to top |
|
Obsdark
Joined: 22 Apr 2021 Posts: 12
|
Posted: Mon 07 Aug '23 21:46 Post subject: |
|
|
Given this as the document today: https://nopaste.linux-dev.org/?1338986
So, let me get this straight just to clarify
You say than i need to put one of those in one document and the other in another one, both of them in the folder sites-available as this:
/etc/apache2/sites-available/www.certera.test.conf
/etc/apache2/sites-available/other.certera.test.conf
and with nothing else
Then, i just write this commands:
$ sudo su -
# a2ensite www.certera.test.conf
# a2ensite other.certera.test.conf
# systemctl reload apache2
And that should be it?
If not and i miss something, i'll apreciate an indication about what i miss, or if it from that point on i need to do something else, i apreciate if you clarify it to me.
Another question:
How should i indicate in the url to enter one or the other project given the case than it is one ip?
For instance, if ip were, i don't know, 111.222.333.444, how can i connect to www.certera.test and to other.certera.test?
I ask this because i assume if i'm outside of that machine and/or network, like in the general internet for instance, i cannot connect directly using those urls without having that url linked through the DNS network of the internet to it am i right?
And if i'm wrong and i can, how exactly should i write it in the url bar on the navigator to enter one or the other projects?
Thank you for your time |
|
Back to top |
|
tangent Moderator
Joined: 16 Aug 2020 Posts: 346 Location: UK
|
Posted: Mon 07 Aug '23 23:27 Post subject: |
|
|
To clarify and confirm:
1) Remove your two VirtualHost entries from apache2.conf
2) Split them into two separate files as described in the sites-available directory. I simply chose file names based on your ServerName entries.
3) Yes, run the commands as listed to enable those virtual host sites and restart Apache. The "apache2 -S" command as shown should then confirm those virtual host sites are functional.
Re your second question, I tried to explain that you can use local host file entries to test your sites in the absence of official DNS entries on the internet.
So, if your Apache server IP is 111.222.333.444 then add test entries to /etc/hosts file on a (local) client machine where your test browser is, e.g.
# Test site entries.
#
111.222.333.444 www.certera.test
111.222.333.444 other.certera.test That client browser should then be able to resolve requests such as http://www.certera.test, to the appropriate IP address, and connect to your Apache server. Apache will look at the host header in the HTTP request, pass the request to the corresponding virtual host site, and then return the appropriate content.
As you say, to access the sites remotely, you'll need appropriate external (routeable) IP DNS entries, as well as exposing your Apache server to the Internet.
There are numerous documents on the Internet covering the networking principles involved here, but such details and assistance in this area are beyond the scope of this site, which is primarily concerned with Apache web server and its configuration.
Good luck. |
|
Back to top |
|