Setup LEMP untuk Menjalankan Wordpress di Nixos

cara setup LEMP stack untuk menjalankan wordpress di nixos


JagoTekno.com - Saya memiliki beberapa projekan php, (wordpress, drupak, joomla, php native).

Untuk itu di laptop saya yang sedang terinstall Nixos, saya ingin memasang LEMP stack untuk proses development.

Kelebihan cara ini dibandingkan mengunakan ALPHP adalah kita bisa menjalankan Node.JS, sebab di ALPHP belum support NPM.

Hanya saja proses instalasinya cukup ribet. Untuk itu saya ingin mencatat apa saja yang saya lakukan sehingga proses instalasi LEMP + wordpress di Nixos akhirnya bisa berhasil.

Langsung saja.

Setup LEMP

  1. Buat file di /etc/nixos/lemp/default.nix
cd /etc/nixos/
mkdir lemp
cd lemp 
default.nix
  1. Buka file default.nix lalu isi dengan config lemp berikut.
{ lib, config, pkgs, ... }:

{

services.nginx = {
  enable = true;
  user = "nix";
# sesuaikan dengan hostname system nixos anda.
  virtualHosts."local.nixhost" = {
    enableACME = true;
    forceSSL = true;
    root = "/var/www/html";
    extraConfig = ''
    index index.php;
    '';
    locations."~ \\.php$".extraConfig = ''
      fastcgi_pass  unix:${config.services.phpfpm.pools.mypool.socket};
      fastcgi_index index.php;
    '';
     locations."/".extraConfig = ''
              try_files $uri $uri/ /index.php?$args;
     '';
     locations."~* /(?:uploads|files)/.*\.php$".extraConfig = ''
              deny all; 
     '';
     locations."~* \.(js|css|png|jpg|jpeg|gif|ico)$".extraConfig = ''
                expires max;
                log_not_found off;
     '';
  };
};


  services.mysql = {
    enable = true;
    package = pkgs.mariadb;
#    settings = { "mysqld" = { "port" = 3308; }; };
    initialScript =
      pkgs.writeText "initial-script" ''
        CREATE USER IF NOT EXISTS 'root'@'localhost' IDENTIFIED BY 'root';
        CREATE DATABASE IF NOT EXISTS wordpress;
        GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'localhost';
      '';
    ensureDatabases = [ "wordpress" ];
    ensureUsers = [
      {
        name = "root";
        ensurePermissions = {
          "root.*" = "ALL PRIVILEGES";
          "*.*" = "ALL PRIVILEGES";
        };
      }
    ];
 };
 services.longview.mysqlPasswordFile = "/run/keys/mysql.password";

security.acme = {
	acceptTerms = true;
};
security.acme.certs = {
    # sesuaikan dengan hostname system nixos anda
	"local.nixhost".email = "youremail@address.com";
};
  
  services.phpfpm.pools.mypool = {
    user = "nobody";
    settings = {
      pm = "dynamic";
      "listen.owner" = config.services.nginx.user;
      "pm.max_children" = 5;
      "pm.start_servers" = 2;
      "pm.min_spare_servers" = 1;
      "pm.max_spare_servers" = 3;
      "pm.max_requests" = 500;
    };
  };

}
  1. Edit file /etc/nixos/configuration.nix untuk include file konfigurasi LEMP yang sudah dibuat.
{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
      ./lemp/default.nix
    ];
...

#### tambahkan juga extraGroups pada user anda dengan value `nginx`
...
 users.users.nix = {
    isNormalUser = true;
    description = "nix";
    extraGroups = [ 
    "wheel" 
    "networkmanager" 
    "video" 
    "input" 
    "storage" 
    "libvirtd"
    "docker"
    "nginx"
    ];
### tambah juga package mariadb dan php yang akan digunakan oleh user nix.
    packages = with pkgs; [
    php82
    php82Packages.composer
    mariadb
    ];
    shell = pkgs.zsh;
...

### pada bagian networkikng, tambahkan extrahost supaya gampang akes hostname sendiri.
networking.extraHosts = ''
    127.0.0.1         local.nixhost
  '';
  1. Rebuild nixos, sudo nixos-rebuild switch

Test

Sekarang masuk ke /var/www/html lalu buat file baru bernama index.php.

Kemudian edit index.php lalu isi dengan baris kode ini,

<?php
phpinfo();
?>

Selanjutnya buka browser, lalu akses localhost, atau http://127.0.0.1 atau melalui http://local.nixhost yang sudah di set di sebelumnya.

Anda akan melihat informasi php yang sedang digunakan.

Sampai di sini sudah benar, artinya kita berhasil menjalankan web server nginx dan menampilkan data php yang digunakan.

Mengakses Mysql untuk membuat database baru

Untuk mengakses Mysql, cukup ketik,

mysql -u root

Cara install wordpress pada LEMP stack yang sudah dibuat pada Nixos

  1. Download wordpress lalu extract di /var/www/html/
  2. Buat database dengan command mysql -u root
  3. Install wordpress dengan mengakses browser local.nixhost/wordpress/
  4. Tidak perlu isi password database, kosongkan saja!, cukup isi:
  • database name = wordpress
  • database user = root
  • database host = localhost Selesai.

Tips

Karena secara default kita bekerja di /var/www/html, yang mana folder itu hanya bisa diakses oleh root.

Maka kita harus membuat folder ini writeable dan ubah users dan groups nya.

sudo chmod -R 777 /var/www/html
sudo chown -R username:users /var/www/html

Sekarang kita bisa bekerja di folder ini dengan normal dengan menggunakan text editor favorit (nvim, vscode, dll).

Sekian, semoga bermanfaaat.

Menampilkan Daftar Artikel Wordpress dengan Svelte Kit Melalui Wordpress Rest Api
Ditulis oleh Rafi pada Saturday, 9 September 2023
mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

    Share:

Baca juga


comments powered by Disqus