diff --git a/README.md b/README.md index 69fd5a9..af34121 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ ansible-playbook -i inventory/target.ini setup_server.yml After the playbook has run successfully, you should have a fully functional WordPress website running on your Ubuntu machine with Nginx, PHP, MySQL, and Redis. +Please make sure to install Redis plugin which already has a pre-set configuration + ## Variables The following variables can be customized in the `vars/external.yml` file: diff --git a/roles/configure-wordpress/files/wp-config.php.j2 b/roles/configure-wordpress/files/wp-config.php.j2 new file mode 100644 index 0000000..ab35472 --- /dev/null +++ b/roles/configure-wordpress/files/wp-config.php.j2 @@ -0,0 +1,99 @@ + +/** +* The base configuration for WordPress +* +* The wp-config.php creation script uses this file during the +* installation. You don't have to use the web site, you can +* copy this file to "wp-config.php" and fill in the values. +* +* This file contains the following configurations: +* +* * MySQL settings +* * Secret keys +* * Database table prefix +* * ABSPATH +* +* @link https://codex.wordpress.org/Editing_wp-config.php +* +* @package WordPress +*/ + +// ** MySQL settings - You can get this info from your web host ** // +/** The name of the database for WordPress */ +define( 'DB_NAME', '{{ mysql_db }}' ); +/** MySQL database username */ +define( 'DB_USER', '{{ mysql_user }}' ); +/** MySQL database password */ +define( 'DB_PASSWORD', '{{ mysql_user_pass }}' ); +/** MySQL hostname */ +define( 'DB_HOST', '127.0.0.1:3306' ); +/** Database Charset to use in creating database tables. */ +define( 'DB_CHARSET', 'utf8' ); +/** The Database Collate type. Don't change this if in doubt. */ +define( 'DB_COLLATE', '' ); + +define( 'WP_REDIS_HOST', '127.0.0.1' ); +define( 'WP_REDIS_PORT', 6379 ); +define( 'WP_REDIS_PASSWORD', '{{ redis_pass }}' ); +define( 'WP_REDIS_TIMEOUT', 1 ); +define( 'WP_REDIS_READ_TIMEOUT', 1 ); + +// change the database for each site to avoid cache collisions +// values 0-15 are valid in a default redis config. +define( 'WP_REDIS_DATABASE', 1 ); + +/** Filesystem access **/ +define('FS_METHOD', 'direct'); + +/**#@+ + +* Authentication Unique Keys and Salts. +* +* Change these to different unique phrases! +* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} +* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. +* +* @since 2.6.0 +*/ +define( 'AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'SECURE_AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'LOGGED_IN_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'NONCE_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'SECURE_AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'LOGGED_IN_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); +define( 'NONCE_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); + +/**#@-*/ + +/** +* WordPress Database Table prefix. +* +* You can have multiple installations in one database if you give each +* a unique prefix. Only numbers, letters, and underscores please! +*/ +$table_prefix = 'wp_'; + +/** +* For developers: WordPress debugging mode. +* +* Change this to true to enable the display of notices during development. +* It is strongly recommended that plugin and theme developers use WP_DEBUG +* in their development environments. +* +* For information on other constants that can be used for debugging, +* visit the Codex. +* +* @link https://codex.wordpress.org/Debugging_in_WordPress +*/ +define( 'WP_DEBUG', false ); + +/* That's all, stop editing! Happy publishing. */ + +/** Absolute path to the WordPress directory. */ +if ( ! defined( 'ABSPATH' ) ) { +define( 'ABSPATH', dirname( __FILE__ ) . '/' ); +} + +/** Sets up WordPress vars and included files. */ +require_once( ABSPATH . 'wp-settings.php' ); \ No newline at end of file diff --git a/roles/configure-wordpress/tasks/main.yml b/roles/configure-wordpress/tasks/main.yml new file mode 100644 index 0000000..aafc535 --- /dev/null +++ b/roles/configure-wordpress/tasks/main.yml @@ -0,0 +1,33 @@ +--- +- name: PHP ini setup + copy: + src: files/php{{ php_version }}.ini + dest: /etc/php/{{ php_version }}/fpm/php.ini + +- name: Increase PHP memory limit + become: true + lineinfile: + dest: /etc/php/{{ php_version }}/fpm/php.ini + regexp: "memory_limit =" + line: "memory_limit = 512M" + +- name: Increase PHP upload time + become: true + lineinfile: + dest: /etc/php/{{ php_version }}/fpm/php.ini + regexp: "max_input_time =" + line: "max_input_time = 120" + +- name: Increase PHP post size + become: true + lineinfile: + dest: /etc/php/{{ php_version }}/fpm/php.ini + regexp: "post_max_size =" + line: "post_max_size = 20M" + +- name: Start PHP + systemd: + name: "php{{ php_version }}-fpm" + daemon_reload: yes + enabled: yes + state: started diff --git a/setup_server.yml b/setup_server.yml index cd4045e..4f2e6ac 100644 --- a/setup_server.yml +++ b/setup_server.yml @@ -14,3 +14,4 @@ - role: install-wordpress - role: install-docker - role: setup-containers + - role: configure-wordpress