Instalare magazin online NopCommerce(open source) pe Linux

NopCommerce este un magazin open source scris in C# cu ASP.NET MVC Core, suporta crearea de teme personalizate, exista un marketplace cu teme free si contracost, si poate folosi ca baze de date SQL Server, MySQL sau PostgreSQL. Magazinul are suport pentru mai multe limbi, monede, inclusiv romaneasca. Am instalat magazinul NopCommerce folosind baze de date SQL Server, MySQL, dar am ales pentru acest tutorial MySQL, in speranta ca consuma mai putine resurse decat SQL Server, dar si pentru ca suportul de backup e mai bun in MySQL pe Linux, fiindca e important sa poti muta datele usor de pe un server pe altul fara sa le pierzi.

Magazinul online se poate instala in Azure sau pe masina locala: CUM SĂ-ȚI FACI PROPRIUL HOSTING ACASA

Acest tutorial se aplica oricarei aplicatii ASP.NET Core, ce trebuie instalata pe Linux, aplicatia ASP.NET Core se instaleaza ca serviciu de linux, systemd, si se foloseste nginx ca server web si reverse proxy.

Magazinul are o sectiune de administrare cuprinzatoare:

Click pentru a vedea exemple de magazine construite cu nopCoomerce.

Instalare NopCommerce pe Linux

Am creat o masina virtuala cu Ubuntu 20.04.6 LTS x86_64 in Microsoft Azure, la care m-am conectat cu ssh folosind ssh user@hostip. Comanda neofecth are output-ul de mai jos:

Se dechid porturile din Microsoft Azure, 22 ssh, 80 http, 3306 mysql, eventual aceste porturi se dechid si din Linux cu ufw.

1.) Instalare .NET Core

Se instaleaza .NET Core pe masina virtuala remote, ruland urmatoarea comanda:

sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-7.0
2.) Instalare server MySQL:

Se instaleaza pachet mysql din terminal:

sudo apt-get install mysql-server
view raw installmysql.sh hosted with ❤ by GitHub
Se conecteaza la server MySQL cu sudo mysql in terminal si se schimba parola de root pentru conectarea la server:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'parola';
Pentru conectare remote, din MySQL Workbench de exemplu, se deschide fisierul de configurare MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
view raw mysql.sh hosted with ❤ by GitHub
Se editeaza bind-address de la 127.0.0.1 la 0.0.0.0, fisierul de configurare va arata asa:
Se reporneste serverul MySQL pentru a ne asigura ca se incarca configurarea noua:

sudo systemctl restart mysql
view raw mysqlrestart.sh hosted with ❤ by GitHub
Cu UFW (Uncomplicated Firewall) se deschide portul 3306:

sudo ufw allow from remote_ip_address to any port 3306
view raw ufwmysql.sh hosted with ❤ by GitHub
Acuma se poate deschide baza de date remote, de pe masina locala, in MySQL Workbench:
3.) Instalare nginx

Se instaleaza pachet nginx

sudo apt-get install nginx
view raw installnginx.sh hosted with ❤ by GitHub
Porneste serviciu nginx

sudo systemctl start nginx
view raw startnginx.sh hosted with ❤ by GitHub
Verifica stare serviciu nginx

sudo systemctl status nginx
Pentru a configura nginx ca reverse proxy care sa trimita cererile catre aplicatia ASP.NET Core, se modifica /etc/nginx/sites-available/default. Deschide acest fisier intr-un editor text si se inlocuieste continutul cu urmatorul:

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name nopCommerce.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3000;
proxy_connect_timeout 3000;
proxy_send_timeout 3000;
}
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
}
view raw confignginx hosted with ❤ by GitHub
Se seteaza timeout la 3000 de secunde ca sa nu dea eroare, pentru task-urile care dureaza mult.

4.) Instalare nopCommerce

Se creaza directorul:

mkdir /var/www/nopCommerce
view raw mkdir.sh hosted with ❤ by GitHub
Download si dezarhiveaza nopCommerce:

cd /var/www/nopCommerce
sudo wget https://github.com/nopSolutions/nopCommerce/releases/download/release-4.60.4/nopCommerce_4.60.4_NoSource_linux_x64.zip
sudo apt-get install unzip
sudo unzip nopCommerce_4.60.4_NoSource_linux_x64.zip
view raw download.sh hosted with ❤ by GitHub
Se creaza cateva directoare necesare rulari nopCommerce:

sudo mkdir bin
sudo mkdir logs
view raw create.sh hosted with ❤ by GitHub
Se schimba permisiunile fisierelor:

cd ..
sudo chgrp -R www-data nopCommerce/
sudo chown -R www-data nopCommerce/
view raw permissions.sh hosted with ❤ by GitHub
Creare serviciu nopCommerce

Creaza fisier /etc/systemd/system/nopCommerce.service cu urmatorul continut:

[Unit]
Description=Example nopCommerce app running on Ubuntu
[Service]
WorkingDirectory=/var/www/nopCommerce
ExecStart=/usr/bin/dotnet /var/www/nopCommerce/Nop.Web.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=nopCommerce-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Porneste serviciu:

sudo systemctl start nopCommerce.service
view raw startservice.sh hosted with ❤ by GitHub
Verificare stare serviciu nopCommerce:

sudo systemctl status nopCommerce.service
view raw checkstatus.sh hosted with ❤ by GitHub
Reporneste server nginx:

sudo systemctl restart nginx
view raw restartnginx.sh hosted with ❤ by GitHub
Acuma ca totul este gata, putem incepe sa instalam si sa configuram magazinul.
E important ca baza de date sa nu existe, ea va fi creata la instalare nopCommerce. Se completeaza connection string in interfata web:

Database=nopcommerce;Port=3306;Data Source=127.0.0.1;User Id=root;Password=parola;
Se apasa buton Install din interfata web si se asteapta.
Si avem magazinul instalat.
Instalarea genereaza fisierul appsettings.json in /var/www/nopCommerce/App_Data, ca sa resetezi instalarea se sterge appsettings.json si va aparea pagina web de Install.
Printre clienti nopCommerce, se numara:
Am testat mai multe Size-uri hardware pentru masina virtuala in Azure si merge bine Standard DS1 v2 (1 vcpu, 3.5 GiB memory), am incercat si cu 1 Gb RAM dar e prea putin pentru MySQL si aplicatie, merge lent.

Comentarii

Postări populare