Project

General

Profile

Paste
Download (4.18 KB) Statistics
| Branch: | Revision:

root / bin / d7-create-site.sh @ 1062c26c

1
#!/bin/sh
2

    
3
. /home/assos/bin/scripts-config.sh
4
. /home/assos/bin/scripts-config-site.sh "$1"
5
. /home/assos/bin/scripts-utils.sh
6

    
7
help="# ARGS: site_name site_mail admin_password [--no-init-database]"
8

    
9
check_arguments "$#" 3 "${help}"
10

    
11
# Check if site already exists.
12
if site_exists "${d7_site_name}" ; then
13
    exit 1
14
fi
15

    
16
init_db=1
17
if [ "$4" = "--no-init-database" ] ; then
18
    init_db=0
19
fi
20

    
21
######## Exceptions
22
echo "Checking if work tree is clean (may take a while)"
23
if ! work_tree_clean ; then
24
    echo "Your work tree is not clean. Solve this before $0 can continue."
25
    exit 2
26
fi
27

    
28
# "-" is forbidden because it provokes database error.
29
if [ $(echo "$1" | grep -) ] ; then
30
    echo '"-" is forbidden in the site name'
31
    exit 1
32
fi
33

    
34
# Site name length must be lower or equal to 16 due to database limitations.
35
if [ $(echo "$1" | wc -c) -gt 16 ] ; then
36
    echo "site name can't have more than 16 characters"
37
    exit 1
38
fi
39

    
40
# drush site-install needs the translation file
41
if [ ! -f "${translations_fr}" ] ; then
42
    echo "The translation file ${translations_fr} does not exist"
43
    exit 1
44
fi
45

    
46
###### Initialisation
47
cd "${d7_dir}"
48
site_password=$(generate_password)
49
site_line_sites_php="\$sites['assos.centrale-marseille.fr.$d7_site_name'] = 'assos.centrale-marseille.fr.$d7_site_name';"
50
site_line_aliases_drushrc_php="\$aliases['$d7_site_name'] = array('uri' => 'assos.centrale-marseille.fr/$d7_site_name', 'root' => '/home/assos/drupal7/', );"
51
# NB: site_name is initialised in script-config-site.sh
52
site_mail="$2"
53
admin_password="$3"
54

    
55

    
56
###### Main
57
mkdir "${d7_site_dir}"
58
dir_site_name="assos.centrale-marseille.fr.${d7_site_name}"
59

    
60
# Backup requirements
61
mkdir "${d7_dir_individual_auto_backup}/${dir_site_name}"
62
mkdir "${d7_dir_individual_manual_backup}/${dir_site_name}"
63
current_date=$(date "+%Y-%m-%d-%Hh%Mm%Ss")
64

    
65
# NB : ls sort by considering the 1st characters
66
touch "${d7_dir_individual_auto_backup}/${dir_site_name}/${current_date}.${dir_site_name}.sql"
67
touch "${d7_dir_individual_auto_backup}/${dir_site_name}/${current_date}.${dir_site_name}.sql2"
68
touch "${d7_dir_individual_auto_backup}/${dir_site_name}/${current_date}.${dir_site_name}.sql3"
69
touch "${d7_dir_individual_auto_backup}/${dir_site_name}/${current_date}.${dir_site_name}.sql4"
70

    
71
# Create and grant privileges on database
72
mysql --defaults-extra-file="${myassos_cnf}" -e "CREATE DATABASE ${d7_site_name}"
73
mysql --defaults-extra-file="${myassos_cnf}" -e "GRANT ALL PRIVILEGES ON ${d7_site_name}.* TO '${d7_site_name}'@'%' IDENTIFIED BY '${site_password}'"
74

    
75
# Create settings.local.php
76
cp "${d7_settings}" "${d7_site_settings}"
77
generate_settings_local "${d7_site_name}" "${site_password}" "${d7_settings_local_template}" "${d7_site_settings_local}"
78

    
79
# Install the site
80
drush site-install -y standard --account-mail="${site_mail}" --account-name="admin" --account-pass="${admin_password}" --locale=fr --site-mail="${site_mail}" --site-name="${d7_site_name}" --sites-subdir="${dir_site_name}"
81

    
82
# Create symbolic link
83
cd "${d7_dir}"
84
ln -s . "${d7_site_name}"
85
git add "${d7_site_name}"
86

    
87
# Update sites.php
88
chmod +w "${sites_php}"
89
echo "${site_line_sites_php}" >> "${sites_php}"
90
chmod 400 "${sites_php}"
91

    
92
### Update aliases.drushrc.php
93
# For site
94
echo "${site_line_aliases_drushrc_php}" >> "${aliases_drushrc_php}"
95
# @d7
96
sed s/"'site-list' => array("/"'site-list' => array(%'assos.centrale-marseille.fr\/$d7_site_name',"/ < "${aliases_drushrc_php}" | tr '%' '\n    ' > "${dir_tmp}/aliases.tmp"
97
mv "${dir_tmp}/aliases.tmp" "${aliases_drushrc_php}"
98

    
99
### Update nginx_sites_map
100
d7-generate-nginx-map.sh
101
# Reload nginx
102
sudo service nginx restart
103

    
104
commit "Creation of site: ${d7_site_name}"
105

    
106
# Next Instructions
107
if [ "${init_db}" -eq 0 ] ; then
108
    exit 0
109
fi
110

    
111
# Init variables
112
d7-reset-variables.sh "${d7_site_name}"
113

    
114
# Permissions
115
chmod -R 755 "${d7_site_dir}"
116
chmod 400 "${d7_site_settings}"
117

    
118
# Last instructions
119
echo "Last instructions:"
120
echo "- Advice the webmaster to close account creation on the website"
121
echo "- Give the webmaster a link to the club Drupal's tutorials "
122
echo "- Create a node of type \"Site\" on default"
123
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
124
echo -e "- If line to add to sites.php differs from the line below, please correct it\n\t$site_line_sites_php"