✨: migrate wordpress to app dir #8
@@ -5,6 +5,7 @@ web_hostname:
|
||||
- host: nintendojo.fr
|
||||
acme_unmanaged: true
|
||||
- host: www.nintendojo.fr
|
||||
type: wordpress
|
||||
- host: forum.nintendojo.fr
|
||||
type: phpbb
|
||||
- host: nintendojofr.com
|
||||
|
@@ -17,7 +17,7 @@ server {
|
||||
ssl_certificate /etc/x509/www.nintendojo.fr/fullchain.cer;
|
||||
ssl_certificate_key /etc/x509/www.nintendojo.fr/www.nintendojo.fr.key;
|
||||
|
||||
root /srv/http/www.nintendojo.fr/;
|
||||
root /var/www/www.nintendojo.fr/;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
client_max_body_size 2G;
|
||||
|
@@ -2,3 +2,5 @@
|
||||
|
||||
- name: Init DB
|
||||
ansible.builtin.include_tasks: db.yml
|
||||
- name: Install wordpress
|
||||
ansible.builtin.include_tasks: wordpress.yml
|
||||
|
104
roles/wordpress/tasks/wordpress.yml
Normal file
104
roles/wordpress/tasks/wordpress.yml
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
|
||||
## Remove the previous app & install the new version
|
||||
- name: Remove wordpress previous version
|
||||
ansible.builtin.file:
|
||||
state: absent
|
||||
dest: "{{ wordpress_app_home }}"
|
||||
|
||||
- name: Create app home
|
||||
ansible.builtin.file:
|
||||
state: directory
|
||||
dest: "{{ wordpress_app_home }}"
|
||||
owner: root
|
||||
group: www-data
|
||||
mode: "0o750"
|
||||
|
||||
- name: Install wordpress application
|
||||
ansible.builtin.unarchive:
|
||||
remote_src: true
|
||||
src: "{{ wordpress_url }}"
|
||||
dest: "{{ wordpress_app_home }}"
|
||||
owner: root
|
||||
group: www-data
|
||||
mode: "a-rwx,u+rwX,g+rX"
|
||||
extra_opts: ['--strip-components=1']
|
||||
exclude: "{{ wordpress_userdata_app_dirs | map('regex_replace', '^', 'wordpress/') }}"
|
||||
|
||||
## Ensure the data dirs exist, populate them if not
|
||||
- name: Create data home
|
||||
ansible.builtin.file:
|
||||
state: directory
|
||||
path: "{{ wordpress_data_home }}"
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: "a-rwx,u+rwX,g+rX"
|
||||
|
||||
# If the first data dir exists, other should exist too
|
||||
- name: Get data dir
|
||||
ansible.builtin.stat:
|
||||
path: "{{ wordpress_data_home }}/{{ wordpress_userdata_app_dirs[0] }}"
|
||||
register: _wordpress_userdata_dir_stat
|
||||
|
||||
- name: Install wordpress data dir
|
||||
when: not _wordpress_userdata_dir_stat.stat.exists
|
||||
block:
|
||||
- name: Unarchive wp-content
|
||||
ansible.builtin.unarchive:
|
||||
remote_src: true
|
||||
src: "{{ wordpress_url }}"
|
||||
dest: "{{ wordpress_data_home }}"
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: "a-rwx,u+rwX,g+rX"
|
||||
extra_opts: ['--strip-components=1']
|
||||
include: "{{ wordpress_userdata_app_dirs | map('regex_replace', '^', 'wordpress/') | first }}"
|
||||
## no-wp doesn’t exist by default, creating it
|
||||
- name: Create no-wp
|
||||
ansible.builtin.file:
|
||||
state: directory
|
||||
dest: "{{ wordpress_data_home }}/no-wp"
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: "0o750"
|
||||
|
||||
- name: Link wordpress userdata dirs
|
||||
ansible.builtin.file:
|
||||
state: link
|
||||
src: "{{ wordpress_data_home }}/{{ item }}"
|
||||
dest: "{{ wordpress_app_home }}/{{ item }}"
|
||||
loop: "{{ wordpress_userdata_app_dirs }}"
|
||||
|
||||
# Put config file
|
||||
- name: Get secret-key salt
|
||||
ansible.builtin.uri:
|
||||
url: "https://api.wordpress.org/secret-key/1.1/salt/"
|
||||
return_content: true
|
||||
register: _wordpress_secret_salt
|
||||
|
||||
- name: Put wordpress configuration file
|
||||
ansible.builtin.template:
|
||||
src: wp-config.php.j2
|
||||
dest: "{{ wordpress_config_path }}"
|
||||
owner: root
|
||||
group: www-data
|
||||
mode: "0o640"
|
||||
vars:
|
||||
salt_block: "{{ _wordpress_secret_salt.content }}"
|
||||
|
||||
# Handle languages
|
||||
- name: Find & delete default language files inside wp-content
|
||||
ansible.builtin.command:
|
||||
cmd: "find {{ wordpress_data_home }}/wp-content/languages/ -type f -maxdepth 1 -delete"
|
||||
changed_when: true
|
||||
|
||||
- name: Reextract language files
|
||||
ansible.builtin.unarchive:
|
||||
remote_src: true
|
||||
src: "{{ wordpress_url }}"
|
||||
dest: "{{ wordpress_data_home }}"
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: "a-rwx,u+rwX,g+rX"
|
||||
extra_opts: ['--strip-components=1']
|
||||
include: "wordpress/wp-content/languages/"
|
93
roles/wordpress/templates/wp-config.php.j2
Normal file
93
roles/wordpress/templates/wp-config.php.j2
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* La configuration de base de votre installation WordPress.
|
||||
*
|
||||
* Ce fichier contient les réglages de configuration suivants : réglages MySQL,
|
||||
* préfixe de table, clefs secrètes, langue utilisée, et ABSPATH.
|
||||
* Vous pouvez en savoir plus à leur sujet en allant sur
|
||||
* {@link http://codex.wordpress.org/Editing_wp-config.php Modifier
|
||||
* wp-config.php} (en anglais). C'est votre hébergeur qui doit vous donner vos
|
||||
* codes MySQL.
|
||||
*
|
||||
* Ce fichier est utilisé par le script de création de wp-config.php pendant
|
||||
* le processus d'installation. Vous n'avez pas à utiliser le site web, vous
|
||||
* pouvez simplement renommer ce fichier en "wp-config.php" et remplir les
|
||||
* valeurs.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
|
||||
/** Nom de la base de données de WordPress. */
|
||||
define('DB_NAME', '{{ wordpress_maria_database }}');
|
||||
|
||||
/** Utilisateur de la base de données MySQL. */
|
||||
define('DB_USER', '{{ wordpress_maria_user }}');
|
||||
|
||||
/** Mot de passe de la base de données MySQL. */
|
||||
define('DB_PASSWORD', '{{ wordpress_maria_password }}');
|
||||
|
||||
/** Adresse de l'hébergement MySQL. */
|
||||
define('DB_HOST', 'localhost');
|
||||
|
||||
/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
|
||||
define('DB_CHARSET', 'utf8');
|
||||
|
||||
/** Type de collation de la base de données.
|
||||
* N'y touchez que si vous savez ce que vous faites.
|
||||
*/
|
||||
define('DB_COLLATE', '');
|
||||
|
||||
/**#@+
|
||||
* Clefs uniques d'authentification et salage.
|
||||
*
|
||||
* Remplacez les valeurs par défaut par des phrases uniques !
|
||||
* Vous pouvez générer des phrases aléatoires en utilisant
|
||||
* {@link https://api.wordpress.org/secret-key/1.1/salt/ le service de clefs secrètes de WordPress.org}.
|
||||
* Vous pouvez modifier ces phrases à n'importe quel moment, afin d'invalider tous les cookies existants.
|
||||
* Cela forcera également tous les utilisateurs à se reconnecter.
|
||||
*
|
||||
* @since 2.6.0
|
||||
*/
|
||||
{{ salt_block }}
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Préfixe de base de données pour les tables de WordPress.
|
||||
*
|
||||
* Vous pouvez installer plusieurs WordPress sur une seule base de données
|
||||
* si vous leur donnez chacune un préfixe unique.
|
||||
* N'utilisez que des chiffres, des lettres non-accentuées, et des caractères soulignés!
|
||||
*/
|
||||
$table_prefix = 'wp_';
|
||||
|
||||
/**
|
||||
* Langue de localisation de WordPress, par défaut en Anglais.
|
||||
*
|
||||
* Modifiez cette valeur pour localiser WordPress. Un fichier MO correspondant
|
||||
* au langage choisi doit être installé dans le dossier wp-content/languages.
|
||||
* Par exemple, pour mettre en place une traduction française, mettez le fichier
|
||||
* fr_FR.mo dans wp-content/languages, et réglez l'option ci-dessous à "fr_FR".
|
||||
*/
|
||||
define('WPLANG', 'fr_FR');
|
||||
|
||||
/**
|
||||
* Pour les développeurs : le mode deboguage de WordPress.
|
||||
*
|
||||
* En passant la valeur suivante à "true", vous activez l'affichage des
|
||||
* notifications d'erreurs pendant votre essais.
|
||||
* Il est fortemment recommandé que les développeurs d'extensions et
|
||||
* de thèmes se servent de WP_DEBUG dans leur environnement de
|
||||
* développement.
|
||||
*/
|
||||
define('WP_DEBUG', false);
|
||||
|
||||
/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */
|
||||
|
||||
/** Chemin absolu vers le dossier de WordPress. */
|
||||
if ( !defined('ABSPATH') )
|
||||
define('ABSPATH', dirname(__FILE__) . '/');
|
||||
|
||||
/** Réglage des variables de WordPress et de ses fichiers inclus. */
|
||||
require_once(ABSPATH . 'wp-settings.php');
|
17
roles/wordpress/vars/main.yml
Normal file
17
roles/wordpress/vars/main.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
|
||||
wordpress_version: "6.7.2"
|
||||
wordpress_url: "https://fr.wordpress.org/wordpress-{{ wordpress_version }}-fr_FR.tar.gz"
|
||||
|
||||
wordpress_access_url: "{{ web_hostname | selectattr('type', 'defined') | selectattr('type', '==', 'wordpress') | map(attribute='host') | first }}"
|
||||
|
||||
# Access path
|
||||
wordpress_app_home: "/var/www/{{ wordpress_access_url }}"
|
||||
wordpress_data_home: "/srv/www-data/{{ wordpress_access_url }}"
|
||||
|
||||
# App dirs
|
||||
wordpress_userdata_app_dirs:
|
||||
- wp-content
|
||||
- no-wp
|
||||
|
||||
wordpress_config_path: "{{ wordpress_app_home }}/wp-config.php"
|
Reference in New Issue
Block a user