sudo apt install php mariadb-server varnish nginx php-curl php-dom php-xsl php-intl php-mbstring php-zip php-simplexml php-gd php-mcrypt php-mysql
Configuramos MariaDB para Magento 2
-Aseguramos la configuracion de nuestro MariaDB colocandole contraseña a la cuenta root. Los valores por default son suficientes por lo que daremos Enter en las preguntas despues de crear la contraseña
sudo mysql_secure_installation
-Entramos a crear la db de Magento y un usuario con privilegios
sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 52
Server version: 10.0.25-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
create database magentodb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]>
grant all on magentodb.* to 'musr'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>
flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>
exit;
Bye
Configuramos PHP 7 para Magento 2
-Los cambios para PHP 7 son minimos, solo aumentar el valor de memoria limite
sudo vi /etc/php/7.0/fpm/php.ini
memory_limit = 1024M
Configuramos Ngix para Magento 2
-Crearemos un nuevo conf por lo cual movemos el archivo default con otro nombre
sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bck
-Creamos un nuevo default. Las lineas que comienzan con el simbolo # son comentarios
sudo vi /etc/nginx/sites-available/default
# Default server configuration
#
server {
listen 127.0.0.1:8080 default_server;
listen [::]:8080 default_server;
set $MAGE_ROOT /var/www/html/magento2/;
set $MAGE_MODE developer;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
root $MAGE_ROOT/pub;
index index.php;
autoindex off;
charset off;
location /setup {
root $MAGE_ROOT;
location ~ ^/setup/index.php {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ ^/setup/(?!pub/). {
deny all;
}
location ~ ^/setup/pub/ {
add_header X-Frame-Options "SAMEORIGIN";
}
}
location /update {
root $MAGE_ROOT;
location ~ ^/update/index.php {
fastcgi_split_path_info ^(/update/index.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
# deny everything but index.php
location ~ ^/update/(?!pub/). {
deny all;
}
location ~ ^/update/pub/ {
add_header X-Frame-Options "SAMEORIGIN";
}
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location /pub {
location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) {
deny all;
}
alias $MAGE_ROOT/pub;
add_header X-Frame-Options "SAMEORIGIN";
}
location /static/ {
if ($MAGE_MODE = "production") {
expires max;
}
# Remove signature of the static files that is used to overcome the browser cache
location ~ ^/static/version {
rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
}
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
add_header Cache-Control "public";
add_header X-Frame-Options "SAMEORIGIN";
expires +1y;
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
add_header X-Frame-Options "SAMEORIGIN";
}
location /media/ {
try_files $uri $uri/ /get.php?$args;
location ~ ^/media/theme_customization/.*\.xml {
deny all;
}
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
add_header Cache-Control "public";
add_header X-Frame-Options "SAMEORIGIN";
expires +1y;
try_files $uri $uri/ /get.php?$args;
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;
try_files $uri $uri/ /get.php?$args;
}
add_header X-Frame-Options "SAMEORIGIN";
}
location /media/customer/ {
deny all;
}
location /media/downloadable/ {
deny all;
}
location /media/import/ {
deny all;
}
location ~ (index|get|static|report|404|503)\.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_buffers 1024 4k;
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=768M \n max_execution_time=600";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_param MAGE_MODE $MAGE_MODE;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_min_length 1100;
gzip_proxied any;
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/xml+rss;
location ~ \.php$ {
deny all;
}
}
Configuramos Varnish para Magento 2
-Varnish es un acelerador web cuya función básicamente es servir paginas estáticas guardadas en cache y solo dejar que el servidor web maneje las solicitudes de paginas dinámicas. Esto es muy importante para servidores web con altas cargas y ayudara a que tu tienda online no sufra de lentitud. Copiamos el script de inicio para que sea manejado por systemd
sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/
-Modificamos el script cambiando el puerto y la cantidad de memoria usada por Varnish
sudo vi /etc/systemd/system/varnish.service
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1024m
-Activamos Nginx para que sea ejecutado cada vez que prendamos el equipo e iniciamos el servicio
sudo systemctl enable nginx
sudo systemctl restart nginx
-Verificamos este ejecutandose
sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since sáb 2016-08-06 16:24:32 COT; 5s ago
Process: 20848 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 20856 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 20852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 20859 (nginx)
Tasks: 3
Memory: 2.8M
CPU: 103ms
CGroup: /system.slice/nginx.service
├─20859 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
├─20860 nginx: worker process
└─20861 nginx: worker process
ago 06 16:24:32 ubuser systemd[1]: Starting A high performance web server and a reverse proxy server...
ago 06 16:24:32 ubuser systemd[1]: Started A high performance web server and a reverse proxy server.
-Activamos Varnish y lo ejecutamos
sudo systemctl enable varnish
sudo systemctl restart varnish
-Verificamos este ejecutandose
sudo systemctl status varnish
● varnish.service - Varnish HTTP accelerator
Loaded: loaded (/etc/systemd/system/varnish.service; enabled; vendor preset: enabled)
Active: active (running) since sáb 2016-08-06 16:28:03 COT; 44s ago
Docs: https://www.varnish-cache.org/docs/4.1/
man:varnishd
Main PID: 20920 (varnishd)
CGroup: /system.slice/varnish.service
├─20920 /usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,102
└─20931 /usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,102
ago 06 16:28:03 ubuser systemd[1]: Started Varnish HTTP accelerator.
ago 06 16:28:05 ubuser varnishd[20920]: Debug: Platform: Linux,4.4.0-31-generic,x86_64,-junix,-smalloc,-smalloc,-hcritbit
ago 06 16:28:05 ubuser varnishd[20920]: Platform: Linux,4.4.0-31-generic,x86_64,-junix,-smalloc,-smalloc,-hcritbit
ago 06 16:28:05 ubuser varnishd[20920]: Debug: Child (20931) Started
ago 06 16:28:05 ubuser varnishd[20920]: Child (20931) Started
ago 06 16:28:05 ubuser varnishd[20920]: Info: Child (20931) said Child starts
ago 06 16:28:05 ubuser varnishd[20920]: Child (20931) said Child starts
-Activamos y ejecutamos el servicio php7.0-fpm
sudo systemctl enable php7.0-fpm
sudo systemctl restart php7.0-fpm
-Verificamos este ejecutandose correctamente
sudo systemctl status php7.0-fpm
● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since sáb 2016-08-06 16:30:28 COT; 17s ago
Process: 21241 ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf (code=exited, status=0/SUCCESS)
Main PID: 21254 (php-fpm7.0)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3
Memory: 31.6M
CPU: 128ms
CGroup: /system.slice/php7.0-fpm.service
├─21254 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
├─21256 php-fpm: pool www
└─21257 php-fpm: pool www
ago 06 16:30:27 ubuser systemd[1]: Starting The PHP 7.0 FastCGI Process Manager...
ago 06 16:30:28 ubuser systemd[1]: Started The PHP 7.0 FastCGI Process Manager.
Descargamos Magento 2 en Linux Ubuntu Xenial Server
-Nos cambiamos al directorio web y descargamos Magento 2 en su ultima versión (2.0.4 en este momento) desde el repositorio Git Magento
cd /var/www/html/
sudo git clone https://github.com/magento/magento2.git
Clonar en «magento2»...
remote: Counting objects: 1172366, done.
remote: Compressing objects: 100% (2673/2673), done.
remote: Total 1172366 (delta 1710), reused 0 (delta 0), pack-reused 1169110
Receiving objects: 100% (1172366/1172366), 286.43 MiB | 603.00 KiB/s, done.
Resolving deltas: 100% (649048/649048), done.
Comprobando la conectividad… hecho.
Extrayendo archivos: 100% (24989/24989), done.
-Entramos al directorio de Magento y continuamos
cd magento2/
sudo git checkout tags/2.0.4
Extrayendo archivos: 100% (12380/12380), done.
Note: checking out 'tags/2.0.4'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD se encuentra en b6bb8e5... MAGETWO-48486: Magento 2.0.4 Publication
-Damos permiso total en la carpeta magento2 y reiniciamos los servicios nginx y php7.0-fpm
sudo chmod -R 777 /var/www/html/magento2/
sudo systemctl restart nginx
sudo systemctl restart php7.0-fpm
-Este paso es importante. Abrimos un browser y navegamos a https://www.magentocommerce.com/ Allí creamos una cuenta (es GRATIS) y generamos una llave publica y privada que se nos pedirá en un paso mas adelante. Menú Connect - Secure Keys. Damos click al botón Generate new, escribimos un nombre y se nos mostrara la llave publica junto a la privada
-Instalamos módulos para Magento teniendo cuidado cuando llegue a pedirnos un usuario y contraseña para el repositorio de Magento. Alli debemos pegar en
Username nuestra llave publica y en
Password la llave privada (la llave privada no se vera cuando la pegues). Aceptamos guardar las credenciales en el directorio del usuario desde el que estamos instalando
sudo composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
- Installing magento/magento-composer-installer (0.1.6)
Downloading: 100%
- Installing braintree/braintree_php (2.39.0)
Downloading: 100%
- Installing justinrainbow/json-schema (1.6.1)
Downloading: 100%
- Installing symfony/console (v2.6.13)
Downloading: 100%
- Installing symfony/process (v2.8.4)
Downloading: 100%
- Installing symfony/finder (v2.8.4)
Downloading: 100%
- Installing seld/jsonlint (1.4.0)
Downloading: 100%
- Installing composer/composer (1.0.0-alpha10)
Downloading: 100%
- Installing magento/composer (1.0.2)
Authentication required (repo.magento.com):
Username: 78605c946e18190ec0f7xxxxxxef5xxxx <---Llave publica
Password: <-- Llave privada
Downloading: 100%
Do you want to store credentials for repo.magento.com in /home/drivemeca/.composer/auth.json ? [Yn]
- Installing magento/zendframework1 (1.12.16)
Downloading: 100%
- Installing psr/log (1.0.0)
Downloading: 100%
- Installing monolog/monolog (1.16.0)
Downloading: 100%
- Installing oyejorge/less.php (v1.7.0.3)
Downloading: 100%
- Installing pelago/emogrifier (v0.1.1)
Downloading: 100%
- Installing phpseclib/phpseclib (0.3.10)
Downloading: 100%
- Installing tedivm/jshrink (v1.0.1)
Downloading: 100%
- Installing tubalmartin/cssmin (v2.4.8-p4)
Downloading: 100%
- Installing zendframework/zend-stdlib (2.4.9)
Downloading: 100%
- Installing zendframework/zend-config (2.4.9)
Downloading: 100%
- Installing zendframework/zend-console (2.4.9)
Downloading: 100%
- Installing zendframework/zend-servicemanager (2.4.9)
Downloading: 100%
- Installing zendframework/zend-math (2.4.9)
Downloading: 100%
- Installing zendframework/zend-crypt (2.4.9)
Downloading: 100%
- Installing zendframework/zend-eventmanager (2.4.9)
Downloading: 100%
- Installing zendframework/zend-code (2.4.9)
Downloading: 100%
- Installing zendframework/zend-di (2.4.9)
Downloading: 100%
- Installing zendframework/zend-validator (2.4.9)
Downloading: 100%
- Installing zendframework/zend-escaper (2.4.9)
Downloading: 100%
- Installing zendframework/zend-uri (2.4.9)
Downloading: 100%
- Installing zendframework/zend-loader (2.4.9)
Downloading: 100%
- Installing zendframework/zend-http (2.4.9)
Downloading: 100%
- Installing zendframework/zend-i18n (2.4.9)
Downloading: 100%
- Installing zendframework/zend-filter (2.4.9)
Downloading: 100%
- Installing zendframework/zend-inputfilter (2.4.9)
Downloading: 100%
- Installing zendframework/zend-log (2.4.9)
Downloading: 100%
- Installing zendframework/zend-modulemanager (2.4.9)
Downloading: 100%
- Installing zendframework/zend-form (2.4.9)
Downloading: 100%
- Installing zendframework/zend-mvc (2.4.9)
Downloading: 100%
- Installing zendframework/zend-json (2.4.9)
Downloading: 100%
- Installing zendframework/zend-serializer (2.4.9)
Downloading: 100%
- Installing zendframework/zend-server (2.4.9)
Downloading: 100%
- Installing zendframework/zend-soap (2.4.9)
Downloading: 100%
- Installing zendframework/zend-text (2.4.9)
Downloading: 100%
- Installing zendframework/zend-view (2.4.9)
Downloading: 100%
- Installing symfony/stopwatch (v3.0.4)
Downloading: 100%
- Installing symfony/filesystem (v2.8.4)
Downloading: 100%
- Installing symfony/event-dispatcher (v2.8.4)
Downloading: 100%
- Installing sebastian/diff (1.4.1)
Downloading: 100%
- Installing fabpot/php-cs-fixer (v1.11.2)
Downloading: 100%
- Installing lusitanian/oauth (v0.7.0)
Downloading: 100%
- Installing symfony/dependency-injection (v2.8.4)
Downloading: 100%
- Installing symfony/config (v2.8.4)
Downloading: 100%
- Installing pdepend/pdepend (2.2.2)
Downloading: 100%
- Installing phpmd/phpmd (2.3.3)
Downloading: 100%
- Installing phpunit/php-token-stream (1.4.8)
Downloading: 100%
- Installing symfony/yaml (v2.8.4)
Downloading: 100%
- Installing sebastian/version (1.0.6)
Downloading: 100%
- Installing sebastian/recursion-context (1.0.2)
Downloading: 100%
- Installing sebastian/exporter (1.2.1)
Downloading: 100%
- Installing sebastian/environment (1.3.5)
Downloading: 100%
- Installing sebastian/comparator (1.2.0)
Downloading: 100%
- Installing phpunit/php-text-template (1.2.1)
Downloading: 100%
- Installing doctrine/instantiator (1.0.5)
Downloading: 100%
- Installing phpunit/phpunit-mock-objects (2.3.8)
Downloading: 100%
- Installing phpunit/php-timer (1.0.7)
Downloading: 100%
- Installing phpunit/php-file-iterator (1.3.4)
Downloading: 100%
- Installing phpunit/php-code-coverage (2.2.4)
Downloading: 100%
- Installing phpunit/phpunit (4.1.0)
Downloading: 100%
- Installing league/climate (2.6.1)
Downloading: 100%
- Installing sjparkinson/static-review (4.1.1)
Downloading: 100%
- Installing squizlabs/php_codesniffer (1.5.3)
Downloading: 100%
..
..
-Cambiamos permisos
sudo chmod -R 755 /var/www/html/magento2/
sudo chmod -R 777 /var/www/html/magento2/var/
sudo chmod -R 777 /var/www/html/magento2/pub/
sudo chmod -R 777 /var/www/html/magento2/app/etc/
Instalamos Magento 2 en Linux Ubuntu 16.04 Server
-Abrimos un navegador y nos vamos al URL http://ip-servidor/setup/ Se nos pedirá aceptar la licencia. Damos click al botón Agree and Setup Magento
-La instalación de Magento 2 consta de 6 pasos. El primero verificara si tenemos correctamente instalado y configurado PHP. Damos click al botón Start Readiness Check
-Si haz seguido mis pasos todo debe darte en verde, sino, verifica el error, corrige y vuelve a chequear dando click al botón Try Again. Damos click al botón Next para continuar al paso 2
-El paso 2 es configurar la conexión a MariaDB con los datos Database Server Host (localhost), Database Server Username (musr), Database Server Password (password de la db) y Database Name (magentodb). Damos click al botón Next para continuar al paso 3
-El paso 3 nos permite activar el dominio internet por el que se conectaran a nuestro Magento ecommerce (por motivos de este articulo paso a paso usaremos la ip privada del servidor). El instalador generara un URL para servir de entrada al administrador al backend (modulo web administrativo)
-En Advanced Options, mas abajo, podemos activar un certificado SSL en caso de tenerlo entre otras opciones. Damos click al botón Next para continuar al paso 4
-En el 4to paso elegimos nuestra zona horaria, la moneda y el idioma por default de nuestra tienda en linea. Por default se instalaran todos los módulos. Damos click al botón Next para continuar al paso 5
-El 5to paso de la instalación es crear una cuenta de administrador. Esta sera la encargada de crear usuarios, crear paginas, categorías, productos, etc. Damos click al botón Next para continuar al paso 6
-Si llegaste hasta el 6to paso ya estas listo para instalar Magento 2 en Linux Ubuntu Server. Damos click al botón Install Now. Hora de ir por un café ;-)
-Comienza la instalación, podemos darle click a Console Log para ver en que va el proceso
-Dependiendo la potencia de tu equipo, puede que pasen una buena cantidad de minutos hasta que llegue al 100% de instalado. Ya podemos abrir una pestaña en nuestro navegador internet e ir al URL del administrador mostrado al final del log
-Entramos con la cuenta de administrador creada en pasos anteriores
-Y ya estamos en la consola o backend de Magento 2. A partir de aquí podemos crear categorías, cambiar el idioma de la tienda, políticas de precios, etc
Creamos tareas Cron para Magento 2 en Linux Ubuntu Xenial
-Muy importante (y es la razon del mensaje mostrado en la esquina superior derecha del backend) es crear las tareas de cron
sudo crontab -e
*/1 * * * * www-data php /var/www/html/magento2/bin/magento cron:run
*/1 * * * * www-data php /var/www/html/magento2/update/cron.php
*/1 * * * * www-data php /var/www/html/magento2/bin/magento setup:cron:run
-Reiniciamos el servicio de cron para que tome los cambios
sudo systemctl restart cron