Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 10457 В разделе
Sysadmin
от December 16th, 2019,
В подшивках: CodeIgniter, PHP, Unit
Share all static files in subdirectories, all others requests goes to index.php of application.
{
"listeners": {
"*:8300": {
"pass": "routes"
}
},
"applications": {
"app": {
"type": "php",
"user": "www-data",
"group": "www-data",
"root": "/www/app",
"index": "index.php",
"script": "index.php"
}
},
"routes": [
{
"match": {
"uri": "/pics/*"
},
"action": {
"share": "/www/app/"
}
},
{
"match": {
"uri": "/images/*"
},
"action": {
"share": "/www/app/"
}
},
{
"match": {
"uri": "/cover/*"
},
"action": {
"share": "/www/app/"
}
},
{
"action": {
"pass": "applications/app"
}
}
],
"access_log": "/var/log/access.log"
}

№ 10455 В разделе
Sysadmin
от December 16th, 2019,
В подшивках: Dokuwiki, PHP, Unit
Requests to / and php files goes to application, all other files is static.
{
"listeners": {
"*:8300": {
"pass": "routes"
}
},
"applications": {
"app": {
"type": "php",
"user": "www-data",
"group": "www-data",
"root": "/www/app",
"index": "index.php",
}
},
"routes": [
{
"match": {
"uri": "/"
},
"action": {
"pass": "applications/app"
}
},
{
"match": {
"uri": "*.php"
},
"action": {
"pass": "applications/app"
}
},
{
"action": {
"share": "/www/app/"
}
}
]
}

№ 10453 В разделе
Sysadmin
от December 16th, 2019,
В подшивках: Docker, Unit
Place unit_config.json file in project root directory, it will be moved to /state during image building. Find example configs by hash tag #unit.
Do not forget to change timezone and packages to install.
FROM ubuntu:eoan
ENV TZ=Asia/Tomsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN set -xe \
&& apt-get -y update \
&& apt-get -y install --no-install-recommends gnupg2 curl php mysql-client ca-certificates \
php-curl php-mysql \
&& curl https://nginx.org/keys/nginx_signing.key | apt-key add - \
&& echo "deb https://packages.nginx.org/unit/ubuntu/ eoan unit" | tee -a /etc/apt/sources.list \
&& echo "deb-src https://packages.nginx.org/unit/ubuntu/ eoan unit" | tee -a /etc/apt/sources.list \
&& apt-get -y update \
&& apt-get -y install unit unit-php unit-dev \
&& unitd --version
RUN rm /etc/init.d/unit
WORKDIR /www/app
COPY . .
RUN mkdir -p /state/certs && mv unit_config.json /state/conf.json \
&& chmod 700 -R /state && chown root:root -R /state
RUN chown -R www-data:www-data /www/app
CMD ["unitd", "--no-daemon", "--state", "/state"]

№ 8544 В разделе
Sysadmin
от October 12th, 2017,
В подшивках: PHP, Unit
У меня целый гребаный зоопарк из разных версий php на домашнем сервере и мне это порядком надоело. Что можно сделать? Можно скинуть раритетное барахло в unit контейнеры, поднять Nginx Unit и работать уже с приложениями, а не кормить все старые проекты одному php-fpm’у. В настоящее время есть поддержка только одной точки входа, но в будущем создатели побожились, что сделают нормальный роутинг (update: сделали). С установкой Nginx Unit любой дурак справится благодаря отличному мануалу здесь, рассасывать тут я его не буду.
Вот готовых config файла для unit:
А теперь давайте поговорим о настройке Unit. Допустим, у вас есть невероятно важная программа, выводящая информацию об установленном php в браузер и лежит она в /var/www/info/info.php.
Теперь сделаем конфиг для вашей невероятно важной программы вывода информации о php
{
"listeners":{
"*:8300":{
"application":"phpinfoprogram"
}
},
"applications":{
"phpinfoprogram":{
"type":"php",
"workers":2,
"root":"/var/www/info",
"index":"info.php"
}
}
}
Напоминаю, что это ваш самый первый конфиг, а в будущем вам придется сначала выгрузить из unitd текущий, дополнить его и загрузить вновь.
Выгрузка в файл curl --unix-socket /var/run/control.unit.sock http://localhost/ > unitd.json
Загрузка из файла в unitd curl -X PUT -d @unitd.json --unix-socket /var/run/control.unit.sock http://localhost/
Здесь можно подробнее прочитать об управлении конфигурацией. Надеюсь, кто-нибудь не ленивый скоро создаст красивую веб морду для него.
Теперь можно посмотреть открытые порты и видеть ваше невероятно важное приложение внутри LXC контейнера на порту 8300
root@nginx-unit:/# netstat -tlpn|grep unit tcp 0 0 0.0.0.0:8300 0.0.0.0:* LISTEN 175/unit: router
Теперь в nginx достаточно добавить location, указывающий на ваше приложение
location /info {
proxy_pass http://10.0.2.23:8300;
proxy_set_header Host $host;
}
Один Nginx Unit может держать много приложений и открытых портов. Допустим, у вас есть два LXC контейнера для приложений на PHP 5.6 и 7.0. Устанавливаете обычный php без всяких fpm в ваши контейнеры, все нужные модули и ваши приложения с разными версиями php уже никогда не пересекутся и не будут конфликтовать или еще как-нибудь парить мозг при обновлениях. Конечно же, не стоит валить все ваши проекты в одно место. Лучше разделить их по разным контейнерам в зависимости от контекста.
Fortune cookie: "If you love god, burn a church" [Jello Biafra]