PHP 微服務架構實戰:安裝 LEMP 堆疊: 安裝 Linux、Nginx、MySQL 和 PHP。建立 MySQL 資料庫: 建立用於儲存資料的資料庫。安裝 Composer: 使用 Composer 管理 PHP 相依性。建構微服務: 使用 Symfony 建立一個新的 Composer 專案並配置服務。建立實體: 定義用於對應到資料庫表的實體。建立資料庫模式: 使用 Doctrine 建立資料庫模式。建立 API 控制器: 處理使用者要求的控制器。執行微服務: 使用 PHP 內建伺服器啟動微服務。
PHP 微服務架構實戰
「簡介
微服務是一種軟體架構風格,將應用程式分解成獨立且可伸縮的服務。 PHP 是一種流行的後端語言,非常適合建立微服務。本文將透過一個實戰案例,引導你完成 PHP 微服務架構的建構。
安裝LEMP 堆疊
首先,需要安裝LEMP(Linux、Nginx、MySQL、PHP)堆疊:
# Ubuntu/Debian sudo apt update && sudo apt install nginx mysql-server php8.1 # CentOS/Fedora sudo yum update && sudo yum install epel-release sudo yum install nginx mariadb php81
建立MySQL 資料庫
接下來,建立一個用於儲存資料的MySQL 資料庫:
CREATE DATABASE micro_services; GRANT ALL PRIVILEGES ON micro_services.* TO 'user'@'localhost' IDENTIFIED BY 'password';
安裝Composer
Composer 是PHP 依賴項管理工具:
sudo curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
建置微服務
接下來,建立一個新的Composer 專案:
composer create-project symfony/skeleton micro_services cd micro_services
新增以下內容到config/services.yaml
檔案:
services: database.connection: # 数据库连接 class: Doctrine\DBAL\Connection arguments: dsn: '%env(DATABASE_URL)%' monolog.logger: # 日志记录器 class: Monolog\Logger arguments: [micro_services] calls: - [pushHandler, [new Monolog\Handler\StreamHandler('logs/dev.log')]]
建立src/Entity/User.php
實體,該實體會對應到資料庫中的使用者表:
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="users") */ class User { /** * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=255) */ private $email; // ... }
執行下列指令來建立資料庫模式:
composer dump-autoload && php bin/console doctrine:database:create
建立API 控制器
建立一個API 控制器來處理使用者請求:
namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Doctrine\ORM\EntityManagerInterface; class UserController extends AbstractController { /** * @Route("/api/users", methods={"GET"}) */ public function index(EntityManagerInterface $em): Response { $users = $em->getRepository(User::class)->findAll(); return $this->json($users); } }
運行微服務
最後,啟動PHP 內建伺服器來執行微服務:
php -S localhost:8000 public/index.php
造訪http://localhost:8000/api/users
即可取得使用者清單。
以上是PHP微服務架構實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!