【发布时间】:2018-12-14 04:05:56
【问题描述】:
我是 Symfony 的新手,来自 .NET 世界。使用 Symfony (4) 文档,我设法创建了简单的网站。现在我想把它付诸实践,但我正在努力寻找任何有用的信息,我应该怎么做才能“打包”所有必要的东西并部署它。确实,有描述部署的页面 (How to Deploy a Symfony Application),但我发现它缺少以下信息:
- 包含/排除什么(显然我不想打包
dev依赖项,部署composer文件似乎也没有任何意义) - 要更改什么(有
.env文件 - 包含APP_ENV和APP_SECRET- 我在哪里使用这些值?) - 我的主机使用文件夹
www进行公开演示,在将public目录重命名为www之前是否必须更改/配置某些内容? - 我是否必须配置
.htaccess以不通过 PHP 路由图像/css/js?
我目前的项目结构是:
+ bin
+ config
+ public
+ css
- index.php
+ src
+ Controller
- Kernel.php
+ templates
+ var
+ vendor
- .env
- .gitignore
- composer.json
- composer.lock
- symfony.lock
编辑(2018-07-17):
- 我正在使用 git
- 托管能够从名为
production的git 分支进行部署(每当我推送到此分支时,它都会调用composer install --no-dev) - 配置公共目录名称在
composer.json中完成
composer.json 中的额外配置示例:
"extra": {
"symfony": {
"allow-contrib": false
},
"public-dir": "www"
}
关于我最初的问题 - 我现在使用 git 使用托管部署功能。在这种情况下,我确实需要作曲家文件。我最初的想法是构建和打包最少的东西,然后将此包部署到服务器。 (现在我还部署了bin、作曲家文件或.gitignore(可能还有更奇怪的东西)。
【问题讨论】:
-
不确定,但是我应该提交
vendor和var目录的内容吗? (== 将依赖项放入我的 git 存储库 - 这对我来说听起来很奇怪)版本控制如何帮助我只选择运行网站所需的生产文件?这在任何地方都有描述吗? -
所以基本上你的意思是:1. 在服务器上安装 composer(不确定是否可能,我使用的是付费 PHP 托管,而不是任何 VPS),2. 克隆我的项目,3. 运行
composer install...但它不会向服务器添加开发依赖项吗?这真的有必要吗? -
@RiggsFolly: 绝对不是:/ ...但这不是重点,我可以在本地(以不同的路径)进行这个仪式,以准备在没有不需要的东西的情况下部署项目 - 但我不认为这种方法回答了我提出的所有问题。
-
你能把你的
web_dir改成public吗?您的主机上有什么服务器(nginx、apache 或两者)?您可以在主机上设置环境变量吗?您对托管服务器有 ssh 访问权限吗?你的主机上有 GIT 吗?对您的问题的回答很大程度上取决于您的托管服务提供商。 -
通常我不会提交 vendor、var、.gitignore 文件/文件夹。在 Cloudways,我以简单的方式部署了 symfony:cloudways.com/blog/install-symfony-4-on-cloud