70 lines
2.4 KiB
Bash
70 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
# ====== CONFIGURATION ======
|
|
HOSTNAME="10.28.24.47" # IP-based access
|
|
SITE_CONF="/etc/apache2/sites-available/wordpress.conf"
|
|
WEB_ROOT="/srv/www/wordpress"
|
|
DB_PASSWORD="changeme123"
|
|
# ============================
|
|
|
|
# Update system
|
|
apt update
|
|
apt upgrade -y
|
|
|
|
# Install required packages
|
|
apt install -y apache2 ghostscript libapache2-mod-php mysql-server php php-bcmath php-curl php-imagick php-intl php-json php-mbstring php-mysql php-xml php-zip
|
|
|
|
# Create WordPress directory and download
|
|
mkdir -p /srv/www
|
|
chown www-data: /srv/www
|
|
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
|
|
|
|
# Configure Apache VirtualHost
|
|
cat << EOF | sudo tee "$SITE_CONF" > /dev/null
|
|
<VirtualHost *:80>
|
|
ServerName $HOSTNAME
|
|
DocumentRoot $WEB_ROOT
|
|
<Directory $WEB_ROOT>
|
|
Options FollowSymLinks
|
|
AllowOverride Limit Options FileInfo
|
|
DirectoryIndex index.php
|
|
Require all granted
|
|
</Directory>
|
|
<Directory $WEB_ROOT/wp-content>
|
|
Options FollowSymLinks
|
|
Require all granted
|
|
</Directory>
|
|
</VirtualHost>
|
|
EOF
|
|
|
|
# Enable site and modules, disable default
|
|
a2ensite wordpress.conf
|
|
a2enmod rewrite
|
|
a2dissite 000-default.conf
|
|
systemctl reload apache2
|
|
|
|
# Create WordPress database and user
|
|
sudo mysql -u root <<EOF
|
|
CREATE DATABASE IF NOT EXISTS wordpress;
|
|
CREATE USER IF NOT EXISTS 'wordpress'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
|
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON wordpress.* TO 'wordpress'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
-- Update WordPress site URLs
|
|
USE wordpress;
|
|
UPDATE wp_options SET option_value = 'http://$HOSTNAME' WHERE option_name = 'siteurl';
|
|
UPDATE wp_options SET option_value = 'http://$HOSTNAME' WHERE option_name = 'home';
|
|
EOF
|
|
|
|
# Create wp-config.php from the sample
|
|
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
|
|
|
|
# Replace database settings in wp-config.php
|
|
sudo -u www-data sed -i "s/database_name_here/wordpress/" /srv/www/wordpress/wp-config.php
|
|
sudo -u www-data sed -i "s/username_here/wordpress/" /srv/www/wordpress/wp-config.php
|
|
sudo -u www-data sed -i "s/password_here/${DB_PASSWORD}/" /srv/www/wordpress/wp-config.php
|
|
|
|
# Replace salts in wp-config.php
|
|
WP_CONFIG="/srv/www/wordpress/wp-config.php"
|
|
sed -i "/AUTH_KEY/d;/SECURE_AUTH_KEY/d;/LOGGED_IN_KEY/d;/NONCE_KEY/d;/AUTH_SALT/d;/SECURE_AUTH_SALT/d;/LOGGED_IN_SALT/d;/NONCE_SALT/d" "$WP_CONFIG"
|
|
curl -s https://api.wordpress.org/secret-key/1.1/salt/ >> "$WP_CONFIG"
|