/ 201701

Web Tutorial [S01E04] | Install Ghost dengan Nginx pada Ubuntu AWS


Masih lanjut dari posisi diatas ini ya, kita sudah berhasil login ke instance EC2 kita. Nah dari titik ini, lebih banyak ngetik dan enter. Sudah seram liat console screen hitam gini ? Semoga nggak ya, gampang kok. Tiap step sudah ada screenshootnya dan penjelasannya apa.

Setiap step dibawah kalau ketemu tanda blablabla ini artinya yg didalam kotak tersebut yang perlu kita ketik di Putty, dan selalu diakhiri dengan tekan enter. Cara copy-paste nya, cukup ctrl+c kata-katanya, buka putty lalu cukup klik kanan mouse. Di putty nggak mengenal ctrl+v. Dan terakhir, kalau dari step-step dibawah ada yang minta Do you want to continue? [Y/n] itu cukup dienter lagi saja.

Install Node JS dan NPM

1.Update semua semua package yang ada di local kita.
sudo apt-get update

2.Install aptitude, buat dipakai install package lain
sudo apt-get install aptitude

3.Install zip dan wget dengan aptitute
sudo aptitude install zip wget

4.Install NodeJS
sudo apt-get install nodejs

5.Install npm
sudo apt-get install npm

6.Update NodeJS ke version paling terakhir
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

7.Install lagi NodeJS versi terakhir
sudo apt-get install nodejs

8.Install build-essential
sudo apt-get install build-essential

9.Sekarang Node JS dan NPM sudah terinstall, cek dengan
node -v
akan keluar versi berapa, saat tutorial ini ditulis latest update adalah : v6.9.4

10.Cek versi NPM dengan
npm -v
latest update saat ini adalah : v3.10.10

Install Ghost

1.Kita akan download ghost version terakhir di folder /var/www
sudo mkdir -p /var/www/

cd /var/www/

sudo wget https://ghost.org/zip/ghost-latest.zip

2.Setelah dapat ghost versi terakhir, kita akan unzip dan masuk ke dalam foldernya
sudo unzip -d ghost ghost-latest.zip

cd ghost/

3.Install ghost yang untuk production
sudo npm install --production

Setting Konfigurasi Pada Ghost

1.Copy sample confignya dengan nama yang baru
sudo cp config.example.js config.js

2.Waktunya mengedit configuration nya.
sudo nano config.js

3.Setelah step no 2 di enter, kita akan masuk ke editornya console, coba deh teken arrow atas kiri kanan bawah nanti ada kursor yang gerak, selama disini jangan tekan ctrl+ huruf apapun, sekarang kita akan ganti bagian yang ini :

production: { url: 'http://my-ghost-blog.com', mail: { // Your mail settings }, database: { client: 'sqlite3', connection: { filename: path.join(__dirname, '/content/data/ghost.db') }, debug: false },

Di bagian production, ganti yg url itu yang didalam kutip menjadi IP Public yang ada di EC2 atau nama domain kalian.
Misal jadinya
url: 'http://52.220.178.221',
atau
url: 'http://ariadiprana.com',

jangan lupa pakai koma di akhir baris

setelah itu turun sedikit ke bagian :
server: { host: '127.0.0.1', port: '2368' }

rubah angka host jadi
0.0.0.0

Kira-kira jadi akhirnya seperti ini,

4.Tekan ctrl+X untuk Exit, tekan Y untuk Yes, tekan Enter untuk tetap save dengan nama config.js, nanti kita akan keluar lagi ke depan.

Testing Ghost

1.Sekarang ketik
sudo npm start --production
Kalau sudah keluar begini

artinya sudah jalan ghost kita, bisa diakses di url yang kita tadi tulis ditambah dengan :2368 , misal di browser ketik http://52.74.186.154:2368/ maka akan terbuka ghost kita :D

2.Kembali ke putty, tekan ctrl+C untuk shutdown ghost. Sekarang karena yang dibuka masih port 2368 saja, kita akan buat biar nggak perlu lagi ketik port untuk buka ghost kita. Caranya sebagai berikut,

Install Nginx

1.Install nginx
sudo apt-get install nginx

2.Masuk ke nginx dan hapus default config
cd /etc/nginx/

sudo rm sites-enabled/default

3.Buat file configuration baru dan edit pakai nano
sudo touch /etc/nginx/sites-available/ghost

sudo nano /etc/nginx/sites-available/ghost

4.Isi block tulisan dibawah, ctrl+c , buka putty dan klik kanan di nano tadi untuk melakukan paste,
server { listen 80; server_name your_domain.tld; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } }

Rubah your_domain.tld dengan IP public kamu, jadinya kira-kira seperti ini :

Jangan lupa cek tanda titik koma ; sudah ada diakhir baris server_name nya . Lalu tekan ctrl+x untuk exit, tekan Y, enter.

5.kita akan symlink config tadi
sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

6.Restart nginx ,
sudo service nginx restart

Tambah User Baru di Ghost

1.Add new user,dan nanti akan disuruh masukkan password 2x
sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost

2.Kasih previleges
sudo chown -R ghost:ghost /var/www/ghost/

3.Sekarang sudah bisa login ke ghost
su - ghost

4.Tanda kalau sudah bisa masuk itu, huruf depannya diawal dengan ghost, bukan Ubuntu lagi

5.Masuk ke direktori ghost dan start
cd /var/www/ghost

npm start --production

6.Tara~ Sekarang web kalian sudah bisa diakses dari IP Public itu saja tanpa pakai port 2368 lagi

7.Apakah sudah selesai? Tentu belum, kita mesti set up 1 lagi untuk memastikan kalau putty itu di close, web kita akan tetap masih bisa diakses, kita akan pakai yang namanya forever

Jalankan Ghost dengan Forever

  1. Ctrl+C , Ketik exit, enter. Nanti baris pertama Ubuntu akan keluar lagi.

2.Install forever
sudo npm install -g forever

3.Login ke ghost lagi, dan jalankan dengan forever
su - ghost dan masukkan password

cd /var/www/ghost

NODE_ENV=production forever start index.js

4.Sudah, sekarang web kalian sudah bisa diakses dan nggak akan pernah mati lagi ketika putty di close. Forever ini bisa di stop dengan forever stop index.js dan start lagi dengan NODE_ENV=production forever start index.js

Selesaiiii

Akhirnya, selesai sudah nyicil 3 hari buat nulis tutorial ini. Semoga tutorial kali ini membantu, kalau ada problem bisa tulis di comment dibawah.

Update 1.0

Terakhir, biar di ghost nanti bisa upload foto lebih dari 2MB, bisa ikutin link ini

Update 2.0

Karena ghost sering update version, berikut script biar cepet update nya

  1. Masuk ke direktori
    cd /var/www/ghost

  2. Hapus zip lama
    sudo rm -rf ghost-latest.zip

  3. Rename folder ghost ke ghost-backup
    sudo mv /var/www/ghost /var/www/ghost-backup

  4. Unzip file latest ghost update
    sudo unzip -d ghost ghost-latest.zip

  5. Hapus file dan folder
    cd ghost

    sudo rm -rf config.example.js content/

  6. Copy folder content dari tempat lama ke tempat baru
    sudo cp -a /var/www/ghost-backup/content/. /var/www/ghost/content/

  7. Copy config nya
    sudo cp -a /var/www/ghost-backup/config.js /var/www/ghost/

  8. npm install production
    sudo npm install --production

Dan jalankan dengan su - ghost dan seterusnya itu