Skip to content

Commit de4d5e5

Browse files
committed
Merge branch 'master' into stable
2 parents cc2d18f + 789005a commit de4d5e5

File tree

11 files changed

+174
-43
lines changed

11 files changed

+174
-43
lines changed

CHANGELOG.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v 3.0.4 - Feb 25,2015
2+
- Fixed #406, install Wp Query Monitor on wp debug option
3+
- Fixed #429, added `log` command
4+
- Fixed #442
5+
- Fixed bug in delete command for site
6+
- Small bug fixes and improvements
7+
18
v 3.0.3 - Feb 23,2015
29
- Fixed remote MySQL supports, #428, #427, thanks to @joshlyford #432
310
- Fixed ascii encoding issue #414

config/bash_completion.d/ee_auto.rc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ _ee_complete()
1111
# SETUP THE BASE LEVEL (everything after "ee")
1212
if [ $COMP_CWORD -eq 1 ]; then
1313
COMPREPLY=( $(compgen \
14-
-W "stack site debug clean secure import-slow-log" \
14+
-W "stack site debug clean secure import-slow-log log" \
1515
-- $cur) )
1616

1717

@@ -57,6 +57,12 @@ _ee_complete()
5757
-- $cur) )
5858
;;
5959

60+
"log")
61+
COMPREPLY=( $(compgen \
62+
-W "--mysql --php --nginx --all" \
63+
-- $cur) )
64+
;;
65+
6066
# EVERYTHING ELSE
6167
*)
6268
;;
@@ -147,6 +153,9 @@ _ee_complete()
147153
retlist="--nginx --php --mysql --postfix --memcache --dovecot"
148154
elif [[ ${COMP_WORDS[1]} == "debug" ]]; then
149155
retlist="--start --nginx --php --fpm --mysql -i --interactive --stop"
156+
if [[ $prev == '--mysql' ]]; then
157+
retlist="--start --nginx --php --fpm --mysql -i --interactive --stop --import-slow-log"
158+
fi
150159
fi
151160
ret="${retlist[@]/$prev}"
152161
COMPREPLY=( $(compgen \

config/plugins.d/log.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
### Example Plugin Configuration for EasyEngine
2+
3+
[log]
4+
5+
### If enabled, load a plugin named `example` either from the Python module
6+
### `ee.cli.plugins.example` or from the file path
7+
### `/var/lib/ee/plugins/example.py`
8+
enable_plugin = true

ee/cli/plugins/debug.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import configparser
1313
import glob
1414
import signal
15+
import subprocess
1516

1617

1718
def debug_plugin_hook(app):
@@ -160,7 +161,7 @@ def debug_php(self):
160161

161162
# PHP global debug stop
162163
else:
163-
if EEShellExec.cmd_exec(self, "sed -n \"/upstream php {/,/}/p\" "
164+
if EEShellExec.cmd_exec(self, " sed -n \"/upstream php {/,/}/p\" "
164165
"/etc/nginx/conf.d/upstream.conf "
165166
"| grep 9001"):
166167
Log.info(self, "Disabling PHP debug")
@@ -241,13 +242,16 @@ def debug_mysql(self):
241242
cron_time = int(self.app.pargs.interval)
242243
except Exception as e:
243244
cron_time = 5
244-
EEShellExec.cmd_exec(self, "/bin/bash -c \"crontab -l 2> "
245-
"/dev/null | {{ cat; echo -e"
246-
" \\\"#EasyEngine start MySQL slow"
247-
" log \\n*/{0} * * * * "
248-
"/usr/local/sbin/ee import-slow-log\\"
249-
"n#EasyEngine end MySQL slow log\\\";"
250-
" }} | crontab -\"".format(cron_time))
245+
246+
EEShellExec.cmd_exec(self, "/bin/bash -c \"crontab -l "
247+
"2> /dev/null | {{ cat; echo -e"
248+
" \\\"#EasyEngine start MySQL "
249+
"slow log \\n*/{0} * * * * "
250+
"/usr/local/bin/ee "
251+
"import-slow-log\\n"
252+
"#EasyEngine end MySQL slow log"
253+
"\\\"; }} | crontab -\""
254+
.format(cron_time))
251255
else:
252256
Log.info(self, "MySQL slow log is already enabled")
253257

@@ -296,7 +300,8 @@ def debug_wp(self):
296300
" {0}".format(wp_config))
297301
EEShellExec.cmd_exec(self, "cd {0}/htdocs/ && wp"
298302
" plugin --allow-root install "
299-
"developer".format(webroot))
303+
"developer query-monitor"
304+
.format(webroot))
300305
EEShellExec.cmd_exec(self, "chown -R {1}: {0}/htdocs/"
301306
"wp-content/plugins"
302307
.format(webroot,

ee/cli/plugins/log.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
"""Debug Plugin for EasyEngine"""
2+
3+
from cement.core.controller import CementBaseController, expose
4+
from cement.core import handler, hook
5+
from ee.core.logging import Log
6+
from ee.cli.plugins.site_functions import logwatch
7+
from ee.core.variables import EEVariables
8+
import os
9+
import glob
10+
11+
12+
def log_plugin_hook(app):
13+
# do something with the ``app`` object here.
14+
pass
15+
16+
17+
class EELogController(CementBaseController):
18+
class Meta:
19+
label = 'log'
20+
description = 'Show Nginx, PHP, MySQL log file'
21+
stacked_on = 'base'
22+
stacked_type = 'nested'
23+
arguments = [
24+
(['--all'],
25+
dict(help='Show All logs file', action='store_true')),
26+
(['--nginx'],
27+
dict(help='Show Nginx logs file', action='store_true')),
28+
(['--php'],
29+
dict(help='Show PHP logs file', action='store_true')),
30+
(['--mysql'],
31+
dict(help='Show MySQL logs file', action='store_true')),
32+
]
33+
34+
@expose(hide=True)
35+
def default(self):
36+
"""Default function of debug"""
37+
self.msg = []
38+
39+
if ((not self.app.pargs.nginx) and (not self.app.pargs.php)
40+
and (not self.app.pargs.mysql)):
41+
self.app.pargs.nginx = True
42+
self.app.pargs.php = True
43+
self.app.pargs.mysql = True
44+
45+
if self.app.pargs.nginx:
46+
self.msg = self.msg + ["/var/log/nginx/*error.log"]
47+
if self.app.pargs.php:
48+
open('/var/log/php5/slow.log', 'a').close()
49+
open('/var/log/php5/fpm.log', 'a').close()
50+
self.msg = self.msg + ['/var/log/php5/slow.log',
51+
'/var/log/php5/fpm.log']
52+
if self.app.pargs.mysql:
53+
# MySQL debug will not work for remote MySQL
54+
if EEVariables.ee_mysql_host is "localhost":
55+
if os.path.isfile('/var/log/mysql/mysql-slow.log'):
56+
self.msg = self.msg + ['/var/log/mysql/mysql-slow.log']
57+
else:
58+
Log.error(self, "Unable to find MySQL slow log file,"
59+
"Please generate it using commnad ee debug "
60+
"--mysql")
61+
else:
62+
Log.warn(self, "Remote MySQL found, EasyEngine is not able to"
63+
"show MySQL log file")
64+
65+
watch_list = []
66+
for w_list in self.msg:
67+
watch_list = watch_list + glob.glob(w_list)
68+
69+
logwatch(self, watch_list)
70+
71+
72+
def load(app):
73+
# register the plugin class.. this only happens if the plugin is enabled
74+
handler.register(EELogController)
75+
# register a hook (function) to run after arguments are parsed.
76+
hook.register('post_argument_parsing', log_plugin_hook)

ee/cli/plugins/site.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ def default(self):
513513
setwebrootpermissions(self, data['webroot'])
514514
if ee_auth and len(ee_auth):
515515
for msg in ee_auth:
516-
Log.info(self, Log.ENDC + msg)
516+
Log.info(self, Log.ENDC + msg, log=False)
517517

518518
if data['wp']:
519519
Log.info(self, Log.ENDC + "WordPress admin user :"
@@ -976,12 +976,12 @@ def default(self):
976976
for msg in ee_auth:
977977
Log.info(self, Log.ENDC + msg)
978978

979+
display_cache_settings(self, data)
979980
if data['wp'] and oldsitetype in ['html', 'php', 'mysql']:
980981
Log.info(self, "\n\n" + Log.ENDC + "WordPress admin user :"
981982
" {0}".format(ee_wp_creds['wp_user']))
982983
Log.info(self, Log.ENDC + "WordPress admin password : {0}"
983984
.format(ee_wp_creds['wp_pass']) + "\n\n")
984-
display_cache_settings(self, data)
985985
updateSiteInfo(self, ee_www_domain, stype=stype, cache=cache)
986986
Log.info(self, "Successfully updated site"
987987
" http://{0}".format(ee_domain))
@@ -1100,15 +1100,15 @@ def deleteDB(self, webroot):
11001100
'DB_HOST').split(',')[1]
11011101
.split(')')[0].strip().replace('\'', ''))
11021102
try:
1103-
Log.debug(self, "dropping database {0}".format(ee_db_name))
1103+
Log.debug(self, "dropping database `{0}`".format(ee_db_name))
11041104
EEMysql.execute(self,
1105-
"drop database {0}".format(ee_db_name),
1105+
"drop database `{0}`".format(ee_db_name),
11061106
errormsg='Unable to drop database {0}'
11071107
.format(ee_db_name))
11081108
if ee_db_user != 'root':
1109-
Log.debug(self, "dropping user {0}".format(ee_db_user))
1109+
Log.debug(self, "dropping user `{0}`".format(ee_db_user))
11101110
EEMysql.execute(self,
1111-
"drop user {0}@{1}"
1111+
"drop user `{0}`@`{1}`"
11121112
.format(ee_db_user, ee_db_host))
11131113
EEMysql.execute(self,
11141114
"flush privileges")

ee/cli/plugins/site_functions.py

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,8 @@ def setupwordpress(self, data):
184184
Log.debug(self, "Generating wp-config for WordPress Single site")
185185
Log.debug(self, "bash -c \"php /usr/bin/wp --allow-root "
186186
+ "core config "
187-
+ "--dbname={0} --dbprefix={1} --dbuser={2} --dbhost={3} "
187+
+ "--dbname=\'{0}\' --dbprefix=\'{1}\' --dbuser=\'{2}\' "
188+
"--dbhost=\'{3}\' "
188189
.format(data['ee_db_name'], ee_wp_prefix,
189190
data['ee_db_user'], data['ee_db_host'])
190191
+ "--dbpass= "
@@ -193,22 +194,25 @@ def setupwordpress(self, data):
193194
"\n\ndefine(\'WP_DEBUG\', false);"))
194195
EEShellExec.cmd_exec(self, "bash -c \"php /usr/bin/wp --allow-root "
195196
+ "core config "
196-
+ "--dbname={0} --dbprefix={1} --dbuser={2} --dbhost={3} "
197+
+ "--dbname=\'{0}\' --dbprefix=\'{1}\' "
198+
"--dbuser=\'{2}\' --dbhost=\'{3}\' "
197199
.format(data['ee_db_name'], ee_wp_prefix,
198-
data['ee_db_user'], data['ee_db_host'])
199-
+ "--dbpass={0} "
200+
data['ee_db_user'], data['ee_db_host'])
201+
+ "--dbpass=\'{0}\' "
200202
"--extra-php<<PHP \n {1}\nPHP\""
201203
.format(data['ee_db_pass'],
202204
"\n\ndefine(\'WP_DEBUG\', false);"),
203205
log=False
204-
)
206+
) or Log.error(self,
207+
"Unable to Generate "
208+
"wp-config")
205209
else:
206210
Log.debug(self, "Generating wp-config for WordPress multisite")
207211
Log.debug(self, "bash -c \"php /usr/bin/wp --allow-root "
208212
+ "core config "
209-
+ "--dbname={0} --dbprefix={1} --dbhost={2} "
213+
+ "--dbname=\'{0}\' --dbprefix=\'{1}\' --dbhost=\'{2}\' "
210214
.format(data['ee_db_name'], ee_wp_prefix, data['ee_db_host'])
211-
+ "--dbuser={0} --dbpass= "
215+
+ "--dbuser=\'{0}\' --dbpass= "
212216
"--extra-php<<PHP \n {2} {3} {4}\nPHP\""
213217
.format(data['ee_db_user'], data['ee_db_pass'],
214218
"\ndefine(\'WP_ALLOW_MULTISITE\', "
@@ -218,9 +222,11 @@ def setupwordpress(self, data):
218222
"\n\ndefine(\'WP_DEBUG\', false);"))
219223
EEShellExec.cmd_exec(self, "bash -c \"php /usr/bin/wp --allow-root "
220224
+ "core config "
221-
+ "--dbname={0} --dbprefix={1} --dbhost={2} "
222-
.format(data['ee_db_name'], ee_wp_prefix, data['ee_db_host'])
223-
+ "--dbuser={0} --dbpass={1} "
225+
+ "--dbname=\'{0}\' --dbprefix=\'{1}\' "
226+
"--dbhost=\'{2}\' "
227+
.format(data['ee_db_name'], ee_wp_prefix,
228+
data['ee_db_host'])
229+
+ "--dbuser=\'{0}\' --dbpass=\'{1}\' "
224230
"--extra-php<<PHP \n {2} {3} {4}\nPHP\""
225231
.format(data['ee_db_user'], data['ee_db_pass'],
226232
"\ndefine(\'WP_ALLOW_MULTISITE\', "
@@ -229,7 +235,9 @@ def setupwordpress(self, data):
229235
" true);",
230236
"\n\ndefine(\'WP_DEBUG\', false);"),
231237
log=False
232-
)
238+
) or Log.error(self,
239+
"Unable to Generate "
240+
"wp-config")
233241
EEFileUtils.mvfile(self, os.getcwd()+'/wp-config.php',
234242
os.path.abspath(os.path.join(os.getcwd(), os.pardir)))
235243

@@ -257,43 +265,61 @@ def setupwordpress(self, data):
257265
Log.debug(self, "{0}".format(e))
258266
Log.error(self, "Unable to input WordPress user email")
259267

268+
try:
269+
while not re.match(r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$",
270+
ee_wp_email):
271+
Log.info(self, "EMail not Valid in config, "
272+
"Please provide valid email id")
273+
ee_wp_email = input("Enter your email: ")
274+
except EOFError as e:
275+
Log.debug(self, "{0}".format(e))
276+
Log.error(self, "Unable to input WordPress user email")
277+
260278
Log.debug(self, "Setting up WordPress tables")
261279

262280
if not data['multisite']:
263281
Log.debug(self, "Creating tables for WordPress Single site")
264282
Log.debug(self, "php /usr/bin/wp --allow-root core install "
265-
"--url={0} --title={0} --admin_name={1} "
283+
"--url=\'{0}\' --title=\'{0}\' --admin_name=\'{1}\' "
266284
.format(data['www_domain'], ee_wp_user)
267-
+ "--admin_password= --admin_email={1}"
285+
+ "--admin_password= --admin_email=\'{1}\'"
268286
.format(ee_wp_pass, ee_wp_email))
269287
EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root core install "
270-
"--url={0} --title={0} --admin_name={1} "
288+
"--url=\'{0}\' --title=\'{0}\' "
289+
"--admin_name=\'{1}\' "
271290
.format(data['www_domain'], ee_wp_user)
272-
+ "--admin_password={0} --admin_email={1}"
291+
+ "--admin_password=\'{0}\' --admin_email=\'{1}\'"
273292
.format(ee_wp_pass, ee_wp_email),
274293
errormsg="Unable to setup WordPress Tables",
275-
log=False)
294+
log=False) or Log.error(self,
295+
"Unable to setup "
296+
"WordPress Tables")
276297
else:
277298
Log.debug(self, "Creating tables for WordPress multisite")
278299
Log.debug(self, "php /usr/bin/wp --allow-root "
279300
"core multisite-install "
280-
"--url={0} --title={0} --admin_name={1} "
301+
"--url=\'{0}\' --title=\'{0}\' --admin_name=\'{1}\' "
281302
.format(data['www_domain'], ee_wp_user)
282-
+ "--admin_password= --admin_email={1} "
303+
+ "--admin_password= --admin_email=\'{1}\' "
283304
"{subdomains}"
284305
.format(ee_wp_pass, ee_wp_email,
285306
subdomains='--subdomains'
286307
if not data['wpsubdir'] else ''))
287308
EEShellExec.cmd_exec(self, "php /usr/bin/wp --allow-root "
288309
"core multisite-install "
289-
"--url={0} --title={0} --admin_name={1} "
310+
"--url=\'{0}\' --title=\'{0}\' "
311+
"--admin_name=\'{1}\' "
290312
.format(data['www_domain'], ee_wp_user)
291-
+ "--admin_password={0} --admin_email={1} "
313+
+ "--admin_password=\'{0}\' "
314+
"--admin_email=\'{1}\' "
292315
"{subdomains}"
293316
.format(ee_wp_pass, ee_wp_email,
294317
subdomains='--subdomains'
295318
if not data['wpsubdir'] else ''),
296-
errormsg="Unable to setup WordPress Tables")
319+
errormsg="Unable to setup WordPress Tables",
320+
log=False) or Log.error(self,
321+
"Unable to setup "
322+
"WordPress Tables")
297323

298324
Log.debug(self, "Updating WordPress permalink")
299325
EEShellExec.cmd_exec(self, " php /usr/bin/wp --allow-root "
@@ -323,15 +349,15 @@ def setupwordpressnetwork(self, data):
323349
EEFileUtils.chdir(self, '{0}/htdocs/'.format(ee_site_webroot))
324350
Log.info(self, "Setting up WordPress Network \t", end='')
325351
EEShellExec.cmd_exec(self, 'wp --allow-root core multisite-convert'
326-
' --title={0} {subdomains}'
352+
' --title=\'{0}\' {subdomains}'
327353
.format(data['www_domain'], subdomains='--subdomains'
328354
if not data['wpsubdir'] else ''))
329355
Log.info(self, "[" + Log.ENDC + "Done" + Log.OKBLUE + "]")
330356

331357

332358
def installwp_plugin(self, plugin_name, data):
333359
ee_site_webroot = data['webroot']
334-
Log.debug(self, "Installing plugin {0}".format(plugin_name))
360+
Log.info(self, "Installing plugin {0}".format(plugin_name))
335361
EEFileUtils.chdir(self, '{0}/htdocs/'.format(ee_site_webroot))
336362
EEShellExec.cmd_exec(self, "php /usr/bin/wp plugin --allow-root install "
337363
"{0}".format(plugin_name),

ee/cli/plugins/stack.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ def install(self, packages=[], apt_packages=[], disp_msg=True):
13081308
self.pre_pref(apt_packages)
13091309
if len(apt_packages):
13101310
EESwap.add(self)
1311-
Log.debug(self, "Updating apt-cache")
1311+
Log.info(self, "Updating apt-cache")
13121312
EEAptGet.update(self)
13131313
EEAptGet.install(self, apt_packages)
13141314
if len(packages):

ee/core/variables.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class EEVariables():
1212
"""Intialization of core variables"""
1313

1414
# EasyEngine version
15-
ee_version = "3.0.3"
15+
ee_version = "3.0.4"
1616

1717
# EasyEngine packages versions
1818
ee_wp_cli = "0.18.0"

0 commit comments

Comments
 (0)