13 items(1/2) 2 Next » Last »|

อีกที : macOS 11.0 Big Sur Apache/MiriaDB/PHP Setup

โดย Little Bear on 21 ธ.ค. 63 10:21

รอก่อนนะ ค่อยกลับมาทยอยเขียน

Edit Apache config

sudo nano /etc/apache2/httpd.conf

Restart Apache

sudo apachectl restart
sudo apachectl -k graceful

Edit MariaDB config

nano ~/.my.cnf

Restart MariaDB

mysql.server restart


Apache Config on Ubuntu Server :: Manual add new site

โดย Little Bear on 10 ต.ค. 63 16:16

MySQL Configuration

  • Increrase memory size for MySQL Server using nano /etc/my.cnf and add/change value ตามรายละเอียด
    innodbbufferpoolsize = 2048M
    innodblogfilesize = 512M
    maxconnections = 500
    keybuffer_size = 512M

PHP Config

Set timezone to Asia/Bangkok

nano /etc/php/7.4/apache2/php.ini
date.timezone = Asia/Bangkok

Add CNAME domain.com to ppi.psu.ac.th

Add new site to Apache

cd /etc/apache2/sites-available
nano sites-available/doname.com.conf
<VirtualHost *:80>
    ServerName domain.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/domain.com
<VirtualHost *:80>
    ServerName www.domain.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/domain.com

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerName domain.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/user/domains/domain.com
<VirtualHost _default_:443>
    ServerName www.domain.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/user/domains/domain.com
cd /etc/apache2/sites-enabled
ln -s ../sites-available/domain.com.conf domain.com.conf

Restart Apache

systemctl restart apache2

Restart MySql

systemctl restart mysql

INSTALL Let's Encrypt

apt-add-repository -r ppa:certbot/certbot

After that, the following commands do not generate any errors:

apt update
apt-get update
apt install python3-certbot-apache
certbot --apache -d domain.com -d www.domain.com

You should test your configuration at:



Congratulations! Your certificate and chain have been saved at:

  • /etc/letsencrypt/live/domain.com/fullchain.pem
  • Your key file has been saved at:
  • /etc/letsencrypt/live/domain.com/privkey.pem
  • Your cert will expire on 2021-01-08. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew all of your certificates, run "certbot renew"

To test the renewal process, you can do a dry run with certbot:

sudo certbot renew --dry-run

Correct way to completely remove issued certificate(s) for a domain

certbot delete --cert-name domain.com

Copy file from another server using SSH

Alternatively, you could mount the myserver's filesystem over SSH with sshfs. This may be too much hassle for a one-off need, but convenient if you do this sort of thing often.

mkdir myserver
sshfs -p 22 domain.com:/path/ myserver
wget -O ~/myserver/path/to/remote/destination http://www.example.com/whatever

rsync -trv myserver/src/path/ dest/path/
umount myserver

rsync in background

nohup rsync -trv myserver/src/path/ dest/path/ &

Dump Database

mysqldump -u [username] -p [database-you-want-to-dump] > [path-to-place-data-dump.sql]
/usr/local/mysql/bin/mysqldump -u [username] -p [database-you-want-to-dump] > [path-to-place-data-dump.sql]

Ways to Flush DNS Cache on Mac OSx

sudo killall -HUP mDNSResponder

WhoIs LookUp

nslookup -type=ns softganz.com

Setup Time Sync


apt-get install ntp

แก้ไข config

server 1.th.pool.ntp.org
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server clock.nectec.or.th


service ntp restart


เช็คเงื่อนไข url request ใน .htaccess

โดย Little Bear on 6 ต.ค. 61 14:12

ต้องการตรวจสอบว่า url ที่เรียกเข้ามานั้น หากอักษรตัวหน้าเท่ากับคำบางคำ ก็ให้เรียกไปที่ url บางตัว หากไม่ใช่ ก็ให้เรียกไปอีกแห่งหนึ่ง

# /garage/xxx or /saveup/xxx or /js/xxx = > /folder1/index.php
RewriteCond %{REQUEST_URI} ^/(garage|saveup|js/).* [NC]
RewriteRule ^(.*)$ /folder1/index.php? [L,QSA]

# /library/xxx = > /library/xxx
RewriteCond %{REQUEST_URI} ^/(library)/.* [NC]
RewriteRule ^(.*)$ $1 [L,QSA]

หาอ่านข้อมูลเกี่ยวกับ .htaccess ที่ Apache Module mod_rewrite

โดยเฉพาะที่นี่ มีตัวอย่างให้ดูเพียบ THE Ultimate Htaccess

Make Macbook Pro to be Web Server

โดย Little Bear on 10 ก.ค. 58 16:43

แก้ config ของ Apache

sudo nano /etc/apache2/httpd.conf
AllowOverride All

เปิดใช้งาน mod_rewrite

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Install PHP

brew update
brew install php@7.3
brew link php@7.3
brew services start php@7.3

เปิดใช้งาน php

LoadModule php7_module libexec/apache2/libphp7.so

เปลี่ยน DocumentRoot ของ web

sudo mv /Library/WebServer/Documents /Library/WebServer/Documents.old
sudo ln -s /New/Web/Folder /Library/WebServer/Documents

แก้ php config โดย cp /etc/php.ini.default /etc/php.ini

post_max_size = 16M
upload_max_filesize = 1024M

date.timezone = Asia/Bangkok

Restart Apache

sudo apachectl configtest
sudo apachectl -k restart

ที่มา macOS 10.15 Catalina Apache Setup: SSL

Install MariaDB

brew install mariadb

Start MariaDB

Service start

brew services start mariadb

Start without service

mysql.server start

Link data to new location

sudo ln -s /Users/mysql /usr/local/var/mysql
sudo chown -h user:group /usr/local/var/mysql

แก้ไข config file ~/.my.cnf


default-storage-engine = MYISAM
collation-server = utf8_unicode_ci
character-set-server = utf8

Auto Start

launchd In MacOS, create a file called /Library/LaunchDaemons/com.mariadb.server.plist with the following contents (edit to suit):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
&nbsp; &nbsp; &nbsp; &nbsp; <key>Label</key> <string>com.mariadb.server</string>
&nbsp; &nbsp; &nbsp; &nbsp; <key>KeepAlive</key><true/>
&nbsp; &nbsp; &nbsp; &nbsp; <key>WorkingDirectory</key><string>/usr/local/var</string>
&nbsp; &nbsp; &nbsp; &nbsp; <key>Program</key><string>/usr/local/bin/mysqld</string>
&nbsp; &nbsp; &nbsp; &nbsp; <key>ProgramArguments</key>
&nbsp; &nbsp; &nbsp; &nbsp; <array>
    &nbsp; &nbsp; <string>/usr/local/bin/mysqld</string>
    &nbsp; &nbsp; <string>--user=_mysql</string>
    &nbsp; &nbsp; <string>--basedir=/usr/local/opt/mariadb</string>
    &nbsp; &nbsp; <string>--plugin-dir=/usr/local/opt/mariadb/lib/plugin</string>
    &nbsp; &nbsp; <string>--datadir=/usr/local/var/mysql</string>
    &nbsp; &nbsp; <string>--log-error=/usr/local/var/mysql/Data-Server.local.err</string>
    &nbsp; &nbsp; <string>--pid-file=/usr/local/var/mysql/Data-Server.local.pid</string>
&nbsp; &nbsp; &nbsp; &nbsp; </array>

Then from a shell, run launchctl load /Library/LaunchDaemons/com.mariadb.server.plist and MariaDB will run immediately, and also upon reboot.

Fix the 2002 socket error first if you haven’t done so from the MySQL section-

sudo mkdir /var/mysql

Location -> /usr/local/Cellar/mariadb/{version}

Data location /usr/local/var/mysql/

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Start MySQL

sudo /usr/local/mysql/support-files/mysql.server start

Stop MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

Restart MySQL

sudo /usr/local/mysql/support-files/mysql.server restart

Make Ubuntu to be a web server (LAMP)

โดย Little Bear on 21 มิ.ย. 54 12:33

ติดตั้ง Ubuntu Desktop ให้เป็น Server (LAMP)

ผ่านไป 2 ปี ก็ถึงเวลาต้องติดตั้ง Ubuntu ใหม่เสียที คราวนี้เลยถือโอกาสเปลี่ยนเป็น Ubuntu 11.04 64 bit ไปเลย ก็เลยลองมารีวิวการติดตั้ง LAMP บน Ubuntu ใหม่ว่ามีอะไรที่เปลี่ยนแปลงไปบ้าง

หมายเหตุ : การติดตั้งต่อไปนี้ใช้สิทธิ์ของ root ขอให้เข้าสู่สิทธิ์ของ root โดยการเปิด terminal แล้วพิมพ์ sudo su

Install L.A.M.P Stack (Apache, Mysql, PHP) ทีเดียวซะเลย

root@god:/# apt-get install lamp-server^

แล้วก็ลง phpMyAdmin

root@god:/# apt-get install phpmyadmin

เลือก Apache แล้ว YES สำหรับ dbconfig-common.



root@god# apt-get install php5-curl

หรือชอบที่จะลงทีละตัว ก็

Install Apache

root@god:/# apt-get install apache2

Enable mod_rewrite

root@god:/# a2enmod rewrite

เปลี่ยน DocumentRoot ของ apache เป็น folder อื่น และเปิดใช้งาน clean url

root@god:/# nano /etc/apache2/sites-available/default
  • เปลี่ยนบรรทัด /var/www/ เป็น /my web folder/ จำนวน 2 ตำแหน่ง
  • แก้ค่า AllowOverride ของ /my web folder/ จาก None เป็น AllowOverride All

Install PHP

root@god:/# apt-get install php5 libapache2-mod-php5 php5-gd
root@god:/# /etc/init.d/apache2 restart

Install MySQL

root@god:/# apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin
root@god:/# /etc/init.d/apache2 restart

หากมีข้อมูลเก่าของ mysql ก็สามารถ copy มาไว้ที่ /var/lib/mysql แล้ว โดยใช้คำสั่ง

root@god:/# cp /media/disk/var/lib/mysql/* /var/lib/mysql/
root@god:/# chown -hR mysql /var/lib/mysql/*
root@god:/# chgrp -hR mysql /var/lib/mysql/*

ย้ายข้อมูล mysql ไปไว้ที่อื่น

root@god:/# /etc/init.d/mysql stop
root@god:/# mkdir /home/mysql
root@god:/# chown -R mysql:mysql /home/mysql
root@god:/# cp -r /var/lib/mysql/mysql /home/mysql/
root@god:/# chown -R mysql:mysql /home/mysql/*

แล้วแก้ my.cnf

root@god:/# nano /etc/mysql/my.cnf

หาคำนี้ให้เจอ :

datadir = /var/lib/mysql

แล้วเปลี่ยนเป็นตำแหน่งใหม่ :

datadir = /home/mysql

เสร็จแล้วก็ restart mysql service

root@god:/# /etc/init.d/mysql start
Starting MySQL database server mysqld [ OK ]

แล้ว mysql จะทำการสร้างไฟล์ ibdata1, ib_logfile0, อื่น ๆ ขึ้นมาใหม่

ทุกอย่างน่าจะเรียบร้อย แต่ผมไม่สามารถ start mysql ได้ มันค้างอยู่ เลยต้องไปแก้ค่าในไฟล์ /etc/apparmor.d/usr.sbin.mysqld โดยเปลี่ยนค่า /var/lib/mysql ให้เป็น /home/mysql ด้วย

แล้วคราวนี้ก็ทำการ copy ฐานข้อมูลเก่า ๆ มาได้เลย อย่าลืมเปลี่ยน owner/group เป็น mysql ด้วยนะ


#sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
<a class="hashtag" href="/tags/sudo">#sudo</a> apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

ความหมายของแต่ละ apache directives ครับ

โดย Little Bear on 26 พ.ค. 54 10:04

KeepAlive = เมื่อเสร็จ request แล้วยังไม่ต้องปิด connection ให้รอดูว่าจะมี request เข้ามาอีกรึเปล่า ถ้ามีก็ใช้ connection นี้ต่อไปเลย มีประโยชน์สำหรับเว็บที่มี request เยอะๆใน 1 หน้าเว็บ – รูปภาพ 1 รูปนับเป็น 1 request – 1 frame นับเพิ่มอีก 1 request (รูปใน frame นับเพิ่มต่างหากอีก) ดังนั้นเว็บที่มีพวกนี้เยอะๆควรเปิด keepalive ไว้ เพื่อลดจำนวน connection ที่เข้ามา

Apache Rewrite - ยากจริง ๆ

โดย Little Bear on 28 ก.ค. 53 16:54

กำลังศึกษาการเขียน Apache rewrite rule จะทำ subdomain redirect ไปสู่โปรแกรม

เช่น http://bear.softganz.com ไป http://www.softganz.com/index.php?u=bear

เขียนยากจริง ๆ พยายามทำความเข้าใจอยู่ หากพอจะเข้าใจ จะมาเขียนอธิบายรายละเอียดอีกที


dir ที่สามารถ upload file ได้ให้ทำการป้องกันไม่ให้ php perl ทำงานได้

โดย Little Bear on 23 ส.ค. 52 21:04

dir ที่สามารถ upload file ได้ให้ทำการป้องกันไม่ให้ php perl ทำงานได้ เพราะว่าถ้าเกิดหลุดขึ้นมา จะอันตรายมาก ๆ วิธีการป้องกันก็คือ ไปกำหนดเพิ่ม ใน httpd.conf ดังต่อไปนี้ สมมติว่า /home/webmaster/public_html/webboard/file เป็นส่วนที่ใช้เก็บรูปของบอร์ดเวลา post ขึ้นไป ผมก็จะกำหนดเพิ่มดังนี้

<Directory "/home/webmaster/public_html/webboard/file">
Options Indexes MultiViews -ExecCGI
AllowOverride None
Order allow,deny
Allow from all
php_flag engine off

เท่านี้ก็ปลอดภัยอีกระดับนึงครับ ถ้าเกิด script เราหลุด hacker สามารถ upload file ขึ้นไปได้ แต่เค้าก็จะไม่สามารถสั่งให้ทำงานได้ครับ ..

How to install Lighttpd+PHP4+MySql5 on Ubuntu 8.10

โดย Little Bear on 30 พ.ย. 51 00:14

หลังจากที่ตัดสินใจปรับ CMS ที่เขียนอยู่ไปวิ่งบน PHP5 ก็ไม่นึกว่าจะต้องกลับมาทดสอบ CMS กับ PHP4+MySql3 อีกแล้ว แต่หลังจากที่ยังคงมีเว็บที่ดูแลอยู่อีก 3 เว็บยังคงทำงานอยู่บน PHP4 และไม่มีแนวโน้มว่าเขาจะปรับเวอร์ชั่นของ PHP ให้ (หรือเขาจะปรับให้แต่คิดเงินอีกหลายพัน) ก็เลยต้องกลับมาปรับแก้โปรแกรมใหม่ (ซึ่งจริง ๆ ก็คงไม่มากนัก แต่ต้องตรวจสอบใหม่ทั้งระบบ)

พยายามติดตั้ง Apache2+PHP4+MySql3 แต่ติดปัญหาตอนติดตั้ง PHP4

เลยติดตั้ง Lighttpd+php4+MySql5 แทน

  • ติดตั้ง Lighttpd โดย

    sudo apt-get install lighttpd lighttpd-doc

  • ติดตั้ง php4-cgi

    sudo apt-get install php4-cgi
    sudo apt-get install php4-mysql

  • เปิดใช้งาน cgi

    sudo lighty-enable-mod cgi

  • แก้ไขไฟล์ /etc/lighttpd/conf-enabled/10-cgi.conf โดยเอาเครื่องหมาย # หน้า cgi.assign ออกให้หมด

หากใน sources list ไม่มี php4-cgi ก็ให้เพิ่ม sources นี้ใน /etc/apt/sources.list ซึ่งได้มาจาก http://www.dotdeb.org/mirrors/

deb http://mirror.oeg.com.au/packages.dotdeb.org stable all
deb-src http://mirror.oeg.com.au/packages.dotdeb.org stable all

และอาจจะต้องติดตั้ง libzzip-0-12 ก่อน


ปล. อาจจะมั่ว ๆ ไปนิด วันหลังจะมาเรียบเรียงใหม่อีกทีนะครับ <!-- อย่างแรกคือ ติดตั้ง apache2 ก่อน

sudo apt-get install apache2

ต่อมาติดตั้ง php4-cgi

sudo apt-get install php4-cgi

php จะถูกติดตั้งไว้ที่ ในชื่อ php-cgi -->


โดย Little Bear on 14 ก.ย. 51 12:19

เว็บไซท์ http://irrigation.rid.go.th/rid16/ranode มีปัญหามาหลายวันแล้ว วันนี้เลยลองหาทางแก้ไขดู


Charactor Encoding ผิดพลาด

ใน HTML Code มี meta http-equiv="Content-Type" content="text/html; charset=utf-8" แต่ในเมนู View/Charactor Encoding ยังคงเป็น iso-8859-11 อยู่ ทำให้แสดงภาษาไทยผิดพลาด

ตรวจสอบใน phpinfo ปรากฎว่าใน HTTP Response Headers มีค่า Content-Type เป็น text/html; charset=iso-8859-11 ไม่ยอมเปลี่ยนเป็น utf-8 ตาม meta http-equiv="Content-Type"


มีอยู่ 3 จุด (เท่าที่คิดได้) คือ

  1. เพิ่มคำสั่งในไฟล์ .htaccess
    AddDefaultCharset utf-8
  2. เพิ่มคำสั่งในไฟล์ index.php
    iniset('defaultcharset', 'utf-8');
  3. เพิ่มคำสั่งในไฟล์ index.php
    header('Content-Type: text/html;charset=UTF-8');

ที่ทำแล้วได้ผลคือเพิ่มคำสั่งข้างล่างนี้ในไฟล์ index.php

header('Content-Type: text/html;charset=UTF-8');
13 items(1/2) 2 Next » Last »|