Wie installiere ich Magento mit Apache und Let’s Encrypt SSL auf Ubuntu 22.04

Magento ist eine Open-Source-Plattform und eine der beliebtesten eCommerce-Plattformen, die Programmierern hilft, eCommerce-Websites zu erstellen. Sie ist in PHP geschrieben und ermöglicht es dir, ein flexibles Warenkorbsystem zu erstellen. Es ist vollständig anpassbar und ermöglicht es dir, in wenigen Minuten einen voll funktionsfähigen Online-Shop zu entwickeln und zu starten. Magento bietet eine kostenlose Community- und eine kommerzielle Version an. Die Community-Version ist kostenlos und für kleine Unternehmen gedacht, während die kommerzielle Version für mittlere bis große Unternehmen gedacht ist.

Diese Anleitung zeigt dir, wie du Magento auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server eingerichtet.

Installiere Apache, MySQL und PHP

Installiere zunächst den Apache-Webserver und den MySQL-Datenbankserver mit dem folgenden Befehl:

apt install apache2 mysql-server -y

Magento unterstützt nur die PHP-Versionen 7.3 bis 7.4. Die PHP-Version 7.4 ist jedoch nicht im Standard-Repository von Ubuntu 22.04 enthalten, da es PHP 8.1 als Standardversion bereitstellt. Daher musst du PHP 7.4 aus dem PHP-Repository von Ondrej installieren.

Installiere zunächst die erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt install software-properties-common -y

Als Nächstes fügst du das PHP Ondrej Repository mit dem folgenden Befehl hinzu:

add-apt-repository ppa:ondrej/php

Sobald das Repository hinzugefügt ist, aktualisiere es und installiere PHP mit den anderen erforderlichen Abhängigkeiten mit folgendem Befehl:

apt update -y
apt install php7.4 libapache2-mod-php7.4 php7.4-common php7.4-gmp php7.4-curl php7.4-soap php7.4-bcmath php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-mysql php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y

Als Nächstes bearbeitest du die PHP-Konfigurationsdatei und änderst die Standardeinstellungen:

nano /etc/php/7.4/apache2/php.ini

Ändere die folgenden Werte:

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 512M
upload_max_filesize = 128M
max_execution_time = 3600

Speichere und schließe die Datei und starte den Apache-Dienst neu, um die Konfigurationsänderungen zu übernehmen:

systemctl restart apache2

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Erstelle eine Datenbank für Magento

Da Magento MySQL als Datenbank-Backend verwendet, musst du eine Datenbank und einen Benutzer für Magento erstellen.

Melde dich zunächst mit folgendem Befehl in der MySQL-Shell an:

mysql

Sobald du mit MySQL verbunden bist, erstelle mit folgendem Befehl einen Benutzer und eine Datenbank für Magento:

mysql> CREATE DATABASE magento2;
mysql> CREATE USER 'magento2'@'localhost' IDENTIFIED BY 'password';

Als Nächstes erteilst du der Magento2-Datenbank alle Berechtigungen:

mysql> GRANT ALL PRIVILEGES ON magento2.* TO 'magento2'@'localhost';

Entferne die Berechtigungen und verlasse MySQL mit dem folgenden Befehl:

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Installiere Composer

Composer ist ein Abhängigkeitsmanager für PHP, mit dem du die PHP-Abhängigkeiten installieren kannst, die du für dein PHP-Projekt benötigst.

Installiere zunächst das Kommandozeilentool Curl mit dem folgenden Befehl:

apt-get install curl -y

Als Nächstes installierst du den Composer mit dem folgenden Befehl:

curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Sobald der Composer installiert ist, erhältst du die folgende Ausgabe:

All settings correct for using Composer
Downloading...

Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Du kannst die Version des Composers mit dem folgenden Befehl überprüfen:

composer --version

Du erhältst die folgende Ausgabe:

Composer version 2.3.5 2022-04-13 16:43:00

Herunterladen und Installieren von Magento auf Ubuntu 22.04

In diesem Abschnitt werden wir die Magento Version 2.4.3 mit Hilfe des Composers herunterladen. Dazu musst du einen Zugangsschlüssel erstellen, nachdem du dich auf der Magento-Website eingeloggt hast. https://marketplace.magento.com/customer/accessKeys/. Sobald der Zugangsschlüssel erstellt ist, führst du den folgenden Befehl aus, um Magento auf deinen Server herunterzuladen:

cd /var/www/html
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.3 magento2

Du wirst aufgefordert, deinen Zugangsschlüssel wie unten gezeigt anzugeben, um Magento herunterzuladen:

Creating a "magento/project-community-edition=2.4.3" project at "./magento2"
Warning from repo.magento.com: You haven't provided your Magento authentication keys. For instructions, visit https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html
    Authentication required (repo.magento.com):
      Username: a6b333ad41629bac913eaabb9b8e053c
      Password: 
Do you want to store credentials for repo.magento.com in /root/.config/composer/auth.json ? [Yn] Y
Installing magento/project-community-edition (2.4.3)
  - Downloading magento/project-community-edition (2.4.3)
  - Installing magento/project-community-edition (2.4.3): Extracting archive
Created project in /var/www/html/magento2
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine

Sobald Magento heruntergeladen ist, gibst du die richtigen Rechte für das Magento-Verzeichnis an:

chown -R www-data:www-data /var/www/html/magento2/
cd /var/www/html/magento2
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-data . 
chmod u+x bin/magento

Als Nächstes führst du den folgenden Befehl aus, um Magento auf deinem Server zu installieren:

bin/magento setup:install --base-url=http://magento.example.com --db-host=localhost --db-name=magento2 --db-user=magento2 --db-password=password --admin-firstname=Hitesh --admin-lastname=Jethva --admin-email=admin@example.com --admin-user=admin --admin-password=Magento@Secure1Password --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1

Du erhältst die folgende Fehlermeldung:

  Could not validate a connection to Elasticsearch. No alive nodes found in your cluster  

Du kannst diesen Fehler mit folgendem Befehl beheben:

php bin/magento module:disable {Magento_Elasticsearch,Magento_InventoryElasticsearch,Magento_Elasticsearch6,Magento_Elasticsearch7}

Du solltest die folgende Ausgabe sehen:

The following modules have been disabled:
- Magento_Elasticsearch
- Magento_Elasticsearch6
- Magento_InventoryElasticsearch
- Magento_Elasticsearch7

Cache cleared successfully.
Generated classes cleared successfully. Please run the 'setup:di:compile' command to generate classes.
Info: Some modules might require static view files to be cleared. To do this, run 'module:disable' with the --clear-static-content option to clear them.

Außerdem musst du den folgenden Befehl ausführen, um die Zwei-Faktor-Authentifizierung zu deaktivieren:

sudo -u www-data bin/magento module:disable Magento_TwoFactorAuth

Du erhältst die folgende Ausgabe:

The following modules have been disabled:
- Magento_TwoFactorAuth

Cache cleared successfully.
Generated classes cleared successfully. Please run the 'setup:di:compile' command to generate classes.
Info: Some modules might require static view files to be cleared. To do this, run 'module:disable' with the --clear-static-content option to clear them.

Führe nun den Magento-Installationsbefehl erneut aus, um die Installation zu starten:

bin/magento setup:install --base-url=http://magento.example.com --db-host=localhost --db-name=magento2 --db-user=magento2 --db-password=password --admin-firstname=Hitesh --admin-lastname=Jethva --admin-email=admin@example.com --admin-user=admin --admin-password=Magento@Secure1Password --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1

Sobald die Installation abgeschlossen ist, erhältst du folgende Ausgabe:

[Progress: 1359 / 1366]
Module 'Yotpo_Yotpo':
[Progress: 1360 / 1366]
Enabling caches:
Current status:
layout: 1
block_html: 1
full_page: 1
[Progress: 1361 / 1366]
Installing admin user...
[Progress: 1362 / 1366]
Caches clearing:
Cache cleared successfully
[Progress: 1363 / 1366]
Disabling Maintenance Mode:
[Progress: 1364 / 1366]
Post installation file permissions check...
For security, remove write permissions from these directories: '/var/www/html/magento2/app/etc'
[Progress: 1365 / 1366]
Write installation date...
[Progress: 1366 / 1366]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_1u9o0y
Nothing to import.

Lösche nun den gesamten Cache und erstelle einen Magento-Cron-Job mit den folgenden Befehlen:

sudo -u www-data bin/magento cache:flush
sudo -u www-data bin/magento cron:install

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Apache für Magento konfigurieren

Als Nächstes musst du eine Konfigurationsdatei für den virtuellen Apache-Host erstellen, um Magento über das Web zu bedienen.

nano /etc/apache2/sites-available/magento2.conf

Füge die folgenden Zeilen hinzu:

<VirtualHost *:80>
     ServerAdmin admin@example.com
      DocumentRoot /var/www/html/magento2/
     ServerName magento.example.com

     <Directory /var/www/html/magento2/>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/magento2_error.log
     CustomLog ${APACHE_LOG_DIR}/magento2_access.log combined

</VirtualHost>

Speichere und schließe die Datei und aktiviere den virtuellen Magento-Host und das Apache-Rewrite-Modul mit dem folgenden Befehl:

a2ensite magento2.conf
a2enmod rewrite

Starte anschließend den Apache-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart apache2

Du kannst den Apache-Status auch mit dem folgenden Befehl überprüfen:

systemctl status apache2

Du solltest die folgende Ausgabe sehen:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-29 09:03:19 UTC; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 39790 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 39794 (apache2)
      Tasks: 6 (limit: 4630)
     Memory: 14.1M
        CPU: 132ms
     CGroup: /system.slice/apache2.service
             ??39794 /usr/sbin/apache2 -k start
             ??39795 /usr/sbin/apache2 -k start
             ??39796 /usr/sbin/apache2 -k start
             ??39797 /usr/sbin/apache2 -k start
             ??39798 /usr/sbin/apache2 -k start
             ??39799 /usr/sbin/apache2 -k start

Apr 29 09:03:19 ubuntu systemd[1]: Starting The Apache HTTP Server...

Zugriff auf das Magento Web Interface

Öffne nun deinen Webbrowser und rufe das Magento Dashboard über die URL http://magento.example.com/admin_1u9o0y auf. Du wirst auf die Magento-Anmeldeseite weitergeleitet:

Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Login. Auf dem folgenden Bildschirm solltest du das Magento Dashboard sehen:

Magento mit Let’s Encrypt SSL sichern

Es ist immer eine gute Idee, deine Website mit Let’s Encrypt SSL zu sichern. Um das SSL zu installieren und zu verwalten, musst du den Certbot-Client installieren. Du kannst ihn mit dem folgenden Befehl installieren:

apt-get install python3-certbot-apache -y

Sobald Certbot installiert ist, führst du den folgenden Befehl aus, um deine Website mit Let’s Encrypt SSL zu sichern:

certbot --apache -d magento.example.com

Du wirst aufgefordert, deine E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren (siehe unten):

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva1981@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for magento.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/magento-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/magento-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/magento-le-ssl.conf

Als Nächstes wählst du aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht (siehe unten):

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Gib 2 ein und drücke die Eingabetaste, um Let’s Encrypt SSL für deine Website zu installieren:

Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/magento.conf to ssl vhost in /etc/apache2/sites-available/magento-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://magento.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=magento.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/magento.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/magento.example.com/privkey.pem
   Your cert will expire on 2023-01-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Jetzt kannst du deine Website sicher über die URL https://magento.example.com aufrufen.

Fazit

Herzlichen Glückwunsch! Du hast Magento mit Apache erfolgreich auf Ubuntu 22.04 installiert. Ich hoffe, dieser Beitrag hilft dir dabei, dein eigenes Online-Einkaufswagensystem zu starten. Wenn du noch Fragen hast, kannst du mich gerne fragen.

Das könnte dich auch interessieren …