This is a note on setting up wordpress on my arch.
Things you’ll need
php, nginx, mysql (mariadb) etc
sudo pacman -S php php-{fpm,gpsql,gd,cgi} uwsgi-plugin-php
sudo pacman -S mariadb libmariadbclient mariadb-clients
sudo pacman -S nginx
wordpress
prefer not using
While it is easier to let pacman manage updating your WordPress install, this is not necessary. WordPress has functionality built-in for managing updates, themes, and plugins.
sudo pacman -S wordpress
While it is easier to let pacman manage updating your WordPress install, this is not necessary. WordPress has functionality built-in for managing updates, themes, and plugins.
- download:
wget https://wordpress.org/latest.tar.gz
- extract:
tar -xf latest.tar.gz
- chown to your nginx worker:
ps aux | grep nginx
to see your worker’s namesudo chown -R http:http wordpress
- move to somewhere like:
sudo mv wordpress /srv/http/mysite.com
,sudo mv wordpress /var/www/html/mysite.com
Setup database
- enable startup:
sudo systemctl enable mysqld.service
- start now:
sudo systemctl start mysqld.service
- to make your MariaDB installation secure:
sudo mysql_secure_installation
(yes to all) mysql -u root -p
- CREATE DATABASE mysite;
- CREATE USER ‘mysiteadmin’@’localhost’ IDENTIFIED BY ‘password’;
- GRANT ALL PRIVILEGES ON mysite.* TO ‘mysiteadmin’@’localhost’ IDENTIFIED BY ‘password’;
- FLUSH PRIVILEGES;
- EXIT;
Setup php
- enable startup:
sudo systemctl enable php-fpm
- start now:
sudo systemctl start php-fpm
sudo vim /etc/php/php.ini
uncomment lines to enable some extensions- extension=gd
- extension=mysqli
- extension=pgsql
- you may need to restart php-fpm:
sudo systemctl restart php-fpm
Setup nginx
enable startup:
sudo systemctl enable nginx
start now:
sudo systemctl start nginx
sudo vim /etc/nginx/nginx.conf
- comment or delete servers that you don’t need
- at the end of http block add:
include sites-enablesd/*
sudo mkdir /etc/nginx/{sites-enabled,sites-available}
add server in
sudo vim /etc/nginx/sites-available/mysite.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
server { listen 80; listen [::]:80; root /srv/http/mysite.com; index index.php index.html index.htm; server_name mysite.com; error_log /var/log/nginx/mysite.com_error.log; access_log /var/log/nginx/mysite.com_access.log; client_max_body_size 100M; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # 404 try_files $fastcgi_script_name =404; # default fastcgi_params include fastcgi_params; # fastcgi settings fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; # fastcgi params fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; #fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/"; } }
add soft link to this server config:
cd /etc/nginx/sites-enabled; ln -s ../sites-available/mysite.com mysite.com
reload config:
sudo nginx -s reload
Setup wordpress
cd /srv/http/mysite.com/; sudo cp -p wp-config-sample.php wp-config.php
sudo vim wp-config.php
, set information as in your database- define( ‘DB_NAME’, ‘mysite’ );
- define( ‘DB_USER’, ‘mysiteadmin’ );
- define( ‘DB_PASSWORD’, ‘password’ );
- go to your browser for more setups.
Trouble Shooting
- in the wp-config.php file, change
define('WP_DEBUG', false)
todefine('WP_DEBUG', true)
to enable debugging information on your site.