A ready-to-rock WordPress install using the latest release from WordPress.org.
Installs WordPress on a full LAMP stack using MySQL for Debian/Ubuntu and MariaDB for CentOS (the new default).
#!/usr/bin/env python """ WordPress StackScript Author: Ricardo N Feliciano <[email protected]> Version: 1.0.0.0 Requirements: - ss://linode/python-library <ssinclude StackScriptID="3"> - ss://linode/apache <ssinclude StackScriptID="5"> - ss://linode/mysql <ssinclude StackScriptID="7"> - ss://linode/php <ssinclude StackScriptID="8"> - ss://linode/lamp-stack <ssinclude StackScriptID="9"> This StackScript both deploys and provides a library of functions for creating a basic WordPress install. This StackScript is designed to be run across Linode's Core Distributions: - Ubuntu LTS - CentOS - Debian StackScript User-Defined Variables (UDF): <UDF name="db_root_password" label="MariaDB/MySQL root password" /> <UDF name="db_name" label="Database name for WordPress" default="wordpress" /> """ import os import pwd import shutil import sys import tarfile import urllib try: # we'll need to rename included StackScripts before we can import them os.rename("/root/ssinclude-3", "/root/pythonlib.py") os.rename("/root/ssinclude-5", "/root/apache.py") os.rename("/root/ssinclude-7", "/root/mysql.py") os.rename("/root/ssinclude-8", "/root/php.py") os.rename("/root/ssinclude-9", "/root/lamp.py") except: pass import pythonlib import apache import mysql import php import lamp def install(path): """Install WordPress.""" #logging support shutil.rmtree(path) urllib.urlretrieve("https://wordpress.org/latest.tar.gz", "wordpress.tar.gz") tarball = tarfile.open("wordpress.tar.gz") tarball.extractall(os.path.dirname(path)) tarball.close() os.rename(os.path.dirname(path) + "/wordpress", path) # might be better off a part of the Apache StackScript in the future httpd_user = { 'debian': 'www-data', 'redhat': 'apache' } # Recursively set permissions for our web directory os.chown(path, pwd.getpwnam(httpd_user[pythonlib.distro['family']]).pw_uid, -1) for root, dirs, files in os.walk(path): for found_dirs in dirs: os.chown(os.path.join(root, found_dirs), pwd.getpwnam(httpd_user[pythonlib.distro['family']]).pw_uid, -1) for found_files in files: os.chown(os.path.join(root, found_files), pwd.getpwnam(httpd_user[pythonlib.distro['family']]).pw_uid, -1) def main(): """Install WordPress on a basic LAMP stack. Most of the initial code in this function needs to be pulled from the LAMP StackScript rather than placed here. """ # add logging support pythonlib.init() if os.environ['DB_ROOT_PASSWORD'] != "": db_root_password = os.environ['DB_ROOT_PASSWORD'] else: db_root_password = False if os.environ['DB_NAME'] != "": db_name = os.environ['DB_NAME'] else: db_name = False pythonlib.system_update() apache.httpd_install() mysql.mysql_install(db_root_password, db_name) php.php_install() php.php_install_module_common() # might be better off a part of the Apache StackScript in the future httpd_docroot = "/var/www/html" if pythonlib.distro['distname'] == "debian" and float(pythonlib.distro['version']) < 8.0 : httpd_docroot = "/var/www" install(httpd_docroot) pythonlib.end() if __name__ == "__main__": sys.exit(main())