Ubuntu18 – 安裝 PHP7.3 + Apache + Mysql/MariaDB + phpMyadmin
- 2019/07/09 更新
切換到 root
第一次需要設定 root 密碼,接著進入 root
sudo passwd root su root 登入 root
另外,若在桌面的話要使用 root 登入可以這麼做
gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
在檔案中加入下面這行
greeter-show-manual-login=true
存檔後重新開機,就可以選擇 Login 了。
建議替換倉儲
參考 比較能找到 php 相關較新的版本。
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update
建議安裝 aptitude
可以使用
apt-get install aptitude -y
取得較 apt-get 方便的 aptitude,我主要用來查詢 php7 是否存在
aptitude search php7.3
因為要查詢套件,無法使用 apt-get 所以要借用 aptitude。如果遇到被鎖定問題,重新新開機 ubuntu 就可以了。或是
sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock*
安裝 vim
apt-get install vim -y
更改主機時間
查詢時間
date
使用 ntpdate 修改為台灣時間,
apt-get install -y ntpdate ntp ntpdate time.stdtime.gov.tw
若出現 the NTP socket is in use, exiting,代表不是系統時間校正的問題,所以設定時區為台北。
dpkg-reconfigure tzdata
選擇 Asia – Taipei。
MySQL 8 安裝
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 密碼,並詢問下面這兩個選項
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。
查看安裝的版本是否正確並嘗試登入
mysql -V mysql -u root -p mysql> select NOW(); mysql> exit
接著安全設定
sudo mysql_secure_installation
輸入剛剛設定給 root 的密碼即可操作。
MaraiDB 安裝 (我推薦用 MySQL 8)
apt-get -y install mariadb-server mariadb-client mysql_secure_installation mysql -u root -p <-測試是否可登入
DB 登入後修改時區為台北(+8:00)
查看時間與時區
select now(); show variables like "%time_zone%";
修改時區
set global time_zone = '+8:00'; set time_zone = '+8:00'; flush privileges;
Apache 安裝
apt-get -y install apache2
到瀏覽器打上 http://localhost 就可以看到 Apache 預設首頁代表安裝成功。接著啟用 mod_reswite 功能,讓伺服器可以讀取 .htaccess 。參考
a2enmod rewrite systemctl restart apache2
這時在 phpinfo() 中可以看到 Configuration > apache2handler 的 Loaded Modules 有 mod_rewrite 就代表啟用成功。
vim /etc/apache2/sites-available/000-default.conf
找到 DocumentRoot “/var/www/html” 後,修改如
<VirtualHost *:80> DocumentRoot /var/www/html/ <Directory "/var/www/html/"> AllowOverride All </Directory> </VirtualHost>
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
<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,那就添加
Alias /abc /var/www/html/cdefg
我喜歡將它添加在某個網域底下,也就是 <VirtualHost> 底下,例如
<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
<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 網域 #加上註解
xxx.xxx.xxx.xxx domain.com #我的網站
存檔後,瀏覽剛新增好的網域,如果 DNS 確實與 <VirtualHost> 設定無誤,就能暫時看到網站了。
修改權限
如果使用非 root 無法上傳的話,可修改 /var/www/html 權限為非 root 的 使用者,如 ubuntu。這樣可以當使用帳號 ubuntu 透過 SFTP/FTP 連接的時候進行編輯。若有開設新網域、子網域,也一定要重新指定路徑權限喔。
chown -R ubuntu:ubuntu /var/www/html
若要透過 FTP 上傳,需要注意權限路徑的問題
chmod 777 /var/www/html -R
PHP 安裝
apt-get -y install php7.3 libapache2-mod-php7.3 service apache2 restart
建立第一份 php 測試查看 phpinfo()
cd /var/www/html vim info.php
<?php echo phpinfo();
網址打 http://localhost/info.php 就可以順利看到 PHP 相關設定資訊。接著安裝相關套件
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 查詢一下。
aptitude search php7.3
接著修改 php.ini
vim /etc/php/7.3/apache2/php.ini
啟動SSL支援
a2enmod ssl service apache2 restart a2ensite default-ssl service apache2 reload service apache2 restart (應該可以不用...)
安裝 Git
apt install git -y
安裝 Composer
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
cd /var/www/html composer create-project phpmyadmin/phpmyadmin
複製預設的範例來製作設定檔
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。
$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 就不需要輸入帳號密碼,當然也無法登出。
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '1234';
接著匯入 phpmyadmin 的設定資料庫,這樣我們在修改 phpmyadmin 的時候才能儲存設定
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 訪問你的專案,可以這麼設定
vim /etc/apache2/ports.conf
添加如
Listen 9000
接著添加想要對應的路徑
vim /etc/apache2/sites-available/000-default.conf
<VirtualHost *:9000> DocumentRoot /var/www/html/website2.com <Directory "/var/www/html/website2.com"> AllowOverride All </Directory> </VirtualHost>
service apache2 restart
SSH 安裝
aptitude install ssh -y vim /etc/ssh/sshd_config
Port 22 PasswordAuthentication yes PermitRootLogin yes -> 是否開放 root 登入
/etc/init.d/ssh restart
介面改為漢語(臺灣)
預設沒有,要下指令
sudo vim /etc/locale.gen zh_TW.UTF8 <--- 把註解拿掉
再運行
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
我很開心 ^^