В первую очередь, профилирование Вашего php-приложения для наблюдения, где узкие места. Я Вы знаете узкие места, Вы знаете, где кэшироваться и что оптимизировать.
Можно представить Вас приложение с xdebug (http://www.xdebug.org/) или Studio Зенда (http://www.zend.com)
Я сам нашел ответ, немного покопавшись в документации uwsgi.
Ссылка, https: // uwsgi-docs. readthedocs.io/en/latest/ConfigLogic.html, мы можем указать логику конфигурации и динамически вычислять пути, используя переменные среды в python virtualenv.
Итак, предполагая, что я сейчас нахожусь в моем myproject
virtualenv, моя конфигурация .ini автоматически вычислит мои пути для chdir
и virtualenv
.ini параметры конфигурации, такие как:
[uwsgi]
if-env = PROJECT_HOME
print = Your path is %(_)/myproject
chdir = %(_)/myproject
endif =
if-env = VIRTUAL_ENV
print = Your virtualenv is %(_)
virtualenv = %(_)
endif =
socket=127.0.0.1:3034
module=django.core.handlers.wsgi:WSGIHandler()
env= DJANGO_SETTINGS_MODULE=bbox.settings
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
Оператор печати, конечно, необязателен, но это дает двоичному файлу uwsgi ожидаемые значения для chdir
и virtualenv
.
Примерно так:
calvin$ uwsgi --ini myproject/uwsgi.ini
[uWSGI] getting INI configuration from myproject/uwsgi.ini
Your path is /Users/calvin/work/myproject
Your virtualenv is /Users/calvin/.virtualenvs/myproject
*** Starting uWSGI 1.2.4 (64bit) on [Thu Jul 26 17:00:04 2012] ***
compiled with version: 4.2.1 Compatible Apple Clang 3.1 (tags/Apple/clang-318.0.61) on 25 July 2012 20:06:56
detected number of CPU cores: 8
Операторы печати не нужны в вашем окончательном файле .ini конечно. Я просто помещаю их туда, чтобы распечатать необходимую информацию, подтверждающую, что мои пути динамически вычисляются в файле .ini.
Я не уверен, что запускать разрабатываемые и производственные версии с разными файлами конфигурации - хорошая практика -обычно это способ «странных» проблем, которые не появляются в версии для разработчиков (из-за различных прав доступа к файлам или чего-то еще). Намного лучше сделать что-то вроде make install
и всегда работать с производственной конфигурацией. Или вы можете просто связать свои источники с каталогом проекта в вашем домашнем каталоге, чтобы редактировать их на месте. Но опять же, ваша конфигурация уникальна.
Основываясь на ответе Кальвина, с использованием «@» magic может иметь больше гибкости в отношении динамических конфигураций.
(скрытый) может быть полезен, например, для оценки команд bash. В моем случае это позволило мне определить:
realpath = @ (exec: // bash -c 'dirname `readlink -f% p`')
Который я искал, поскольку сделал символическую ссылку на эту конфигурацию из другого каталога.