Menu

Showing posts with label config. Show all posts
Showing posts with label config. Show all posts

Wednesday, December 11, 2019

[Ubuntu] วิธีการเพิ่มผู้ใช้งานใหม่และกำหนดให้เข้าใช้งานผ่าน SSH บน Ubuntu
[Ubuntu] How to Add New User and Set to Login by SSH on Ubuntu

  1. เพิ่มผู้ใช้งานในระบบ
  2. adduser <username>
  3. แก้ไขไฟล์ config สำหรับ SSH
  4. vim /etc/ssh/sshd_config
  5. ตั้งค่าอนุญาตให้ Login ด้วย password ได้
  6. # Change to no to disable tunnelled clear text passwords
    PasswordAuthentication yes
  7. กำหนด User ที่อนุญาตให้ login ผ่าน SSH ได้ (จะกำหนดหรือไม่ก็ได้)
  8. AllowUsers <username>
    คำเตือน!!! กรณีที่ตั้งค่า AllowUsers และต้องการให้ root สามารถ login ได้จำเป็นต้องใส่ root ในส่วนของ username ด้วย
    AllowUsers root userA
  9. กำหนด User ที่ไม่อนุญาตให้ login ผ่าน SSH ได้ (จะกำหนดหรือไม่ก็ได้)
  10. DenyUsers <username>
  11. Restart SSH service
  12. service ssh reload
หมายเหตุ อ่าน config เพิ่มเติมของ SSH ได้ที่ FreeBSD Manual Pages - sshd_config

Tuesday, December 3, 2019

[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Debugbar
[Laravel - Package] How to Install and Config Laravel Debugbar

Laravel Debugbar เป็น package ที่รวม PHP Debug Bar เข้ากับ Laravel เพื่อใช้แสดงข้อมูลจากส่วนต่างๆของ Application

วิธีการติดตั้ง

  1. สั่งติดตั้ง Laravel Modules package
  2. composer require barryvdh/laravel-debugbar --dev
  3. สร้างไฟล์ config ของ package ใน project
  4. php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
    

[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Modules
[Laravel - Package] How to Install and Config Laravel Modules

Laravel Modules เป็น package ที่สร้างขึ้น เพื่อจัดการ Laravel application ที่มีขนาดใหญ่ โดยการแบ่งเป็น module ย่อยๆ

วิธีการติดตั้ง

  1. สั่งติดตั้ง Laravel Modules package
  2. composer require nwidart/laravel-modules
  3. สร้างไฟล์ config ของ package ใน project
  4. php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

Thursday, August 15, 2019

[Laravel - Config] วิธีการเพิ่มหรือแก้ไขค่าตัวแปรในไฟล์ .env ในขณะ Runtime
[Laravel - Config] How to Add or Modify Variable Value in .env File at Runtime

ไฟล์ .env เป็นไฟล์สำหรับเก็บค่า environment variables ต่างๆของ Application

โดยปกติแล้ว เราสามารถใส่ชื่อตัวแปรและค่าของตัวแปรนั้นๆเข้าไปในไฟล์ .env ได้เลย

แต่ในบางกรณี เราไม่สามารถกำหนดค่าของตัวแปรนั้นได้ เช่น ค่าที่ต้อง encrypt ผ่าน Application หรือค่าของตัวแปรนั้นสามารถหาได้ในขณะ Runtime เท่านั้น เช่น IP address ของ Host server เป็นต้น

Monday, July 1, 2019

[PHP] วิธีการเปิดใช้ environment variables ใน PHP FPM
[PHP] How to Enable Environment Variables in PHP FPM

PHP FPM จะถูก clear environment variables ออก เนื่องจากเหตุผลทางด้านความปลอดภัย

แต่ในบางครั้งเรามีความจำเป็นต้องใช้ตัวแปรพวกนี้ เช่น environment variables ที่ถูกส่งผ่านเข้ามาจากการสร้าง Docker image เพื่อเก็บข้อมูล log หรือสถิติต่างๆ

สำหรับการอนุญาตให้ environment variables ถูกส่งต่อไปยัง PHP FPM ให้แก้ไขไฟล์ /etc/php/7.2/fpm/pool.d/www.conf โดยเอา comment บรรทัดข้างล่างนี้ออก
;clear_env = no
จะได้ผลลัพธ์ดังภาพข้างล่าง

หลังจากนั้นให้ restart service php7.2-fpm ด้วยคำสั่งดังนี้
service php7.2-fpm restart

Friday, May 17, 2019

[Laravel - AWS] วิธีการตั้งค่า timeout สำหรับ InstanceProfileProvider ของ AWS PHP SDK
[Laravel - AWS] How to Set Timeout for InstanceProfileProvider of AWS PHP SDK

InstanceProfileProvider เป็น credential provider ที่ใช้ credentials จาก EC2 metadata server

สำหรับข้อมูลของ EC2 metadata server อ่านได้ที่ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

ใน InstanceProfileProvider class ของ aws-php-sdk library เราจะพบ constructor ตามภาพด้านล่าง


เราจะพบตัวแปร $config['timeout'] แต่เราจะตั้งค่ามันยังไง!!!

Thursday, May 16, 2019

[ELK - Logstash] วิธีการ parse ข้อความ Log ที่มีหลายรูปแบบ โดยใช้ GROK
[ELK - Logstash] How to Parse Multiple Log Message by Using GROK

สำหรับการ parse ข้อความโดย GROK คุณต้องเพิ่ม grok filter ตามตัวอย่างด้านล่าง (อ้างอิงจาก https://www.elastic.co/guide/en/logstash/2.1/plugins-filters-grok.html#plugins-filters-grok-match)

สำหรับรายละเอียดของ GROK patterns อ่านได้ที่ https://github.com/elastic/logstash/blob/v1.4.0/patterns/grok-patterns

คุณสามารถทดสอบ pattern ที่คุณสร้างขึ้นกับข้อความจริง ได้ที่ https://grokdebug.herokuapp.com/

Thursday, April 4, 2019

[Laravel - Exception] วิธีการแก้ไข exception หลังจากพลาดรันคำสั่ง php artisan config:cache
[Laravel - Exception] How to Fix Exception after Running php artisan config:cache Command

คำอธิบายของคำสั่ง config:cache คือ สร้าง cache file สำหรับการโหลดค่า config ที่เร็วขึ้น (คุณสามารถรันคำสั่ง php artisan ใน console เพื่อดูคำอธิบายของแต่ละคำสั่งได้)

อย่างไรก็ตาม ผลกระทบจากการรัน  php artisan config:cache อาจจะประกอบด้วย
  1. Website/APIs ของคุณจะตอบกลับด้วย error code 500 Internal Server Error เสมอ โดยไม่มี log ใดๆใน laravel.log
  2. ทุกคำสั่งที่รันด้วย php artisan จะ throw exception ตามภาพด้านล่าง
  3. ทุกคำสั่งที่รันด้วย composer จะรันได้ตามปกติ

วิธีแก้ไข exception นี้ คือ การลบ cache file ที่ถูกสร้างขึ้นมา ซึ่งสำหรับ Laravel 5.6 cache file ดังกล่าวจะอยู่ที่ bootstrap/cache/config.php

Saturday, May 26, 2018

[Laravel - Config] การบังคับให้ Laravel สร้าง URL แบบ HTTPS
[Laravel - Config] How to Force Laravel to Create URL with HTTPS

เมื่อ Laravel ถูกดีพลอยบน server ที่มีการเรียกหน้าเว็บแบบ HTTP เบื้องหลัง NGINX ที่ตั้งค่าให้เรียกหน้าเว็บแบบ HTTPS เราจึงจำเป็นต้องบังคับให้ link ที่สร้างขึ้นมาโดย Laravel เป็น HTTPS ทั้งหมด

Method ที่เกี่ยวข้องกับการสร้าง link ของ Laravel มี 2 methods ดังนี้
  • url() 
    • เป็น method สำหรับสร้าง url จาก relative path ที่ใส่เข้าไป เช่น url('/images/logo_sm.png') เป็นต้น
    • url ที่ถูกสร้างขึ้นจะเป็น HTTP หรือ HTTPS ตาม server ที่มันอยู่
    • วิธีแก้ไข คือ เพิ่ม \URL::forceScheme('https'); ใน boot ของ AppServiceProvider 
  • link() 
    • เป็น method สำหรับสร้าง render template เพื่อแสดงรายการของหน้า 
    • Method นี้เป็นของตัวแปรที่ได้มาจากการเรียกใช้ paginate() ตอน query ข้อมูลจากฐานข้อมูล
    • วิธีแก้ไข คือ ให้ทำการสั่ง setPath() ให้กับตัวแปรดังกล่าวก่อนที่จะเรียกใช้ link() เช่น $users->setPath('/users/manage'); แล้วจึงเรียกใช้ {{$users->link()}} ใน blade template เมื่อ $users เป็นตัวแปรที่ได้มาจากการเรียกใช้ paginate()