Tag Archives

9 Articles
Sesi PHP dengan Redis pada PHP 7.2

Sesi PHP dengan Redis pada PHP 7.2

 “Well, hell! PMP exam topics That’s no excuse for insulting me! You PMP exam topics 300-320 questions pdf are 300-320 questions pdf Ma’s PMP exam topics PMP exam topics own blood son, but did PMP exam topics she take on that time PMP exam topics Tony Fontaine shot you in the leg? 70-532 answer analysis No, she 70-532 answer analysis just 300-320 questions pdf sent for old Doc 70-532 answer analysis Fontaine to dress it and asked the doctor what ailed Tony’s aim. Said she guessed licker was spoiling his marksmanship. Remember how mad that made Tony?”Both boys yelled 70-532 answer analysis with laughter.“Ma’s a card!” said Brent with loving approval. “You can always count on her to do the right thing 300-320 questions pdf and 70-532 answer analysis not embarrass you in front of PMP exam topics folks.”  But Gerald remained Gerald. 300-320 questions pdf His habits PMP exam topics of living and his ideas changed, but his manners he would 300-075 certification exam not change, 300-075 certification exam even had he been 70-532 answer analysis able to change them. He admired 300-320 questions pdf the drawling 300-075 certification exam elegance of the 300-075 certification exam wealthy rice and cotton planters, who rode into Savannah from their moss-hung kingdoms, mounted 70-532 answer analysis on 300-320 questions pdf thoroughbred horses and followed by the carriages of their 300-320 questions pdf equally elegant ladies 70-532 answer analysis and the wagons 300-320 questions pdf of their slaves. But Gerald could never attain elegance. 70-532 answer analysis Their lazy, blurred voices fell pleasantly 300-075 certification exam 300-075 certification exam 300-320 questions pdf on PMP exam topics his PMP exam topics ears, but his 300-075 certification exam PMP exam topics own 300-075 certification exam brisk brogue clung to his tongue. He liked the casual 70-532 answer analysis 300-075 certification exam grace with which they PMP exam topics conducted affairs 300-320 questions pdf of importance, 300-320 questions pdf risking 300-320 questions pdf a fortune, a plantation or a slave 70-532 answer analysis 300-075 certification exam on the 300-075 certification exam turn 70-532 answer analysis of a card and writing off their losses with careless good humor and no more ado than when they scattered 300-320 questions pdf pennies to pickaninnies. But Gerald had known poverty, and PMP exam topics he could never PMP exam topics learn to lose money with 70-532 answer analysis good 300-075 certification exam humor or good 300-320 questions pdf 70-532 answer analysis 300-320 questions pdf grace. They were PMP exam topics a pleasant race, these coastal Georgians, with their soft-voiced, 70-532 answer analysis PMP exam topics quick rages and their charming inconsistencies, and Gerald liked them. But 300-075 certification exam there was a 300-075 certification exam brisk and 70-532 answer analysis restless vitality 300-075 certification exam about the young Irishman, fresh from a country where winds blew wet and chill, where misty swamps held no fevers, that 300-075 certification exam set him apart from these indolent gentle-folk of semi-tropical weather and malarial marshes.

Saya menggunakan pwgen untuk membuat sandi:

sudo apt install pwgen

Pemasangan

Pasang modul PHP Redis dan peladen Redis.

sudo apt install php-redis redis-server

Karena Anda sering bandel dan main salin saja, maka saya tunjukkan pembuatan sandi yang benar:

export REDIS_PASSWORD=`pwgen 32 1`

Saya asumsikan ada sebuah variabel $REDIS_PASSWORD yang berisi sandi yang benar. Untuk contoh saya, saya gunakan perkakas pwgen untuk menghasilkan sandi 32 karakter. Silakan gunakan sandi sendiri.

Selanjutnya, tambahkan sandi pada Redis:

echo requirepass $REDIS_PASSWORD  | sudo tee -a /etc/redis/redis.conf

dan PHP 7.2:

$ sudo tee /etc/php/7.2/fpm/conf.d/99-redis-session.ini << EOF
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=$REDIS_PASSWORD"
EOF

Untuk penambahan konfigurasi sebaiknya jangan di berkas php.ini. Gunakan berkas terpisah supaya ketika terjadi pembaharuan Debian tidak menimpa konfigurasi yang sudah dimodifikasi.

Muat ulang Redis dan PHP-FPM:

sudo /etc/init.d/redis-server restart
sudo /etc/init.d/php7-fpm stop && sudo /etc/init.d/php7-fpm start

Selesai.

TIPS #1

Untuk menguji apakah Redis berjalan dengan baik, jalankan:

$ redis-cli  -a $REDIS_PASSWORD  keys '*'
1) "PHPREDIS_SESSION:v61gelc0g2vgv6etgst6q3ipm6"
2) "PHPREDIS_SESSION:a286kiqjskupugblas2g6r85lv"
3) "PHPREDIS_SESSION:di8au2o81r8t299br1fpnedmb3"
4) "PHPREDIS_SESSION:bnfsp1587div8pgvdj3qbfq6fu"
5) "PHPREDIS_SESSION:g43f0qiivi182dmriq1g6qa1ak"
6) "PHPREDIS_SESSION:134bts56qhmvm3v5mpvr9ne3nh"
7) "PHPREDIS_SESSION:da38q9a555m2q55m0b5rtocpne"

 

Bacaan Lebih Lanjut

WordPress 4.9.1 dengan PHP 7.2

WordPress 4.9.1 dengan PHP 7.2

Saya biasanya kalau mau memperbaharui WordPress selalu menunggu versi minor .1 atau lebih. Soalnya, suka ada perilaku tak terduga kalau versi mayor baru terbit. Kali ini, WordPress 4.9.1 sudah terbit.

Menurut situsnya, WordPress merekomendasikan penggunaan PHP 7.2. Saya sendiri baru tahu kalau sudah ada PHP 7.2. Pantas saja WordPress berhenti di versi 4.8.4 pada beberapa peladen.

Saatnya memasang PHP 7.2!

Pemasangan PHP 7.2

Saya pernah membahas tentang PHP 7.1+ di artikel terdahulu. Jadi, ini sekedar mengulang saja.

Aktifkan modul APT untuk mengakses repo berbasis HTTPS dan beberapa paket lainnya.

sudo apt-get install apt-transport-https lsb-release ca-certificates

Aktifkan repo Suri.

wget -O- https://packages.sury.org/php/apt.gpg | sudo apt-key add -
echo "deb https://packages.sury.org/php/ jessie main" | sudo tee -a /etc/apt/sources.list.d/php-sury.list
sudo apt update

Lalu, pasang PHP 7.2 untuk menggantikan PHP 5.

sudo apt install php7.2-fpm php7.2-curl php7.2-gd php7.2-imagick php7.2-json php7.2-mysql php7.2-readline php-redis php7.2-xml php7.2-mbstring php7.2-zip php7.2-mysql

Kalau hanya sekedar php-fpm, yang terpasang bakal versi 7.1. Harus secara eksplisit disebutkan versi 7.2.

Selanjutnya, menyalin konfigurasi fpm dari /etc/php5/fpm/pool.d ke /etc/php/7.2/fpm/pool.d untuk setiap pool.

Saya sejauh ini tidak ada masalah.

Fungsi Yang Mulai Ditinggalkan

Nampaknya PHP7 dan terbaru hendak dibuat menjadi domain yang ketat (strict typecast). Mungkin pengembang PHP ingin menjadikan PHP sebagai bahasa yang lebih aman. Kalau saya melihat log, biasanya akan diprotes bentuk akses senarai (array). Saya mendapati fungsi count() terutama yang paling sering dicatat.

count(): Parameter must be an array or an object that implements Countable in ...

Ada orang-orang yang memutuskan untuk kembali ke PHP 7.1. Tapi saya tidak! Agar sesuai dengan PHP7.2 dan terbaru, misalnya ada variabel:

count($elements[‘#value’])

count ( $elements )

Diubah dengan menambahkan uji tipe senarai :

is_array ( $elements ) && count ( $elements )

Atau, saat diubah menjadi tipe senarai:

$elements = ( array ) $source->getElements();

Penyebab ini semua kalau saya lihat di kode sumber WordPress adalah biasanya karena penggunaan variabel global.

Untung saja, untuk yang lain pun WordPress dan plugin-nya sudah cukup bersahabat.

Bacaan Lebih Lanjut

Repositori Suri untuk PHP 7.1+

Repositori Suri untuk PHP 7.1+

Plessis mengumumkan bahwa dia sudah tidak mau lagi mengelola pemaketan PHP terbaru di Dotdeb. Dia kemudian menyarankan untuk menggunakan repositori dari Sury, seorang pengelola resmi pemaketan PHP dari Debian.

Karena Sury menggunakan HTTPS, jangan lupa pasang dulu transportasi HTTPS untuk APT:

sudo apt install apt-transport-https

Cara menambahkan:

wget -O- https://packages.sury.org/php/apt.gpg | sudo apt-key add -
echo "deb https://packages.sury.org/php/ jessie main" | sudo tee -a /etc/apt/sources.list.d/php-sury.list
sudo apt update

Selesai. Secara baku, paket PHP yang dipilih adalah 7.1. Namun, Sury menyediakan juga untuk paket PHP 7.0.

Memasang Laravel dengan SQLite3

Memasang Laravel dengan SQLite3

Saya lupa untuk memasang contoh kalau sudah benar di artikel sebelum ini. Ya, sudah, kalau begitu kita coba saja Laravel dengan SQLite3 sebagai basisdatanya.

Buat Situs Baru

Jalankan perintah berikut:

laravel new situs-sqlite && cd situs-sqlite

Tergantung kecepatan koneksi Anda, Anda bisa mandi dulu. Sudah mandi, ‘kan?

Modifikasi Konfigurasi untuk SQLite3

Ubah berkas .env membuat semua variabel dengan awalan DB_ dan tambahkan variabel untuk SQLite.

sed -i "/DB/d"  .env
echo "DB_CONNECTION=sqlite" >> .env
echo "DB_DATABASE='storage/testdb.sqlite'" >> .env

Buat sebuah basis data baru.

touch storage/testdb.sqlite

Jalankan migrasi.

php artisan migrate

Jalankan peladen Laravel. Untuk kesenangan semata, saya menjalankan pada port yang berbeda.

php artisan serve --host 10.0.2.15 --port 8001

Ya, IP yang aneh itu adalah IP lokal VirtualBox. Saya menggunakan itu agar port-nya dapat diteruskan ke inang. Sehingga, saya bisa mengakses dari peramban saya sendiri.

Kalau benar tampilannya akan seperti berikut:

Laravel first-app.

Memasang Laravel pada Debian Jessie

Memasang Laravel pada Debian Jessie

Laravel bisa dengan PHP 5.6, tetapi lebih baik gunakan versi 7 saja. Versi 7 ada di DotDeb.

Persiapan

Pemasangan repo DotDeb dengan membuat /etc/apt/sources.list.d/dotdeb.list

echo "deb http://packages.dotdeb.org jessie all" | sudo tee -a /etc/apt/sources.list.d/dotdeb.list
echo "deb-src http://packages.dotdeb.org jessie all" | sudo tee -a /etc/apt/sources.list.d/dotdeb.list

Daftarkan kunci  repositori DotDeb dan kemudian perbaharui daftar paket.

wget -O- https://www.dotdeb.org/dotdeb.gpg  | sudo apt-key add
sudo apt update

Pasang Perkakas

Pasang hal-hal remeh.

sudo apt install unzip git

Pasang PHP7.

sudo apt install php-cli php-pgsql php-mysql php-sqlite3 php-mbstring php-xml php-zip

Pasang Composer.

sudo wget https://getcomposer.org/download/1.4.2/composer.phar -O /usr/local/bin/composer && sudo chmod +x /usr/local/bin/composer

Tambahkan PATH untuk Composer.

echo "PATH=\$PATH\:\$HOME/.composer/vendor/bin"  >> ~/.bashrc

Tak perlu keluar:

source ~/.bashrc

Pasang Laravel.

composer global require "laravel/installer"

Selesai.

 The twins looked at each other jubilantly but with some surprise. Although 70-534 answer analysis they 70-534 answer analysis considered themselves Scarlett’s favored suitors, they had never before gained tokens ADM-201 exam dumps of this favor so easily. Usually she made them beg and plead, while she put them off, CISSP exam topics refusing to give a 70-534 answer analysis Yes or No answer, laughing if they sulked, growing cool if they became angry. And here she had practically promised them 70-534 answer analysis the ADM-201 exam dumps whole of tomorrow—seats by her at 70-534 answer analysis the barbecue, all the waltzes (and they’d see to it that the dances were CISSP exam topics all waltzes!) and the supper intermission. This was worth getting expelled from the university.Filled ADM-201 exam dumps with new enthusiasm by their success, they CISSP exam topics lingered on, talking about the barbecue 70-534 answer analysis and the ball and Ashley Wilkes 300-208 study material CISSP exam topics and Melanie Hamilton, CISSP exam topics interrupting each other, making jokes and laughing at them, hinting broadly for invitations 300-208 study material to supper. ADM-201 exam dumps Some time had passed before they realized that Scarlett was having very little to say. The atmosphere had somehow changed. Just how, the twins did not know, but the fine glow had gone out of the afternoon. Scarlett seemed to ADM-201 exam dumps be paying little attention to 70-534 answer analysis what they 300-208 study material 70-534 answer analysis ADM-201 exam dumps said, although she made the correct answers. Sensing something they 300-208 study material could not understand, baffled and annoyed by it, the twins struggled along for a while, and then rose reluctantly, ADM-201 exam dumps looking at their 300-208 study material watches.The sun was low CISSP exam topics across the new-plowed fields and the tall woods across the river ADM-201 exam dumps were looming ADM-201 exam dumps blackly in silhouette. Chimney swallows were darting swiftly across the yard, and chickens, ducks and turkeys were waddling 70-534 answer analysis and strutting and straggling in from the fields.Stuart bellowed: “Jeems!” And after an interval a 70-534 answer analysis tall black boy of their own age ran breathlessly around CISSP exam topics the house and out toward the ADM-201 exam dumps tethered horses. Jeems was their 300-208 study material body servant and, like CISSP exam topics the dogs, accompanied them everywhere. He had been CISSP exam topics their childhood playmate and had been given to the twins for their own ADM-201 exam dumps on their tenth birthday. At the sight of him, CISSP exam topics CISSP exam topics the Tarleton hounds rose up out of the red dust and stood waiting expectantly for their masters. The 300-208 study material boys bowed, shook hands and 300-208 study material told CISSP exam topics Scarlett they’d be over 300-208 study material at the 300-208 study material Wilkeses’ early in the morning, waiting for her. Then CISSP exam topics they were ADM-201 exam dumps off down the 70-534 answer analysis walk CISSP exam topics at a rush, mounted their horses and, followed by ADM-201 exam dumps ADM-201 exam dumps Jeems, went down the avenue of cedars at a gallop, waving their hats and yelling back to her.When they had rounded the curve of the dusty road that hid them from Tara, Brent drew his horse to a ADM-201 exam dumps stop under a clump of dogwood. Stuart halted, 70-534 answer analysis too, and the darky boy pulled up a few paces behind 300-208 study material them. The horses, feeling slack reins, 300-208 study material stretched down their necks to crop the tender spring grass, and the patient hounds lay down again in the 300-208 study material CISSP exam topics soft red dust and looked up longingly at the chimney swallows circling in the gathering dusk. 300-208 study material Brent’s wide ingenuous face was puzzled and mildly indignant.“Look,” he said. “Don’t it look to you like she 70-534 answer analysis would of asked us to stay for supper?”  Nor did 70-534 answer analysis James and Andrew, who took him into their store in Savannah, regret his lack of education. His clear hand, his 300-208 study material accurate CISSP exam topics figures and his shrewd ADM-201 exam dumps ability in bargaining won their respect, where a knowledge 70-534 answer analysis of literature and a fine appreciation of music, had young 300-208 study material Gerald possessed them, would have moved them to snorts of contempt. America, in the early years of the century, had been kind to the Irish. James and Andrew, who had begun by hauling goods in covered wagons 70-534 answer analysis from Savannah to Georgia’s inland towns, had prospered into a store of their own, and Gerald prospered with them.
WordPress Modus Pemeliharaan

WordPress Modus Pemeliharaan

WordPress mematikan semua aktivitas saat diperbaharui. Dia akan muncul halaman Dalam Pemeliharaan (Maintenance Mode). Sayangnya, tampilan yang ada saat ini kurang menarik.

Saatnya mengubah tampilan menjadi lebih baik.

Buat Halaman PHP maintenance.php

Tanpa perlu plugin, cukup buat sebuah berkas PHP di wp-content/maintenance.php yang berisi:

<?php
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
    $protocol = 'HTTP/1.0';
    header( "$protocol 503 Service Unavailable", true, 503 );
    header( 'Content-Type: text/html; charset=utf-8' );
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Maintenance mode</title>
    <meta name="msapplication-TileColor" content="#5bc0de" />
    <meta name="msapplication-TileImage" content="assets/img/metis-tile.png" />

    <!-- Bootstrap -->
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css">

    <!-- Font Awesome -->
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css">
  </head>
  <body class="error">
    <div class="container">
      <div class="col-lg-8 col-lg-offset-2 text-center">
        <div class="logo">
          <h1>Teehee.... </h1>
        <img src='/wp-content/uploads/Maintenance.png'>
        </div>
        <p class="lead text-muted">Oops, you caught us upgrading. Please refresh this page a minute later.</p>
      </div>
    </div>
  </body>
</html>
<?php die(); ?>

Berkas ini sebenarnya hanya modifikasi dari modus pemeliharaan yang dimiliki WordPress. Saya menambahkan tiga berkas: dua berkas CSS yang ada di CDN dan satu berkas gambar (wp-content/uploads/Maintenance.php) yang saya buat sendiri menggunakan MyPaint. Klik gambar untuk mendapatkan kode sumber.

maintenis

A custom maintenance mode.

Bacaan Lebih Lanjut

Kompilasi PHP 5.2 pada Debian Jessie

Kompilasi PHP 5.2 pada Debian Jessie

Seperti halnya mantan terindah, aplikasi penting sering kali tidak dapat dilupakan begitu saja. Ia menyeruak masuk kembali dan selalu saja menempati ruang pikiran. Di saat keyakinan melangkah untuk maju, kembali hati jatuh ke relung yang sama.

Inilah kisah dari seorang yang gagal move on dari PHP 5.2 untuk semua saudara/i yang juga gagal move on. CMUNGUDH!

Dari pada menambah ketidakjelasan di hati, berikut asumsi saya agar kita tidak salah paham:

  1. Unduh semua pada satu direktori. Ingat! Satu direktori, jangan terpisahkan.
  2. Semua dilakukan sebagai pengguna biasa, bukan yang berkuasa.
  3. Silakan cari paket-paket pengembang yang diperlukan, saya lupa soalnya. Itu ada di masa lalu. Saya berasumsi Anda sudah memasang paket-paket yang dibutuhkan. Nanti sambil konfigurasi bisa tahu, kok, paket apa saja.

Pasang Paket Yang Dibutuhkan

Lupa saya, tee hee…

Unduh PHP dan Semua Tambalannya

Pada satu direktori, mari unduh berkas-berkas yang dibutuhkan.

export PHP_VERSION=5.2.17

# PHP 5.2
wget "http://museum.php.net/php5/php-$PHP_VERSION.tar.bz2"

# PATCHES
wget https://github.com/TommyLau/docker-lnmpa/raw/master/php/5.2/php-5.2.17-libxml2.patch
wget https://github.com/TommyLau/docker-lnmpa/raw/master/php/5.2/php-5.2.17-openssl.patch

# PHP-FPM
wget "http://php-fpm.org/downloads/php-$PHP_VERSION-fpm-0.5.14.diff.gz" -O php-fpm.diff.gz

ABI dan API XML2 dan OpenSSL berubah pada Debian Jessie, sehingga perlu disesuaikan.

Tambal PHP 5.2

Ekstraksi PHP 5.2 dan masuk ke direktori hasil ekstraksi:

tar xvfj php-5.2.17.tar.bz2
cd php-5.2.17

Di direktori PHP, tambal dengan urutan sebagai berikut:

# Patches for Debian Jessie
patch -Np1 -i ../php-5.2.17-libxml2.patch
patch -Np1 -i ../php-5.2.17-openssl.patch

# Patch for PHP-FPM
zcat ../php-fpm.diff.gz | patch -Np1

Saya malas bikin berkas tambalan. Lakukan saja ini untuk memperbaiki skrip konfigurasi dalam mencari pustaka Freetype:

sed -i 's/freetype2\/freetype/freetype/' configure

Konfigurasi PHP 5.2 untuk Siap Dikompilasi

Pada proses ini, mungkin ada paket pengembangan yang lupa terpasang. Silakan ditelusuri saja.

CFLAGS="-O3 -pipe -march=native -mtune=native -fomit-frame-pointer" './configure'  '--prefix=/opt/php52' '--with-config-file-path=/opt/php52/etc' '--disable-debug' '--with-zlib' '--with-pcre-dir' '--with-gd' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-zlib-dir=/usr' '--with-freetype-dir=/usr' '--enable-gd-native-ttf' '--with-ldap' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-zip' '--with-mcrypt' '--with-xmlrpc' '--enable-mbstring=shared' '--with-openssl=shared' '--with-mysql=shared' '--with-gettext=shared' '--with-zend-vm=GOTO' '--enable-bcmath' '--with-snmp=/usr' '--with-xsl' '--enable-fastcgi' '--enable-fpm' '--with-mysqli' '--with-libdir=lib/x86_64-linux-gnu'

Yang terpenting ada dua:

CFLAGS=”-O3 -pipe -march=native -mtune=native -fomit-frame-pointer”
ini optimasi kompilasi. Lakukan baris ini bila kompilasi dilakukan pada mesin yang sama atau lingkungan yang sama dengan mesin tujuan.
‘–with-libdir=lib/x86_64-linux-gnu’
Debian Jessie menaruh pustaka 64-bit tidak lagi di /usr/lib64, tetapi di /usr/lib/x86_64-linux-gnu.

Anda dapat juga mengganti direktori pemasangan sesuai selera Anda. Misalnya, Anda penggemar FHS sehingga menggunakan /usr/local atau di tempat lain.

‘–prefix=/opt/php52’
Tempat pemasangan PHP 5.2, Anda dapat mengganti ini sesuai selera.
‘–with-config-file-path=/opt/php52/etc’
Konfigurasi berkas. Anda dapat menaruhnya di /etc/php52, misalnya, agar konsisten dengan Debian.

Sebelum kompilasi, ubah pustaka XML2 dan SSL yang hendak ditautkan ke PHP pada Makefile

sed -i 's/-lxml2 -lxml2 -lxml2/-lcrypto -lssl/' Makefile

Selanjutnya, PHP siap untuk dikompilasi.

Kompilasi dan Pasang PHP

Kompilasi dan PHP 5.2

make -j"$(nproc)"
sudo make install

Sampai sini saya pikir untuk konfigurasi PHP FPM dan pemasangan berkas init tidak perlu saya tulis, ‘kan?

Silakan tulis di komentar kalau memang perlu saya buatkan tutorial memasang skrip SystemD dan Sysvinit.

Ucapan Terima Kasih

Terima kasih kepada

NGINX, uWSGI, PHP pada Debian Jessie

NGINX, uWSGI, PHP pada Debian Jessie

Solusi PHP-FPM sudah tak mencukupi lagi untuk saya. Sering kali saya mendapati sistem-sistem dengan pengunjung banyak tidak bereaksi. Padahal, semua layanan menyala.

Dari kasak-kusuk di Internet yang saya dapati bahwa ternyata PHP-FPM harus sering-sering dijalankan ulang. Bahkan, ada yang memasang CRON untuk menjalankan ulang PHP-FPM setiap 15 menit sekali. Saya pun terenyuh.

Untungnya, ada sebuah solusi, yakni uWSGI. Awalnya, ia hanya untuk menjalankan layanan web berbasis Python. Namun, sekarang ia berkembang untuk menjalankan hampir apa saja. Enaknya dia, setiap proses dijalankan sebagai pengguna biasa (non-root).

Cara Pasang

Cara pasang seperti biasa:

sudo apt-get install nginx uwsgi uwsgi-plugin-php

Seperti biasa.

Konfigurasi

NGINX

Cara konfigurasi sama seperti PHP-FPM, tetapi sedikit berbeda. Berikut sekilas contoh konfigurasi salah satu virtual host (/etc/nginx/sites-available/xxx)

server {
  ...

  location / {
    index   index.php;
    try_files $uri $uri/ /index.php?$args;
  }

  ...

  location ~ .php$ {
     include uwsgi_params;
     uwsgi_modifier1 14; 
     uwsgi_pass unix:/tmp/uwsgi_webphp.sock;
  }
}

Perhatikan bahwa tidak ada yang berubah dari baris lain. Hanya blok pengolah PHP yang diubah dari FastCGI untuk PHP-FPM menjadi UWSGI. Aplikasi nginx memiliki antarmuka alami dengan uWSGI.

Seperti biasa, aktifkan virtual host dengan:

sudo ln -s /etc/nginx/sites-{available,enabled}/xxx
sudo service nginx restart

Selanjutnya uWSGI.

uWSGI

Pada Debian Jessie, virtual host uWSGI terletak pada /etc/uwsgi/apps-available/xxx.ini

Perhatikan kalau uWSGI mengharapkan ekstensi .ini pada setiap berkas konfigurasi virtual host yang valid.

Mari buat berkas /etc/uwsgi/apps-available/webphp.ini (Iya, saya kurang kreatif, silakan ganti nama berkas dengan apa saja)

[uwsgi]
socket=/tmp/uwsgi_webphp.sock
pidfile2=/tmp/uwsgi_webphp.pid
daemonize=/var/log/uwsgi/webphp.log
plugins=php

chdir=/var/www
cheaper=4
close-on-exec=1
harakiri=360
max-requests=128
processes=8
master=1
uid=www-data
gid=www-data
chmod=666
log-5xx=1
vacuum=1
post-buffering=8192

Perhatikanlah yang berbeda ada pada baris 3! Gunakan pidfile2, jangan pidfile saja! Opsi pidfile2 yang membuat adalah pengguna tersebut, bukan root. Bila menggunakan pidfile, layanan uwsgi akan gagal dikendalikan oleh Debian.

Aktifkan konfigurasi ala Debian:

sudo ln -s /etc/uwsgi/apps-{available,enabled}/webphp.ini
sudo service uwsgi restart

Selesai.