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.