{"id":856,"date":"2021-12-17T01:00:00","date_gmt":"2021-12-17T00:00:00","guid":{"rendered":"https:\/\/www.anderson.nl\/?p=856"},"modified":"2021-12-17T01:00:00","modified_gmt":"2021-12-17T00:00:00","slug":"wordpress-installeren-op-raspberry-pi","status":"publish","type":"post","link":"https:\/\/anderson.nl\/?p=856","title":{"rendered":"WordPress op een Raspberry Pi"},"content":{"rendered":"\n<p>In het onderstaande artikel gaan we WordPress installeren op een Raspberry PI. We installeren deze met <a rel=\"noreferrer noopener\" href=\"https:\/\/www.nginx.com\/\" data-type=\"URL\" data-id=\"https:\/\/www.nginx.com\/\" target=\"_blank\">NGINX<\/a> en een gratis ssl certificaat van <a rel=\"noreferrer noopener\" href=\"https:\/\/letsencrypt.org\/\" data-type=\"URL\" data-id=\"https:\/\/letsencrypt.org\/\" target=\"_blank\">Let&#8217;s Encrypt<\/a>.<\/p>\n\n\n\n<p>Start met de basis installatie van de Raspberry Pi, zie <a href=\"https:\/\/www.anderson.nl\/?p=830\" data-type=\"post\" data-id=\"830\" target=\"_blank\" rel=\"noreferrer noopener\">Raspberry Pi OS installeren<\/a>. Kies de 64Bits Lite versie voor een Raspberry PI.<\/p>\n\n\n\n<p>Meld met ssh aan op je Raspberry PI.<\/p>\n\n\n\n<p>Als eerste stap gaan we er zorgen dat de Raspberry Pi helemaal up-to-date is.<br \/><strong><code>sudo apt-get update &amp;&amp; sudo apt-get upgrade<\/code><\/strong><\/p>\n\n\n\n<p>Installeer<strong> NGINX<\/strong>, <strong>MariaDB <\/strong>en <strong>PHP<\/strong> met het onderstaande commando<br \/><strong><code>sudo apt-get install -y nginx php php-fpm mariadb-server php-mysql<\/code><\/strong><\/p>\n\n\n\n<p>We gaan NGINX gebruiken dus verwijderen we Apache<br \/><strong><code>sudo apt remove apache2<\/code><\/strong><\/p>\n\n\n\n<p><strong>Installeer WordPress<\/strong> door de onderstaande command&#8217;s uit te voeren. Waar in het onderstaande wpdemo.nl staat kan je jouw domein gebruiken, dit is de folder waar je jouw website vindt.<br \/><strong><code>cd<\/code> <code>\/var\/www<\/code><\/strong><br \/><strong><code>sudo wget https:\/\/wordpress.org\/latest.tar.gz<br \/>sudo tar xvfz latest.tar.gz<br \/>sudo rm latest.tar.gz<br \/>sudo mv wordpress wpdemo.nl<\/code><br \/><code>sudo<\/code> <code>chown<\/code> <code>-R www-data:www-data \/var\/www\/wpdemo.nl<\/code><\/strong><\/p>\n\n\n\n<p><strong>Aanmaken NGINX<\/strong> configuratie bestand. Type het onderstaande commando.<br \/><code><strong>sudo nano \/etc\/nginx\/sites-enabled\/wpdemo.nl.conf<\/strong><\/code><br \/><br \/>Plaats de onderstaande tekst in het scherm dat nu open staat. Vervang wpdemo.nl door jouw domein en vervang het subnet door jou subnet. Sla het bestand op met <strong>Ctrl-O<\/strong> en daarna <strong>Enter<\/strong>, <strong>Ctrl-X<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># WordPress single site rules.\n# Designed to be included in any server {} block.\n# Upstream to abstract backend connection(s) for php\nupstream php {\n        server unix:\/run\/php\/php8.2-fpm.sock;\n}\nserver {\n        listen   80;\n        ## Your website name goes here.\n        server_name <span class=\"has-inline-color has-vivid-red-color\">wpdemo.nl www.wpdemo.nl<\/span>;\n        ## Your only path reference.\n        root \/var\/www\/<span class=\"has-inline-color has-vivid-red-color\">wpdemo.nl<\/span>;\n        ## This should be in your http block and if it is, it's not needed here.\n        index index.php;\n        location = \/favicon.ico {\n                log_not_found off;\n                access_log off;\n        }\n        location = \/robots.txt {\n                allow all;\n                log_not_found off;\n                access_log off;\n        }\n        location \/ {\n                # This is cool because no php is touched for static content.\n                # include the \"?$args\" part so non-default permalinks doesn't break when using query string\n                try_files $uri $uri\/ \/index.php?$args;\n        }\n        location ~ \\.php$ {\n                #NOTE: You should have \"cgi.fix_pathinfo = 0;\" in php.ini\n                include fastcgi.conf;\n                fastcgi_intercept_errors on;\n                fastcgi_pass php;\n                fastcgi_buffers 16 16k;\n                fastcgi_buffer_size 32k;\n        }\n        location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ {\n                expires max;\n                log_not_found off;\n        }\n# Deny access to any files with a .php extension in the uploads directory\n# Works in sub-directory installs and also in multisite network\n# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)\n        location ~* \/(?:uploads|files)\/.*\\.php$ {\n                deny all;\n       }\n# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).\n# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)\n        location ~ \/\\. {\n                deny all;\n       }\n#WP-Admin block external access\n        location \/wp-admin {\n                allow <span class=\"has-inline-color has-vivid-red-color\">192.168.178.0\/24<\/span>;\n                deny all;\n                include snippets\/fastcgi-php.conf;\n                fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\n                fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n   }\n        location = \/wp-login.php {\n                allow   <span class=\"has-inline-color has-vivid-red-color\">192.168.178.0\/24<\/span>;\n                deny    all;\n                include snippets\/fastcgi-php.conf;\n                fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock;\n    }\n}<\/code><\/pre>\n\n\n\n<p><strong>Aanpassen van het standaard NGINX<\/strong> configuratie bestand.<br \/>Type het onderstaande commando.<br \/><strong><code>sudo nano \/etc\/nginx\/sites-enabled\/default<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-black-color has-text-color\"><code>server {\n        listen 80 default_server;\n        listen &#91;::]:80 default_server;\n        # SSL configuration\n        root \/var\/www\/<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">wpdemo.nl<\/mark>;\n        index index.html index.htm index.nginx-debian.html;\n        server_name _;\n        location \/ {\n                # First attempt to serve request as file, then\n                # as directory, then fall back to displaying a 404.\n                try_files $uri $uri\/ =404;\n        }\n}<\/code><\/pre>\n\n\n\n<p>Herstart nu NGINX om de configuratie uit te voeren.<br \/><strong><code>sudo<\/code> <code>systemctl restart ngi<\/code><\/strong><code><strong>nx.service<\/strong><\/code><\/p>\n\n\n\n<p>Controleer met het onderstaande commando of er geen fouten in de conf file zitten.<br \/><strong><code>sudo nginx -t<\/code><\/strong><\/p>\n\n\n\n<p>Type de onderstaande commando&#8217;s in om een database en user aan te maken voor WordPress.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>sudo mariadb\nCREATE DATABASE wpdemo<\/strong>;\n<strong>CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'jouwwachtwoordhier<\/strong>';\n<strong>GRANT ALL ON wpdemo.* TO 'wpuser'@'localhost';<\/strong>\n<strong>EXIT;<\/strong><\/code><\/pre>\n\n\n\n<p>WordPress adviseert om de regel<strong> cgi.fix_pathinfo = 0<\/strong> toe te passen. Open met het onderstaande commando het bestand en pas dit aan. Zoeken doe je in Nano met <strong>Ctrl-W<\/strong>. Sla het bestand op met <strong>Ctrl-O<\/strong> en daarna <strong>Enter<\/strong>, <strong>Ctrl-X<\/strong>. <br \/><strong><code>sudo nano \/etc\/php\/8.2\/fpm\/php.ini<\/code><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"688\" height=\"133\" src=\"http:\/\/anderson.nl\/wp-content\/uploads\/2021\/12\/image-11.png\" alt=\"\" class=\"wp-image-871\"\/><\/figure>\n\n\n\n<p><strong>Aanpassen WordPress<\/strong> configuratie, voer de onderstaande commando&#8217;s uit, waar wpdemo.nl staat voer je jouw domein in.<br \/><strong><code>sudo<\/code> <code>mv<\/code> <code>\/var\/www\/wpdemo.nl\/wp-config-sample.php \/var\/www\/wpdemo.nl\/wp-config.php<\/code><br \/><code>sudo nano \/var\/www\/wpdemo.nl\/wp-config.php<\/code><\/strong><\/p>\n\n\n\n<p>In het wp-config.php bestand geef je jou database en username op en het wachtwoord. Wat verder naar beneden staat de WordPress api gedefinieerd, ga naar  <strong>https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/<\/strong> om hier jouw unieke configuratie binnen te halen. Zie hieronder het voorbeeld.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"940\" src=\"http:\/\/anderson.nl\/wp-content\/uploads\/2021\/12\/image-12.png\" alt=\"\" class=\"wp-image-873\"\/><\/figure>\n\n\n\n<p>We gaan nu lokaal testen of het werkt, pas hiervoor de host file aan, in Windows vindt je die in C:\\Windows\\System32\\drivers\\etc. Voeg het IP adres en hostname toe aan de host file.<\/p>\n\n\n\n<p><code><strong>192.168.178.178 wpdemo.nl<br \/>192.168.178.178 www.wpdemo.nl<\/strong><\/code><\/p>\n\n\n\n<p>Als je nu in de browser naar de opgegeven domeinnaam gaat kan je verder gaan met de WordPress setup. Doorloop de stappen en kies <strong>WordPress installeren<\/strong>, je kan nu aanmelden. Zoals je gezien hebt heeft de site nog geen certificaat, dus sla de volgende stap niet over.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"744\" src=\"http:\/\/anderson.nl\/wp-content\/uploads\/2021\/12\/image-13.png\" alt=\"\" class=\"wp-image-876\" style=\"width:445px;height:347px\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"937\" src=\"http:\/\/anderson.nl\/wp-content\/uploads\/2021\/12\/image-14.png\" alt=\"\" class=\"wp-image-877\" style=\"width:441px;height:497px\"\/><\/figure>\n\n\n\n<p><strong>Installatie Certbot<\/strong>, Voor deze stap is het nodig dat je een portforwarding van port 80 en 443 naar je RaspBerry Pi hebt open staan ander wordt het domein niet herkend. Uiteraard moet er ook een A record aangemaakt worden naar jou externe IP adres. Doe dit dus eerst.<br \/><strong><code>sudo apt install certbot python3-certbot-nginx<\/code><br \/><code>sudo certbot --nginx<\/code><\/strong><br \/>1. Vul jouw e-mailadres in<br \/>2. <strong>Y<\/strong> Enter<br \/>3. <strong>Y<\/strong> Enter<br \/>4. Kies je domein bijvoorbeeld <strong>1,2<\/strong> Enter<\/p>\n\n\n\n<p>Je Certificaat is aangemaakt en drie maanden geldig.<br \/>We gaan er nu voor zorgen dat het certificaat automatisch verleng t wordt, door een crontab aan te maken.<br \/><code><strong>sudo crontab -e<\/strong><\/code><\/p>\n\n\n\n<p>Voer de onderstaande regel toe en sla het bestand op met <strong>Ctrl-O<\/strong> en daarna <strong>Enter<\/strong>, <strong>Ctrl-X<\/strong>.  <code><br \/><strong>0 0 * * 1 certbot renew<\/strong><\/code><\/p>\n\n\n\n<p>We maken nu een Diffie-Hellman group aan de uitwisseling van strek beveiligde sleutels regelt. Dit duurt aardig lang.<br \/><code><strong>sudo openssl dhparam -out \/etc\/ssl\/certs\/dhparam.pem 2048<\/strong><\/code><\/p>\n\n\n\n<p>Herstart NGINX<br \/><strong><code>sudo<\/code> <code>systemctl restart ngi<\/code><\/strong><code><strong>nx.service<\/strong><\/code> <\/p>\n\n\n\n<p><br \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In het onderstaande artikel gaan we WordPress installeren op een Raspberry PI. We installeren deze met NGINX en een gratis ssl certificaat van Let&#8217;s Encrypt. Start met de basis installatie van de Raspberry Pi, zie Raspberry Pi OS installeren. Kies de 64Bits Lite versie voor een Raspberry PI. Meld met <a href=\"https:\/\/anderson.nl\/?p=856\" class=\"btn btn-link continue-link\">Lees verder<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-856","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/anderson.nl\/index.php?rest_route=\/wp\/v2\/posts\/856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anderson.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anderson.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anderson.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/anderson.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=856"}],"version-history":[{"count":0,"href":"https:\/\/anderson.nl\/index.php?rest_route=\/wp\/v2\/posts\/856\/revisions"}],"wp:attachment":[{"href":"https:\/\/anderson.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anderson.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anderson.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}