Tuy nhiên, khi chạy ứng dụng trong môi trường sản xuất, bạn sẽ cần sử dụng máy chủ web đầy đủ tính năng. Bài viết này mô tả một số cách sử dụng Symfony với Apache hoặc Nginx
Khi sử dụng Apache, bạn có thể định cấu hình PHP dưới dạng mô-đun Apache hoặc với FastCGI bằng PHP FPM. FastCGI cũng là cách ưa thích để sử dụng PHP với Nginx
Thư mục công khai
Thư mục chung là nơi chứa tất cả các tệp tĩnh và công khai của ứng dụng của bạn, bao gồm hình ảnh, biểu định kiểu và tệp JavaScript. Nó cũng là nơi điều khiển phía trước [
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 204] sống
Thư mục chung đóng vai trò là gốc tài liệu khi định cấu hình máy chủ web của bạn. Trong các ví dụ bên dưới, thư mục
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 205 sẽ là thư mục gốc của tài liệu. Thư mục này là
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 206
Nếu nhà cung cấp dịch vụ lưu trữ của bạn yêu cầu bạn thay đổi thư mục
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 205 sang một vị trí khác [e. g.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 208] đảm bảo rằng bạn ghi đè lên vị trí của thư mục công cộng/
Thêm quy tắc viết lại
Cách dễ nhất là cài đặt gói
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 209 Symfony bằng cách thực hiện lệnh sau
1
$ composer require symfony/apache-pack
Gói này cài đặt một tệp
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
0 trong thư mục 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 205 chứa các quy tắc viết lại cần thiết để phục vụ ứng dụng Symfony
Trong các máy chủ sản xuất, bạn nên di chuyển các quy tắc
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
0 vào tệp cấu hình chính của Apache để cải thiện hiệu suất. Để làm như vậy, hãy sao chép nội dung
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
0 bên trong cấu hình
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
4 được liên kết với thư mục 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 205 của ứng dụng Symfony [và thay thế
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
6 bằng
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
7]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 206
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 207
Apache với mod_php/PHP-CGI
Cấu hình tối thiểu để ứng dụng của bạn chạy trên Apache là
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
Mẹo
Nếu hệ thống của bạn hỗ trợ biến
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
8, bạn có thể muốn sử dụng
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
9 thay vì mã hóa cứng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2020
Sử dụng cấu hình được tối ưu hóa sau để tắt hỗ trợ
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
AllowOverride All
Order Allow,Deny
Allow from All
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
#
# Options FollowSymlinks
#
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
0 và tăng hiệu suất máy chủ web1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 202____25
thận trọng
Sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2022 trên Apache 2. 4. 25 trở lên, do một lỗi đã được sửa trên bản phát hành đó khiến gốc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2023 bị treo
Mẹo
Nếu bạn đang sử dụng php-cgi, theo mặc định, Apache sẽ không chuyển tên người dùng và mật khẩu cơ bản HTTP cho PHP. Để khắc phục hạn chế này, bạn nên sử dụng đoạn cấu hình sau
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 209
Sử dụng mod_php/PHP-CGI với Apache 2. 4
Trong Apache 2. 4,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2024 đã được thay thế bằng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2025. Do đó, bạn cần sửa đổi cài đặt quyền
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2026 của mình như sau
$ composer require symfony/apache-pack
0$ composer require symfony/apache-pack
1Để biết các tùy chọn cấu hình nâng cao của Apache, hãy đọc tài liệu chính thức của Apache
Apache với PHP-FPM
Để sử dụng PHP-FPM với Apache, trước tiên bạn phải đảm bảo rằng bạn đã cài đặt trình quản lý quy trình FastCGI nhị phân
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2027 và mô-đun FastCGI của Apache [ví dụ: trên hệ thống dựa trên Debian, bạn phải cài đặt gói
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2028 và
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2029]
PHP-FPM sử dụng cái gọi là nhóm để xử lý các yêu cầu FastCGI đến. Bạn có thể định cấu hình số lượng nhóm tùy ý trong cấu hình FPM. Trong nhóm, bạn định cấu hình ổ cắm TCP [IP và cổng] hoặc ổ cắm tên miền Unix để lắng nghe. Mỗi nhóm cũng có thể được chạy dưới một UID và GID khác nhau
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 206
$ composer require symfony/apache-pack
3Sử dụng mod_proxy_fcgi với Apache 2. 4
Nếu bạn đang chạy Apache 2. 4, bạn có thể sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2050 để chuyển các yêu cầu đến PHP-FPM. Định cấu hình PHP-FPM để nghe trên ổ cắm TCP hoặc Unix, bật
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2051 và
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2050 trong cấu hình Apache của bạn và sử dụng lệnh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2053 để chuyển các yêu cầu tệp PHP tới PHP FPM
$ composer require symfony/apache-pack
4$ composer require symfony/apache-pack
5PHP-FPM với Apache 2. 2
Trên Apache2. 2 hoặc thấp hơn, bạn không thể sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2050. Thay vào đó, bạn phải sử dụng lệnh FastCgiExternalServer. Do đó, cấu hình Apache của bạn sẽ giống như thế này
$ composer require symfony/apache-pack
6$ composer require symfony/apache-pack
7Nếu bạn thích sử dụng ổ cắm Unix, bạn phải sử dụng tùy chọn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2055 để thay thế
1
$ composer require symfony/apache-pack
9Nginx
Cấu hình tối thiểu để ứng dụng của bạn chạy trên Nginx là
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2060
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2061
Mẹo
Nếu bạn sử dụng NGINX Unit, hãy xem bài viết chính thức về Cách chạy các ứng dụng Symfony bằng NGINX Unit
Ghi chú
Tùy thuộc vào cấu hình PHP-FPM của bạn,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2056 cũng có thể là
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2057
Mẹo
Điều này chỉ thực thi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 204 trong thư mục chung. Tất cả các tệp khác kết thúc bằng ". php" sẽ bị từ chối
Nếu bạn có các tệp PHP khác trong thư mục chung cần được thực thi, hãy đảm bảo đưa chúng vào khối
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2059 ở trên
thận trọng
Sau khi bạn triển khai vào sản xuất, hãy đảm bảo rằng bạn không thể truy cập tập lệnh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 204 [i. e.
11]