Deploying Wordpress
This is a basic guide on how to install wordpress on Debian 11 manually, there is an easier way to deploy wordpress via docker
Install MariaDB
sudo apt-get install mariadb-server -y
Now log into the database
sudo mysql
Create the wordpress database, and then create a wordpress user that will have access to it. Be sure to change the passwordHere text.
CREATE database wordpress;
GRANT ALL ON `wordpress`.* to wordpress@localhost identified by 'passwordHere';
Install Apache and PHP
sudo apt-get install -y \
apache2 libapache2-mod-php7.0 \
php7.0-cli php7.0-mysql
Download wordpress
wget https://wordpress.org/latest.zip
Optional - Create Wordpress SSH User
I use SSH to update my wordpress instances, and wish to use a non-sudo user to do this. Thus I will create a wordpress user at this point.
sudo adduser wordpress
Install Wordpress
sudo apt-get install unzip -y \
&& unzip latest.zip \
&& sudo mkdir -p /var/www/wordpress \
&& sudo mv wordpress /var/www/wordpress/public_html \
&& sudo chown -R wordpress:www-data -R /var/www/wordpress \
&& sudo chmod 750 -R /var/www/wordpress
Set Umask and Add to Group
Lets set the umask and add the www-data user to the wordpress group, so that if the wordpress user creates files, the apache server can still read them.
sudo adduser www-data wordpress \
&& cd /var/www/wordpress \
&& umask 027
Using umask of 027 means that new files will have 740 (-rwxr-----) permissions, but new directories will have 750 (-rwxr-x---).
Update Apache
sudo vim /etc/apache2/sites-available/000-default.conf
Replace it with:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wordpress/public_html
<Directory /var/www/wordpress/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
This assumes this webserver is dedicated to just serving up the wordpress site. E.g. a VPS.
Restart apache for the changes to take effect
sudo service apache2 restart
Optional - Enable URL Rewrite
Your more than likely to want this feature. If you're unsure, I would err on the side of enabling it.
sudo a2enmod rewrite
sudo service apache2 restart