forked from BanzaiMan/drupal-quickstart
-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy
executable file
·134 lines (116 loc) · 3.98 KB
/
deploy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
# This deploy hook gets executed after dependencies are resolved and the
# build hook has been run but before the application has been started back
# up again. This script gets executed directly, so it could be python, php,
# ruby, etc.
set -e
source $OPENSHIFT_CARTRIDGE_SDK_BASH
DRUSH=${OPENSHIFT_REPO_DIR}vendor/bin/drush
DRUPAL_SITE_DIR=${OPENSHIFT_DATA_DIR}sites
DRUPAL_PRIVATE_DIR=${OPENSHIFT_DATA_DIR}private
DRUPAL_SETTINGS=${DRUPAL_SITE_DIR}/default/settings.php
# NOTE: possibly this won't work when it's a scaled build
if [ ! -d "${DRUPAL_SITE_DIR}/default" ]
then
echo "No sites directory has been created, Drupal cannot be deployed"
exit 9
fi
#
# Create a new Drupal site. You can delete your ${OPENSHIFT_DATA_DIR}sites
# folder to run this step again.
#
if [ ! -f "${DRUPAL_SITE_DIR}/default/settings.php" ]
then
# Set the initial password
admin_pwd=$(generate_password)
#
# Automatic installation only works with mysql.
#
if [ -z "$OPENSHIFT_MYSQL_DB_HOST" ]
then
echo 1>&2
echo "Could not find mysql database. Please run:" 1>&2
echo "rhc cartridge add mysql -a $OPENSHIFT_APP_NAME" 1>&2
echo "then make a sample commit (add whitespace somewhere) and re-push" 1>&2
echo 1>&2
fi
if [ -z "$OPENSHIFT_MYSQL_DB_HOST" ]
then
exit 5
fi
if [ -z "$OPENSHIFT_MYSQL_DB_PORT" ]
then
exit 6
fi
mkdir -p ${DRUPAL_SITE_DIR}/default
mkdir -p ${DRUPAL_PRIVATE_DIR}
pushd ${OPENSHIFT_REPO_DIR}php
echo
echo "Creating a new Drupal site at ${DRUPAL_SITE_DIR}/default"
echo
if ! $DRUSH site-install standard --site-name=${OPENSHIFT_APP_NAME} --account-pass=$admin_pwd --db-url=mysql://$OPENSHIFT_MYSQL_DB_USERNAME:$OPENSHIFT_MYSQL_DB_PASSWORD@$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/$OPENSHIFT_APP_NAME --yes
then
echo "Unable to configure your Drupal installation"
echo
exit 10
fi
#
# Tweak settings.php to use the OpenShift environment variables instead of
# the values passed to Drush.
#
chmod u+w ${DRUPAL_SETTINGS} ${DRUPAL_SITE_DIR}/default
cat ${DRUPAL_SETTINGS} | ruby -e "puts STDIN.read.gsub(/\\\$databases\s*=\s*array.*?\)\;/m, '# Replaced by OpenShift')" > ${OPENSHIFT_TMP_DIR}/settings.php
cat << "END" >> ${OPENSHIFT_TMP_DIR}/settings.php
/**
* For maximum portability, use the OpenShift environment variables.
*/
// When run from Drush, only $_ENV is available. Might be a bug
if (array_key_exists('OPENSHIFT_APP_NAME', $_SERVER)) {
$src = $_SERVER;
} else {
$src = $_ENV;
}
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => $src['OPENSHIFT_APP_NAME'],
'username' => $src['OPENSHIFT_MYSQL_DB_USERNAME'],
'password' => $src['OPENSHIFT_MYSQL_DB_PASSWORD'],
'host' => $src['OPENSHIFT_MYSQL_DB_HOST'],
'port' => $src['OPENSHIFT_MYSQL_DB_PORT'],
'driver' => 'mysql',
'prefix' => '',
),
),
);
END
cat ${OPENSHIFT_TMP_DIR}/settings.php > ${DRUPAL_SETTINGS}
#
# Set a base_url with correct scheme, based on the current request. This is
# used for internal links to stylesheets and javascript.
#
echo "\$scheme = !empty(\$src['HTTPS']) ? 'https' : 'http';" >> ${DRUPAL_SETTINGS}
echo "\$base_url = \$scheme . '://' . \$src['HTTP_HOST'];" >> ${DRUPAL_SETTINGS}
#
# Use the temporary directories that OpenShift provides, and set
# the private path to be inside the data dir
#
echo "\$conf['file_private_path'] = \$src['OPENSHIFT_DATA_DIR'] . 'private/';" >> ${DRUPAL_SETTINGS}
echo "\$conf['file_temporary_path'] = \$src['OPENSHIFT_TMP_DIR'] . 'drupal/';" >> ${DRUPAL_SETTINGS}
popd
echo
echo "Drupal is now configured"
echo
client_result ""
client_result "Drupal installed successfully."
client_result ""
client_result " Drupal admin login: admin"
client_result " Drupal admin password: $admin_pwd"
client_result ""
client_result "Don't forget to change your drupal admin password!"
else
echo "Drupal is already configured. Delete settings.php to rerun setup"
fi
echo