Install from scratch – licensing (1)

ติดตั้งปรับแต่ง Ubuntu 22.04 เพื่อเตรียมสำหรับติดตั้ง WordPress บน apache2 และติดตั้ง WordPress

Host setting
  1. เครื่อง Server มี 2 ชื่อ A record เป็น server-name1.psu.ac.th Cname เป็น server-name.psu.ac.th
  2. ติดตั้ง Ubuntu 22.04 ข้ามเรื่องการติดตั้ง Ubuntu ไปนะครับ
  3. จะได้ username: group ที่สามารถเรียกใช้ sudo ได้ตั้งแต่เริ่มต้นตามที่ติดตั้ง
  4. sudo apt update && sudo apt dist-upgrade -y && sudo apt autopurge -y เพื่อปรับปรุง software ต่าง ๆ ให้เป็นรุ่นปัจจุบัน
  5. sudo reboot ในกรณีที่มี kernel ใหม่ต้องรีบูตเพื่อเปลี่ยน kernel
  6. sudo apt install mysql-server apache2 php libapache2-mod-php php-mysql php-gd php-imagick php-xml php-curl php-mbstring php-intl php-zip unzip php-apcu
  7. sudo a2enmod ssl rewrite headers
  8. เปลี่ยนเป็น user root ด้วยคำสั่ง sudo -i
  9. cd /etc/ssl/private
  10. cp /home/username/certificate/* . (ต้องได้รับไฟล์ certificate มาเรียบร้อยแล้วนะครับ ขอข้ามไปเรื่องการจัดเตรียมไฟล์ certificate) ในตัวอย่างนี้จะมีไฟล์เดียวคือ star.psu.ac.th-combined.crt
  11. openssl dhparam -out /etc/ssl/private/dhparams_4096.pem
  12. /etc/apache2/sites-available
  13. vi default-ssl.conf
<IfModule mod_ssl.c>
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
<VirtualHost _default_:443>
ServerAdmin someone@somedomain.com
ServerName server-name1.psu.ac.th

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLCertificateFile /etc/ssl/private/star.psu.ac.th-combined.crt

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparam.pem"
SSLOpenSSLConfCmd ECDHParameters brainpoolP512r1
SSLOpenSSLConfCmd Curves brainpoolP512r1:sect571r1:secp521r1:secp384r1

#A+
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
SSLCompression off
#Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
Header always set Strict-Transport-Security "max-age=63072000"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>

</VirtualHost>
</IfModule>
  1. vi licensing.conf
<virtualHost *:80>
    Documentroot /var/www/html/lsc
    ServerName server-name.psu.ac.th
    ErrorLog ${APACHE_LOG_DIR}/licensing_error_log
    CustomLog ${APACHE_LOG_DIR}/licensing_access_log common
    Options -Indexes
    RewriteEngine On
    RewriteRule (.*) https://server-name.psu.ac.th
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) [NC]
    RewriteRule ^.* - [F]
</virtualhost>
  1. vi licensing-ssl.conf
<IfModule mod_ssl.c>
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
        <VirtualHost *:443>
                ServerAdmin someone@somedomain.com
                ServerName server-name.psu.ac.th
                DocumentRoot /var/www/html/lsc

                LogLevel info
                ErrorLog ${APACHE_LOG_DIR}/lsc-ssl-error.log
                CustomLog ${APACHE_LOG_DIR}/lsc-ssl-access.log combined

               SSLEngine on

                SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams_4096.pem"
                SSLOpenSSLConfCmd ECDHParameters brainpoolP512r1
SSLOpenSSLConfCmd Curves brainpoolP512r1:sect571r1:secp521r1:secp384r1

                SSLCertificateFile /etc/ssl/private/star.psu.ac.th-combined.crt

#A+
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite TLSv1.3 TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
SSLCompression off
Header always set Strict-Transport-Security "max-age=63072000"

                RewriteEngine on
                RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) [NC]
                RewriteRule ^.* - [F]

                Options -Indexes

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>

                <Directory /var/www/html/lsc>
                        Options FollowSymLinks
                        AllowOverride All
                </Directory>

                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
        </VirtualHost>
</IfModule>
  1. a2ensite licensing.conf licensing-ssl.conf default-ssl.conf
  2. a2enmod headers
  3. systemctl restart apache2
  4. mysql
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
create database licensing;
GRANT ALL PRIVILEGES ON licensing.* TO 'username'@'localhost' WITH GRANT OPTION;
quit
  1. cd /var/www/html
  2. wget https://wordpress.org/latest.zip
  3. unzip latest.zip
  4. rm latest.zip
  5. mv wordpress lsc
  6. chmod -R username:www-data .
  7. cd lsc
  8. chmod g+w .
  9. logout
  10. จบส่วนการตั้งค่า Host เพื่อเตรียมติดตั้ง WordPress
  11. เปิด browser ไปที่เว็บ http://licensing.psu.ac.th ซึ่งจะถูก redirect ไปที่ https://licensing.psu.ac.th โดยอัตโนมัติ
  12. กรอกข้อมูลสำหรับเชื่อมต่อให้เรียบร้อย และติดตั้ง wordpress ให้เรียบร้อย
  13. กลับมาที่ console หรือ terminal
  14. cd /var/www/html/lsc
  15. chmod og-w .
  16. sudo chown username:www-data .htaccess wp-config.php
  17. chmod og-w .htacess wp-config.php
  18. vi wp-config.php เพิ่มข้อความว่า
/** Direct install plugin **/
define('FS_METHOD', 'direct');
  1. cd /var/www/html/lsc/wp-content
  2. mkdir uploads upgrade languages
  3. sudo chown -R username:www-data uploads upgrade languages themes plugins
  4. chmod -R g+w uploads upgrade languages themes plugins เพื่อให้สามารถติดตั้ง plugin theme และ upload ไฟล์ขึ้นเว็บได้ เมื่อติดตั้ง themes และ plugins ได้จนพอใจแล้วสั่งคำสั่งต่อไปนี้ chmod -R g-w upgrades languages themes plugins
  5. จบส่วนติดตั้ง WordPress