Size: 9064
Comment: replaced "/init.d/apache2 restart" by "service apache2 restart"
|
Size: 9573
Comment: Fixed codename numbering typo
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
WordPress versions for different Debian version (updated December 2021): * Debian 10 (Buster): 5.0.14 * Debian 11 (Bullseye): 5.7.1 * Debian 12 (Bookworm): 5.8.1 |
|
Line 8: | Line 13: |
== Basic Installation guide for Wheezy == {{{ # apt-get install wordpress curl apache2 mysql-server}}} Set the mysql admin root user password when prompted |
== Packages Installation == === Installation === {{{ apt update apt install wordpress curl apache2 mariadb-server }}} Secure your MySQL installation with this command: {{{ mysql_secure_installation }}} == Basic Installation guide == |
Line 18: | Line 33: |
# nano /etc/apache2/sites-available/wp}}} Add this content:- {{{ Alias /wp/wp-content /var/lib/wordpress/wp-content Alias /wp /usr/share/wordpress |
nano /etc/apache2/sites-available/wp.conf }}} Add this content, and replace '''example.com''' by your own domain: {{{ <VirtualHost *:80> ServerName myblog.example.com ServerAdmin webmaster@example.com DocumentRoot /usr/share/wordpress Alias /wp-content /var/lib/wordpress/wp-content |
Line 28: | Line 50: |
Order allow,deny Allow from all |
Require all granted |
Line 33: | Line 54: |
Order allow,deny Allow from all |
Require all granted |
Line 36: | Line 56: |
}}} === Enable the site === {{{ # a2ensite wp}}} === Restart the webserver === {{{ # service apache2 reload}}} Create `/etc/wordpress/config-$DM.php` (where `$DM` is the domain name e.g. if the fully qualified domain name is `debianwordpress.dev` create `/etc/wordpress/config-dev.php`) {{{ # nano /etc/wordpress/config-dev.php}}} Add this content:- |
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> }}} === Disable default Virtual Host, and enable the site === {{{ a2dissite 000-default a2ensite wp }}} === Reload the webserver === {{{ service apache2 reload }}} Create `/etc/wordpress/config-$DM.php`. `$DM` is the domain name e.g. if the fully qualified domain name is `myblog.example.com`, create one of the following files: * `/etc/wordpress/config-myblog.example.com.php` (this is the default, use it if you are unsure) * `/etc/wordpress/config-example.com.php` (this is used for multisite with subdomains) * `/etc/wordpress/config-default.php` (this is used as a fallback if no other file matches your domain name) WordPress searches in the above order and uses the first configuration file it can find. The domain name is taken from the HTTP-Request of your browser. That way you may be able to define different configuration files for different domains you are hosting. {{{ nano /etc/wordpress/config-myblog.example.com.php }}} Add this content: |
Line 69: | Line 103: |
# nano ~/wp.sql}}} Add this content:- |
nano ~/wp.sql }}} Add this content: <!> replace `password` with your "suitably secure password" |
Line 81: | Line 117: |
<!> replace `password` with your "suitably secure password" Create the database:- {{{ # cat ~/wp.sql | mysql --defaults-extra-file=/etc/mysql/debian.cnf}}} Navigate to the wordpress directory in browser e.g.:- `http://debianwordpress.dev/wp` which redirects to `http://debianwordpress.dev/wp/wp-admin/install.php` where you'll see the "classic" wordpress 5 minute install page (actually a 5 second install thanks to the Debian packaging) <!> replace `debianwordpress.dev` with your domain name (or `localhost` if running on the same box as your browser). At time of writing this provides WordPress v3.6.1. WordPress v3.7.1 is available in Testing and Unstable. I haven't tested it but it should install fine on Wheezy. |
Create the database: {{{ cat ~/wp.sql | mysql --defaults-extra-file=/etc/mysql/debian.cnf }}} Navigate to the wordpress directory in browser e.g. `http://myblog.example.com/wp` which redirects to `http://myblog.example.com/wp/wp-admin/install.php` where you'll see the "classic" wordpress 5 minute install page (actually a 5 second install thanks to the Debian packaging) <!> replace `myblog.example.com` with your domain name (or `localhost` if running on the same box as your browser). |
Line 97: | Line 129: |
=== Automated FTP upgrade === <!> Untested. * Login to WordPress Admin * Go to the Updates section * Click on the '''Re-install Now''' button * Fill in the required fields and click on the '''Proceed button''' {{http://s25.postimg.org/knlbtblhn/install_01.jpg|Update page}} {{http://s25.postimg.org/5qcusb897/install_02.jpg|FTP details}} === Manual upgrade === * Login to WordPress admin * Go to the Plugins page * Select all your plugins * Deactivate them all * Download the latest version of WordPress . {{{ # cd ~ # wget http://wordpress.org/latest.tar.gz }}} * Back-up your current `wp-includes` directory . {{{ # mv /usr/share/wordpress/wp-includes{,-3.6.1} }}} * Back-up your current `wp-admin` directory . {{{ # mv /usr/share/wordpress/wp-admin{,-3.6.1} }}} * Extract the upgraded `wp-admin` directory (replaces existing) . {{{ # tar -zxvf latest.tar.gz -C /usr/share wordpress/wp-admin }}} * Extract the upgraded `wp-includes` directory (replaces existing) . {{{ # tar -zxvf latest.tar.gz -C /usr/share wordpress/wp-includes }}} * Extract the upgrade `wp-content` directory (overwrites existing) . {{{ # tar -zxvf latest.tar.gz -C /usr/share wordpress/wp-content }}} * Extract the upgraded WordPress root files (overwrites existing) . {{{ # tar --wildcards -zxvf latest.tar.gz -C /usr/share/ 'wordpress/*.php' }}} * Back in WordPress agree to reload/upgrade the database then reactivate plugins {{http://s25.postimg.org/t8enkhvnv/install_04.jpg|Completed manual upgrade}} |
For keeping your WordPress up to date and receiving security fixes use Debian package manager: {{{ apt update && apt upgrade }}} If you would like to use a more recent version of WordPress, consider using [[Backports]] or [[DebianTesting|Debian testing]]. |
Line 149: | Line 139: |
I believe this method conforms more with how the maintainer recommends it should be done. Various sources are drawn upon using this method, and it is also affected by a few bugs as at this writing. It is basically centric around a "kind of" multisite install, but I recommend this method even for a single blog, otherwise when you decide down the track to have more than one and share the packages' codebase, you'll have a fair bit of work on your hands. | I believe this method conforms more with how the maintainer recommends it should be done. Various sources are drawn upon using this method, and it is also affected by a few bugs as of this writing. It is basically centered around a "kind of" multi-site install, but I recommend this method even for a single blog, otherwise when you decide down the road to have more than one and share the packages' codebase, you'll have a fair bit of work on your hands. |
Line 155: | Line 145: |
* Sets up a `wp-content` structure under `/srv/www/wp-content/DOMAIN` (this is key for a non-WordPress multisite install, which is covered more below) === Install required packages === {{{ # apt-get install wordpress apache2 mysql-server }}} |
* Sets up a `wp-content` structure under `/srv/www/wp-content/DOMAIN` (this is key for a non-WordPress multi-site install, which is covered more below) |
Line 167: | Line 150: |
{{{ # Required package apt install iputils-ping # Unzip the file gzip -d /usr/share/doc/wordpress/examples/setup-mysql.gz # Set as executable chmod +x /usr/share/doc/wordpress/examples/setup-mysql # Run the setup, change myblog.example.com to your FQDN /usr/share/doc/wordpress/examples/setup-mysql myblog.example.com }}} |
|
Line 195: | Line 191: |
# a2enmod rewrite && a2enmod vhost_alias && service apache2 restart | a2enmod rewrite a2enmod vhost_alias service apache2 restart |
Line 200: | Line 198: |
If you're using any Wordpress functionality that requires URL rewriting (such as permalinks), then you will also need something like this in your Apache config: {{{ RewriteRule ^index\.php$ - [L] RewriteCond /usr/share/wordpress%{REQUEST_URI} !-f RewriteCond /usr/share/wordpress%{REQUEST_URI} !-d RewriteRule . /usr/share/wordpress/index.php [L] # Also needed if using PHP-FPM / Fast-CGI RewriteCond %{REQUEST_URI} !^/php5-fcgi/* }}} The above rewrite conditions rely on Apache finding the required files in /usr/share/wordpress for non-permalinks (such as wp-admin). This may require the following line to ensure it finds the index file when requesting /wp-admin/ {{{ DirectoryIndex index.php }}} |
|
Line 206: | Line 221: |
It also discusses the two choices regarding multisite installs, of which this here describes the non-WordPress version. | It also discusses the two choices regarding multi-site installs, of which this here describes the non-WordPress version. |
Line 213: | Line 228: |
# a2ensite myblog.com # service apache2 reload |
a2ensite myblog.com service apache2 reload |
Line 223: | Line 238: |
Sadly at this point, there are some issues with symlinking, and messing around generally with `WP_CONTENT_DIR`. The main bug is being tracked at http://core.trac.wordpress.org/ticket/16953. At this point, basically a fair few things break, especially if plugin or theme authors don't do things right when determining correct filesystem and URI paths to use. There seems no easy fix right now, other than not using symlinks or non-standard (but configurable!) paths. |
Sadly at this point, there may be some issues with symlinking, and messing around generally with `WP_CONTENT_DIR`. The main bug was being tracked at https://core.trac.wordpress.org/ticket/16953. Most issues should be fixed but some things may break, especially if plugin or theme authors don't do things right when determining correct filesystem and URI paths to use. |
Line 233: | Line 248: |
* [[http://wordpress.org/|Home Page]] * [[http://codex.wordpress.org/|WordPress Online Documentation]] * [[http://codex.wordpress.org/Updating_WordPress#Manual_Update|WordPress Manual Update Guide]] |
* [[https://wordpress.org/|Home Page]] * [[https://codex.wordpress.org/|WordPress Online Documentation]] * [[https://wordpress.org/support/article/updating-wordpress/#manual-update|WordPress Manual Update Guide]] --------------------- CategoryNetwork CategorySoftware |
Translation(s): none
WordPress is a free and open source (GNU GPLv2 or later) blogging tool and a content management system (CMS) based on PHP and MySQL. Features include a plug-in architecture and a template system.
WordPress versions for different Debian version (updated December 2021):
- Debian 10 (Buster): 5.0.14
- Debian 11 (Bullseye): 5.7.1
- Debian 12 (Bookworm): 5.8.1
Contents
Packages Installation
Installation
apt update apt install wordpress curl apache2 mariadb-server
Secure your MySQL installation with this command:
mysql_secure_installation
Basic Installation guide
Create a site
nano /etc/apache2/sites-available/wp.conf
Add this content, and replace example.com by your own domain:
<VirtualHost *:80> ServerName myblog.example.com ServerAdmin webmaster@example.com DocumentRoot /usr/share/wordpress Alias /wp-content /var/lib/wordpress/wp-content <Directory /usr/share/wordpress> Options FollowSymLinks AllowOverride Limit Options FileInfo DirectoryIndex index.php Require all granted </Directory> <Directory /var/lib/wordpress/wp-content> Options FollowSymLinks Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Disable default Virtual Host, and enable the site
a2dissite 000-default a2ensite wp
Reload the webserver
service apache2 reload
Create /etc/wordpress/config-$DM.php. $DM is the domain name e.g. if the fully qualified domain name is myblog.example.com, create one of the following files:
/etc/wordpress/config-myblog.example.com.php (this is the default, use it if you are unsure)
/etc/wordpress/config-example.com.php (this is used for multisite with subdomains)
/etc/wordpress/config-default.php (this is used as a fallback if no other file matches your domain name)
WordPress searches in the above order and uses the first configuration file it can find. The domain name is taken from the HTTP-Request of your browser. That way you may be able to define different configuration files for different domains you are hosting.
nano /etc/wordpress/config-myblog.example.com.php
Add this content:
replace password with a suitably secure password
Create a file to hold the database creation instructions
nano ~/wp.sql
Add this content: replace password with your "suitably secure password"
Create the database:
cat ~/wp.sql | mysql --defaults-extra-file=/etc/mysql/debian.cnf
Navigate to the wordpress directory in browser e.g. http://myblog.example.com/wp which redirects to http://myblog.example.com/wp/wp-admin/install.php where you'll see the "classic" wordpress 5 minute install page (actually a 5 second install thanks to the Debian packaging)
replace myblog.example.com with your domain name (or localhost if running on the same box as your browser).
Upgrading the installed WordPress version
For keeping your WordPress up to date and receiving security fixes use Debian package manager:
apt update && apt upgrade
If you would like to use a more recent version of WordPress, consider using Backports or Debian testing.
An alternate installation method
I believe this method conforms more with how the maintainer recommends it should be done. Various sources are drawn upon using this method, and it is also affected by a few bugs as of this writing. It is basically centered around a "kind of" multi-site install, but I recommend this method even for a single blog, otherwise when you decide down the road to have more than one and share the packages' codebase, you'll have a fair bit of work on your hands.
The key useful script here is /usr/share/doc/wordpress/examples/setup-mysql. This gem does a few things:
Creates a WordPress config file under /etc/wordpress
Creates the WordPress database and user
Sets up a wp-content structure under /srv/www/wp-content/DOMAIN (this is key for a non-WordPress multi-site install, which is covered more below)
Run the helper script
Now run /usr/share/doc/wordpress/examples/setup-mysql, passing an argument of your site name; eg. myblog.com. You will most probably need other arguments too -- just try an initial -h to get help.
# Required package apt install iputils-ping # Unzip the file gzip -d /usr/share/doc/wordpress/examples/setup-mysql.gz # Set as executable chmod +x /usr/share/doc/wordpress/examples/setup-mysql # Run the setup, change myblog.example.com to your FQDN /usr/share/doc/wordpress/examples/setup-mysql myblog.example.com
At this point, as per above, you should have a database created for you, and the /etc/wordpress/config-myblog.com.php config file. Peruse that and sanity check it.
Create the Apache site
Quoting /usr/share/doc/wordpress/examples/apache.conf:
There are several ways to setup Wordpress & Apache in Debian. However the maintainer's recommended way with the helper script setup-mysql uses:
## Virtual host VirtualDocumentRoot NameVirtualHost *:80 <VirtualHost *:80> UseCanonicalName Off VirtualDocumentRoot /usr/share/wordpress Options All # wp-content in /srv/www/wp-content/$0 RewriteEngine On RewriteRule ^/wp-content/(.*)$ /srv/www/wp-content/%{HTTP_HOST}/$1 </VirtualHost>
For this configuration to work you'll also need to have mod_rewrite and mod_vhost_alias loaded and working in Apache. To enable these modules run
a2enmod rewrite a2enmod vhost_alias service apache2 restart
Place this config into something like /etc/apache2/sites-available/myblog.com and modify according to your needs (IP-based virtual host, name-based, logging, etc.)
If you're using any Wordpress functionality that requires URL rewriting (such as permalinks), then you will also need something like this in your Apache config:
RewriteRule ^index\.php$ - [L] RewriteCond /usr/share/wordpress%{REQUEST_URI} !-f RewriteCond /usr/share/wordpress%{REQUEST_URI} !-d RewriteRule . /usr/share/wordpress/index.php [L] # Also needed if using PHP-FPM / Fast-CGI RewriteCond %{REQUEST_URI} !^/php5-fcgi/*
The above rewrite conditions rely on Apache finding the required files in /usr/share/wordpress for non-permalinks (such as wp-admin). This may require the following line to ensure it finds the index file when requesting /wp-admin/
DirectoryIndex index.php
Final reading before actual configuration
Now would be a great time to read /usr/share/doc/wordpress/README.Debian if you haven't already. All the rest of the pieces should fall into place once you do.
Amongst other things, it explains the great way that the Debian WordPress package utilises the WordPress wp-config.php framework, and more importantly, how to handle the infamous "themes" and "plugins" directories in a WordPress install. The key point is that by symlinking under /var/lib/wordpress, users better abide by the FilesystemHierarchyStandard, and can use the in-app upgrade mechanisms of WordPress to upgrade plugins and themes, without clobbering the package, and risking server security.
It also discusses the two choices regarding multi-site installs, of which this here describes the non-WordPress version.
Enable the Apache site
Now we enable the Apache site config made earlier using a2ensite, which basically just creates a symlink in /etc/apache2/sites-enabled from sites-available, then reload Apache:
a2ensite myblog.com service apache2 reload
Configure WordPress
Now, browse to your new domain, and follow the normal WP configuration process, and you should be done.
Issues
Sadly at this point, there may be some issues with symlinking, and messing around generally with WP_CONTENT_DIR.
The main bug was being tracked at https://core.trac.wordpress.org/ticket/16953. Most issues should be fixed but some things may break, especially if plugin or theme authors don't do things right when determining correct filesystem and URI paths to use.
See also
Sample configurations can be found in /usr/share/doc/wordpress/examples/
Debian specific instructions are /usr/share/doc/wordpress/README.Debian