Skip to content

FAQ #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 2, 2019
Merged

FAQ #42

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions en/faq/appengine-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: Déploiement sur Google App Engine
description: Comment déployer une application Nuxt.js sur Google App Engine ?
---

# Comment déployer une application Nuxt.js sur Google App Engine ?

Déployer sur [Google App Engine](https://cloud.google.com/appengine/) est une solution rapide et facile pour héberger vos applications universelles Nuxt sur le service de Cloud Google.

Dans ce guide, nous construisons l'application localement puis nous envoyons simplement l'intégralité du répertoire du projet vers Google App Engine. Après l'envoi, Google App Engine démarrera automatiquement le script `start` de votre fichier package.json et votre application sera disponible immédiatement.

## Pour commencer

Vérifz que vous avez un compte Google Cloud, un projet et une application Google App Engine vierge définie sur [Google App Engine](https://cloud.google.com/appengine/). De plus, assurez-vous de télécharger et d'installer Cloud SDK (CLI) depuis Google comme expliqué [ici](https://cloud.google.com/sdk/) et connectez-vous à vote compte Google Cloud.

## Configurer votre application

Tout ce que vous avez besoin d'ajouter à votre application universelle Nuxt pour la déployer sur le Moteur d'Application est un fichier appelé `app.yaml`. Créez un nouveau fichier avec ce nom dans votre dossier racine et ajoutez le contenu suivant :

```yaml
runtime: nodejs10

instance_class: F2

handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always

- url: /(.*\.(gif|png|jpg|ico|txt))$
static_files: static/\1
upload: static/.*\.(gif|png|jpg|ico|txt)$
secure: always

- url: /.*
script: auto
secure: always

env_variables:
HOST: '0.0.0.0'
NODE_ENV: 'production'
```

## Construire et déployer l'application

Maintenant, construisez votre application avec `npm run build`.

À cet instant, votre application est prête à être envoyée au Moteur d'Application Google. Maintenant lancer la commande suivante :

```
gcloud app deploy app.yaml --project <project-id>
```

Voilà ! Votre application Nuxt.js est maintenant hébergée le me Moteur d'Application Google !

## Pour plus d'information

- L'attribut `instance_class` dans votre fichier app.yaml définit la classe d'instance d'application. Instance F2 n'est pas complètement libre, mais possède le minimum de mémoire nécessaire pour exécuter une application Nuxt.
- Assurez-vous de renseigner le project-id et non pas le project-name dans la commande de déploiement. Ce sont deux choses différentes - mais facile à confondre.
157 changes: 90 additions & 67 deletions en/faq/deployment-aws-s3-cloudfront.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,84 @@
---
title: "AWS: S3+Cloudfront Deployment (En)"
description: Static Hosting on AWS with S3 and Cloudfront
title: Déploiement S3+Cloudfront de AWS
description: Hébergement statique sur AWS avec S3 et Cloudfront
---

# How to Deploy on AWS w/ S3 and Cloudfront
# Comment déployer sur AWS avec S3 et Cloudfront

<p style="width: 294px;position: fixed; top : 64px; right: 4px;" class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <a href="https://github.com/vuejs-fr/nuxt" target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p><p>AWS is Amazon Web Services.</p>
S3 is their static storage which can be configured for Static Site Hosting.
Cloudfront is their CDN (content delivery network)
AWS est un service web d'Amazon.
S3 est leur stockage statique qui peut être configuré pour de l'hébergement de site statique.
Cloudfront est leur CDN (content delivery network)

Hosting a Nuxt "Universal App" on AWS w/ S3 + Cloudfront is powerful and cheap.
Héberger une "application universelle" Nuxt sur AWS avec S3 et Cloudfront est puissant et pas cher.

> AWS is a death by 1000 paper cuts. If we missed a step, please submit a PR to update this document.
> AWS est à se tirer les cheveux. Si nous avons oublié une étape, merci de soumettre une proposition de mise à jour (PR) pour mettre à jour ce document.

## Overview
## Tour rapide

We will use the [Gulp](https://gulpjs.com/) build system for this. `Gulp` is a mature build system with handy utilities we can use.
Nous allons héberger à pas cher avec quelques services AWS. Brièvement :
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

???

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

phrase en anglais :
"We'll host super cheap with some AWS services. Briefly:"

si vous avez une idée pour la traduction ?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour moi le mieux serait d'enlever la phrase en français et de faire une PR sur le repo anglais pour l'enlever également.


- S3
- des "boites" ("bucket") de données cloud pour nos fichiers de site web
- peut être configuré pour héberger des sites web statiques
- CloudFront
- un CDN (content delivery network)
- offre des certificats HTTPS gratuits
- rend le chargement de votre site rapide

Nous allons envoyer le site de cette façon :

```
Nuxt Generate -> Local folder -> AWS S3 Bucket -> AWS Cloudfront CDN -> Browser
[ nuxt generate ] [ gulp deploy ]
[ deploy.sh ]
```

Premièrement, nous allons générer le site avec `nuxt generate`.
Puis nous utiliserons [Gulp](https://gulpjs.com/) pour publier les fichiers dans une boite S3 et invalider un CDN CouldFront.

- [gulp](https://www.npmjs.com/package/gulp)
- [gulp-awspublish](https://www.npmjs.com/package/gulp-awspublish)
- [gulp-cloudfront-invalidate-aws-publish](https://www.npmjs.com/package/gulp-cloudfront-invalidate-aws-publish)
- [concurrent-transform](https://www.npmjs.com/package/concurrent-transform) (for parallel uploads)

Our deploy script needs these environment variables set:
Nos scripts de déploiement ont besoin des variables d'environnement suivantes :
- AWS_BUCKET_NAME="example.com"
- AWS_CLOUDFRONT="UPPERCASE"
- AWS_ACCESS_KEY_ID="key"
- AWS_SECRET_ACCESS_KEY="secret"

## Setting it up
Nous avons ces fichiers :

```
deploy.sh - exécute `nuxt generate` et `gulp deploy`
gulpfile.js - le code `gulp deploy` pour envoyer les fichiers à S3 et invalider CloudFront
```

## Mise en place

1. Make a S3 bucket and configure it for static site hosting
2. Create a cloudfront distribution
3. Configure security access
4. Setup build script in your project
1. Créer une boite S3 et la configurer pour de l'hébergement de site statique
2. Créer une distribution cloudfront
3. Configurer l'accès sécurisé
4. Paramétrer le script de build dans votre projet

### 1. Setup your AWS S3 bucket and 2. Setup your Cloudfront Distribution
### 1. AWS: Configurez votre boite S3
### 2. AWS: Configurez votre distribution Cloudfront

For steps 1. and 2, follow this [tutorial to setup your S3 and Cloudfront](https://reidweb.com/2017/02/06/cloudfront-cdn-tutorial/)
Pour les étapes 1 et 2, suivre ce [tutoriel pour configurer S3 et Cloudfront](https://reidweb.com/2017/02/06/cloudfront-cdn-tutorial/)

You should now have this data:
Vous devriez avoir maintenant ces données :
- AWS_BUCKET_NAME="example.com"
- AWS_CLOUDFRONT="UPPERCASE"

### 3. Configure security access
### 3. AWS: Configurer l'accès sécurisé

For step 3, we need to create a user that can:
- Update the bucket contents
- Invalidate the cloudfront distribution (propagates changes to users faster)
Pour l'étape 3, nous devons créer un utilisateur qui peut :
- Mettre à jour le contenu de la boite
- Invalidater la distribution cloudfront (propage plus rapidement les modifications aux utilisateurs)

[Create a programmatic user with this policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html):
[Créer un utilisateur avec cette stratégie](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) :

> NOTE: replace 2x `example.com` with your S3 bucket name below. This policy allows pushing to the specified bucket, and invalidating any cloudfront distribution.
> NOTE: remplacer ci-dessous les deux `example.com` avec le nom de votre boite S3. Cette stratégie permet de pousser les boites spécifiques, et invalider toutes les distributions cloudfront.

``` json
{
Expand Down Expand Up @@ -90,38 +117,37 @@ For step 3, we need to create a user that can:
}
```

Then [get an access key and secret](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).
Puis [obtenez une clé d'accès et un code secret](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).

You should now have this data:
Vous devriez maintenant avoir ces données :
- AWS_ACCESS_KEY_ID="key"
- AWS_SECRET_ACCESS_KEY="secret"

### 4. Setup your project's build script

4.1) Add Gulp to your project and to your command line
``` bash
npm install --save-dev gulp gulp-awspublish gulp-cloudfront-invalidate-aws-publish concurrent-transform
npm install -g gulp
```
### 4. Ordinateur: Configurez le script de build de votre projet

4.2) Create a `deploy.sh` script. See optional [nvm (node version manager)](https://github.com/creationix/nvm).
4.1) Créer un script `deploy.sh`. Voir les options [nvm (node version manager)](https://github.com/creationix/nvm).
``` bash
#!/bin/bash

# Load nvm (node version manager), install node (version in .nvmrc), and npm install packages
export AWS_ACCESS_KEY_ID="key"
export AWS_SECRET_ACCESS_KEY="secret"
export AWS_BUCKET_NAME="example.com"
export AWS_CLOUDFRONT="UPPERCASE"

# charger nvm (node version manager), installer node (version in .nvmrc), et les paquets d'installation npm
[ -s "$HOME/.nvm/nvm.sh" ] && source "$HOME/.nvm/nvm.sh" && nvm use
# Npm install if not already.
# installer npm si besoin
[ ! -d "node_modules" ] && npm install

npm run generate
AWS_ACCESS_KEY_ID="key" AWS_SECRET_ACCESS_KEY="secret" AWS_BUCKET_NAME="example.com" AWS_CLOUDFRONT="UPPERCASE" gulp deploy
gulp deploy
```

4.3) Make `deploy.sh` runnable and don't check into git
4.2) Rendre `deploy.sh` exécutable et NE PAS LE VALIDER DANS GIT (deploy.sh contient des informations secrètes)
``` bash
chmod +x deploy.sh
echo "
# Don't commit build files
# ne pas commiter les fichiers de build
node_modules
dist
.nuxt
Expand All @@ -130,7 +156,13 @@ deploy.sh
" >> .gitignore
```

4.4) Create a `gulpfile.js` with the build script
4.3) Ajouter Gulp à votre projet et à votre ligne de commande
``` bash
npm install --save-dev gulp gulp-awspublish gulp-cloudfront-invalidate-aws-publish concurrent-transform
npm install -g gulp
```

4.4) Créer `gulpfile.js` avec le script de build

``` javascript
var gulp = require('gulp');
Expand All @@ -142,62 +174,62 @@ var parallelize = require('concurrent-transform');

var config = {

// Required
// Obligatoire
params: { Bucket: process.env.AWS_BUCKET_NAME },
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,

// Optional
// Facultatif
deleteOldVersions: false, // NOT FOR PRODUCTION
distribution: process.env.AWS_CLOUDFRONT, // Cloudfront distribution ID
region: process.env.AWS_DEFAULT_REGION,
headers: { /*'Cache-Control': 'max-age=315360000, no-transform, public',*/ },

// Sensible Defaults - gitignore these Files and Dirs
// Sensible Defaults - ajouter ces fichiers et répertoires à gitignore
distDir: 'dist',
indexRootPath: true,
cacheFileName: '.awspublish',
concurrentUploads: 10,
wait: true, // wait for Cloudfront invalidation to complete (about 30-60 seconds)
wait: true, // attendre l'invalidation de Cloudfront (environ 30-60 secondes)
}

gulp.task('deploy', function() {
// create a new publisher using S3 options
// créer un nouveau publieur en utilisant les options de S3
// http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property
var publisher = awspublish.create(config, config);

var g = gulp.src('./' + config.distDir + '/**');
// publisher will add Content-Length, Content-Type and headers specified above
// If not specified it will set x-amz-acl to public-read by default
// le publieur ajoutera Content-Length, Content-Type les les entêtes spécifiées ci-dessous
// Si non renseignés, x-amz-acl aura la valeur public-read par défaut
g = g.pipe(parallelize(publisher.publish(config.headers), config.concurrentUploads))

// Invalidate CDN
// Invalide le CDN
if (config.distribution) {
console.log('Configured with Cloudfront distribution');
g = g.pipe(cloudfront(config));
} else {
console.log('No Cloudfront distribution configured - skipping CDN invalidation');
}

// Delete removed files
// supprimer les fichiers à supprimer
if (config.deleteOldVersions) g = g.pipe(publisher.sync());
// create a cache file to speed up consecutive uploads
// créer un fichier de cache pour accélérer les envois successifs
g = g.pipe(publisher.cache());
// print upload updates to console
// afficher l'avancement de l'envoi dans la console
g = g.pipe(awspublish.reporter());
return g;
});
```
4.5) Deploy and debug
4.5) Deployer et déboguer

Run it:
Lancer ceci :
``` bash
./deploy.sh
```

You should get an output similar to this:
```
$ ./deploy.sh Mod master
Vous devriez avoir un affichage comme celui-ci :
``` bash
$ ./deploy.sh

Found '/home/michael/scm/example.com/www/.nvmrc' with version <8>
Now using node v8.11.2 (npm v5.6.0)
Expand Down Expand Up @@ -296,13 +328,4 @@ Configured with Cloudfront distribution
[21:26:09] Finished 'deploy' after 42 s
```

`deploy.sh` first runs `nuxt generate`, then runs `gulp deploy` with our environment variables set.

Note that the `Cloudfront invalidation created: XXXX` is the only output from the cloudfront invalidation npm package. If you don't see that, it's not working.







Notez que `Cloudfront invalidation created: XXXX` est la seule sortie du package npm d'invalidation de cloudfront. Si vous ne voyez pas ceci, ça ne fonctionnera pas.
6 changes: 5 additions & 1 deletion en/faq/duplicated-meta-tags.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ description: Balises meta dupliquées avec Nuxt.js ?

Il s'agit d'une « fonctionnalité » de [vue-meta](https://github.com/declandewet/vue-meta), merci de lire la [documentation des éléments d'entête](/guide/views#html-head).

> Afin d'éviter toute duplication lors de l'utilisation d'un composant enfant, donnez un identifiant unique à l'aide de la clé `hid`. [En savoir plus](https://github.com/declandewet/vue-meta#lists-of-tags).
<div class="Alert">

Afin d'éviter toute duplication lors de l'utilisation d'un composant enfant, donnez un identifiant unique à l'aide de la clé `hid`. [En savoir plus](https://github.com/declandewet/vue-meta#lists-of-tags).

</div>

Pour la meta description, vous devez ajouter un identifiant unique `hid` afin que vue-meta sache qu'il doit remplacer la balise par défaut.

Expand Down
6 changes: 5 additions & 1 deletion en/faq/github-pages.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ npm run generate

Cette commande crée un répertoire `dist` contenant l'intégralité de l'application prête à être déployée sur GitHub Pages. Cela sur la branche `gh-pages` pour un dépôt de projet OU sur la branche `master` pour le site d'un utilisateur ou d'une organisation.

<p class="Alert Alert--nuxt-green"><b>Info :</b> si vous utilisez un nom de domaine personnalisé pour GitHub Pages à l'aide d'un fichier `CNAME`, il est recommandé de placer ce fichier dans le répertoire `static`. [Plus d'informations](/guide/assets#static) à ce propos.</p>
<div class="Alert Alert--nuxt-green">

<b>Info :</b> si vous utilisez un nom de domaine personnalisé pour GitHub Pages à l'aide d'un fichier `CNAME`, il est recommandé de placer ce fichier dans le répertoire `static`. [Plus d'informations](/guide/assets#static) à ce propos.

</div>

## Déploiement d'un dépôt sur GitHub Pages

Expand Down
6 changes: 5 additions & 1 deletion en/faq/google-analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,8 @@ export default {

Voilà, Google Analytics est intégré dans notre application Nuxt.js et suivra chaque page vue !

<p class="Alert Alert--nuxt-green"><b>Info :</b> cette méthode est valable pour n'importe quel autre service de suivi.</p>
<div class="Alert Alert--nuxt-green">

<b>Info :</b> cette méthode est valable pour n'importe quel autre service de suivi.

</div>
Loading