This repository has been archived by the owner on Aug 30, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeploy.py
121 lines (92 loc) · 2.87 KB
/
deploy.py
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
from fabric.api import cd, env, task
from fabric.contrib.files import upload_template
from fabric.operations import reboot, run, sudo
MYSQL_CREATE_DB = """
CREATE DATABASE %(db_name)s DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
"""
MYSQL_CREATE_USER = """
CREATE USER '%(wordpress_user)s'@'localhost' IDENTIFIED BY '%(wordpress_password)s';
"""
MYSQL_GRANT_PRIVILEGES = """
GRANT ALL PRIVILEGES ON *.* TO '%(wordpress_user)s'@'localhost' IDENTIFIED BY '%(wordpress_password)s';
FLUSH PRIVILEGES;
"""
@task
def update_upgrade():
sudo('apt-get update')
sudo('apt-get upgrade')
@task
def install_os_dependencies():
packages = [
'build-essential',
'mysql-server',
'libmysqlclient-dev',
'apache2',
'php5-mysql',
'libapache2-mod-php5',
'php5-mcrypt',
'php5-gd',
'php5-curl'
]
sudo('apt-get update')
sudo('apt-get -y upgrade')
reboot(120)
sudo('apt-get -y install %s' % ' '.join(packages))
@task
def setup_swapfile():
sudo('fallocate -l 1G /swapfile')
sudo('chmod 600 /swapfile')
sudo('mkswap /swapfile')
enable_swap()
@task
def enable_swap():
sudo('swapon /swapfile')
@task
def setup_mysql():
sudo('mysql_install_db')
sudo('/usr/bin/mysql_secure_installation')
mysql_restart()
@task
def mysql_restart():
sudo('service mysql restart')
@task
def mysql_grant_privileges():
sql = MYSQL_GRANT_PRIVILEGES % dict(wordpress_user=env.wordpress_user, wordpress_password=env.wordpress_password)
mysql_execute(sql)
mysql_restart()
@task
def create_mysql_user():
sql = MYSQL_CREATE_USER % dict(wordpress_user=env.wordpress_user, wordpress_password=env.wordpress_password)
mysql_execute(sql)
mysql_restart()
@task
def create_mysql_database():
run('mysqladmin -u %s -p%s create %s' % (env.mysql_root_user, env.mysql_root_password, env.mysql_db_name))
@task
def mysql_execute(sql):
sql = sql.replace('"', r'\"')
return run('echo "%s" | mysql --user="%s" --password="%s"' % (sql, env.mysql_root_user, env.mysql_root_password))
@task
def wordpress_setup():
run('wget https://wordpress.org/latest.tar.gz')
run('tar xvf latest.tar.gz')
# Ideally edit the file remotely
# with cd('wordpress'):
# run('cp wp-config-sample.php wp-config.php')
# run('nano wp_config.php')
upload_template('wp-config.php', '~/wordpress/', backup=False, use_sudo=True)
sudo('rsync -avP ~/wordpress/ /var/www/html')
sudo('rm /var/www/html/index.html')
sudo('mkdir /var/www/html/wp-content/uploads')
sudo('chown -R www-data:www-data /var/www/html/')
sudo('chmod -R 744 /var/www/html')
@task
def first_time_setup():
update_upgrade()
install_os_dependencies()
setup_swapfile()
setup_mysql()
create_mysql_user()
create_mysql_database()
mysql_grant_privileges()
wordpress_setup()