0

So this is a bit of a debugging question, but I do not have any idea what else to try.

I am new to Magento and I wanted to set up a local instance of it to fiddle around. I followed effectively this tutorial. After everything is done, trying to open the Magento site on browser merely shows the index of the directory Magento is installed on, as shown below:

On the same machine, another test pure php page works fine.
I will post the Apache configuration of the site and the configuration of Magento as shown by the magento config:show command. Feel free to ask whatever other configuration or log is needed to find out what is happening.

Site Apache configuration:

<VirtualHost *:80>
 ServerAdmin admin@localhost
 DocumentRoot /var/www/magento2.4/pub
 <Directory /var/www/html/magento2.4/pub>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
# Require all granted
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Magento config output:

$ sudo -u www-data /var/www/magento2.4/bin/magento config:show
yotpo/module_info/yotpo_installation_date - 2021年05月08日
yotpo/sync_settings/orders_sync_start_date - 2021年05月08日
catalog/search/engine - elasticsearch7
catalog/search/elasticsearch7_server_hostname - localhost
catalog/search/elasticsearch7_server_port - 9200
catalog/category/root_id - 2
web/seo/use_rewrites - 1
web/unsecure/base_url - http://localhost/
general/locale/code - en_US
general/locale/timezone - America/Chicago
general/region/display_all - 1
general/region/state_required - AU,BG,BR,CA,CH,CN,CO,EE,ES,HR,IN,IT,LT,LV,MX,PL,RO,US,UY
currency/options/base - USD
currency/options/default - USD
currency/options/allow - USD
analytics/subscription/enabled - 1
crontab/default/jobs/analytics_subscribe/schedule/cron_expr - 0 * * * *
crontab/default/jobs/analytics_collect_data/schedule/cron_expr - 00 02 * * *
msp_securitysuite_recaptcha/frontend/enabled - 0
msp_securitysuite_recaptcha/backend/enabled - 0
twofactorauth/duo/application_key - FLUe5W1ndlNSCOt5ah5IUluRgIbO2ahoz8pWOVykoky06biGd0Aisvdw1slOIIfX
connector_dynamic_content/external_dynamic_content_urls/passcode - V1QrRRz31I7TUG0TZ1RDJZE7eRxFxaiR
connector_automation/review_settings/allow_non_subscribers - 1
connector_configuration/abandoned_carts/allow_non_subscribers - 1
sync_settings/addressbook/allow_non_subscribers - 1
connector_developer_settings/system_alerts/user_roles - 1

Elastic search ping command output:

$ curl -XGET localhost:9200
{
 "name" : "user-pc",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "RfVO4Tj6TcCQWwyDegap3g",
 "version" : {
 "number" : "7.12.1",
 "build_flavor" : "default",
 "build_type" : "deb",
 "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7",
 "build_date" : "2021年04月20日T20:56:39.040728659Z",
 "build_snapshot" : false,
 "lucene_version" : "8.8.0",
 "minimum_wire_compatibility_version" : "6.8.0",
 "minimum_index_compatibility_version" : "6.0.0-beta1"
 },
 "tagline" : "You Know, for Search"
}

.htaccess file contents:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteRule .* /pub/0ドル [L]
DirectoryIndex index.php

Apache error log has nothing generated whenever I access the site.

Below are the contents added to the Apache access logs when I access the site:

127.0.0.1 - - [09/May/2021:19:52:43 +0300] "GET / HTTP/1.1" 200 1036 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
127.0.0.1 - - [09/May/2021:19:52:43 +0300] "GET /icons/blank.gif HTTP/1.1" 304 179 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
127.0.0.1 - - [09/May/2021:19:52:43 +0300] "GET /icons/unknown.gif HTTP/1.1" 304 179 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
127.0.0.1 - - [09/May/2021:19:52:43 +0300] "GET /icons/text.gif HTTP/1.1" 304 180 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
127.0.0.1 - - [09/May/2021:19:52:43 +0300] "GET /icons/folder.gif HTTP/1.1" 304 179 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"

Apache modules loaded:

$ apache2ctl -M
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
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php7_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)

I made sure multiple times to convert the permissions of all the files in the directory to www-data user, recursively.
Any help appreciated.

EDIT: So I changed my DocumentRoot to /var/www/magento2.4/pub. Now I get a page with no css apparently:

And every link I try is a 404:

The rest of the configuration is the same. pub folder has its own default .htaccess file.

asked May 9, 2021 at 16:35
5
  • is elastic search enabled ? Commented May 9, 2021 at 16:38
  • @VibhoreJain Yes, it is running, I will post the test curl command proving it. Commented May 9, 2021 at 16:39
  • are you getting some error message or error from error logs. Commented May 9, 2021 at 16:41
  • I checked Apache's logs and they seemed fine, but I will post them. What other logs should I look into apart from that? Commented May 9, 2021 at 16:43
  • So the problem I had not detected is, as is evident in the conf file, that I have set DocumentRoot /var/www/magento2.4/pub but for the rules I have <Directory /var/www/html/magento2.4/pub>, a whole html off. The joys of copy pasting code and only changing half of it. Commented May 9, 2021 at 18:50

2 Answers 2

4

Your document root in your Apache virtual host needs to point to /pub directory. It’s mandatory now from v 2.4.2. See here for details. https://devdocs.magento.com/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.html

Try updating your virtual host to following and restarting Apache

<VirtualHost *:80>
 ServerAdmin admin@localhost
 DocumentRoot /var/www/magento2.4/pub/
 <Directory /var/www/magento2.4/pub/>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
answered May 9, 2021 at 18:12
5
  • .htaccess must change accordignly I suppose? Because the default one tries to rewrite request inside the pub folder. Commented May 9, 2021 at 18:25
  • No because the pub directory has its own index.php and htaccess file. Web user will never hit the main directory if the document root is set to pub. Commented May 9, 2021 at 18:34
  • In your original virtual host file you have the main directory AllowOverride set to none. That’s why the main dir htaccess file redirect is being ignored and you’re just seeing the directory contents. Commented May 9, 2021 at 18:42
  • I had changed that part but had not updated in the question, did now. Commented May 9, 2021 at 18:46
  • You had not observed it, but I had an extra http in the directory of the Directory rules that should not be there, due to copy pasting. Your conf made it work. Commented May 9, 2021 at 18:53
1

Dowloand the .htaccess file to add to your project. https://github.com/magento/magento2/blob/2.4-develop/.htaccess The .htaccess is required when you run Magento 2 project with apache.

answered May 9, 2021 at 16:42
5
  • The .htaccess mentioned in the link you gave in your answer is identical to the one already existing in the project. Do you think there might be a problem in that an index.php is referred even though it does not exist in the directory? Commented May 9, 2021 at 16:51
  • If it is exited in the project. Please check the rewrite module of apache hostadvice.com/how-to/… Install, enable it and then try to restart apache server. Commented May 9, 2021 at 16:54
  • $ sudo a2enmod rewrite [sudo] password for user: Module rewrite already enabled Commented May 9, 2021 at 17:21
  • If enable rewrite mode and restart apache2 doesn't help (Remember to restart the server) . You can try to change the folder config in apache to the pub folder of the project. The problem on seeing the directory file is on the .htaccess file and the rewrite module in my experience. You can try to use the Nginx for your local setup. SInce magento have a sample config file for Nginx. Commented May 9, 2021 at 17:42
  • Ok I can look into nginx if I see no solution with Apache. Thank you! Commented May 9, 2021 at 17:48

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.