build.sh
                        
                             · 3.2 KiB · Bash
                        
                    
                    
                      
                        原始文件
                      
                    
                      
                    
                        
                          
                        
                    
                    
                
                
                
            #!/bin/bash
sudo apt install jq dotnet7 -y
echo "Cleaning up..."
rm -rf /home/anduin/build
mkdir -p /home/anduin/build
echo "Downloading source code..."
wget https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/archive/master/moongladepure-master.tar.gz -O /home/anduin/build/moongladepure-master.tar.gz
echo "Extracting source code..."
tar -zxf /home/anduin/build/moongladepure-master.tar.gz -C /home/anduin/build
echo "Building source code..."
dotnet publish -c Release -o /home/anduin/build/bin -r linux-x64 --no-self-contained /home/anduin/build/moongladepure-master/src/Moonglade.Web/MoongladePure.Web.csproj
echo 'Installing fonts...'
sudo mkdir /usr/share/fonts
sudo wget https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/raw/master/assets/OpenSans-Regular.ttf -O /usr/share/fonts/OpenSans-Regular.ttf
sudo chown www-data:www-data /usr/share/fonts/OpenSans-Regular.ttf
curl https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/raw/master/assets/tenants --output /tmp/tenants.txt
while read -r tenant port
do
    echo "Building tenant $tenant..."
    echo "His port is $port..."
    echo 'Stopping service...'
    sudo systemctl stop $tenant
    echo 'Creating tenant folder...'
    sudo mkdir -p /opt/apps/$tenant > /dev/null
    echo 'Copying files...'
    sudo cp /home/anduin/build/bin/* /opt/apps/$tenant/ -r
    echo 'Setting permissions...'
    sudo chown -R www-data:www-data /opt/apps/$tenant
    echo 'Creating appsettings.json...'
    sudo -u www-data cp /opt/apps/$tenant/appsettings.json /opt/apps/$tenant/appsettings.Production.json
    echo 'Setting appsettings.json...'
    sudo -u www-data jq --arg tenant "$tenant" '.ConnectionStrings.MoongladeDatabase = "Server=moongladedb;Port=3306;Database=" + $tenant + ";uid=moongladepure;Password=DATABASE_PASSWORD@1234;"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null
    sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json
    sudo -u www-data jq '.ImageStorage.FileSystemPath = "/mnt/Store/'$tenant'"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null
    sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json
    sudo -u www-data jq '.OpenAI.Token = "OPENAI-KEY"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null
    sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json
    echo 'Creating service...'
    echo "[Unit]
Description=$tenant Service
After=network.target
Wants=network.target
[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/dotnet /opt/apps/$tenant/MoongladePure.Web.dll --urls=http://0.0.0.0:$port/
WorkingDirectory=/opt/apps/$tenant
Restart=always
RestartSec=10
SyslogIdentifier=$tenant
KillSignal=SIGINT
Environment=\"ASPNETCORE_ENVIRONMENT=Production\"
Environment=\"DOTNET_PRINT_TELEMETRY_MESSAGE=false\"
Environment=\"DOTNET_CLI_TELEMETRY_OPTOUT=1\"
Environment=\"ASPNETCORE_FORWARDEDHEADERS_ENABLED=true\"
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$tenant.service > /dev/null
    sudo systemctl daemon-reload
    sudo systemctl enable $tenant
    sudo systemctl start $tenant
done < /tmp/tenants.txt
                | 1 | #!/bin/bash | 
| 2 | sudo apt install jq dotnet7 -y | 
| 3 | |
| 4 | echo "Cleaning up..." | 
| 5 | rm -rf /home/anduin/build | 
| 6 | mkdir -p /home/anduin/build | 
| 7 | |
| 8 | echo "Downloading source code..." | 
| 9 | wget https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/archive/master/moongladepure-master.tar.gz -O /home/anduin/build/moongladepure-master.tar.gz | 
| 10 | |
| 11 | echo "Extracting source code..." | 
| 12 | tar -zxf /home/anduin/build/moongladepure-master.tar.gz -C /home/anduin/build | 
| 13 | |
| 14 | echo "Building source code..." | 
| 15 | dotnet publish -c Release -o /home/anduin/build/bin -r linux-x64 --no-self-contained /home/anduin/build/moongladepure-master/src/Moonglade.Web/MoongladePure.Web.csproj | 
| 16 | |
| 17 | echo 'Installing fonts...' | 
| 18 | sudo mkdir /usr/share/fonts | 
| 19 | sudo wget https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/raw/master/assets/OpenSans-Regular.ttf -O /usr/share/fonts/OpenSans-Regular.ttf | 
| 20 | sudo chown www-data:www-data /usr/share/fonts/OpenSans-Regular.ttf | 
| 21 | |
| 22 | curl https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/raw/master/assets/tenants --output /tmp/tenants.txt | 
| 23 | while read -r tenant port | 
| 24 | do | 
| 25 | echo "Building tenant $tenant..." | 
| 26 | echo "His port is $port..." | 
| 27 | |
| 28 | echo 'Stopping service...' | 
| 29 | sudo systemctl stop $tenant | 
| 30 | |
| 31 | echo 'Creating tenant folder...' | 
| 32 | sudo mkdir -p /opt/apps/$tenant > /dev/null | 
| 33 | |
| 34 | echo 'Copying files...' | 
| 35 | sudo cp /home/anduin/build/bin/* /opt/apps/$tenant/ -r | 
| 36 | |
| 37 | echo 'Setting permissions...' | 
| 38 | sudo chown -R www-data:www-data /opt/apps/$tenant | 
| 39 | |
| 40 | echo 'Creating appsettings.json...' | 
| 41 | sudo -u www-data cp /opt/apps/$tenant/appsettings.json /opt/apps/$tenant/appsettings.Production.json | 
| 42 | |
| 43 | echo 'Setting appsettings.json...' | 
| 44 | sudo -u www-data jq --arg tenant "$tenant" '.ConnectionStrings.MoongladeDatabase = "Server=moongladedb;Port=3306;Database=" + $tenant + ";uid=moongladepure;Password=DATABASE_PASSWORD@1234;"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null | 
| 45 | sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json | 
| 46 | sudo -u www-data jq '.ImageStorage.FileSystemPath = "/mnt/Store/'$tenant'"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null | 
| 47 | sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json | 
| 48 | sudo -u www-data jq '.OpenAI.Token = "OPENAI-KEY"' /opt/apps/$tenant/appsettings.Production.json | sudo -u www-data tee /tmp/tmp.json > /dev/null | 
| 49 | sudo -u www-data mv /tmp/tmp.json /opt/apps/$tenant/appsettings.Production.json | 
| 50 | |
| 51 | echo 'Creating service...' | 
| 52 | echo "[Unit] | 
| 53 | Description=$tenant Service | 
| 54 | After=network.target | 
| 55 | Wants=network.target | 
| 56 | |
| 57 | [Service] | 
| 58 | Type=simple | 
| 59 | User=www-data | 
| 60 | ExecStart=/usr/bin/dotnet /opt/apps/$tenant/MoongladePure.Web.dll --urls=http://0.0.0.0:$port/ | 
| 61 | WorkingDirectory=/opt/apps/$tenant | 
| 62 | Restart=always | 
| 63 | RestartSec=10 | 
| 64 | SyslogIdentifier=$tenant | 
| 65 | KillSignal=SIGINT | 
| 66 | Environment=\"ASPNETCORE_ENVIRONMENT=Production\" | 
| 67 | Environment=\"DOTNET_PRINT_TELEMETRY_MESSAGE=false\" | 
| 68 | Environment=\"DOTNET_CLI_TELEMETRY_OPTOUT=1\" | 
| 69 | Environment=\"ASPNETCORE_FORWARDEDHEADERS_ENABLED=true\" | 
| 70 | |
| 71 | [Install] | 
| 72 | WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$tenant.service > /dev/null | 
| 73 | |
| 74 | sudo systemctl daemon-reload | 
| 75 | sudo systemctl enable $tenant | 
| 76 | sudo systemctl start $tenant | 
| 77 | |
| 78 | done < /tmp/tenants.txt |