Child pages
  • Wordpress on Debian
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

This page describes the installation of Wordpress under Debian 7 (Wheezy), in an lxc container.

 

Import a site from another machine

The shell script below assumes many things:

  • names of the sites, directories on the old machine match the ones to be used on the new machine
  • the ssh keys are properly forwarded, and you have your public key in the /root/.ssh/authorized_keys file of the old machine

SITE_NAME=my.site.org  ## Put the complete name (should match a valid, public DNS entry)
DB_NAME=$(hostname)  ## Please correct if the DB name does not match the host name
OLD_MACHINE=176.9.96.186  ## The name or IP of the machine to import the existing site from (default: the public IP address of CT108, aka WebPanel/ISPManager)
OLD_WP_CONTENT_DIR=/var/www/${DB_NAME}/data/www/${SITE_NAME}/wp-content  ## The directory of wp-content on the old machine (default: webpanel standard location)
NEW_WP_CONTENT_DIR=/var/lib/wordpress/wp-content  ## The directory of wp-content on the new installation, do not change unless you know what you are doing
apt-get install wordpress nginx mysql-server php5-fpm pwgen
DB_USER_PASSWORD=$(pwgen 8 1)  ## Generate a random password

mysql -p << EOF
CREATE DATABASE ${DB_NAME};
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON ${DB_NAME}.*
TO ${DB_NAME}@localhost
IDENTIFIED BY '${DB_USER_PASSWORD}';
FLUSH PRIVILEGES;
EOF
 
cat > /etc/wordpress/config-${DB_NAME}.php << EOF
<?php
define('DB_NAME', '${DB_NAME}');
define('DB_USER', '${DB_NAME}');
define('DB_PASSWORD', '${DB_USER_PASSWORD}');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/var/lib/wordpress/wp-content');

/** IN URI INDEXOF THE CATEGORY*/
define('NUMBER_SLASH', '2');
define('NUMBER_SLASH2', '3');
define('CAT26', 'courses');

define( 'DB_CHARSET', 'utf8' );
?>
EOF


cat > /etc/nginx/sites-available/${DB_NAME} << EOF
server {
    listen 80;
    root /usr/share/wordpress;
    index index.php index.html index.htm;
    server_name ${SITE_NAME};
    access_log /var/log/nginx/${DB_NAME}.access.log;
    error_log /var/log/nginx/${DB_NAME}.error.log;  

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location /wp-content/ {
        root /var/lib/wordpress;
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires 30d;
            log_not_found off;
        }
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        #fastcgi_intercept_errors on;
    }
}
EOF
 
ln -s ../sites-available/${DB_NAME} /etc/nginx/sites-enabled/  ## Activates the nginx config
rm /etc/nginx/sites-enabled/default  ## Remove the default nginx setting: not used
nginx -t  ## Test the nginx config
service nginx restart

## Copy and import an existing sql database
## It must have been generated from the "old" machine with:
## OLD_DB_NAME=foobar
## mysqldump --add-drop-table -h localhost -u root ${OLD_DB_NAME} > /tmp/${OLD_DB_NAME}.sql
rsync root@${OLD_MACHINE}:/tmp/${DB_NAME}.sql /tmp ## Copy from the "old" machine, assuming that $OLD_DB_NAME == $DB_NAME
mysql -u root --password=oji8eiVu ${DB_NAME} --default-character-set=utf8 --password=Pholaez2 < /tmp/${DB_NAME}.sql

## Copy the files from the "old" machine
rsync -a root@${OLD_MACHINE}:${OLD_WP_CONTENT_DIR}/uploads/* ${NEW_WP_CONTENT_DIR}/uploads/
rsync --exclude=akismet --exclude=index.php -a root@${OLD_MACHINE}:${OLD_WP_CONTENT_DIR}/plugins/* ${NEW_WP_CONTENT_DIR}/plugins
## Eventually, for a specific plugin or theme:
#rsync -a root@${OLD_MACHINE}:${OLD_WP_CONTENT_DIR}/themes/customizr ${NEW_WP_CONTENT_DIR}/themes/

 

 

  • No labels