<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHP Archives | Clever Cloud</title>
	<atom:link href="https://stagingv6.cleverapps.io/fr/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>From Code to Product</description>
	<lastBuildDate>Sat, 04 Nov 2023 19:01:59 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>PHP Archives | Clever Cloud</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Déployez un ChatGPT personnalisé basé sur PHP</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Wed, 11 Oct 2023 07:21:04 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=10554</guid>

					<description><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière déployez un chatgpt PHP" decoding="async" fetchpriority="high" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://stagingv6.cleverapps.io/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://stagingv6.cleverapps.io/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://stagingv6.cleverapps.io/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://stagingv6.cleverapps.io/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière déployez un chatgpt PHP" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://stagingv6.cleverapps.io/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://stagingv6.cleverapps.io/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://stagingv6.cleverapps.io/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://stagingv6.cleverapps.io/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
