Ubuntu18.04系統建置WordPress網站

這篇是紀錄指令的方式創建apache網頁主機。

取得一台ubuntu18.04的伺服器終端,

更新ubuntu套件清單與套件
sudo apt update

啟用ufw防火牆
sudo ufw enable
(同理,關閉防火牆指令是 ufw disable)

允許apache從80與443端口通信
sudo ufw allow in 80
sudo ufw allow in 443

參考,禁止apache連入的方法則是
sudo ufw deny in 80
sudo ufw deny in 443

查看ufw狀態
sudo ufw status numbered

刪除ufw規則項目
sudo ufw delete 項目號碼

參考,查看過往指令紀錄
history

參考,傳回指定過往指令
!指令該行的號碼

vim全文刪除
在putty程序的設定值>terminal>Features
勾選Disable applications keybad mode
文件用vim開啟後再非編輯模式下輸入要刪除的行數量,
接著鍵入dd即可批次刪除行。

安裝apache

在終端輸入
sudo apt install apache2

假設網站存放在/var/www/demoapheav8d/底下
sudo mkdir /var/www/demoapheav8d/
cd /var/www/
sudo chown -R www-data:www-data demoapheav8d

創建一個網站設定值(等於是這台主機底下的一個網站)
cd /etc/apache2/sites-available/
vi wordpress.conf
輸入

<VirtualHost *:80>
    DocumentRoot /var/www/demoapheav8d
    ServerName demo-aphe.example.com
    ServerAlias demo-aphe2.example.com
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot /var/www/demoapheav8d
    ServerName demo-aphe.example.com
    ServerAlias demo-aphe2.example.com
    SSLEngine On
    SSLCertificateFile /var/www/demoapheav8d.crt
    SSLCertificateKeyFile /var/www/demoapheav8d.key
    SSLCertificateChainFile /var/www/demoapheav8d_ca.crt
    SSLHonorCipherOrder On
    SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK
</VirtualHost>
<Directory /var/www/demoapheav8d>
   AllowOverride All
</Directory>

啟用rewrite給.htaccess生效
a2enmod rewrite

啟用ssl讓網站憑證生效
a2enmod ssl

啟用網站的conf
a2ensite wordpress
(同理 關閉網站就是a2dissite wordpress,注意wordpress就是一開始設定的wordpress.conf)

使用前端控制工具查看網站的狀態
apachectl -S

安裝資料庫


apt install mysql-server -y
設定MySQL資料庫的root密碼(範例為Passw0rD)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Passw0rD';

安裝php


apt install php libapache2-mod-php php-mysql php-curl php-gd php-xml php-mbstring  php-xmlrpc php-zip php-soap php-intl -y

編輯dir.conf使index.php優先於index.html
vi /etc/apache2/mods-enabled/dir.conf
內容看起來像是
<IfModule mod_dir.c>
   DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
請將index.php移動到index.html前方即可。

在網站所屬目錄建立一個index.php
cd /var/www/demoapheav8d
vi index.php
內容鍵入
<?php
phpinfo();
?>

輸入網站網址理應可以觀看phpinfo

接著登入mysql
mysql -u root -p
>Passw0rD #這是前面安裝mysql設定root的密碼

新增一個資料庫(範例名稱wordpressdb)
mysql
> CREATE DATABASE wordpressdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

創建該資料庫(wordpressdb)的帳號(範例wordpressu)密碼(範例w0rdpRessU)
> GRANT ALL ON wordpressdb.* TO 'wordpressu'@'localhost' IDENTIFIED BY 'w0rdpRessU';
刷新設定值
> FLUSH PRIVILEGES;
離開資料庫設定
>\q

取得WordPress
cd /var/www/demoapheav8d
wget https://wordpress.org/latest.zip
apt install unzip -y
解壓縮
unzip latest.zip
將wordpress資料夾內的檔案提到網站根目錄
mv wordpress/* ./
移除多餘的wordpress資料夾
rm -rf wordpress
修改權限
cd ..
sudo chown -R www-data:www-data demoapheav8d

打開網址進入WordPress安裝程序。


如果要增加帳戶的存取權限,
先登入到非管理員帳戶下(範例為useraa帳戶名稱)
透過
whoami
查詢當前帳戶名稱,
輸入(注意useraa是範例的帳戶名稱)
sudo usermod -a -G www-data useraa
將當前帳戶加入www-data的群組
接著更改群組讀寫權限
sudo chmod 775 /var/www/demoapheav8d
理論上該帳戶即可修改網站根目錄的檔案。

隱藏Apache的版本號
sudo vi /etc/apache2/apache2.conf

在檔案結尾新增
ServerTokens Prod
ServerSignature Off

保存退出後重啟Apache
systemctl restart apache2

啟用站點http2功能


啟用http2模組(在sudo管理權限下)
a2enmod http2

修改http2模組
vi /etc/apache2/mods-available/http2.load
在檔案結尾新增
Protocols h2 h2c http/1.1

先停止apache
apachectl stop

安裝php-fpm(請依照原安裝的php版本修改,這裡以php7.2舉例)
apt install php7.2-fpm

啟用模組
a2enmod proxy_fcgi setenvif

啟用php-fpm
a2enconf php7.2-fpm

停用php
a2dismod php7.2

停用不兼容的mpm_prefork模組
a2dismod mpm_prefork

啟用mpm_event模組
a2enmod mpm_event

重啟Apache
systemctl restart apache2

參考資料 https://http2.pro/doc/Apache

匯出資料庫


在終端機分別輸入(wordpressu是範例資料庫帳號,wordpressdb是範例資料庫名稱)
mysqldump -u wordpressu -p wordpressdb > backup.sql

接著輸入密碼
>w0rdpRessU #這是前面範例資料庫密碼

此時檔案目錄下會出現導出的backup.sql檔案。

匯入資料庫


請參考先前文章

留言

這個網誌中的熱門文章

紅米手機MIUI設置SD卡為延伸儲存空間