reprod deployment

This commit is contained in:
Paul Schneider 2026-09-20 18:35:27 +01:00
commit d5f11e83a4
Signed by: notazof
GPG key ID: AD4B9B545FBD7D12
5 changed files with 33 additions and 80 deletions

View file

@ -15,7 +15,7 @@ POSTGRES_HOST=localhost
POSTGRES_PORT=5432 POSTGRES_PORT=5432
POSTGRES_DB=db POSTGRES_DB=db
POSTGRES_USER=pguser POSTGRES_USER=pguser
POSTGRES_PASSWORD=pgpassword POSTGRES_PASSWORD=<your pg password>
ANTHROPIC_API_KEY=none ANTHROPIC_API_KEY=none
ANTHROPIC_MAX_TOKENS=0 ANTHROPIC_MAX_TOKENS=0

View file

@ -63,7 +63,7 @@ make test
### La Prod ### La Prod
`cd srv/Yavsc` : `make pushInProd CONFIGURATION=Release`. `cd srv/Yavsc/contrib` : `make reinstall CONFIGURATION=Release APP_INSTALL_ENV=production`.
puis, pour une première installation puis, pour une première installation
`make install_service`. `make install_service`.

View file

@ -1,23 +1,25 @@
DESTDIR=
DOTNET_FRAMEWORK=net10.0
APP_PROJECT_NAMES=Org Blogs Api APP_PROJECT_NAMES=Org Blogs Api
SLNDIR=.. SLNDIR=..
APP_INSTALL_ENV=preprod
include $(SLNDIR)/.env APP_INSTALL_PREFIX=$(APP_INSTALL_ENV)-
include .env include .$(APP_INSTALL_ENV).env
generated/: generated/:
@mkdir -p $@ @mkdir -p $@
generated/yavscOrg.service: generated/$(APP_INSTALL_PREFIX)yavscOrg.service:
generated/yavscBlogs.service: generated/$(APP_INSTALL_PREFIX)yavscBlogs.service:
generated/yavscApi.service: generated/$(APP_INSTALL_PREFIX)yavscApi.service:
generated/yavsc%.service: generated/ template.service $(SLNDIR)/.env generated/$(APP_INSTALL_PREFIX)yavsc%.service: generated/ template.service $(SLNDIR)/.env
@cat template.service | APP_NAME="$*" \ @cat template.service | APP_NAME="$*" \
DESTDIR="$(DESTDIR)" \ DESTDIR="$(DESTDIR)" \
HTTP_HOST="$(HTTP_HOST)" \ HTTP_HOST="$(HTTP_HOST)" \
HTTP_PORT="$*_$(HTTP_PORT)" \ HTTP_PORT="$*_$(HTTP_PORT)" \
BASEAPPDIR="$(BASEAPPDIR)" \ APPDIR="$(APPDIR)" \
APP_SYSLOG_ID="yavsc$*" \ APP_SYSLOG_ID="$(APP_INSTALL_PREFIX)yavsc$*" \
POSTGRES_HOST="$(POSTGRES_HOST)" \ POSTGRES_HOST="$(POSTGRES_HOST)" \
POSTGRES_PORT="$(POSTGRES_PORT)" \ POSTGRES_PORT="$(POSTGRES_PORT)" \
POSTGRES_DB="$(POSTGRES_DB)" \ POSTGRES_DB="$(POSTGRES_DB)" \
@ -34,11 +36,13 @@ generated/yavsc%.service: generated/ template.service $(SLNDIR)/.env
envsubst > $@ envsubst > $@
@echo Created service file: $@ @echo Created service file: $@
generate-service-units: generated/$(APP_INSTALL_PREFIX)yavscOrg.service generated/$(APP_INSTALL_PREFIX)yavscBlogs.service generated/$(APP_INSTALL_PREFIX)yavscApi.service
copy-services: copy-service-Org copy-service-Blogs copy-service-Api install-service-%: /etc/systemd/system/$(APP_INSTALL_PREFIX)yavsc%.service
copy-service-Org: /etc/systemd/system/yavscOrg.service sudo systemctl daemon-reload
copy-service-Blogs: /etc/systemd/system/yavscBlogs.service sudo systemctl enable $(APP_INSTALL_PREFIX)yavsc$*
copy-service-Api: /etc/systemd/system/yavscApi.service
install-services: install-service-Org install-service-Blogs install-service-Api
copy-binaries: build_publish_Org build_publish_Blogs build_publish_Api stop-services copy-binaries: build_publish_Org build_publish_Blogs build_publish_Api stop-services
@for project in $(APP_PROJECT_NAMES); \ @for project in $(APP_PROJECT_NAMES); \
@ -52,23 +56,23 @@ copy-binaries: build_publish_Org build_publish_Blogs build_publish_Api stop-serv
rm -f $${BINDIR}/appsettings-$${LCAPI}.json ; \ rm -f $${BINDIR}/appsettings-$${LCAPI}.json ; \
sync ; \ sync ; \
ls $${BINDIR}/appsettings* 2>&1 ; \ ls $${BINDIR}/appsettings* 2>&1 ; \
sudo cp -a $${BINDIR}/* $(BASEAPPDIR) ; \ sudo cp -a $${BINDIR}/* $(DESTDIR)$(APPDIR) ; \
done done
@sudo chown -R $(USER_AND_GROUP) $(BASEAPPDIR) @sudo chown -R $(USER_AND_GROUP) $(DESTDIR)$(APPDIR)
@sync
/etc/systemd/system/yavsc%.service: generated/yavsc%.service
$(DESTDIR)/etc/systemd/system/$(APP_INSTALL_PREFIX)yavsc%.service: generated/$(APP_INSTALL_PREFIX)yavsc%.service
sudo cp $^ $@ sudo cp $^ $@
sudo chown root:root $@ sudo chown root:root $@
build_publish_%: clean_publish_dir_% build_publish_%: clean_publish_dir_%
@ASPNETCORE_ENV=$(CONFIGURATION) dotnet publish $(SLNDIR)/src/Yavsc.$*/Yavsc.$*.csproj @ASPNETCORE_ENV=$(CONFIGURATION) dotnet publish $(SLNDIR)/src/Yavsc.$*/Yavsc.$*.csproj
build_publish: build_publish_Org build_publish_Blogs build_publish_Api
clean_publish_dir_%: clean_publish_dir_%:
@rm -rf $(SLNDIR)/src/Yavsc.$*/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish @rm -rf $(SLNDIR)/src/Yavsc.$*/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish
install: build_publish copy-binaries copy-services install: copy-binaries copy-services
@sudo systemctl daemon-reload @sudo systemctl daemon-reload
@for project in $(APP_PROJECT_NAMES); \ @for project in $(APP_PROJECT_NAMES); \
do \ do \
@ -77,10 +81,13 @@ install: build_publish copy-binaries copy-services
done done
reinstall: copy-binaries reinstall: copy-binaries
@sync
@for project in $(APP_PROJECT_NAMES); do \ @for project in $(APP_PROJECT_NAMES); do \
sudo systemctl start yavsc$${project} ; done sudo systemctl start yavsc$${project} ; done
reinstall-pre: copy-binaries
@for project in $(APP_PROJECT_NAMES); do \
sudo systemctl start yavscPre$${project} ; done
stop-services: stop-services:
@for project in $(APP_PROJECT_NAMES); \ @for project in $(APP_PROJECT_NAMES); \
do \ do \
@ -93,7 +100,7 @@ $(SLNDIR)/src/Yavsc.Api/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_
showConfig: showConfig:
@echo CONFIGURATION: $(CONFIGURATION) @echo CONFIGURATION: $(CONFIGURATION)
@echo BASEAPPDIR: $(BASEAPPDIR) @echo APPDIR: $(APPDIR)
showApiLogs: showApiLogs:
@sudo journalctl -u yavscApi.service -S "2 min ago" | tee yavscApi.log @sudo journalctl -u yavscApi.service -S "2 min ago" | tee yavscApi.log

View file

@ -10,10 +10,10 @@ RestartSec=5s
Type=simple Type=simple
User=yavsc User=yavsc
Group=yavsc Group=yavsc
WorkingDirectory=$DESTDIR WorkingDirectory=$APPDIR
ExecStart=$DESTDIR/Yavsc.$APP_NAME ExecStart=$APPDIR/Yavsc.$APP_NAME
Restart=always Restart=always
Environment="HOME=$DESTDIR" Environment="HOME=$APPDIR"
Environment="ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" Environment="ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY"
Environment="ANTHROPIC_MAX_TOKENS=$ANTHROPIC_MAX_TOKENS" Environment="ANTHROPIC_MAX_TOKENS=$ANTHROPIC_MAX_TOKENS"
Environment="ASPNETCORE_Environment=$ENV" Environment="ASPNETCORE_Environment=$ENV"

View file

@ -1,54 +0,0 @@
server {
if ($host = yavsc.pschneider.fr) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name yavsc.pschneider.fr;
location / {
root /srv/www/yavsc/wwwroot;
dav_methods PUT;
proxy_pass http://127.0.0.1:3003;
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;
}
}
server {
listen 443 ssl;
server_name yavsc.pschneider.fr;
ssl_certificate /etc/letsencrypt/live/yavsc.pschneider.fr-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/yavsc.pschneider.fr-0001/privkey.pem; # managed by Certbot
# Configure the SignalR Endpoint
location / {
# App server url
proxy_pass http://localhost:3003;
proxy_cache off;
# WebSockets were implemented after http/1.0
proxy_http_version 1.1;
# Configuration for ServerSentEvents
proxy_buffering off;
# Configuration for LongPolling or if your KeepAliveInterval is longer than 60 seconds
proxy_read_timeout 100s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}