Skip to content

Instantly share code, notes, and snippets.

@mrajo
Last active May 30, 2023 15:01
Show Gist options
  • Save mrajo/ff4cc9464b58580a1a91fdb33b41f5b8 to your computer and use it in GitHub Desktop.
Save mrajo/ff4cc9464b58580a1a91fdb33b41f5b8 to your computer and use it in GitHub Desktop.
Caddy+PHP+MySQL+WordPress

Caddy+PHP+MySQL+WordPress

Install packages

sudo apt install mysql-server php7.2-common php7.2-cli php7.2-fpm php7.2-bcmath php7.2-curl php7.2-gd php7.2-mbstring php7.2-mysql

PHP setup

  1. Create document root folders
    • mkdir -p /var/www/example.com/htdocs
    • mkdir -p /var/www/example.com/logs
    • sudo chown -R www-data:www-data /var/www/example.com
    • echo -e "<?php\n\necho phpinfo();" > /var/www/example.com/htdocs/index.php
  2. Edit Caddyfile
example.com {
  root /var/www/example.com/htdocs
  log /var/www/example.com/logs/access.log
  fastcgi / /var/run/php/php7.2-fpm.sock php
}
  1. Restart Caddy service
    • sudo systemctl restart caddy
  2. Check Caddy status for errors
    • sudo systemctl status caddy
  3. Check example.com in browser; should show php info

MySQL setup

  1. sudo mysql_secure_installation
    • Setup VALIDATE PASSWORD plugin? y
    • Password Validation Policy medium
    • Set root password
    • Remove anonymous users? y
    • Disallow remote root login? y
    • Remove test database? y
    • Reload privilege tables? y
  2. Verify MySQL is running
    • sudo mysqladmin -u root -p version
    • sudo systemctl status mysql
  3. Restore data (assuming mysqldump from Webfaction)
    • sudo mysql < dumpfile.sql
  4. Create database user with access to new database
    • sudo mysql
    • create user '<username>'@'localhost' identified by 'RANMA';
    • grant all on <dbname>.* to '<username>'@'localhost';
  5. Test new user access
    • mysql -u <username> -p
    • show databases;

Copy Wordpress files

  1. rsync -arvz <local_path>/ <ssh_user>@<ssh_host>:/var/www/example.com/htdocs
  2. sudo chown -R www-data:www-data /var/www/example.com
  3. sudo chmod -R 775 /var/www/example.com/htdocs
  4. Edit wp-config.php and change database settings
  5. Edit Caddyfile to replicate Wordpress .htaccess setup
example.com {
  root /var/www/example.com/htdocs
  log /var/www/example.com/logs/access.log
  fastcgi / /var/run/php/php7.2-fpm.sock php
  rewrite {
    ext !.css !.js !.ttf !.woff
    if {path} not_match ^\/wp-admin
    to {path} {path}/ /index.php?{query}
  }
}
  1. Restart Caddy
    • sudo systemctl restart caddy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment