Support #964
Updated by Daniel Curtis about 4 years ago
{{>toc}}
This is a guide on setting up WordPress with Nginx on FreeBSD 12.
h1. Prepare the Environment
* Before installation of the components, make sure everything is up to date using the following command:
<pre>
pkg update -f && pkg upgrade
</pre>
* Create the wordpress user:
<pre>
pw user add -n wordpress -s /sbin/nologin -c "WordPress"
</pre>
---
h1. Install Nginx
* Install Nginx
<pre>
pkg install nginx
</pre>
* Create a configuration directory to make managing individual server blocks easier
<pre>
mkdir /usr/local/etc/nginx/conf.d
</pre>
* Edit the main nginx config file:
<pre>
vi /usr/local/etc/nginx/nginx.conf
</pre>
#* And strip down the config file and add the include statement at the end to make it easier to handle various server blocks:
<pre>
worker_processes 1;
error_log /var/log/nginx-error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# Load config files from the /etc/nginx/conf.d directory
include /usr/local/etc/nginx/conf.d/*.conf;
}
</pre>
---
h1. Install MySQL Server
* Start by installing the mariadb100-server and mariadb100-client packages:
<pre>
pkg install mariadb105-{server,client}
</pre>
* Enable and start mysql at boot:
<pre>
sysrc mysql_enable=YES
service mysql-server start
</pre>
* Prepare the database for use by running the secure installation:
<pre>
mysql_secure_installation
</pre>
#* *NOTE*: +Choose a strong root password+ and answer +yes+ to all questions.
h2. Create Databases and Users
* Login to MySQL and create appropriate databases and users.
<pre>
mysql -u root -p
</pre>
#* and run the following SQL queries to create the *wordpressdb* database and *wordpressuser* user:
<pre>
CREATE DATABASE wordpressdb CHARACTER SET utf8;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'SuperSecretPassword';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
quit
</pre>
---
h1. Install WordPress
* Install wordpress:
<pre>
pkg install wordpress
</pre>
Create the wordpress php-fpm pool config file:
<pre>
vi /usr/local/etc/php-fpm.d/wordpress.example.com.conf
</pre>
*# And add the following:
<pre>
[wordpress.example.com]
user = wordpress
group = www
listen = /var/run/wordpress.sock
listen.owner = wordpress
listen.group = www
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[post_max_size] = 12M
php_admin_value[upload_max_filesize] = 10M
</pre>
* Create an *wordpress.example.com server block* config file:
<pre>
vi /usr/local/etc/nginx/conf.d/wordpress.example.com.conf
</pre>
#* Add the following:
<pre>
server {
listen 80;
server_name wordpress.example.com;
root /usr/local/www/wordpress;
index index.php index.html index.htm;
client_max_body_size 12m;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/wordpress.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
</pre>
* Change the ownership of the wordpress directory:
<pre>
chown -R wordpress:www /usr/local/www/wordpress
</pre>
* Restart nginx and start php-fpm:
<pre>
sysrc nginx_enable=YES
service nginx restart
sysrc php_fpm_enable=YES
service php-fpm start
</pre>
* Now open up a web browser and go to http://wordpress.example.com to finish the setup process.
h2. Resources
* https://techviewleo.com/install-wordpress-with-nginx-php-fpm-on-freebsd/