Files
archived-frankenphp/docs/tr/config.md
Marc bbbfdb31b5 ci: build .rpm and .deb packages (#1497)
* add ./create-rpm.sh file to build a "frankenphp" rpm package

* also build a deb package

* renamed to build-packages

* linter...

* add depends

* linter again?

* linter number 3

* linter number 4

* set default locations for ini file, conf files and extensions

* set unified path for modules that should be ok on all dists

* add default content into "package" folder

* make file executable

* worker is in public folder

* what on earth did I do x)

* use same FRANKENPHP_VERSION and make sure to let pr's run the rpm generation too (version 0.0.0) to see issues

* install ruby, fpm and rpm-build

* move to after changing base urls because it would fail with packages not found

* ruby 3 build needs gcc 10

* rpm-build is necessary too...

* and I forgot to link the package folder

* create directories if they don't exist

* copy out all frankenphp* files?

* lint fix

* only copy frankenphp-* files

* only copy frankenphp-* files

* the .deb file is name frankenphp_1.5.0... - create output folder instead and upload all things inside that
will simplify things when later adding xdebug.so and ffi.so

* update the last two steps to use the gh-output directory

* add post install script to set frankenphp able to bind to port 80 for non-root users

* dnf over yum, I think the yum alias was removed in RH 9.5

* newlines

* newlines

* add text what missing libcap means

* copy php.ini-production from php-src, linter, update ruby version

* move Caddyfile to /etc/frankenphp/Caddyfile

* linter

* fix a copy and paste error

* better describe fallback to 0.0.0

* linter

* copy installation scripts from official caddy packages, change user to frankenphp too

* bombombom

* make files executable

* tabs

* linter

* linter again

* use empty directory for three different destinations instead of keeping three empty local directories

* caddy says the file is incorrectly formatted without these spaces

* remove wildcard matcher from root directive

* Apply suggestions from code review

commit suggested changes to preinstall/postinstall scripts

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* remove misleading comment

* update documentation for paths

* update documentation for paths some more

* fix musl opcache-jit issue

* markdown linter

* the damn tab

* Apply suggestions from code review

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* drop dev.Dockerfile php location from config.md

* add php config note to CONTRIBUTING.md

* dashes instead of asterisks in chinese docs

* fix package building

* create frankenphp user in case it doesn't exist for deb packages

* create users if they don't exist, delete them again if they didn't exist

* satisfy linter

* create the user with the same commands as the postinst/preinstall scripts

* Removes toolchain requirements.

* trigger

* Removes explicit calls to go get

* trigger

* setcap by default

* simplify example project

* bring page more in line with the caddy / apache / nginx default page

* update to html 5

* oopsies

* revert style to original

* remove https:// (caddy uses http:// on RHEL, :80 on Debian)

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-14 07:33:05 +02:00

6.7 KiB
Raw Blame History

Konfigürasyon

FrankenPHP, Caddy'nin yanı sıra Mercure ve Vulcain modülleri Caddy tarafından desteklenen formatlar kullanılarak yapılandırılabilir.

Docker imajlarında] (docker.md), Caddyfile /etc/frankenphp/Caddyfile adresinde bulunur. Statik ikili, başlatıldığı dizinde Caddyfile dosyasını arayacaktır.

PHP'nin kendisi bir php.ini dosyası kullanılarak yapılandırılabilir.

PHP yorumlayıcısı aşağıdaki konumlarda arama yapacaktır:

Docker:

  • php.ini: /usr/local/etc/php/php.ini Varsayılan olarak php.ini sağlanmaz.
  • ek yapılandırma dosyaları: /usr/local/etc/php/conf.d/*.ini
  • php uzantıları: /usr/local/lib/php/extensions/no-debug-zts-<YYYYMMDD>/
  • PHP projesi tarafından sağlanan resmi bir şablonu kopyalamalısınız:
FROM dunglas/frankenphp

# Developement:
RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini

# Veya production:
RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini

FrankenPHP kurulumu (.rpm veya .deb):

  • php.ini: /etc/frankenphp/php.ini Varsayılan olarak üretim ön ayarlarına sahip bir php.ini dosyası sağlanır.
  • ek yapılandırma dosyaları: /etc/frankenphp/php.d/*.ini
  • php uzantıları: /usr/lib/frankenphp/modules/

Statik ikili:

  • php.ini: frankenphp run veya frankenphp php-server komutunun çalıştırıldığı dizin, ardından /etc/frankenphp/php.ini
  • ek yapılandırma dosyaları: /etc/frankenphp/php.d/*.ini
  • php uzantıları: yüklenemez
  • PHP kaynak kodu ile birlikte verilen php.ini-production veya php.ini-development dosyalarından birini kopyalayın.

Caddyfile Konfigürasyonu

FrankenPHP yürütücüsünü kaydetmek için frankenphp global seçenek ayarlanmalıdır, ardından PHP uygulamanızı sunmak için site blokları içinde php_server veya php HTTP yönergeleri kullanılabilir.

Minimal örnek:

{
	# FrankenPHP'yi aktif et
	frankenphp
}

localhost {
	# Sıkıştırmayı etkinleştir (isteğe bağlı)
	encode zstd br gzip
	# Geçerli dizindeki PHP dosyalarını çalıştırın ve varlıkları sunun
	php_server
}

İsteğe bağlı olarak, oluşturulacak iş parçacığı sayısı ve sunucuyla birlikte başlatılacak [işçi betikleri] (worker.md) global seçenek altında belirtilebilir.

{
	frankenphp {
		num_threads <num_threads> # Başlatılacak PHP iş parçacığı sayısını ayarlar. Varsayılan: Mevcut CPU çekirdek sayısının 2 katı.
		worker {
			file <path> # Çalışan komut dosyasının yolunu ayarlar.
			num <num> # Başlatılacak PHP iş parçacığı sayısını ayarlar, varsayılan değer mevcut CPU çekirdek sayısının 2 katıdır.
			env <key> <value> # Ek bir ortam değişkenini verilen değere ayarlar. Birden fazla ortam değişkeni için birden fazla kez belirtilebilir.
		}
	}
}

# ...

Alternatif olarak, worker seçeneğinin tek satırlık kısa formunu kullanabilirsiniz:

{
	frankenphp {
		worker <file> <num>
	}
}

# ...

Aynı sunucuda birden fazla uygulamaya hizmet veriyorsanız birden fazla işçi de tanımlayabilirsiniz:

{
	frankenphp {
		worker /path/to/app/public/index.php <num>
		worker /path/to/other/public/index.php <num>
	}
}

app.example.com {
	root /path/to/app/public
	php_server
}

other.example.com {
	root /path/to/other/public
	php_server
}

# ...

Genellikle ihtiyacınız olan şey php_server yönergesini kullanmaktır, ancak tam kontrole ihtiyacınız varsa, daha düşük seviyeli php yönergesini kullanabilirsiniz:

php_server` yönergesini kullanmak bu yapılandırmay ile aynıdır:

route {
	# Dizin istekleri için sondaki eğik çizgiyi, diğer adıyla taksim işaretini ekleyin
	@canonicalPath {
		file {path}/index.php
		not path */
	}
	redir @canonicalPath {path}/ 308
	# İstenen dosya mevcut değilse, dizin dosyalarını deneyin
	@indexFiles file {
		try_files {path} {path}/index.php index.php
		split_path .php
	}
	rewrite @indexFiles {http.matchers.file.relative}
	# FrankenPHP!
	@phpFiles path *.php
	php @phpFiles
	file_server
}

php_servervephp` yönergeleri aşağıdaki seçeneklere sahiptir:

php_server [<matcher>] {
	root <directory> # Sitenin kök klasörünü ayarlar. Öntanımlı: `root` yönergesi.
	split_path <delim...> # URI'yi iki parçaya bölmek için alt dizgeleri ayarlar. İlk eşleşen alt dizge "yol bilgisini" yoldan ayırmak için kullanılır. İlk parça eşleşen alt dizeyle sonlandırılır ve gerçek kaynak (CGI betiği) adı olarak kabul edilir. İkinci parça betiğin kullanması için PATH_INFO olarak ayarlanacaktır. Varsayılan: `.php`
	resolve_root_symlink false # Varsa, sembolik bir bağlantıyı değerlendirerek `root` dizininin gerçek değerine çözümlenmesini devre dışı bırakır (varsayılan olarak etkindir).
	env <key> <value> # Ek bir ortam değişkenini verilen değere ayarlar. Birden fazla ortam değişkeni için birden fazla kez belirtilebilir.
}

Ortam Değişkenleri

Aşağıdaki ortam değişkenleri Caddyfile içinde değişiklik yapmadan Caddy yönergelerini entegre etmek için kullanılabilir:

  • SERVER_NAME: değiştirin dinlenecek adresleri, sağlanan ana bilgisayar adları oluşturulan TLS sertifikası için de kullanılacaktır
  • CADDY_GLOBAL_OPTIONS: entegre edin global seçenekler
  • FRANKENPHP_CONFIG: frankenphp yönergesi altına yapılandırma entegre edin

FPM ve CLI SAPI'lerinde olduğu gibi, ortam değişkenleri varsayılan olarak $_SERVER süper globalinde gösterilir.

variables_order'a ait PHP yönergesinin S değeri bu yönergede E'nin başka bir yere yerleştirilmesinden bağımsız olarak her zaman ES ile eş değerdir.

PHP konfigürasyonu

Ek olarak PHP yapılandırma dosyalarını yüklemek için PHP_INI_SCAN_DIR ortam değişkeni kullanılabilir. Ayarlandığında, PHP verilen dizinlerde bulunan .ini uzantılı tüm dosyaları yükleyecektir.

Hata Ayıklama Modunu Etkinleştirin

Docker imajını kullanırken, hata ayıklama modunu etkinleştirmek için CADDY_GLOBAL_OPTIONS ortam değişkenini debug olarak ayarlayın:

docker run -v $PWD:/app/public \
    -e CADDY_GLOBAL_OPTIONS=debug \
    -p 80:80 -p 443:443 -p 443:443/udp \
    dunglas/frankenphp