Naposledy aktivní 1703076495

Implement multitenant moonglade pure

anduin's Avatar anduin revidoval tento gist 1703076495. Přejít na revizi

1 file changed, 18 insertions

build.sh

@@ -1,3 +1,4 @@
1 + # Runs on each web machine.
1 2 #!/bin/bash
2 3 sudo apt install jq dotnet7 -y
3 4
@@ -75,4 +76,21 @@ WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$tenant.service > /de
75 76 sudo systemctl enable $tenant
76 77 sudo systemctl start $tenant
77 78
79 + done < /tmp/tenants.txt
80 +
81 + # Runs on each DB machine:
82 + curl https://gitlab.aiursoft.cn/aiursoft/moongladepure/-/raw/master/assets/tenants --output /tmp/tenants.txt
83 + while read -r tenant port
84 + do
85 +
86 + echo "Creating database $tenant"
87 + sudo mysql -u root --password=mynewpassword -e "CREATE DATABASE $tenant;" > /dev/null 2>&1
88 +
89 + echo "Granting permissions on $tenant to user moongladepure"
90 + sudo mysql -u root --password=mynewpassword -e "GRANT ALL PRIVILEGES ON $tenant.* TO 'moongladepure'@'%';"
91 +
92 + sudo mkdir /mnt/Store/$tenant
93 + sudo chmod 666 /mnt/Store/$tenant
94 + sudo chown -R nobody:nogroup /mnt/Store/$tenant
95 +
78 96 done < /tmp/tenants.txt

anduin's Avatar anduin revidoval tento gist 1703076411. Přejít na revizi

1 file changed, 78 insertions

build.sh(vytvořil soubor)

@@ -0,0 +1,78 @@
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
Novější Starší