Magento è un negozio open source (software di e-commerce) e un sistema di gestione dei contenuti per siti Web di e-commerce basato su PHP Zend Framework. Magento applica le convenzioni della programmazione orientata agli oggetti e dell'architettura MVC (Model-View-Controller) e utilizza MySQL/MariaDB come database. Il software sviluppato è stato avviato nel 2008 da Varien Inc. Negli ultimi anni, Magento è diventata una piattaforma affidabile per il software di e-commerce che alimenta le aziende online di tutto il mondo.
In questo tutorial, ti guiderò attraverso l'installazione di Magento 2.1. Installeremo Magento 2.1 con Nginx e Php7.0-fpm e MySQL come database. A tale scopo, utilizzerò un server CentOS 7 con SELinux abilitato.
Passaggio 1:installa Nginx
In questo passaggio, installeremo Nginx dal repository epel. Epel non è disponibile per impostazione predefinita, quindi è necessario installare epel-repository prima di installare Nginx.
Installa epel-repository con questo comando yum.
yum -y install epel-release
Ora possiamo installare Nginx da epel-repository.
yum -y install nginx
Al termine dell'installazione, avvia Nginx e aggiungilo all'avvio all'avvio.
systemctl start nginx
systemctl enable nginx
Nginx è avviato sulla porta 80, puoi verificarlo con il comando netstat di seguito.
netstat -plntu
Nel caso in cui vedi il risultato "comando non trovato", puoi installare net-tools come questo.
yum -y install net-tools
Fase 2 - Installa e configura PHP-FPM
In questo tutorial, utilizzeremo PHP-FPM 7 per l'installazione di Magento. Userò i pacchetti PHP 7 dal repository Webtatic.
Scarica e aggiungi un nuovo repository webtatic al sistema.
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Ora esegui il comando seguente per installare PHP-FPM7 con tutti i pacchetti e le estensioni necessarie per l'installazione di Magento.
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap
Quando l'installazione di PHP-FPM7 è completa, è necessario configurarla. Configureremo il file php.ini e il file 'www.conf' di configurazione php-fpm.
Modifica php.ini con vim.
vim /etc/php.ini
Decommenta la riga cgi.fix_pathinfo 762 e cambia il valore in 0.
cgi.fix_pathinfo=0
Configura il limite di memoria, il tempo massimo di esecuzione e abilita la compressione dell'output zlib, assicurati di impostare i valori come mostrato di seguito.
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
Decommenta la directory del percorso di sessione e cambia la directory come di seguito.
session.save_path = "/var/lib/php/session"
Salva ed esci.
Quindi, modifica il file di configurazione php-fpm www.conf con il comando vim.
vim /etc/php-fpm.d/www.conf
PHP-FPM7 verrà eseguito sotto l'utente e il gruppo 'nginx', cambierà il valore in 'nginx' per le righe dell'utente e del gruppo.
user = nginx
group = nginx
Eseguiremo php-fpm sotto un file socket, non una porta del server. Cambia il valore della linea di ascolto nel percorso del file socket.
listen = /var/run/php/php-fpm.sock
Il file socket deve essere di proprietà dell'utente e del gruppo 'nginx', decommentare le righe di ascolto e modificare i valori come mostrato di seguito.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Infine, decommenta le righe di ambiente PHP-FPM 366-370.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Salva ed esci.
Quindi, crea una nuova directory per il percorso della sessione e il percorso del file sock php. Quindi cambia il proprietario nell'utente e nel gruppo 'nginx'.
Crea una nuova directory per il percorso della sessione.
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Crea una nuova directory per la posizione del file socket php-fpm.
mkdir -p /run/php/
chown -R nginx:nginx /run/php/
La configurazione di PHP-FPM7 è completa, avvia il demone ora e abilitalo all'avvio all'avvio con il comando systemctl di seguito.
systemctl start php-fpm
systemctl enable php-fpm
Quando non ci sono errori, puoi usare il comando seguente per verificare se php-fpm è in esecuzione nel file socket.
netstat -pl | grep php-fpm.sock
Passaggio 3:installazione del server MySQL 5.7
Magento 2.1 richiede una versione corrente di MySQL, puoi usare MySQL 5.6 o 5.7 per l'installazione. In questo tutorial utilizzeremo MySQL 5.7 che può essere installato dal repository ufficiale di MySQL. Quindi dobbiamo prima aggiungere il nuovo repository MySQL.
Scarica e aggiungi il nuovo repository MySQL per l'installazione di MySQL 5.7.
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Ora installa MySQL 5.7 dal repository MySQL con il comando yum di seguito.
yum install mysql-community-server
Al termine dell'installazione, avvia mysql e aggiungilo all'avvio all'avvio.
systemctl start mysqld
systemctl enable mysqld
MySQL 5.7 è stato installato con una password di root predefinita, è memorizzata nel file mysqld.log. Usa il comando grep per vedere la password predefinita per MySQL 5.7. Esegui il comando seguente.
grep 'temporary' /var/log/mysqld.log
Ora vedi la password di root MySQL corrente, dovresti cambiare la password predefinita.
Connettiti alla shell mysql con root utente e password predefinita.
mysql -u root -p
TYPE DEFAULT PASSWORD
Modifica la password di root predefinita con la query seguente. Userò la nuova password "[email protected]" qui. Scegli una password sicura.
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';
flush privileges;
La password di root MySQL predefinita è stata modificata. Successivamente dobbiamo creare un nuovo utente e un nuovo database per l'installazione di Magento.
Creeremo un nuovo database denominato "magentodb" e un nuovo utente "magentouser" con password "[email protected]". Quindi concedi tutti i privilegi del database al nuovo utente. Esegui la query mysql di seguito.
create database magentodb;
create user [email protected] identified by '[email protected]';
grant all privileges on magentodb.* to [email protected] identified by '[email protected]';
flush privileges;
L'installazione e la configurazione di MySQL 5.7 sono terminate ed è stato creato un database per l'installazione di Magento.
Fase 4 Installa e configura Magento
In questo passaggio, inizieremo a installare e configurare Magento. Per la directory principale web, utilizzeremo la directory '/var/www/magento2'. Abbiamo bisogno del compositore PHP per l'installazione del pacchetto Magento.
Installa PHP Composer
Useremo Composer per l'installazione delle dipendenze del pacchetto PHP. Installa il compositore con il comando curl qui sotto.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Al termine dell'installazione, puoi controllare la versione del compositore come mostrato di seguito.
composer -v
PHP Composer è stato installato.
Scarica ed estrai Magento
Vai alla directory '/var/www' e scarica il codice Magento con il comando wget.
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
Installa unzip con yum.
yum -y install unzip
Estrai il codice Magento e rinomina la directory nella directory 'magento2'.
unzip 2.1.zip
mv magento2-2.1 magento2
Installa dipendenze PHP
Vai alla directory magento2 e installa tutte le dipendenze Magento con il comando composer.
cd magento2
composer install -v
Attendi il completamento dell'installazione delle dipendenze PHP.
Configura l'host virtuale Magento
Vai alla directory Nginx e crea un nuovo file di configurazione dell'host virtuale chiamato 'magento.conf' nella directory 'conf.d'.
cd /etc/nginx/
vim conf.d/magento.conf
Incolla la configurazione dell'host virtuale di seguito.
upstream fastcgi_backend {
server unix:/run/php/php-fpm.sock;
}
server {
listen 80;
server_name magento.hakase-labs.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer;
include /var/www/magento2/nginx.conf.sample;
}
Salva ed esci.
Ora prova la configurazione. Quando non ci sono errori, riavvia il servizio Nginx.
nginx -t
systemctl restart nginx
Installa Magento 2.1
Vai alla directory magento2 per installare Magento sulla riga di comando.
cd /var/www/magento2
Esegui il comando seguente, assicurati di avere la configurazione corretta. I valori che devono essere modificati dall'utente sono spiegati di seguito.
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password="[email protected]" \
--language="en_US" \
--currency="USD" \
--timezone="America/New_York" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://magento.hakase-labs.com" \
--base-url-secure="https://magento.hakase-labs.com" \
--admin-user=adminuser \
[email protected] \
[email protected] \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
Modifica il valore per:
- --backend-frontname:pagina di accesso amministratore Magento "adminlogin"
- --key:genera la tua chiave
- --db-host:host del database localhost
- --db-name:nome del database 'magentodb'
- --db-user:utente del database 'magentouser'
- --db-password:password del database '[email protected]'
- --base-url:URL Magento
- --admin-user:il tuo utente amministratore
- --admin-password:la tua password di amministratore Magento
- --admin-email:il tuo indirizzo email
Quando non hai errori nel comando, vedrai i risultati di seguito.
Magento 2.1 è installato. Esegui il comando seguente per modificare l'autorizzazione per la directory etc e cambiare il proprietario della directory magento2 nell'utente 'nginx'.
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2
Configura Magento Cron
Questo cronjob è necessario per l'indicizzatore Magento. Crea un nuovo cronjob come utente 'nginx' (perché magento in esecuzione sotto utente e gruppo nginx).
crontab -u nginx -e
Incolla la configurazione qui sotto.
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
Salva ed esci.
Passaggio 5 - Configura SELinux e Firewalld
In questo tutorial, lasceremo SELinux in modalità 'Enforcing'. Esegui i comandi seguenti per verificare lo stato di SELinux.
sestatus
SELinux è in modalità 'Applicazione'.
Installa lo strumento di gestione di SELinux 'policycoreutils-python' con il comando yum di seguito.
yum -y install policycoreutils-python
Vai alla directory '/var/www/'.
cd /var/www/
Esegui i comandi seguenti per modificare il contesto di sicurezza per i file e le directory Magento.
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'
restorecon -Rv '/var/www/magento2/'
La configurazione di SELinux è terminata. Ora dobbiamo configurare firewalld.
Installa il pacchetto firewalld se non lo hai già sul tuo server.
yum -y install firewalld
Avvia il firewall e aggiungi firewalld da avviare all'avvio.
systemctl start firewalld
systemctl enable firewalld
Apri le porte per HTTP e HTTPS in modo da poter accedere all'URL di Magento da un browser web.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Vedi le porte aperte per i servizi con il comando seguente.
firewall-cmd --list-all
HTTP e HTTPS sono pronti per le connessioni.
Fase 6 - Test
Apri il tuo browser web e quindi sfoglia l'URL di Magento. Il mio è:
magento.hakase-labs.com
E vedrai la home page predefinita di Magento.
Quindi, accedi alla dashboard dell'amministratore aprendo l'URL di accesso dell'amministratore.
magento.hakase-labs.com/adminlogin
Accedi con il tuo utente e password amministratore.
Pannello di controllo di Magento.
Magento 2.1 è stato installato con successo con Nginx, PHP-FPM7 e MySQL 5.7 su un server CentOS 7.