# Use Linux build the runtime for Laravel 2022-10-25 ###### tags: `Laravel` `MobaXterm` `Web server` `Back end` `後端心得` ---- Before creating your first Laravel project, you should ensure that your local machine has PHP and Composer installed. If you are developing on macOS, PHP and Composer can be installed via Homebrew. In addition, we recommend installing Node and NPM. 節錄至 [Laravel 官網](https://laravel.com/docs/9.x#getting-started-on-linux) 需要 PHP and Composer 以及 Node 和 NPM Laravel 歷史: https://learnku.com/articles/4722/the-history-of-laravel https://zhuanlan.zhihu.com/p/476070942 Laravel 未來在 AWS 發展: https://vapor.laravel.com/ 在 RHEL 上安裝以下套件前先更新和升級 > yum update > yum upgrade 佈署參考: https://kim85326.github.io/2019/05/11/%E5%88%A9%E7%94%A8-LNMP-(Linux-+-Nginx-+-MySQL-+-PHP)-%E6%9E%B6%E8%A8%AD%E4%BC%BA%E6%9C%8D%E5%99%A8/ ---- ## 1. 部署 git 到 Linux 上 參考 Git 官網教學 https://git-scm.com/download/linux > 安裝並使用 [tarball](https://www.kernel.org/pub/software/scm/git/) 假如 Linux 機器是 RedHat 的話, 可使用指令 `yum install git -y` 安裝 但因 RHEL CentOS7-6 預設版本是 1.8.3.x 因此要先移除舊版的 Git ### 移除舊版的 Git: > sudo yum -y remove git > sudo yum -y remove git-* ### 加入 End point 導向到 CentOS 7 repo > sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm ### 導入 repo 到 CentOS 後, 接著安裝最新的 Git 版本 > sudo yum install git ### 好了後檢查 Git 版本 > git --version 參考教學: [How to install Latest Git ( Git 2.x ) on CentOS 7 ](https://webmagicinformatica.com/how-to-install-latest-git-git-2-x-on-centos-7/#:~:text=How%20to%20install%20Latest%20Git%20%28%20Git%202.x,git%20version%20after%20installing%20git2u-all%20package%20git%20--version) [【Linux】将 Git 更新至最新版本(yum) ](https://blog.csdn.net/qq_42951560/article/details/124604800) --- ## 2. 順便新建一個 .ssh 資料夾 在 /root 底下 接著在 Linux 機器上生成 ssh key: > #定位到根目錄(/root)下的 .ssh 資料夾, 假如沒有, 生成一個 >> cd ~/.ssh > #查看是否存在ssh >> ls > #生成 ssh key >>ssh-keygen > #獲取公鑰 >>cat id_rsa.pub ![](https://i.imgur.com/uRzmOxe.png) --- ## 3. 安裝 php 假如 Linux 機器是 Redhat 系統, 使用指令 安裝 php 參考教學 [PHP 安裝在Linux Apache怎麼用? 只要4個步驟! ](https://liedward.com/php-install/) 步驟 1. 在 RHEL 上啟用 EPEL 和 Remi Repository 的 package 套件 > 在CentOS/RHEL 7 的情況 >> sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm >> sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm *根據教學所提到的, DNF 是 rpm package 軟體管理器, 目前取代了 yum, 效能也較好 步驟 2. 安裝 php 7 > #在CentOS/RHEL 7 >> sudo yum -y install yum-utils >> sudo yum-config-manager --disable 'remi-php*' >> sudo yum-config-manager --enable remi-php80 // 根據教學所說, 版本可自行替換,如php7 可改remi-php74 步驟 3. 安裝 PHP 及常見的 modules > #在CentOS/RHEL 7 >> sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd libapache2-mod-php php-zip php-xml php-bcmath 步驟 4. 檢查安裝後的 PHP 版本 >> php -v 教學提到 延伸安裝 Memcached 可以讓資料透過記憶題存取來提高效能 參考 https://liedward.com/memcached-install/ 步驟 5. 如果 ---- ## 3.X 移除 PHP 相關指令 純移除: > > yum remove php 完全移除 PHP 安裝 package(`*` → 代表沒有東西到任一長度的字串) > yum remove php* PHP 包裝檔細項設定移除(removing existing PHP packages): > yum remove php-cli > yum remove php-common 參考教學: https://stackoverflow.com/questions/43537523/how-to-uninstall-an-older-php-version-from-centos7 https://blog.xuite.net/yuwen0815/wretch/115135682 http://www.weicot.com/%E5%9C%A8centos-7%E5%92%8Crhel-7%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%8D%87%E7%BA%A7%E6%88%96%E6%96%B0%E5%AE%89%E8%A3%85php-7-4%E3%80%817-3%E3%80%817-2%E3%80%817-1/ https://www.hy-star.com.tw/tech/linux/wildcard/wildcard.html --- ## 4. 安裝 pyhton 需要 python 3.6 或 3.7/3.8, 3.10 以上版本, 因此使用指令安裝: > yum install python3 參考: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/assembly_installing-and-using-python_configuring-basic-system-settings --- ## 5. 接著安裝 node.js 和 npm 安裝前記得再作一次更新 在 RHEL 上安裝以下套件前先更新和升級 > yum update > yum upgrade 可以去官網下載指定版本, 或者用指令: > sudo yum install nodejs > sudo yum install npm 並且 check node 版本 > node -v 以及 check npm 版本 > npm -v 這邊 node 版本微 `v16.17.0` 參考: [Node.js 官網](https://nodejs.org/en/download/) [菜鳥教程](https://www.runoob.com/nodejs/nodejs-install-setup.html) [如果 npm 沒有指向全域](https://blog.csdn.net/qq_41399976/article/details/90287050) --- ## 6. 安裝 Composer, 這是 PHP 相關套件管理工具 根據教學說明, 可以讓 developer 的需求來自動安裝及更新套件, 可以方便開發和維護 目前著名的 Laravel 框架有依賴到該 PHP 專案 步驟 1. 先更新 PHP-CLI 套件 > sudo yum update && sudo yum upgrade -y 步驟 2. 從 Composer 官網下載, 並設定為全域可執行 > php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');" 步驟 3. 根據教學使用官方提供 SHA-384 作驗證 > php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;" 並且驗證過的同時, 可以來安裝 Composer 了, 為了讓其在全域環境下使用, 將 Composer 安裝至 ``` usr/local/bin ``` 目錄下, 並同時更該檔案名稱為 composer > sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer 步驟 4. 接著查看 Composer 是否安裝正確, 輸入指令來做檢查 > composer -v ![](https://i.imgur.com/piNuuN1.png) ↑ 出現這個圖是以及一些可使用的 options 則代表成功 *如果要從 v2.4.3 降版本到 v1 來因應某些套件需求, 可以使用指令 > composer self-update --1 **升級回 v2 版本指令為 > composer self-update --2 *** 更新 Composer 版本指令為 > sudo composer self-update 步驟 6. 如果要移除 Composer 安裝檔案, 指令為 > rm /tmp/composer-setup.php 步驟 7. 查看可用的指令為: > composer 步驟 8. 如果有需要, 可以配置映像源 > composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 以及 全域性下載 Composer 多執行緒下載工具 > composer global require hirak/prestissimo 參考文章依據 [Composer 安裝教學-以 Debian/Ubuntu 環境中示範](https://www.kjnotes.com/devtools/88) ---- ## 7. 安裝 curl 安裝 curl 命令列下載工具, 使用指令 > sudo yum install curl 也可以使用 curl 命令來安裝 npm > curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash *根據微軟教學, 使用指令 `command -v nvm` ... 這應該會傳回 'nvm',如果您收到「找不到命令」或完全沒有回應,請關閉目前的終端機並重新開啟,然後再試一次 最後使用指令, 來確認 npm 有安裝成功 > npm -v 根據微軟教學: https://learn.microsoft.com/zh-tw/windows/dev-environment/javascript/nodejs-on-wsl ---- ## 8. 安裝 Larvel 安裝前記得再作一次更新 在 RHEL 上安裝以下套件前先更新和升級 > yum update > yum upgrade 假如剛剛的 Composer 安裝順利的話, 可以直接使用 Composer 進行安裝 > composer global require laravel/installer 接著, 參考該教學 https://laravel.tw/docs/4.2/quick 使用指令安裝之後,你可以透過命令列模式執行下列指令來安裝 Laravel: > composer create-project laravel/laravel your-project-name --prefer-dist ↑ 這個指令會下載並安裝一份乾淨的 Laravel 在你目前所在目錄的 your-project-name 的新建目錄中。 參考教學: [[laravel]laravel筆記:環境建置,安裝與布署 ](https://hackmd.io/@twkhjl/HJtWAQH-8) ---- ## 9. Your First Laravel Project ### 使用 composer 指令建立: > composer create-project laravel/laravel example-app ### 移動到 ==example-app== 資料夾內, 並執行 Laravel >cd example-app >php artisan serve 順利的話就可以看到 Laravel 執行了!! ### 接著可以在 ==example-app== 資料夾內使用指令, 來查看 Laravel 的版本 > php artisan -V ![](https://i.imgur.com/zQahMCb.png) ### 如果版本沒有更新的話, 可以用指令更新 > composer update *如果無法順利連上 Laravel 機器的話, 要試著更改 ip 位址, 通常會用內網的 ip 例如, 用預設指令 `php artisan serve` 會預設開在 `http://127.0.0.1:8000` 這時可以使用指定 ip 與 port 的方式來啟用: > php artisan serve --host 192.168.66.16 --port 8000 ### 看到頁面 **順利的話會看到這個頁面, 這樣才代表 Laravel 正式啟動 ↓ ![](https://i.imgur.com/nvj74Kj.png) 參考教學: [查看 Laravel 方式](https://www.cnblogs.com/applelife/p/10811607.html) [用 PHP artisan serve 運行項目之後不能用 ip 地址訪問?](https://learnku.com/laravel/t/7194/the-novice-asked-you-a-question-that-could-not-be-accessed-with-a-ip-address-after-running-a-project-with-php-artisan-serve) ---- ## 10. 安裝 MariaDB 輸入指令: > yum install mariadb-server mariadb 接著啟動 mariadb 服務: > systemctl start mariadb > 開機時自動啟動該服務: > systemctl enable ``` 看到這行表示成功 ↓ Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. ``` * 假如無法啟動 mariasb, 可能有先裝了 mysql 的緣故, 這時候要先把 mysql 刪除(理論上共用同個 port) 使用指令檢查: > rpm -qa | grep mysql 或是 > yum list installed | grep mysql 得知安裝在系統的 `mysql` 相關套件後, ![](https://i.imgur.com/2Z0KaSR.png) 需使用指令移除: > yum remove mysql-libs mysql-server mysql-client mysql-common php-mysqlnd.x86_64 mysql57-community-release mysql 接著再使用指令檢查 `mysql` 還在不在: > rpm -qa | grep mysql 然後移除 資料庫目錄及 my.cnf : > rm -rf /var/lib/mysql/ > rm -rf /etc/my.cnf 參考: https://www.ltsplus.com/linux/rhel-centos-remove-mysql-server 最後設定安全性設定: > sudo mysql_secure_installation * 以自己使用在測試機上最順手為主 然後登入 DB: > mysql -u root -p 離開為: > Ctrl+c ---- ## 11. 安裝 phpAdmin 使用安裝指令: > yum install wget 下載所需版本: > wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz --no-check-certificate * 假如出現錯誤再加上 `--no-check-certificate` 解壓縮: > tar zxvf 檔名 移動到目錄: > sudo mv 目錄名稱 /usr/share/nginx/html/phpmyadmin 設置權限: > chmod 777 tmp 設置設定檔: ``` mv config.sample.inc.php config.inc.php vi config.inc.php $cfg['blowfish_secret'] = '自己設喜歡的key就好,不要太短'; ``` ---- ## 12. 安裝 Docker(選用) 根據 Docker 官網的建議, 來進行安裝的動作, 作為 Bootcamp 上練習創造一個 MVC 的 micro blog 會需要用到 docker 指令 以 IBM Z 的機子來說, OS 系統需求在 RHEL 7, RHEL8, RHEL 9 ### 步驟 1. 首先, 移除 old cersions ``` sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \ podman \ runc ``` ### 步驟 2. 接著安裝 docker-ce 前, 先安裝 yum-utils 和 set up repo *docker-ce 是 Docker Engine package 使用指令來安裝 yum-utils(內含 yum-config-manager) > sudo yum install -y yum-utils 同時配置 docker 的 repo 位置: > yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo **假如使用官網的指令安裝 yum-config-manager 會報錯, 可以將以下指令 ``` sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/rhel/docker-ce.repo ``` 替換為: ``` yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` 順利的話可以看到 repo 的位置設定完成 ↓ ![](https://i.imgur.com/MS1haU6.png) 參考依據: https://www.laihuihua.com/news/article-18296.html ### 步驟 3. 安裝 Docker 的引擎 安裝最新版本的引擎, 裡面有 Docker Compose > sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin 假如跳出接受 GPG keys, 代表指紋符合, 記得按下 y 接受 *到了這步, 算是完成安裝 Docker 了 假如有特定版本需求, 可以參考官網的指令: https://docs.docker.com/engine/install/rhel/ ### 步驟 4. 啟動 Docker 指令為: > sudo systemctl start docker 驗證 Docker Engine 有沒有啟動的方式, 可以藉由 hello-world 映像來達成: > sudo docker run hello-world 如果要查看有哪些映像檔案已安裝, 則可使用指令: > sudo docker images 至於其他 Open 或想建立私有的 Image Registry 可以參考 ==教學參考== *至於從 package, rpm 的方式來作安裝, 或是做更新、移除 Docker 的動作, 可以參考官網: https://docs.docker.com/engine/install/rhel/ ==教學參考==, 閱讀: [Docker Container 淺談 ](https://ithelp.ithome.com.tw/articles/10237538?sc=iThomeR) ----- ## 13. 使用 Bootcamp 來作練習(選用) https://bootcamp.laravel.com/ ----