mirror of
https://github.com/cytopia/devilbox.git
synced 2025-06-02 07:31:00 +00:00
Stashing changes
This commit is contained in:
parent
ea7b2c9499
commit
2c69626a1d
@ -103,6 +103,8 @@ colon (``:``).
|
|||||||
ports available on the external interface of the virtual machine.
|
ports available on the external interface of the virtual machine.
|
||||||
|
|
||||||
|
|
||||||
|
.. _env_tld_suffix:
|
||||||
|
|
||||||
TLD_SUFFIX
|
TLD_SUFFIX
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -884,7 +886,7 @@ to something else if ``53`` is already in use on your host operating system.
|
|||||||
on port ``53`` which would result in a failure when this BIND server is starting.
|
on port ``53`` which would result in a failure when this BIND server is starting.
|
||||||
|
|
||||||
You only need to set BIND to port ``53`` when you want to use the ``Auto-DNS`` feautre of the
|
You only need to set BIND to port ``53`` when you want to use the ``Auto-DNS`` feautre of the
|
||||||
Devilbox. When doing so, read this article with care: :ref:`enable_auto_dns`.
|
Devilbox. When doing so, read this article with care: :ref:`tutorial_enable_auto_dns`.
|
||||||
|
|
||||||
|
|
||||||
Container settings
|
Container settings
|
||||||
@ -1015,6 +1017,8 @@ this time however, ``htdocs`` itself is a symlink pointing to a much deeper and
|
|||||||
inside an actual framework directory.
|
inside an actual framework directory.
|
||||||
|
|
||||||
|
|
||||||
|
.. _env_httpd_template_dir:
|
||||||
|
|
||||||
HTTPD_TEMPLATE_DIR
|
HTTPD_TEMPLATE_DIR
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
@ -1033,6 +1037,47 @@ have to populate it with one of three yaml-based template files.
|
|||||||
| ``HTTPD_TEMPLATE_DIR`` | valid dir name | ``.devilbox`` |
|
| ``HTTPD_TEMPLATE_DIR`` | valid dir name | ``.devilbox`` |
|
||||||
+------------------------+-------------------+------------------+
|
+------------------------+-------------------+------------------+
|
||||||
|
|
||||||
|
Let's have a look at an imaginary project directory called ``my-first-project``:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Project directory
|
||||||
|
host> ls -l data/www/my-first-project/
|
||||||
|
total 4
|
||||||
|
drwxr-xr-x 2 cytopia cytopia 4096 Mar 12 23:05 htdocs/
|
||||||
|
|
||||||
|
Inside this your project directory you will need to create another directory which is called
|
||||||
|
``.devilbox`` by default. If you change the ``HTTPD_TEMPLATE_DIR`` variable to something else,
|
||||||
|
you will have to create a directory by whatever name you chose for that variable.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
:emphasize-lines: 3,6
|
||||||
|
|
||||||
|
# Project directory
|
||||||
|
host> cd data/www/my-first-project/
|
||||||
|
host> mkdir .devilbox
|
||||||
|
host> ls -l
|
||||||
|
total 4
|
||||||
|
drwxr-xr-x 2 cytopia cytopia 4096 Mar 12 23:05 .devilbox/
|
||||||
|
drwxr-xr-x 2 cytopia cytopia 4096 Mar 12 23:05 htdocs/
|
||||||
|
|
||||||
|
Now you need to copy the ``vhost-gen`` templates into the ``.devilbox`` directory. The templates
|
||||||
|
are available in the Devilbox git directory under ``templates/vhost-gen/``.
|
||||||
|
|
||||||
|
By copying those files into your project template directory, nothing will change, these are the
|
||||||
|
default templates that will create the virtual host exactly the same way as if they were not
|
||||||
|
present.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
:emphasize-lines: 5
|
||||||
|
|
||||||
|
# Navigate into the devilbox directory
|
||||||
|
host> cd path/to/devilbox
|
||||||
|
|
||||||
|
# Copy templates to your project directory
|
||||||
|
host> cp templates/vhost-gen/* data/www/my-first-project/.devilbox/
|
||||||
|
|
||||||
|
|
||||||
Let's have a look how the directory is actually built up:
|
Let's have a look how the directory is actually built up:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1063,6 +1108,10 @@ changing the server name or adding locations to other assets.
|
|||||||
**Customize your virtual host**
|
**Customize your virtual host**
|
||||||
When you want to find out more how to actually customize each virtual host to its own need,
|
When you want to find out more how to actually customize each virtual host to its own need,
|
||||||
read up more on :ref:`custom_vhost`.
|
read up more on :ref:`custom_vhost`.
|
||||||
|
**Tutorials**
|
||||||
|
Also have a look at this tutorial which is a walk-through showing you how to modify
|
||||||
|
a virtual host and make it serve all files for multiple sub domains (server names):
|
||||||
|
:ref:`tutorial_adding_sub_domains`
|
||||||
|
|
||||||
|
|
||||||
MySQL
|
MySQL
|
||||||
|
3
docs/configuration-project/auto-dns.rst
Normal file
3
docs/configuration-project/auto-dns.rst
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
********
|
||||||
|
Auto-DNS
|
||||||
|
********
|
@ -1,5 +1,32 @@
|
|||||||
.. _custom_vhost:
|
.. _custom_vhost:
|
||||||
|
|
||||||
************************
|
***********************************
|
||||||
Custom vhost (vhost-gen)
|
Customized virtual host (vhost-gen)
|
||||||
************************
|
***********************************
|
||||||
|
|
||||||
|
|
||||||
|
**Table of Contents**
|
||||||
|
|
||||||
|
.. contents:: :local:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Configure vhost-gen directory
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Copy vhost-gen templates
|
||||||
|
========================
|
||||||
|
|
||||||
|
Template explained
|
||||||
|
==================
|
||||||
|
|
||||||
|
Configure vhost-gen
|
||||||
|
===================
|
||||||
|
|
||||||
|
|
||||||
|
.. _custom_vhost_apply_vhost_gen_changes:
|
||||||
|
|
||||||
|
Apply vhost-gen changes
|
||||||
|
=======================
|
||||||
|
|
||||||
|
based on watcherp
|
||||||
|
@ -87,6 +87,8 @@ The intranet already gives you the exact string that you can simply copy into yo
|
|||||||
This will only work on **native Docker** for Linux or MacOS. Read up on the next section to also find out how to do that on **Docker Toolbox** and Windows.
|
This will only work on **native Docker** for Linux or MacOS. Read up on the next section to also find out how to do that on **Docker Toolbox** and Windows.
|
||||||
|
|
||||||
|
|
||||||
|
.. _getting_started_create_your_first_project_dns_entry:
|
||||||
|
|
||||||
Step 4: create a DNS entry
|
Step 4: create a DNS entry
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|
@ -106,14 +106,9 @@ Updating the git branch shouldn't be needed to often, most changes are actually
|
|||||||
``Docker images``, so you should frequently update those.
|
``Docker images``, so you should frequently update those.
|
||||||
|
|
||||||
This is usually achieved by issueing a ``docker pull`` command with the correct image name and image
|
This is usually achieved by issueing a ``docker pull`` command with the correct image name and image
|
||||||
version. For your convenience there is a shell script in the Devilbox git directory: ``update-docker.sh``
|
version or ``docker-compose pull`` for all currently selected images in ``.env`` file.
|
||||||
which will update all available Docker images at once.
|
For your convenience there is a shell script in the Devilbox git directory: ``update-docker.sh``
|
||||||
|
which will update all available Docker images at once for every version.
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# Update docker images
|
|
||||||
host> cd path/to/devilbox
|
|
||||||
host> ./update-docker.sh
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -121,10 +116,83 @@ which will update all available Docker images at once.
|
|||||||
latest security patches and tool versions are applied.
|
latest security patches and tool versions are applied.
|
||||||
|
|
||||||
|
|
||||||
|
Update one Docker image
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Updating or pulling a single Docker image is accomplished by ``docker pull <image>:<tag>``.
|
||||||
|
This is not very handy as it is quite troublesome to do it separately per Docker image.
|
||||||
|
|
||||||
|
You first need to find out the image name and then also the currently used image tag.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
host> grep 'image:' docker-compose.yml
|
||||||
|
|
||||||
|
image: cytopia/bind:0.11
|
||||||
|
image: devilbox/php-fpm:${PHP_SERVER:-7.0}-work
|
||||||
|
image: devilbox/${HTTPD_SERVER:-nginx-stable}:0.13
|
||||||
|
image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:latest
|
||||||
|
image: postgres:${PGSQL_SERVER:-9.6}
|
||||||
|
image: redis:${REDIS_SERVER:-3.2}
|
||||||
|
image: memcached:${MEMCD_SERVER:-latest}
|
||||||
|
image: mongo:${MONGO_SERVER:-latest}
|
||||||
|
|
||||||
|
After having found the possible candidates, you will still have to find the corresponding value
|
||||||
|
inside the ``..env`` file. Let's do it for the PHP image:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
host> grep '^PHP_SERVER' .env
|
||||||
|
|
||||||
|
PHP_SERVER=5.6
|
||||||
|
|
||||||
|
So now you can substitute the ``${PHP_SERVER}`` variable from the first command with ``5.6`` and
|
||||||
|
finally pull a newer version:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
host> docker pull devilbox/php-fpm:5.6-work
|
||||||
|
|
||||||
|
Not very efficient.
|
||||||
|
|
||||||
|
|
||||||
|
Update all currently set Docker images
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
This approach is using ``docker-compose pull`` to update all images, but only for the versions
|
||||||
|
that are actually set in ``.env``.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
host> docker-compose pull
|
||||||
|
|
||||||
|
Pulling bind (cytopia/bind:0.11)...
|
||||||
|
Pulling php (devilbox/php-fpm:5.6-work)...
|
||||||
|
Pulling httpd (devilbox/apache-2.2:0.13)...
|
||||||
|
Pulling mysql (cytopia/mysql-5.7:latest)...
|
||||||
|
Pulling pgsql (postgres:9.6)...
|
||||||
|
Pulling redis (redis:4.0)...
|
||||||
|
Pulling memcd (memcached:1.5.2)...
|
||||||
|
Pulling mongo (mongo:3.0)...
|
||||||
|
|
||||||
|
This is most likely the variant you want.
|
||||||
|
|
||||||
|
|
||||||
|
Update all available Docker images for all versions
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
In case you also want to pull/update every single of every available Devilbox image, you can
|
||||||
|
use the provided shell script, which has all versions hardcoded and pulls them for you:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
host> ./update-docker.sh
|
||||||
|
|
||||||
|
|
||||||
Checklist git repository
|
Checklist git repository
|
||||||
========================
|
========================
|
||||||
|
|
||||||
1. Ensure containers are stopped and removed/recreated
|
1. Ensure containers are stopped and removed/recreated (``docker-compose stop && docker-compose rm``)
|
||||||
2. Ensure desired branch, tag or commit is checked out or latest changes are pulled
|
2. Ensure desired branch, tag or commit is checked out or latest changes are pulled
|
||||||
3. Ensure ``.env`` file is in sync with ``env-example`` file
|
3. Ensure ``.env`` file is in sync with ``env-example`` file
|
||||||
|
|
||||||
@ -132,4 +200,4 @@ Checklist git repository
|
|||||||
Checklist Docker images
|
Checklist Docker images
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
1. Ensure ``./update-docker.sh`` is executed
|
1. Ensure ``docker-compose pull`` or ``./update-docker.sh`` is executed
|
||||||
|
@ -32,6 +32,7 @@ devilbox documentation
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Tutorials
|
:caption: Tutorials
|
||||||
|
|
||||||
|
tutorials/adding-subdomains
|
||||||
tutorials/configure-database-in-your-project
|
tutorials/configure-database-in-your-project
|
||||||
tutorials/change-document-root
|
tutorials/change-document-root
|
||||||
tutorials/change-container-versions
|
tutorials/change-container-versions
|
||||||
|
@ -7,65 +7,84 @@ Available tools
|
|||||||
Each PHP container version brings the same tools, so you can safely switch versions without having
|
Each PHP container version brings the same tools, so you can safely switch versions without having
|
||||||
to worry to have less or more tools available.
|
to worry to have less or more tools available.
|
||||||
|
|
||||||
+----------------------+---------------------------------------------------------------------+
|
.. seealso:: :ref:`tutorial_work_inside_the_php_container`
|
||||||
| Binary | Tool |
|
|
||||||
+======================+=====================================================================+
|
The PHP container is your workhorse and these are your tools:
|
||||||
| various binaries | `awesome-ci <https://github.com/cytopia/awesome-ci>`_ |
|
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``brew`` | `Linux brew <http://linuxbrew.sh>`_ |
|
| Binary | Tool |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+======================+===================================================================================+
|
||||||
| ``composer`` | `Composer <https://getcomposer.org>`_ |
|
| various binaries | `awesome-ci <https://github.com/cytopia/awesome-ci>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``drush`` | `Drush <http://www.drush.org>`_ |
|
| ``brew`` | `Linux brew <http://linuxbrew.sh>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``drupal`` | `Drupal Console <https://drupalconsole.com>`_ |
|
| ``composer`` | `Composer <https://getcomposer.org>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``eslint`` | `ESLint <https://eslint.org>`_ |
|
| ``drush`` | `Drush <http://www.drush.org>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``git`` | `Git <https://git-scm.com>`_ |
|
| ``drupal`` | `Drupal Console <https://drupalconsole.com>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``git-flow`` | `Git flow <https://github.com/nvie/gitflow>`_ |
|
| ``eslint`` | `ESLint <https://eslint.org>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``gulp`` | `Gulp <https://gulpjs.com/>`_ |
|
| ``git`` | `Git <https://git-scm.com>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``grunt`` | `Grunt <https://gruntjs.com>`_ |
|
| ``git-flow`` | `Git flow <https://github.com/nvie/gitflow>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``jsonlint`` | `JSON lint <https://github.com/zaach/jsonlint>`_ |
|
| ``gulp`` | `Gulp <https://gulpjs.com/>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``laravel`` | `Laravel installer <https://github.com/laravel/installer>`_ |
|
| ``grunt`` | `Grunt <https://gruntjs.com>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``mdl`` | `Markdown lint <https://github.com/markdownlint/markdownlint>`_ |
|
| ``jsonlint`` | `JSON lint <https://github.com/zaach/jsonlint>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``mdlint`` | `MD Linter <https://github.com/ChrisWren/mdlint>`_ |
|
| ``laravel`` | `Laravel installer <https://github.com/laravel/installer>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``mongo*`` | Various MongoDB client tools |
|
| ``mdl`` | `Markdown lint <https://github.com/markdownlint/markdownlint>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``mysql*`` | Various MySQL client tools |
|
| ``mdlint`` | `MD Linter <https://github.com/ChrisWren/mdlint>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``mysqldump-secure`` | `mysqldump-secure <https://mysqldump-secure.org>`_ |
|
| ``mongo*`` | Various MongoDB client tools |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``node`` | `Node <https://nodejs.org>`_ |
|
| ``mysql*`` | Various MySQL client tools |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``npm`` | `NPM <https://www.npmjs.com>`_ |
|
| ``mysqldump-secure`` | `mysqldump-secure <https://mysqldump-secure.org>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``pg*`` | Various PostgreSQL client tools |
|
| ``node`` | `Node <https://nodejs.org>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``phalcon`` | `Phalcon DevTools <https://github.com/phalcon/phalcon-devtools>`_ |
|
| ``npm`` | `NPM <https://www.npmjs.com>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``scss-lint`` | `SCSS Lint <https://github.com/brigade/scss-lint>`_ |
|
| ``pg*`` | Various PostgreSQL client tools |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``symfony`` | `Symfony installer <https://github.com/symfony/symfony-installer>`_ |
|
| ``phalcon`` | `Phalcon DevTools <https://github.com/phalcon/phalcon-devtools>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``tig`` | `Text-mode Interface for Git <https://github.com/jonas/tig>`_ |
|
| ``phpcs`` | `PHP CodeSniffer <https://github.com/squizlabs/PHP_CodeSniffer>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``webpack`` | `Webpack <https://webpack.js.org>`_ |
|
| ``phpcbf`` | `PHP Code Beautifier and Fixer <https://github.com/squizlabs/PHP_CodeSniffer>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``wp`` | `Wordpress CLI <https://wp-cli.org>`_ |
|
| ``redis*`` | Various Redis client tools |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
| ``yarn`` | `Yarn <https://yarnpkg.com/en>`_ |
|
| ``sass`` | `Sass <http://sass-lang.com>`_ |
|
||||||
+----------------------+---------------------------------------------------------------------+
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``scss-lint`` | `SCSS Lint <https://github.com/brigade/scss-lint>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``symfony`` | `Symfony installer <https://github.com/symfony/symfony-installer>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``tig`` | `Text-mode Interface for Git <https://github.com/jonas/tig>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``webpack`` | `Webpack <https://webpack.js.org>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``wp`` | `Wordpress CLI <https://wp-cli.org>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``yamllint`` | `Yamllint <https://github.com/adrienverge/yamllint>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
| ``yarn`` | `Yarn <https://yarnpkg.com/en>`_ |
|
||||||
|
+----------------------+-----------------------------------------------------------------------------------+
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If you are in need of other tools, open up an issue at
|
If you are in need of other tools, open up an issue at
|
||||||
`Github <https://github.com/cytopia/devilbox/issues>`_ and ask for it,
|
`Github <https://github.com/cytopia/devilbox/issues>`_ and ask for it,
|
||||||
this can usually be implemented very quickly.
|
this can usually be implemented very quickly.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
If you ever feel those tools are out-dated, simply update your Docker images.
|
||||||
|
Docker images are built every night to ensure latest tools and security patches:
|
||||||
|
:ref:`getting_started_update_the_docker_images`
|
||||||
|
350
docs/tutorials/adding-subdomains.rst
Normal file
350
docs/tutorials/adding-subdomains.rst
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
.. _tutorial_adding_sub_domains:
|
||||||
|
|
||||||
|
******************
|
||||||
|
Adding Sub domains
|
||||||
|
******************
|
||||||
|
|
||||||
|
This tutorial gives you a brief overview how to serve your project under one subdomain via
|
||||||
|
the project directory name as well as how to serve one projcet with multiple subdomains with
|
||||||
|
a customized virtual host config via ``vhost-gen``.
|
||||||
|
|
||||||
|
|
||||||
|
**Table of Contents**
|
||||||
|
|
||||||
|
.. contents:: :local:
|
||||||
|
|
||||||
|
|
||||||
|
Single sub domain for one project
|
||||||
|
=================================
|
||||||
|
|
||||||
|
When you just want to serve your project under a sub domain, you simply name your project directory
|
||||||
|
by the name of it. See the following examples how you build up your project URL.
|
||||||
|
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| Project dir | ``TLD_SUFFIX`` | Project URL |
|
||||||
|
+================+================+===============================+
|
||||||
|
| my-test | ``loc`` | ``http://my-test.loc`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| www.my-test | ``loc`` | ``http://www.my-test.loc`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| t1.www.my-test | ``loc`` | ``http://t1.www.my-test.loc`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| my-test | ``com`` | ``http://my-test.com`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| www.my-test | ``com`` | ``http://www.my-test.com`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| t2.www.my-test | ``com`` | ``http://t2.www.my-test.com`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
|
||||||
|
Whatever name you want to have in front of the ``TLD_SUFFIX`` is actually just the directory you
|
||||||
|
create. Generically, it looks like this:
|
||||||
|
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
| Project dir | ``TLD_SUFFIX`` | Project URL |
|
||||||
|
+================+================+===============================+
|
||||||
|
| <dir-name> | ``<tld>`` | ``http://<dir-name>.<tld>`` |
|
||||||
|
+----------------+----------------+-------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Multiple sub domains for one project
|
||||||
|
====================================
|
||||||
|
|
||||||
|
When you want to have multiple domains and/or sub domains for one project (such as in the
|
||||||
|
case of Wordpress multi-sites), you will need to customize your virtual host config for this
|
||||||
|
project and make the web server allow to serve your files by different server names.
|
||||||
|
|
||||||
|
Each web server virtual host is auto-generated by a tool called
|
||||||
|
`vhost-gen <https://github.com/devilbox/vhost-gen>`_. ``vhost-gen`` allows you to overwrite its
|
||||||
|
default generation process via templates. Those templates can be added to each project, giving
|
||||||
|
you the option to customize the virtual host of this specific project.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
:ref:`custom_vhost`
|
||||||
|
Ensure you have read and understand how to customize your virtual host with ``vhost-gen``.
|
||||||
|
:ref:`env_httpd_template_dir`
|
||||||
|
Ensure you know what this variable does inside your ``.env`` file.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
When adjusting vhost-gen templates for a project you have to do **one** of the following:
|
||||||
|
|
||||||
|
* Restart the devilbox
|
||||||
|
* Or rename your project directory to some other name and then rename it back to its original
|
||||||
|
name.
|
||||||
|
|
||||||
|
More information here: :ref:`custom_vhost_apply_vhost_gen_changes`
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Pay close attention that you do not use TAB (``\t``) characters for indenting the vhost-gen
|
||||||
|
yaml files. Some editors might automatically indent using TABs, so ensure they are replaced
|
||||||
|
with spaces. If TAB characters are present, those files become invalid and won't work.
|
||||||
|
https://github.com/cytopia/devilbox/issues/142
|
||||||
|
|
||||||
|
You can use the bundled ``yamllint`` binary inside the container to validate your config.
|
||||||
|
|
||||||
|
**See also:**
|
||||||
|
|
||||||
|
* :ref:`tutorial_work_inside_the_php_container`
|
||||||
|
* :ref:`available_tools`
|
||||||
|
|
||||||
|
|
||||||
|
Prerequisite
|
||||||
|
------------
|
||||||
|
|
||||||
|
Let's assume the following settings.
|
||||||
|
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
| Variable | Value |
|
||||||
|
+===============================+======================================+
|
||||||
|
| Devilbox path | ``/home/user/devilbox`` |
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
| :ref:`env_httpd_template_dir` | ``.devilbox`` |
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
| :ref:`env_httpd_datadir` | ``./data/www`` |
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
| :ref:`env_tld_suffix` | ``loc`` |
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
| Project name/directory | ``project-1`` (Ensure it exist) |
|
||||||
|
+-------------------------------+--------------------------------------+
|
||||||
|
|
||||||
|
Ensure that the default ``vhost-gen`` templates have been copied to your projects template directory:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Navigate to the Devilbox directory
|
||||||
|
host> /home/user/devilbox
|
||||||
|
|
||||||
|
# Create template directory in your project
|
||||||
|
host> mkdir ./data/www/project-1/.devilbox
|
||||||
|
|
||||||
|
# Copy vhost-gen templates
|
||||||
|
host> cp templates/vhost-gen/* ./data/www/project-1/.devilbox
|
||||||
|
|
||||||
|
By having done all prerequisite, your project should be available under http://my-project-1.loc
|
||||||
|
|
||||||
|
Now you are all set and we can dive into the actual configuration.
|
||||||
|
|
||||||
|
|
||||||
|
Apache 2.2
|
||||||
|
----------
|
||||||
|
|
||||||
|
Adding ``www`` sub domain
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Let's also make this project available under http://www.my-project-1.loc
|
||||||
|
|
||||||
|
Step 1: Add DNS entry
|
||||||
|
"""""""""""""""""""""
|
||||||
|
|
||||||
|
The first step would be to add an additional DNS entry for ``www.my-project-1.loc``.
|
||||||
|
See here how to do that for Linux, MacOS or Windows:
|
||||||
|
:ref:`getting_started_create_your_first_project_dns_entry`
|
||||||
|
|
||||||
|
DNS is in place, however when you visit http://www.my-project-1.loc, you will end up seeing the
|
||||||
|
Devilbox intranet, because this is the default host when no match has been found.
|
||||||
|
|
||||||
|
Step 2: Adjust apache22.yml
|
||||||
|
"""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
Next you will have to adjust the Apache 2.2 vhost configuration template. The current default
|
||||||
|
template looks similar to the one shown below (**Note:** Only the ``vhost:`` sub section is shown
|
||||||
|
here).
|
||||||
|
|
||||||
|
.. code-block:: yml
|
||||||
|
:caption: /home/user/devilbox/data/www/project-1/.devilbox/apache22.yml
|
||||||
|
:name: apache22.yml
|
||||||
|
:emphasize-lines: 3
|
||||||
|
|
||||||
|
vhost: |
|
||||||
|
<VirtualHost __DEFAULT_VHOST__:__PORT__>
|
||||||
|
ServerName __VHOST_NAME__
|
||||||
|
|
||||||
|
CustomLog "__ACCESS_LOG__" combined
|
||||||
|
ErrorLog "__ERROR_LOG__"
|
||||||
|
|
||||||
|
__VHOST_DOCROOT__
|
||||||
|
__VHOST_RPROXY__
|
||||||
|
__PHP_FPM__
|
||||||
|
__ALIASES__
|
||||||
|
__DENIES__
|
||||||
|
__SERVER_STATUS__
|
||||||
|
# Custom directives
|
||||||
|
__CUSTOM__
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
All you will have to do, is to add another ``ServerName`` directive:
|
||||||
|
|
||||||
|
.. code-block:: yml
|
||||||
|
:caption: /home/user/devilbox/data/www/project-1/.devilbox/apache22.yml
|
||||||
|
:name: apache22.yml
|
||||||
|
:emphasize-lines: 3,4
|
||||||
|
|
||||||
|
vhost: |
|
||||||
|
<VirtualHost __DEFAULT_VHOST__:__PORT__>
|
||||||
|
ServerName __VHOST_NAME__
|
||||||
|
ServerName www.__VHOST_NAME__
|
||||||
|
|
||||||
|
CustomLog "__ACCESS_LOG__" combined
|
||||||
|
ErrorLog "__ERROR_LOG__"
|
||||||
|
|
||||||
|
__VHOST_DOCROOT__
|
||||||
|
__VHOST_RPROXY__
|
||||||
|
__PHP_FPM__
|
||||||
|
__ALIASES__
|
||||||
|
__DENIES__
|
||||||
|
__SERVER_STATUS__
|
||||||
|
# Custom directives
|
||||||
|
__CUSTOM__
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
Step 3: Apply new changes
|
||||||
|
"""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The **last step** is to actually to apply those changes. This is equal for all web servers.
|
||||||
|
Go to :ref:`tutorial_adding_sub_domains_apply_changes` and follow the steps.
|
||||||
|
|
||||||
|
Afterwards you can go and visit http://www.my-project-1.loc and you should see the same page as if you
|
||||||
|
visit http://my-project-1.loc
|
||||||
|
|
||||||
|
|
||||||
|
Adding catch-all sub domain
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Let's also make this project available under any sub domain.
|
||||||
|
|
||||||
|
Step 1: Add DNS entry
|
||||||
|
"""""""""""""""""""""
|
||||||
|
|
||||||
|
The first step would be to add DNS entries for all sub domains you require.
|
||||||
|
See here how to do that for Linux, MacOS or Windows:
|
||||||
|
:ref:`getting_started_create_your_first_project_dns_entry`
|
||||||
|
|
||||||
|
This however is not really convenient. If you have basically infinite sub domains (via catch-all),
|
||||||
|
you should consider using Auto-DNS instead: :ref:`tutorial_enable_auto_dns`.
|
||||||
|
|
||||||
|
|
||||||
|
Step 2: Adjust apache22.yml
|
||||||
|
"""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
Next you will have to adjust the Apache 2.2 vhost configuration template. The current default
|
||||||
|
template looks similar to the one shown below (**Note:** Only the ``vhost:`` sub section is shown
|
||||||
|
here).
|
||||||
|
|
||||||
|
.. code-block:: yml
|
||||||
|
:caption: /home/user/devilbox/data/www/project-1/.devilbox/apache22.yml
|
||||||
|
:name: apache22.yml
|
||||||
|
:emphasize-lines: 3
|
||||||
|
|
||||||
|
vhost: |
|
||||||
|
<VirtualHost __DEFAULT_VHOST__:__PORT__>
|
||||||
|
ServerName __VHOST_NAME__
|
||||||
|
|
||||||
|
CustomLog "__ACCESS_LOG__" combined
|
||||||
|
ErrorLog "__ERROR_LOG__"
|
||||||
|
|
||||||
|
__VHOST_DOCROOT__
|
||||||
|
__VHOST_RPROXY__
|
||||||
|
__PHP_FPM__
|
||||||
|
__ALIASES__
|
||||||
|
__DENIES__
|
||||||
|
__SERVER_STATUS__
|
||||||
|
# Custom directives
|
||||||
|
__CUSTOM__
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
All you will have to do, is to add another ``ServerName`` directive which does catch-all:
|
||||||
|
|
||||||
|
.. code-block:: yml
|
||||||
|
:caption: /home/user/devilbox/data/www/project-1/.devilbox/apache22.yml
|
||||||
|
:name: apache22.yml
|
||||||
|
:emphasize-lines: 3,4
|
||||||
|
|
||||||
|
vhost: |
|
||||||
|
<VirtualHost __DEFAULT_VHOST__:__PORT__>
|
||||||
|
ServerName __VHOST_NAME__
|
||||||
|
ServerName *.__VHOST_NAME__
|
||||||
|
|
||||||
|
CustomLog "__ACCESS_LOG__" combined
|
||||||
|
ErrorLog "__ERROR_LOG__"
|
||||||
|
|
||||||
|
__VHOST_DOCROOT__
|
||||||
|
__VHOST_RPROXY__
|
||||||
|
__PHP_FPM__
|
||||||
|
__ALIASES__
|
||||||
|
__DENIES__
|
||||||
|
__SERVER_STATUS__
|
||||||
|
# Custom directives
|
||||||
|
__CUSTOM__
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
Step 3: Apply new changes
|
||||||
|
"""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The **last step** is to actually to apply those changes. This is equal for all web servers.
|
||||||
|
Go to :ref:`tutorial_adding_sub_domains_apply_changes` and follow the steps.
|
||||||
|
|
||||||
|
|
||||||
|
Apache 2.4
|
||||||
|
----------
|
||||||
|
|
||||||
|
Nginx
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
.. _tutorial_adding_sub_domains_apply_changes:
|
||||||
|
|
||||||
|
Apply changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
After having edited your vhost-gen template files, you still need to apply these changes.
|
||||||
|
This can be achieved in two ways:
|
||||||
|
|
||||||
|
1. Restart the Devilbox
|
||||||
|
2. Rename your project directory back and forth
|
||||||
|
|
||||||
|
Let's cover the second step
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Navigate to the data directory
|
||||||
|
host> /home/user/devilbox/data/www
|
||||||
|
|
||||||
|
# Rename your project to something else
|
||||||
|
host> mv project-1 project-1.tmp
|
||||||
|
|
||||||
|
# Rename your project to its original name
|
||||||
|
host> mv project-1.tmp project-1
|
||||||
|
|
||||||
|
If you want to understand what is going on right now, check the docker logs for the web server.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Navigate to the devilbox directory
|
||||||
|
host> /home/user/devilbox
|
||||||
|
|
||||||
|
# Check docker logs
|
||||||
|
host> docker-compose logs httpd
|
||||||
|
|
||||||
|
httpd_1 | vhostgen: [2018-03-18 11:46:52] Adding: project-1.tmp.loc
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] ADD: succeeded: /shared/httpd/project-1.tmp
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] DEL: succeeded: /shared/httpd/project-1
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] TRIGGER succeeded: /usr/local/apache2/bin/httpd -k restart
|
||||||
|
|
||||||
|
httpd_1 | vhostgen: [2018-03-18 11:46:52] Adding: project-1loc
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] ADD: succeeded: /shared/httpd/project-1
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] DEL: succeeded: /shared/httpd/project-1.tmp
|
||||||
|
httpd_1 | watcherd: [2018-03-18 11:46:52] [OK] TRIGGER succeeded: /usr/local/apache2/bin/httpd -k restart
|
||||||
|
|
||||||
|
**What happened?**
|
||||||
|
|
||||||
|
The directory changes have been noticed and a new virtual host has been created. This time however
|
||||||
|
your new vhost-gen template has been read and the changes have applied.
|
||||||
|
|
||||||
|
|
||||||
|
Checklist
|
||||||
|
---------
|
||||||
|
|
||||||
|
1. Template files are copied from ``templates/vhost-gen/*`` to your project template dir (as
|
||||||
|
specified in ``.env`` via ``HTTPD_TEMPLATE_DIR``)
|
||||||
|
2. Ensure the vhost-gen yaml files are valid (No tab characters)
|
||||||
|
3. When templates are edited, the Devilbox is either restarted or the project directory is renamed
|
||||||
|
to something else and then renamed back to its original name
|
7
docs/tutorials/enable-auto-dns.rst
Normal file
7
docs/tutorials/enable-auto-dns.rst
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.. _tutorial_enable_auto_dns:
|
||||||
|
|
||||||
|
***************
|
||||||
|
Enable Auto-DNS
|
||||||
|
***************
|
||||||
|
|
||||||
|
asdasd
|
8
docs/tutorials/work-inside-the-container.rst
Normal file
8
docs/tutorials/work-inside-the-container.rst
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.. _tutorial_work_inside_the_php_container:
|
||||||
|
|
||||||
|
*************************
|
||||||
|
Work inside the container
|
||||||
|
*************************
|
||||||
|
|
||||||
|
|
||||||
|
asdasda
|
Loading…
x
Reference in New Issue
Block a user