Giter Site home page Giter Site logo

kimek / docker-nginx-reverse-proxy-apache-mysql-php-phpmyadmin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from raczak/docker-nginx-reverse-proxy-apache-mysql-php-phpmyadmin

0.0 1.0 0.0 46 KB

Server full docker with Nginx, Apache, MySQL, PHP and PHPMyAdmin

Home Page: https://www.sosnoob.com/

License: Apache License 2.0

Shell 75.83% PHP 12.39% HTML 11.78%

docker-nginx-reverse-proxy-apache-mysql-php-phpmyadmin's Introduction

GitHub license Awesome

Sosnoob - Créez votre serveur Nginx (en proxy), apache, php, mysql et phpmyadmin entièrement avec docker !

Dans le but de répondre à un besoin exprimé par la communauté, j'ai créé une stack serveur-web full docker dispo pour :

  • Windows
  • OSX
  • Linux

Tuto de mise en place complet : Si vous souhaitez vous former

Avec cette architecture, je vous propose de mettre en place Nginx en serveur proxy pour rediriger nos requêtes, apache en serveur web avec php, mysql pour la gestion des données de nos apps et phpmyadmin pour gérer la base de données.

⚠️ Pré-requis

  • Une machine sous Windows, Linux ou Mac OS.
  • Docker installé sur la machine.
  • Docker-compose installé sur la machine.

Installation

  • Clonez ce dépôt à l'emplacement de votre choix sur votre serveur.
  • Modifiez le fichier .env avec les informations de votre serveur et ce que vous désirez pour mot de passe MySQL (néanmoins cela fonctionne avec les paramètres de bases).
  • Exécutez la commande suivante : docker build -t apachemy.
  • Puis exécutez la commande suivante : docker-compose up -d.
  • Faites un docker ps et vous constaterez le bon fonctionnement de vos conteneurs.

Configuration

⚠️ Avant de déclarer un bug, vérifiez que vos ports ne sont pas déjà utilisés par d'autres services

Ports utilisés par la stack

Port Service
80 Nginx
443 Nginx
8099 Apache
8080 Phpmyadmin
8989 MySQL

Nginx

Les fichiers de configuration de Nginx sont dans le dossier etc/nginx/. Vous trouverez dedans tous les fichiers de conf utilisés par le container docker. Ne modifiez que le fichier etc/nginx/conf.d/default.template car les modifications seront automatiquement effectuées sur default.conf.

Après l'installation faites :

  1. Editez le fichier default.templateet remplacez à la ligne server_name par l'URL de votre site.
  2. Redémarrez le container Nginx avec sudo docker restart nginx-docker.

Apache

Les fichiers de configuration de Apache sont dans le dossier etc/apache/. Vous trouverez dedans tous les fichiers de conf utilisés par le container docker dont les dossiers sites-available et sites-enabled.

Après l'installation faites :

  1. Renommer le fichier etc/apache/site-available/toto.com.conf par celui de votre site.
  2. Remplacer de-dans les liens par ceux de votre site (ne changez pas le lien du DocumentRoot ni Directory, seulement le toto.com).
  3. Exécutez la commande sudo docker exec -t apache-docker a2ensite toto.com.conf dans ce même dossier.

Le dossier contenant vos sites web se trouve dans web/. Pour chaque site, créez un sous-dossier www.toto.com et éditez les fichiers de conf d'apache, ainsi que ceux d'Nginx.

Mysql

Pour ne pas perdre nos données à chaque redémarrage de docker, nous allons les stocker (shared folder) dans notre machine dans : data/db/mysql.

Variables d'environement

Le fichier .env, vous permettra de définir l'adresse de votre serveur, le nom de compte mot de passe Mysql et d'autres options de constructions de containers.

[Optionnel] Sécurisez votre site via SSL avec letsencrypt

  1. Aller dans le dossier etc/ssl/.
  2. Exécutez la commande docker-compose up -d.
  3. Exécutez la commande :
$ sudo docker run -it --rm -p 443:443 -p 83:80 --name certbot \
-v "/link_to/your_folder/docker-nginx-php-mysql/etc/ssl/mycertificate/letsencrypt:/etc/letsencrypt" \
-v "/link_to/your_folder/docker-nginx-php-mysql/etc/ssl/mycertificate/letsencrypt-lib/:/var/lib/letsencrypt" \

Répondez aux questions du certbot qui vous générera les certificats nécessaires dans /etc/ssl/mycertificate/letsencrypt/live/toto.com/

  1. Editez le fichier etc/nginx/conf.d/default.template et dé-commentez la partie To use https.
  2. Remplacez à la ligne server_name le nom du site par l'URL de votre site.
  3. Remplacer aux lignes ssl_certificate et ssl_certificate_key les nom des certificats par les vôtres (créés à l'étape 3).
  4. Redémarrez le container Nginx avec sudo docker restart nginx-docker.

Félicitations vous avez mis en place votre site en HTTPS ! Pour le renouveler, rien de plus simple, exécutez de nouveau l'étape 3.

[Optionnel] Rediriger les requêtes sur le port 80 (http) vers le 443 (https)

Pour vous assurer de ne plus avoir d'accès non sécurisés :

  1. Editez le fichier etc/nginx/conf.d/default.template et dé-commentez la partie To forward http to https.
  2. Remplacez à la ligne server_name l'url par celle de votre site.
  3. Redémarrez le container Nginx avec sudo docker restart nginx-docker.

Un bug ? Des questions ? Vous voulez rejoindre la communauté Sosnoob.com ? Notre discord

Documentation

Accéder au tuto pour comprendre le projet et pouvoir y contribuer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.