安裝與起步
這篇文章將從 Symfony 的環境設定與 Hello World 開始講解, 包含 Ubuntu 的開發環境設定以及嘗試開一個測試的伺服器並顯示第一個頁面。
安裝
在所有文章開始之前,首先要安裝環境。
PHP
PHP 版本建議使用 PHP 7.2 或者 PHP 7.3,至少版本應為 7.2.5。
~$ sudo apt install php7.2 php-pear php7.2-xml php7.2-curl php7.2-dom php7.2-zip php7.2-mysql php7.2-mbstring
MySQL
MySQL 版本建議使用 MySQL 5.7,如果還沒安裝 MySQL 的話可以考慮使用 Docker 來快速建立一個 MySQL。
~$ sudo apt install docker docker.io
~$ docker login
# Optional - 開啟一個 Docker instance
~$ sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<密碼> -d mysql:5.7
Symfony CLI
安裝 CLI 的方法可以參考這裡:https://symfony.com/download,執行完這個指令之後基本環境就安裝完畢了,如果有一些其他的需求比如說 Redis 或 Swoole 等,會在需要用的時候解釋如何安裝。
~$ wget https://get.symfony.com/cli/installer -O - | bash
檢查運行環境
在我的電腦中使用 symfony check:requirements 這個指令結果如下,基本上只要看到 OK 字眼就算完成了
~$ symfony check:requirements
Symfony Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> PHP is using the following php.ini file:
/etc/php/7.2/cli/php.ini
> Checking Symfony requirements:
...............W..........
[OK]
Your system is ready to run Symfony projects
Optional recommendations to improve your setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* intl extension should be available
> Install and enable the intl extension (used for validators).
Hello World
首先我們透過剛剛安裝好的 Symfony CLI 產生一個應用程式,其中 --full
是用來創建一個傳統網站應用程式的指令的 flag,他會把所有的元件都安裝進來,在學習過程中建議使用這個選項,待熟悉之後若想按照自己的想法安裝元件時,再將這個選項去掉,就可以得到一個最輕量的 Symfony 框架了
# 創建 Symfony 專案
~$ symfony new --full my_symfony
# 進入專案資料夾並開啟開發用伺服器
~$ cd my_symfony
~$ symfony server:start
[WARNING] run "symfony server:ca:install" first if you want to run the web se
rver with TLS support, or use "--no-tls" to avoid this warning
Jul 2 05:52:47 |DEBUG| PHP Reloading PHP versions
Jul 2 05:52:47 |DEBUG| PHP Using PHP version 7.2.31 (from default version in $PATH)
Jul 2 05:52:47 |INFO | PHP listening path="/usr/bin/php7.2" php="7.2.31" port=37853
Jul 2 05:52:47 |DEBUG| PHP started
[OK] Web server listening
The Web server is using PHP CLI 7.2.31
http://127.0.0.1:8000
執行完上述的指令後,我們打開瀏覽器訪問這個連結:http://127.0.0.1:8000。
看到這個畫面就代表設定已經成功,可以開始學習 Symfony 了。