Ubuntu18 – 安裝 PHP7.3 + Apache + Mysql/MariaDB + phpMyadmin
- 2019/07/09 更新
切換到 root
第一次需要設定 root 密碼,接著進入 root
1 2 3 4 |
sudo passwd root su root 登入 root |
另外,若在桌面的話要使用 root 登入可以這麼做
1 2 3 |
gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf |
在檔案中加入下面這行
1 2 3 |
greeter-show-manual-login=true |
存檔後重新開機,就可以選擇 Login 了。
建議替換倉儲
參考 比較能找到 php 相關較新的版本。
1 2 3 4 5 |
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update |
建議安裝 aptitude
可以使用
1 2 3 |
apt-get install aptitude -y |
取得較 apt-get 方便的 aptitude,我主要用來查詢 php7 是否存在
1 2 3 |
aptitude search php7.3 |
因為要查詢套件,無法使用 apt-get 所以要借用 aptitude。如果遇到被鎖定問題,重新新開機 ubuntu 就可以了。或是
1 2 3 4 5 |
sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock* |
安裝 vim
1 2 3 |
apt-get install vim -y |
更改主機時間
查詢時間
1 2 3 |
date |
使用 ntpdate 修改為台灣時間,
1 2 3 4 |
apt-get install -y ntpdate ntp ntpdate time.stdtime.gov.tw |
若出現 the NTP socket is in use, exiting,代表不是系統時間校正的問題,所以設定時區為台北。
1 2 3 |
dpkg-reconfigure tzdata |
選擇 Asia – Taipei。
MySQL 8 安裝
1 2 3 4 5 6 |
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb sudo apt update sudo apt-get install mysql-server -y |
接著需要輸入 root 密碼,並詢問下面這兩個選項
1 2 3 4 |
Use Strong Password Encryption (RECOMMENDED) Use Legacy Authentication Method (Retain MySQL 5.x Compatibility) |
第一個選項會使用 caching_sha2_password,第二個會使用 mysql_native_password。但因為怕 phpMyAdmin 登入無法支援,所以我會改成第二個。之後若要修改可到 /etc/mysql/mysql.conf.d/default-auth-override.cnf。
查看安裝的版本是否正確並嘗試登入
1 2 3 4 5 6 |
mysql -V mysql -u root -p mysql> select NOW(); mysql> exit |
接著安全設定
1 2 3 |
sudo mysql_secure_installation |
輸入剛剛設定給 root 的密碼即可操作。
MaraiDB 安裝 (我推薦用 MySQL 8)
1 2 3 4 5 |
apt-get -y install mariadb-server mariadb-client mysql_secure_installation mysql -u root -p <-測試是否可登入 |
DB 登入後修改時區為台北(+8:00)
查看時間與時區
1 2 3 4 |
select now(); show variables like "%time_zone%"; |
修改時區
1 2 3 4 5 |
set global time_zone = '+8:00'; set time_zone = '+8:00'; flush privileges; |
Apache 安裝
1 2 3 |
apt-get -y install apache2 |
到瀏覽器打上 http://localhost 就可以看到 Apache 預設首頁代表安裝成功。接著啟用 mod_reswite 功能,讓伺服器可以讀取 .htaccess 。參考
1 2 3 4 |
a2enmod rewrite systemctl restart apache2 |
這時在 phpinfo() 中可以看到 Configuration > apache2handler 的 Loaded Modules 有 mod_rewrite 就代表啟用成功。
1 2 3 |
vim /etc/apache2/sites-available/000-default.conf |
找到 DocumentRoot “/var/www/html” 後,修改如
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> DocumentRoot /var/www/html/ <Directory "/var/www/html/"> AllowOverride All </Directory> </VirtualHost> |
1 2 3 |
service apache2 restart |
我喜歡將 <VirtualHost> 包圍 <Directory>,讓每個網站都成為獨立的設定。
DNS 記得設定
不同的主機設定的 DNS 方式都不一樣。需要請洽服務商。如果是 Amazon 主機 (AWS),那麼就要前往 Route 53 設定 A Type。
若想:網域指定某個路徑
原本網站:http://xxx.com 對應 /var/www/html
希望改成:http://xxx.com 對應 /var/www/html/project
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> DocumentRoot /var/www/html/project <Directory "/var/www/html/project"> AllowOverride All </Directory> </VirtualHost> |
若想:設定別名 (Alias)
希望網址 http://xxx.com/abc 連到 /var/www/html/cdefg,那就添加
1 2 3 |
Alias /abc /var/www/html/cdefg |
我喜歡將它添加在某個網域底下,也就是 <VirtualHost> 底下,例如
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ...... Alias /abc /var/www/html/cdefg <-- 這裡 <Directory "......"> AllowOverride All </Directory> </VirtualHost> |
若想:多網域指向同一台主機
- A.com 指向路徑 /var/www/html/A
- B.com 指向路徑 /var/www/html/B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<VirtualHost *:80> DocumentRoot /var/www/html/A ServerName A.com <Directory "/var/www/html/A"> AllowOverride All </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/B ServerName B.com <Directory "/var/www/html/B"> AllowOverride All </Directory> </VirtualHost> |
以上修改完記得重新啟動 Apache,讓 DNS 生效。
Windows 修改 Hosts 檢查未生效的 DNS
DNS 生效通常需要一段時間,這期間要知道有沒有修改成功,可以先修改自己電腦的 Hosts :C:\WINDOWS\system32\drivers\etc\hosts 底部添加規則:
左至右依序是:IP 網域 #加上註解
1 2 3 |
xxx.xxx.xxx.xxx domain.com #我的網站 |
存檔後,瀏覽剛新增好的網域,如果 DNS 確實與 <VirtualHost> 設定無誤,就能暫時看到網站了。
修改權限
如果使用非 root 無法上傳的話,可修改 /var/www/html 權限為非 root 的 使用者,如 ubuntu。這樣可以當使用帳號 ubuntu 透過 SFTP/FTP 連接的時候進行編輯。若有開設新網域、子網域,也一定要重新指定路徑權限喔。
1 2 3 |
chown -R ubuntu:ubuntu /var/www/html |
若要透過 FTP 上傳,需要注意權限路徑的問題
1 2 3 |
chmod 777 /var/www/html -R |
PHP 安裝
1 2 3 4 |
apt-get -y install php7.3 libapache2-mod-php7.3 service apache2 restart |
建立第一份 php 測試查看 phpinfo()
1 2 3 4 |
cd /var/www/html vim info.php |
1 2 3 4 |
<?php echo phpinfo(); |
網址打 http://localhost/info.php 就可以順利看到 PHP 相關設定資訊。接著安裝相關套件
1 2 3 4 |
apt-get install -y php7.3-mysql php7.3-curl php7.3-gd php7.3-intl php-imagick php7.3-imap php7.3-mbstring php7.3-gettext php7.3-zip php7.3-pdo php7.3-dom php7.3-xml php7.3-bcmath service apache2 restart |
如果要查詢更多,可以透過 aptitude 查詢可安裝的名稱。若安裝不同的版本號,只需要修改如 php7.x 即可。但確實的名稱建議還是用 search 查詢一下。
1 2 3 |
aptitude search php7.3 |
接著修改 php.ini
1 2 3 |
vim /etc/php/7.3/apache2/php.ini |
啟動SSL支援
1 2 3 4 5 6 7 |
a2enmod ssl service apache2 restart a2ensite default-ssl service apache2 reload service apache2 restart (應該可以不用...) |
安裝 Git
1 2 3 |
apt install git -y |
安裝 Composer
1 2 3 4 5 6 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/local/bin/composer |
透過 Composer 安裝 phpMyAdmin
1 2 3 4 |
cd /var/www/html composer create-project phpmyadmin/phpmyadmin |
複製預設的範例來製作設定檔
1 2 3 4 5 |
cd phpmyadmin cp -i /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php vim /var/www/html/phpmyadmin/config.inc.php |
1. 若要由 Web 登入
指定 blowfish_secret 密碼要 32 個字。auth_type 使用 cookie。
1 2 3 4 5 6 |
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['TempDir'] = '/tmp'; <-- 自行添加可解決錯誤 |
2. 若要自動登入
不安全但很方便,建議僅在開發時使用,若為 cookie 則務必要指定 user、password。網址進入 phpmyadmin 就不需要輸入帳號密碼,當然也無法登出。
1 2 3 4 5 6 |
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '1234'; |
接著匯入 phpmyadmin 的設定資料庫,這樣我們在修改 phpmyadmin 的時候才能儲存設定
1 2 3 4 |
mysql -u root -p < /var/www/html/phpmyadmin/sql/create_tables.sql ifconfig (可查看 ip) |
從網址連進 http://xxx.xxx.xxx.xxx/phpmyadmin/ 以後,應該就會看到資料庫多出 phpmyadmin 。這可以解決「尚未設定 phpMyAdmin 設定儲存空間,部份延伸功能將無法使用。」的問題。
Port 設定
如果希望用 http://localhost:9000 訪問你的專案,可以這麼設定
1 2 3 |
vim /etc/apache2/ports.conf |
添加如
1 2 3 |
Listen 9000 |
接著添加想要對應的路徑
1 2 3 |
vim /etc/apache2/sites-available/000-default.conf |
1 2 3 4 5 6 7 8 |
<VirtualHost *:9000> DocumentRoot /var/www/html/website2.com <Directory "/var/www/html/website2.com"> AllowOverride All </Directory> </VirtualHost> |
1 2 3 |
service apache2 restart |
SSH 安裝
1 2 3 4 |
aptitude install ssh -y vim /etc/ssh/sshd_config |
1 2 3 4 5 |
Port 22 PasswordAuthentication yes PermitRootLogin yes -> 是否開放 root 登入 |
1 2 3 |
/etc/init.d/ssh restart |
介面改為漢語(臺灣)
預設沒有,要下指令
1 2 3 4 |
sudo vim /etc/locale.gen zh_TW.UTF8 <--- 把註解拿掉 |
再運行
1 2 3 |
sudo locale-gen |
接著用放大鏡搜尋 Language Support > Install/Remove Languages > Chinese (traditional) > Apply,安裝好後會再列表看到漢語(台灣),切換到頁籤 Regional Formats,選擇漢語台灣 > Apply System-Wideot > 重新啟動電腦
登入後進入 Language Support 並調整 Language 為臺灣。再進入 Settings > Region & Language > Language anguage 選擇漢語(臺灣) > 重新啟動 > 顯示中文了!
安裝注音
進入像是市集的 Ubuntu 軟體 > 搜尋 gcin > 安裝 。
完成後 > 設定 > 地區案語言 > 管理安裝的語言 > 鍵盤輸入法系統 > gcin > 重新啟動就可使用了
Feeey个人博客
2017-02-28 - 02:02
博主最近没怎么更新啊,我来转转。
urreed
2018-05-31 - 23:39
“MaraiDB 預設不讓 root 登入 phpmyadmin,加入這行可解除”.感謝,解決了困擾好久的難題
JSN
2018-06-04 - 10:27
我很開心 ^^