build.sh
· 3.2 KiB · Bash
Raw
#!/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 |