E-Ticaret sisteminin linux sistemlere kurulması

Aşağıdaki script Ubuntu 18.04 sürümlerinde çalıştırıldığında otomatik olarak ayarlar yapılacaktır.

#!/bin/bash

echo
echo "AktifPOS e-Ticaret Linux kurulumuna hoş geldiniz!"
echo "MsSQL sunucu kurulumuna başlanıyor"

yes | sudo ufw allow 443/tcp

Args=("$@")
ArgLength=${#Args[@]}

for (( i=0; i<${ArgLength}; i+=2 ));
do
    if [ "${Args[$i]}" = "--hostname" ]; then
        HostName="${Args[$i+1]}"
    elif [ "${Args[$i]}" = "--approot" ]; then
        AppRoot="${Args[$i+1]}"
    fi
done

if [ -z "$HostName" ]; then
    read -p "Domain adresinizi yazın: (örneğin aktifbarkod.com başında www olmadan yazınız!): " HostName
fi


if [ -z "$AppRoot" ]; then
    read -p "E-ticaret sisteminin nereye kurulacağını yazın (boş bırakmanız tavsite edilir /var/www/[domain] adresize kurulum yapılır): " AppRoot
    if [ -z "$AppRoot" ]; then
        AppRoot="/var/www/$HostName"
    fi
fi

echo $AppRoot
echo $HostName

yes | wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
yes | sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
yes | sudo apt-get update
yes | sudo apt-get install -y mssql-server

#mssql kurulumunu başlat
sudo /opt/mssql/bin/mssql-conf setup

#mssql collation turkce ayari
sudo systemctl stop mssql-server
yes "Turkish_CI_AI" | sudo /opt/mssql/bin/mssql-conf set-collation
sudo systemctl start mssql-server

sudo apt-get update 
sudo apt-get install -y mssql-server-fts

#log sayısını sınırlı tut
sudo /opt/mssql/bin/mssql-conf set errorlog.numerrorlogs 6
sudo systemctl start mssql-server

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

yes | sudo apt-get update
yes | sudo apt-get install apt-transport-https aspnetcore-runtime-3.1

yes | sudo apt-get -y install nginx

sudo systemctl start nginx

mkdir -p $AppRoot
cd /var/www/
yes | sudo apt install python-pip
yes | sudo pip install gdown
sudo gdown 1TD8FNa71nX9Z0Z5OrMViL_Jq_EgpBNwZ -O Nop.zip
unzip -o Nop.zip -d $AppRoot
cd $AppRoot
mkdir bin
mkdir logs
cd ..
sudo chgrp -R www-data $AppRoot
sudo chown -R www-data $AppRoot

rm Nop.zip


# Nginx ayarları
nginxConfig="
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name   $HostName www.$HostName;

    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 '$HostName';
    proxy_cache_bypass \$http_upgrade;
    proxy_set_header   X-Forwarded-For \$proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto \$scheme;
    }
}
"
systemctl stop nginx

rm -f /etc/nginx/sites-available/$HostName
rm -f /etc/nginx/sites-enabled/$HostName
rm -f /etc/nginx/sites-available/default
rm -f /etc/nginx/sites-enabled/default

echo "$nginxConfig" > /etc/nginx/sites-available/$HostName
ln -s /etc/nginx/sites-available/$HostName /etc/nginx/sites-enabled/$HostName

# nginx test et
nginx -t

# sorun yoksa yeniden başlat
nginx -s reload

serviceConfig="
[Unit]
Description=AktifPOS e-Ticaret

[Service]
WorkingDirectory=$AppRoot
ExecStart=/usr/bin/dotnet $AppRoot/Nop.Web.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=aktifpos-eticaret
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
"

rm -f /etc/systemd/system/$HostName.service

echo "$serviceConfig" > /etc/systemd/system/$HostName.service

# servisi kapat aç
systemctl enable $HostName.service
systemctl restart $HostName.service

# certbotu kur
yes | apt-get -y install certbot python3-certbot-nginx

certbot --nginx

systemctl restart nginx.service