|
@@ -1,60 +1,52 @@
|
|
#!/bin/bash
|
|
#!/bin/bash
|
|
|
|
|
|
-set -eux
|
|
|
|
|
|
+set -eu
|
|
|
|
|
|
readonly WP="/app/code/wp --allow-root"
|
|
readonly WP="/app/code/wp --allow-root"
|
|
readonly admin_password=$(pwgen -1y 16)
|
|
readonly admin_password=$(pwgen -1y 16)
|
|
readonly admin_email=${MAIL_SMTP_USERNAME}@${MAIL_DOMAIN}
|
|
readonly admin_email=${MAIL_SMTP_USERNAME}@${MAIL_DOMAIN}
|
|
echo "Admin password is ${admin_password} and email is ${admin_email}"
|
|
echo "Admin password is ${admin_password} and email is ${admin_email}"
|
|
|
|
|
|
|
|
+# Settings to be updated on every run. Regenerating salts means users have to relogin
|
|
|
|
+sed -e "s/##MYSQL_DATABASE/${MYSQL_DATABASE}/" \
|
|
|
|
+ -e "s/##MYSQL_USERNAME/${MYSQL_USERNAME}/" \
|
|
|
|
+ -e "s/##MYSQL_PASSWORD/${MYSQL_PASSWORD}/" \
|
|
|
|
+ -e "s/##MYSQL_HOST/${MYSQL_HOST}:${MYSQL_PORT}/" \
|
|
|
|
+ -e "s,##APP_ORIGIN,${APP_ORIGIN}," \
|
|
|
|
+ -e "s/##AUTH_KEY/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##SECURE_AUTH_KEY/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##LOGGED_IN_KEY/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##NONCE_KEY/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##AUTH_SALT/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##SECURE_AUTH_SALT/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##LOGGED_IN_SALT/$(pwgen -1cns 64)/" \
|
|
|
|
+ -e "s/##NONCE_SALT/$(pwgen -1cns 64)/" \
|
|
|
|
+ /app/code/wp-config.php.template > /run/wordpress/wp-config.php # sed -i seems to destroy symlink
|
|
|
|
+
|
|
if [[ -z "$(ls -A /app/data)" ]]; then
|
|
if [[ -z "$(ls -A /app/data)" ]]; then
|
|
echo "Copying wp-content files on first run"
|
|
echo "Copying wp-content files on first run"
|
|
mkdir -p /app/data/wp-content/mu-plugins
|
|
mkdir -p /app/data/wp-content/mu-plugins
|
|
cp -r /app/code/wp-content-vanilla/* /app/data/wp-content/
|
|
cp -r /app/code/wp-content-vanilla/* /app/data/wp-content/
|
|
|
|
|
|
- # this also generates the salt in wp-config.php which must be backed up
|
|
|
|
- $WP core config --dbname="${MYSQL_DATABASE}" --dbuser="${MYSQL_USERNAME}" --dbpass="${MYSQL_PASSWORD}" --dbhost="${MYSQL_HOST}" --extra-php <<EOF
|
|
|
|
- // prevent user from changing the Settings->General, WordPress and Blog address values.
|
|
|
|
- define('WP_HOME', 'https://$(hostname -f)');
|
|
|
|
- define('WP_SITEURL', 'https://$(hostname -f)');
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- http://cmanios.wordpress.com/2014/04/12/nginx-https-reverse-proxy-to-wordpress-with-apache-http-and-different-port/
|
|
|
|
- http://wordpress.org/support/topic/compatibility-with-wordpress-behind-a-reverse-proxy
|
|
|
|
- https://wordpress.org/support/topic/wp_home-and-wp_siteurl
|
|
|
|
- */
|
|
|
|
- // If WordPress is behind reverse proxy which proxies https to http
|
|
|
|
- if (!empty(\$_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
|
|
- \$_SERVER['HTTP_HOST'] = \$_SERVER['HTTP_X_FORWARDED_HOST'];
|
|
|
|
-
|
|
|
|
- if (\$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
|
|
|
|
- \$_SERVER['HTTPS']='on';
|
|
|
|
- }
|
|
|
|
-EOF
|
|
|
|
-
|
|
|
|
- $WP --url="https://$(hostname -f)" core install \
|
|
|
|
- --url="https://$(hostname -f)" \
|
|
|
|
|
|
+ # create db tables
|
|
|
|
+ $WP --url="${APP_ORIGIN}" core install \
|
|
|
|
+ --url="${APP_ORIGIN}" \
|
|
--title="My blog" \
|
|
--title="My blog" \
|
|
--admin_user=admin \
|
|
--admin_user=admin \
|
|
--admin_password="${admin_password}" \
|
|
--admin_password="${admin_password}" \
|
|
--admin_email="${admin_email}"
|
|
--admin_email="${admin_email}"
|
|
|
|
|
|
|
|
+ # install and backup the plugins
|
|
$WP plugin install --activate --force /app/code/disable-wordpress-updates.zip
|
|
$WP plugin install --activate --force /app/code/disable-wordpress-updates.zip
|
|
mv /app/data/wp-content/plugins/disable-wordpress-updates /app/data/wp-content/mu-plugins/
|
|
mv /app/data/wp-content/plugins/disable-wordpress-updates /app/data/wp-content/mu-plugins/
|
|
|
|
|
|
$WP plugin install --activate --force /app/code/wp-mail-smtp.zip
|
|
$WP plugin install --activate --force /app/code/wp-mail-smtp.zip
|
|
mv /app/data/wp-content/plugins/wp-mail-smtp /app/data/wp-content/mu-plugins/
|
|
mv /app/data/wp-content/plugins/wp-mail-smtp /app/data/wp-content/mu-plugins/
|
|
|
|
+else
|
|
|
|
+ # Update wordpress
|
|
|
|
+ $WP core update-db
|
|
fi
|
|
fi
|
|
|
|
|
|
-# Settings to be updated on every run
|
|
|
|
-sed -e "s/define('DB_NAME',.*/define('DB_NAME', '${MYSQL_DATABASE}');/" \
|
|
|
|
- -e "s/define('DB_USER',.*/define('DB_USER', '${MYSQL_USERNAME}');/" \
|
|
|
|
- -e "s/define('DB_PASSWORD',.*/define('DB_PASSWORD', '${MYSQL_PASSWORD}');/" \
|
|
|
|
- -e "s/define('DB_HOST',.*/define('DB_HOST', '${MYSQL_HOST}');/" \
|
|
|
|
- -e "s|define('WP_HOME',.*|define('WP_HOME', 'https://$(hostname -f)');|" \
|
|
|
|
- -e "s|define('WP_SITEURL',.*|define('WP_SITEURL', 'https://$(hostname -f)');|" \
|
|
|
|
- -i /run/wordpress/wp-config.php # sed -i seems to destroy symlink
|
|
|
|
-
|
|
|
|
# reset the admin password
|
|
# reset the admin password
|
|
$WP user update $($WP user get admin --field=ID) --user_pass="${admin_password}"
|
|
$WP user update $($WP user get admin --field=ID) --user_pass="${admin_password}"
|
|
$WP user update $($WP user get admin --field=ID) --user_email="${admin_email}"
|
|
$WP user update $($WP user get admin --field=ID) --user_email="${admin_email}"
|