VAPOR - Swift et Ubuntu Server

Bonjour à tous et bonne année 2022.

Je suis à fond, et scrupuleusement, sur le cours VAPOR, (sources GitHud PurpleGiraffe) et dans la phase déploiement au moment de :

[email protected]:~/cours-vapor4/todos$ swift build -c release

j’obtiens des warnings et erreurs?! ci-dessous, et je suis bloqué. :sleepy: :worried:

Working copy of GitHub - vapor/fluent-kit: Swift ORM (queries, models, and relations) for NoSQL and SQL databases resolved at 1.15.0
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-nio/Sources/MySQLNIO/MySQLConnection.swift:9:48: warning: ‹ forClient(cipherSuites:minimumTLSVersion:maximumTLSVersion:certificateVerification:trustRoots:certificateChain:privateKey:applicationProtocols:shutdownTimeout:keyLogCallback:) › is deprecated: renamed to 'makeClientConfiguration()'
tlsConfiguration: TLSConfiguration? = .forClient(),
^
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-nio/Sources/MySQLNIO/MySQLConnection.swift:9:48: note: use ‹ makeClientConfiguration() › instead
tlsConfiguration: TLSConfiguration? = .forClient(),
^~~~~~~~~
makeClientConfiguration
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-kit/Sources/MySQLKit/MySQLConfiguration.swift:79:48: warning: ‹ forClient(cipherSuites:minimumTLSVersion:maximumTLSVersion:certificateVerification:trustRoots:certificateChain:privateKey:applicationProtocols:shutdownTimeout:keyLogCallback:) › is deprecated: renamed to 'makeClientConfiguration()'
tlsConfiguration: TLSConfiguration? = .forClient()
^
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-kit/Sources/MySQLKit/MySQLConfiguration.swift:79:48: note: use ‹ makeClientConfiguration() › instead
tlsConfiguration: TLSConfiguration? = .forClient()
^~~~~~~~~
makeClientConfiguration
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-kit/Sources/MySQLKit/MySQLConfiguration.swift:44:33: warning: ‹ forClient(cipherSuites:minimumTLSVersion:maximumTLSVersion:certificateVerification:trustRoots:certificateChain:privateKey:applicationProtocols:shutdownTimeout:keyLogCallback:) › is deprecated: renamed to 'makeClientConfiguration()'
tlsConfiguration = .forClient()
^
/home/jmz/cours-vapor4/todos/.build/checkouts/mysql-kit/Sources/MySQLKit/MySQLConfiguration.swift:44:33: note: use ‹ makeClientConfiguration() › instead
tlsConfiguration = .forClient()
^~~~~~~~~
makeClientConfiguration
/home/jmz/cours-vapor4/todos/.build/checkouts/fluent-mysql-driver/Sources/FluentMySQLDriver/FluentMySQLConfiguration.swift:73:48: warning: ‹ forClient(cipherSuites:minimumTLSVersion:maximumTLSVersion:certificateVerification:trustRoots:certificateChain:privateKey:applicationProtocols:shutdownTimeout:keyLogCallback:) › is deprecated: renamed to 'makeClientConfiguration()'
tlsConfiguration: TLSConfiguration? = .forClient(),
^
/home/jmz/cours-vapor4/todos/.build/checkouts/fluent-mysql-driver/Sources/FluentMySQLDriver/FluentMySQLConfiguration.swift:73:48: note: use ‹ makeClientConfiguration() › instead
tlsConfiguration: TLSConfiguration? = .forClient(),
^~~~~~~~~
makeClientConfiguration
[938/940] Compiling Backtrace Backtrace.swift

J’ai tenté un .build/release/Run migrate -e prod, mais sans succès.

[email protected]:~/cours-vapor4/todos$ .build/release/Run migrate -e prod
bash: .build/release/Run: No such file or directory

Bien sûr je cherche (surtout en ayant recommencé tout à zéro, plusieurs fois), mais là j’atteins mon niveau d’incompétence, d’où ce petit appel à l’aide.

Merci d’avance.

C’est un problème de certificat, as-tu bien installé des certificats pour que la gestion TLS se fasse correctement? as-tu bien défini tes certificats?

https://docs.vapor.codes/4.0/server/#tls

En outre, je vois que tu passes par la commande tlsconfigurataion?= .forClient() qui est dépréciée depuis le cours de Maxime.
on peut se référer à la documentation de SwiftNIO-SSL :

si tu veux désactiver le SSL (non recommandé en production) :

var tls = TLSConfiguration.makeClientConfiguration()
tls.certificateVerification = .none
Puis dans le app.database.use il faut ajouter :
tlsConfiguration: tls

1 « J'aime »

Merci Mrt1 pour ton aide.

J’ai pu corriger des choses. Effectivement il faut utiliser maintenant la syntaxe TLSConfiguration.makeClientConfiguration(), mais le fichier concerné /home/jmz/cours-vapor4/todos/.build/checkouts/fluent-mysql-driver/Sources/FluentMySQLDriver/FluentMySQLConfiguration.swift:73:48: note: use ‹ makeClientConfiguration() › instead
tlsConfiguration: TLSConfiguration? = .forClient()
n’ai pas, normalement, de notre compétence, mais arrive, sauf erreur de ma part, avec les dépendances auto chargées. D’où une certaine confusion de ma part, d’aller bricoler les fichiers des autres.

Pour les certificats, justement le cours n’en prévoit pas, ou plutôt prévoit le mode d’auto certification, plus facile en première approche.

En tout cas, je vais tenter d’avancer un peu plus, et reviendrai sur la doc et tes conseils.

Un grand merci à toi.

Je n’ai pas ce soucis, as-tu bien mis à jour Vapor de ton côté? On parle de la version 4.54 actuellement disponible.
Les certificats, je ne trouve pas ça évident non plus à gérer, surtout depuis la nouvelle configuration de SwiftNIO. je ne l’a trouve pas simplifiée au contraire.

Merci pour ton suivi.

Ton observation me pose question à propos de la version de Vapor.
Est-ce que les
1. apt-get update updates the list of available packages and their versions, but it does not install or upgrade any packages
et
2. apt-get upgrade actually installs newer versions of the packages you have. After updating the lists, the package manager knows about available updates for the software you have installed,
régulièrement exécutés traitent toutes les librairies présentes, dont Swift et Vapor ?

Non, car ils ne sont pas dans les dépôts officiels, que l’installation se fait indépendamment (pour Swift et Vapor) avec une compilation (pour Vapor).

L’apt-get fonctionne avec une liste de sources et de dépôts. l'update mets à jour la liste des dépôts et l'upgrade mets à jour les packages.

pour une explication simpliste : si tu veux installer un logiciel non disponibles sur les dépôts officiels, mais sur un dépôt particulier, il faut mettre à jours le fichier des sources en amont, puis relancer les commandes apt-get.