ติดตั้งปรับแต่ง Ubuntu 22.04 เพื่อเตรียมสำหรับติดตั้ง WordPress บน apache2 และติดตั้ง WordPress
Host setting
- เครื่อง Server มี 2 ชื่อ A record เป็น server-name1.psu.ac.th Cname เป็น server-name.psu.ac.th
- ติดตั้ง Ubuntu 22.04 ข้ามเรื่องการติดตั้ง Ubuntu ไปนะครับ
- จะได้ username: group ที่สามารถเรียกใช้ sudo ได้ตั้งแต่เริ่มต้นตามที่ติดตั้ง
- sudo apt update && sudo apt dist-upgrade -y && sudo apt autopurge -y เพื่อปรับปรุง software ต่าง ๆ ให้เป็นรุ่นปัจจุบัน
- sudo reboot ในกรณีที่มี kernel ใหม่ต้องรีบูตเพื่อเปลี่ยน kernel
- 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
- sudo a2enmod ssl rewrite headers
- เปลี่ยนเป็น user root ด้วยคำสั่ง sudo -i
- cd /etc/ssl/private
- cp /home/username/certificate/* . (ต้องได้รับไฟล์ certificate มาเรียบร้อยแล้วนะครับ ขอข้ามไปเรื่องการจัดเตรียมไฟล์ certificate) ในตัวอย่างนี้จะมีไฟล์เดียวคือ star.psu.ac.th-combined.crt
- openssl dhparam -out /etc/ssl/private/dhparams_4096.pem
- /etc/apache2/sites-available
- 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>
- 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>
- 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>
- a2ensite licensing.conf licensing-ssl.conf default-ssl.conf
- a2enmod headers
- systemctl restart apache2
- mysql
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
create database licensing;
GRANT ALL PRIVILEGES ON licensing.* TO 'username'@'localhost' WITH GRANT OPTION;
quit
- cd /var/www/html
- wget https://wordpress.org/latest.zip
- unzip latest.zip
- rm latest.zip
- mv wordpress lsc
- chmod -R username:www-data .
- cd lsc
- chmod g+w .
- logout
- จบส่วนการตั้งค่า Host เพื่อเตรียมติดตั้ง WordPress
- เปิด browser ไปที่เว็บ http://licensing.psu.ac.th ซึ่งจะถูก redirect ไปที่ https://licensing.psu.ac.th โดยอัตโนมัติ
- กรอกข้อมูลสำหรับเชื่อมต่อให้เรียบร้อย และติดตั้ง wordpress ให้เรียบร้อย
- กลับมาที่ console หรือ terminal
- cd /var/www/html/lsc
- chmod og-w .
- sudo chown username:www-data .htaccess wp-config.php
- chmod og-w .htacess wp-config.php
- vi wp-config.php เพิ่มข้อความว่า
/** Direct install plugin **/
define('FS_METHOD', 'direct');
- cd /var/www/html/lsc/wp-content
- mkdir uploads upgrade languages
- sudo chown -R username:www-data uploads upgrade languages themes plugins
- chmod -R g+w uploads upgrade languages themes plugins เพื่อให้สามารถติดตั้ง plugin theme และ upload ไฟล์ขึ้นเว็บได้ เมื่อติดตั้ง themes และ plugins ได้จนพอใจแล้วสั่งคำสั่งต่อไปนี้ chmod -R g-w upgrades languages themes plugins
- จบส่วนติดตั้ง WordPress