[Symfony6 系列] 安装和设置

技术要求

安装 PHP 8.1 或更高版本以及这些 PHP 扩展(已安装和 在大多数 PHP 8 安装中默认启用):Ctype、iconv、PCRE、Session、SimpleXML 和Tokenizer;
安装 Composer,用于安装 PHP 包。

安装

本地安装

下载 安装Symfony CLI

#linux
wget https://get.symfony.com/cli/installer -O - | bash
curl -sS https://get.symfony.com/cli/installer | bash
#mac
brew install symfony-cli/tap/symfony-cli
#windows
scoop install symfony-clis

使用开发工具创建应用

#检查环境,根据检查结果安装必要的扩展
symfony check:requirements
#安装
#长期维护版
symfony new symfony62 --version=lts
#开发版
symfony new symfony62 --version=next
#指定版本
symfony new symfony62 --version="6.2.*"
#指定webapp轻量级版本,适用于纯接口项目
symfony new --webapp symfony62

进入安装完成的项目

cd symfony62

运行项目

symfony server:start

浏览器打开http://localhost:8000/ ,显示Symfony项目信息。

新手可安装演示项目

symfony new symfony62 --demo

Docker 安装

git clone -depth=1 https://github.com/dunglas/symfony-docker.git symfony62 & rm -rf ./symfony62/.github

构建

参数

  • SYMFONY_VERSION 指定版本
  • SERVER_NAME 服务名称

修改 docker-compose.yml 配置文件默认端口设置

#修改codker-compose.yml配置文件默认端口设置
php:
    build:
      args:
        SYMFONY_VERSION: ${SYMFONY_VERSION:-6.2.*}
        STABILITY: ${STABILITY:-stable}
    environment:
      MERCURE_PUBLIC_URL: https://${SERVER_NAME:-symfony62.localhost}/.well-known/mercure
#...
caddy:
    environment:
      SERVER_NAME: ${SERVER_NAME:-symfony62.localhost, caddy:80}
#...
ports:
      # HTTP
      - target: 80
        published: ${HTTP_PORT:-8010}
        protocol: tcp
      # HTTPS
      - target: 443
        published: ${HTTPS_PORT:-44310}
        protocol: tcp
      # HTTP/3
      - target: 443
        published: ${HTTP3_PORT:-44310}
        protocol: udp

首次构建

docker compose up --build

构建完成后关闭实例。使用标准安装时,本地计算机不信任用于签署 Caddy 容器中生成的证书的颁发机构。 您必须将权限添加到主机的信任存储区:

# Mac
$ docker cp $(docker compose ps -q caddy):/data/caddy/pki/authorities/local/root.crt /tmp/root.crt && sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/root.crt
# Linux
$ docker cp $(docker compose ps -q caddy):/data/caddy/pki/authorities/local/root.crt /usr/local/share/ca-certificates/root.crt && sudo update-ca-certificates

用命令行或 docker 客户端管理实例启动停止

cd ./symfony62/
docker compose up
浏览器打开https://symfony62.localhost:44310/ ,显示Symfony项目信息。

生产部署

环境变量后者优先于前者:

  • .env 包含应用所需环境变量的默认值
  • .env.local 未提交文件,具有本地覆盖
  • .env.$APP_ENV 提交的特定于环境的默认值
  • .env.$APP_ENV.local 未提交特定于环境的覆盖
#生产环境创建.env.prod文件
vi ./symfony62/.env.prod
#添加
APP_ENV=prod
APP_SECRET=1fda1b898beffc9b04beabcc17684b35
CADDY_MERCURE_JWT_SECRET=qpKJSQRloyHRkSN7wV3h
SERVER_NAME=symfony62.localhost

启动应用

#创建启动脚本
vi ./symfony62/docker_prod_up.sh
#设置脚本
SERVER_NAME=symfony62.localhost \
APP_SECRET=1fda1b898beffc9b04beabcc17684b35 \
CADDY_MERCURE_JWT_SECRET=qpKJSQRloyHRkSN7wV3h \
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

 

发表评论