def config_sessions(config, path): if "save" in config["session"]: del config["session"]["save"] config["session"] = {} config["session"]["save"] = "redis" config["session"]["redis"] = {} config["session"]["redis"]["host"] = "redis-session" config["session"]["redis"]["port"] = "6380" config["session"]["redis"]["password"] = "" config["session"]["redis"]["timeout"] = "2.5" config["session"]["redis"]["persistent_identifier"] = "" config["session"]["redis"]["database"] = "2" config["session"]["redis"]["compression_threshold"] = "2048" config["session"]["redis"]["compression_library"] = "gzip" config["session"]["redis"]["log_level"] = "1" config["session"]["redis"]["max_concurrency"] = "20" config["session"]["redis"]["break_after_frontend"] = "5" config["session"]["redis"]["break_after_adminhtml"] = "30" config["session"]["redis"]["first_lifetime"] = "600" config["session"]["redis"]["bot_first_lifetime"] = "60" config["session"]["redis"]["bot_lifetime"] = "7200" config["session"]["redis"]["disable_locking"] = "1" config["session"]["redis"]["min_lifetime"] = "60" config["session"]["redis"]["max_lifetime"] = "2592000" Conf.save_config(config, path) Menu.main_menu(config, path)
def config_rabbitmq(config, path): rabbit_password = input(Colors.WARNING + "RabbitMQ Password:"******"queue" in config: del config["queue"] config["queue"] = {} config["queue"]["amqp"] = {} config["queue"]["amqp"]["host"] = "rabbitmq" config["queue"]["amqp"]["port"] = "5672" config["queue"]["amqp"]["user"] = "******" config["queue"]["amqp"]["password"] = rabbit_password config["queue"]["amqp"]["virtualhost"] = "/" config["queue"]["amqp"]["ssl"] = "false" config["queue"]["amqp"]["ssl_options"] = {} consumers = check_output( ['php', path + '/bin/magento', 'queue:consumers:list']) if "cron_consumers_runner" in config: del config["cron_consumers_runner"] config["cron_consumers_runner"] = {} config["cron_consumers_runner"]["cron_run"] = "True" config["cron_consumers_runner"]["max_messages"] = 0 config["cron_consumers_runner"]["consumers"] = consumers.decode( "utf-8").splitlines() Conf.save_config(config, path) Menu.main_menu(config, path)
def dev_copy_default(config, path, media): action = "Development Copy" # Get User Input user_input = UserInput() # Put Data in to Dict settings_dict = user_input.settings_dict # Backup Source Database print(Colors.FG.LightGreen + Colors.Bold + "Starting Production Database Backup" + Colors.Reset) time.sleep(1.5) Mysql.backup_remote_database(settings_dict) print(Colors.FG.LightGreen + Colors.Bold + "Starting Database Import From Production" + Colors.Reset) time.sleep(1.5) Mysql.import_remote_database(settings_dict) time.sleep(1.5) rsync_production_files(settings_dict) print(Colors.FG.LightGreen + Colors.Bold + "Doing Dev Copy Configuration for Magento 2" + Colors.Reset) time.sleep(1.5) config = conf.load_config(settings_dict["prod_public_html"]) dev_config(settings_dict, config).init_config() config = conf.load_config(settings_dict["prod_public_html"]) if "queue" in config: if "amqp" in config["queue"]: Rabbit.check_rabbitmq(config, settings_dict["prod_public_html"], 0) Mage.reindex_all_index(config, settings_dict["prod_public_html"]) Mage.magento_compile(config, settings_dict["prod_public_html"]) Mage.static_content_deploy(config, settings_dict["prod_public_html"]) cache.clear_all_reinit(config, settings_dict["prod_public_html"], 0) print(Colors.FG.LightGreen + action + " Complete!" + Colors.Reset) menu.main_menu(settings_dict["prod_public_html"])
def clear_all(config, path): os.popen("php " + path + "/bin/magento cache:flush").read() os.popen("php " + path + "/bin/magento cache:clear").read() os.popen("redis-cli -h redis flushall").read() os.popen("/usr/share/stratus/cli cache.all.clear").read() print(Colors.OKGREEN + "Cleared All Caches" + Colors.ENDC) Menu.main_menu(config, path)
def config_cache(config, path): if "cache" in config: del config["cache"] config["cache"] = {} config["cache"]["frontend"] = {} config["cache"]["frontend"]["default"] = {} config["cache"]["frontend"]["default"][ "backend"] = "Cm_Cache_Backend_Redis" config["cache"]["frontend"]["default"]["backend_options"] = {} config["cache"]["frontend"]["default"]["backend_options"][ "server"] = "redis-config-cache" config["cache"]["frontend"]["default"]["backend_options"]["database"] = "0" config["cache"]["frontend"]["default"]["backend_options"]["port"] = "6381" config["cache"]["frontend"]["page_cache"] = {} config["cache"]["frontend"]["page_cache"][ "backend"] = "Cm_Cache_Backend_Redis" config["cache"]["frontend"]["page_cache"]["backend_options"] = {} config["cache"]["frontend"]["page_cache"]["backend_options"][ "server"] = "redis" config["cache"]["frontend"]["page_cache"]["backend_options"][ "port"] = "6379" config["cache"]["frontend"]["page_cache"]["backend_options"][ "database"] = "1" config["cache"]["frontend"]["page_cache"]["backend_options"][ "compress_data"] = "1" Conf.save_config(config, path) Menu.main_menu(config, path)
def main(): path = conf.get_path() if path.lower() == "none": menu.dev_copy_menu(False, False) else: version = str( os.popen( "cd " + path + " && n98-magerun2 sys:info | awk 'NR==10 { print $4;exit }'"). readlines()[0]).replace("\n", "") major = version.split("-")[0].split(".")[0] minor = version.split("-")[0].split(".")[1] if int(major) != 2: print("Script Requires Magento 2.3 or 2.4 Your version: " + version) exit() elif int(minor) < 3 or int(minor) > 4: print("Script Requires Magento 2.3 or 2.4. Your version: " + version) exit() if os.path.exists(path + "/app/etc/env.php"): source = path + "/app/etc/env.php" dest = "/srv/webscale_toolkit/var/" shutil.copy2(source, dest) if os.path.exists(path + "/composer.json"): source = path + "/composer.json" dest = "/srv/webscale_toolkit/var/" shutil.copy2(source, dest) menu.main_menu(path)
def config_varnish(config, path): os.popen("php " + path + "/bin/magento config:set system/full_page_cache/caching_application 2") os.popen("php " + path + "/bin/magento config:set system/full_page_cache/varnish/access_list localhost") os.popen("php " + path + "/bin/magento config:set system/full_page_cache/varnish/backend_host nginx") os.popen("php " + path + "/bin/magento config:set system/full_page_cache/varnish/backend_port 8080") os.popen("php " + path + "/bin/magento setup:config:set --http-cache-hosts=varnish") print(Colors.OKGREEN + "Configured Varnish") Menu.main_menu(config, path)
def check_rabbitmq(config, path): if "queue" not in config: config_rabbitmq(config, path) elif "amqp" in config["queue"]: print(Colors.OKGREEN + "RabbitMQ Already Configured" + Colors.ENDC) Menu.main_menu(config, path) else: config_rabbitmq(config, path)
def install_mmcron(config, path): os.popen("cd " + path + " && composer require magemojo/m2-ce-cron").read() os.popen("php " + path + "/bin/magento module:enable MageMojo_Cron").read() os.popen("php " + path + "/bin/magento setup:upgrade").read() os.popen("php " + path + "/bin/magento setup:di:compile").read() os.popen("php " + path + "/bin/magento setup:static-content:deploy -f").read() print(Colors.OKGREEN + "MageMojo Cron Installed" + Colors.ENDC) Menu.main_menu(config, path)
def run_bash_command(config, path, action, command, success_message): running_command = command.split() output = subprocess.run(running_command, capture_output=True) if output.returncode == 0: print(Colors.FG.Green + Colors.Bold + success_message + Colors.Reset) else: print(Colors.FG.Red + Colors.Bold + "Error executing command. " + command + "\nError Output:\n" + output.stdout.decode("utf-8") + Colors.Reset) print(Colors.FG.Red + Colors.Bold + action + " not completed. Returning to Menu." + Colors.Reset) menu.main_menu(path)
def configure_elasticsearch(config, path, menu_return): action = "Configure Database for Elastic Search" version = input("ElasticSearch version? 5, 6 or 7 (Default 7):") if version == "": version = "elasticsearch7" elif version == "5": version = "elasticsearch5" elif version == "6": version = "elasticsearch6" elif version == "7": version = "elasticsearch7" else: print(Colors.FG.Yellow + "Versions can only be 5, 6, or 7: " + version + Colors.Reset) menu.main_menu(path) shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/engine " + version, ".") shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/" + version + "_server_hostname elasticsearch", "..") shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/" + version + "_server_port 9200", "...") shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/" + version + "_index_prefix magento2", "....") shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/" + version + "_enable_auth 0", ".....") shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento config:set catalog/search/" + version + "_server_timeout 15", "......") print(Colors.FG.LightGreen + Colors.Bold + action + " Completed." + Colors.Reset) action = "Reindex Search Catalog" print(Colors.FG.LightGreen + Colors.Bold + action + " Started." + Colors.Reset) shell.run_bash_command(config, path, action, "php -ddisplay_errors=on " + path + "/bin/magento indexer:reindex catalogsearch_fulltext", ".......") print(Colors.FG.LightGreen + Colors.Bold + action + " Completed." + Colors.Reset) print(Colors.FG.LightGreen + Colors.Bold + "ElasticSearch Configured" + Colors.Reset) if menu_return == 1: menu.elasticsearch_menu(config, path)
def run_bash_command_popen(config, path, action, command, success_message): child = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) streamdata = child.communicate()[0] rc = child.returncode if rc == 0: if success_message == 1: print(Colors.FG.LightGreen + Colors.Bold + action + " complete." + Colors.Reset) elif success_message == "": return else: print(Colors.FG.LightGreen + Colors.Bold + success_message + Colors.Reset) else: print(Colors.FG.Red + Colors.Bold + action + " not completed. Returning to Menu." + Colors.Reset) if config is False: menu.dev_copy_menu(False, False) else: menu.main_menu(path)
def update_mysql_credentials_from_system(config, path, menu_return): action = "Update MySQL Credentials" db_creds = get_mysql_credentials() if db_creds is not False: config["db"]["connection"]["default"]["host"] = "mysql" config["db"]["connection"]["default"]["dbname"] = db_creds["Name"] config["db"]["connection"]["default"]["username"] = db_creds[ "Username"] config["db"]["connection"]["default"]["password"] = db_creds[ "Password"] conf.save_config(config, path) print(Colors.FG.LightGreen + Colors.Bold + action + " Completed!" + Colors.Reset) else: print(Colors.FG.Red + Colors.Bold + "Error getting database credentials from Stratus CLI" + Colors.Reset) print(Colors.FG.Red + Colors.Bold + action + " not completed. Returning to Menu." + Colors.Reset) if menu_return == 1: menu.main_menu(path)
def clear_magento(config, path): os.popen("php " + path + "/bin/magento cache:flush").read() os.popen("php " + path + "/bin/magento cache:clear").read() print(Colors.OKGREEN + "Cleared Magento Cache" + Colors.ENDC) Menu.main_menu(config, path)
def reset_crons(config, path): os.popen("mysql -h mysql -u " + config["db"]["connection"]["default"]["username"] + " -p\"" + config["db"]["connection"]["default"]["password"] + "\" " + config["db"]["connection"]["default"]["dbname"] + " -e 'delete from " + config["db"]["table_prefix"] + "cron_schedule'").read() os.popen("pkill -f cron & pkill -f cron & rm -rf " + path + "/var/cron/* ").read() print(Colors.OKGREEN + "Reset Crons" + Colors.ENDC) Menu.main_menu(config, path)
def reinit_as_zdd(config, path): os.popen( "/usr/share/stratus/cli zerodowntime.init && /usr/share/stratus/cli zerodowntime.switch" ).read() print(Colors.OKGREEN + "Reinitalized Autoscaling" + Colors.ENDC) Menu.main_menu(config, path)
def reinit_as(config, path): os.popen("/usr/share/stratus/cli autoscaling.reinit").read() print(Colors.OKGREEN + "Reinitalized Autoscaling" + Colors.ENDC) Menu.main_menu(config, path)
def clear_cloudfront(config, path): os.popen("/usr/share/stratus/cli cache.all.clear").read() print(Colors.OKGREEN + "Cleared CloudFront Cache" + Colors.ENDC) Menu.main_menu(config, path)
def clear_redis(config, path): os.popen("redis-cli -h redis flushall").read() print(Colors.OKGREEN + "Cleared Redis Cache" + Colors.ENDC) Menu.main_menu(config, path)
def main(): path = conf.get_path() config = conf.load_config(path) Menu.main_menu(config, path)
def purge_varnish(config, path): os.popen("curl -X 'PURGE' -H'X-Magento-Tags-Pattern: .*' varnish") print(Colors.OKGREEN + "Purged Varnish") Menu.main_menu(config, path)