我正在尝试使用 FPM 将 Openresty 1.7.2.1 编译为 Debian 7 的 .deb 包。虽然 FPM 编译成功并且我得到了一个 deb 文件,但是当我使用 dpkg 安装它时,配置文件不知何故没有放在 /etc/nginx 中,显然当我运行 /usr/sbin/nginx 时我得到:
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
以下是我进行编译的步骤:
./configure --with-luajit \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--lock-path=/var/lock/nginx.lock \
--pid-path=/run/nginx.pid \
--with-pcre-jit \
--with-pcre \
--with-http_ssl_module \
--without-http_redis2_module \
--without-http_redis_module \
--without-http_memc_module \
--without-http_memcached_module
然后
make
INSTALL=/tmp/openresty
make install DESTDIR=$INSTALL
mkdir -p $INSTALL/var/lib/nginx
最后
fpm -s dir -t deb -n openresty -v 1.7.2.1 --iteration 1 -C $INSTALL \
--description "Openresty 1.7.2.1" \
-d libpcre3 \
--config-files /etc/nginx/fastcgi.conf.default \
--config-files /etc/nginx/win-utf \
--config-files /etc/nginx/fastcgi_params \
--config-files /etc/nginx/nginx.conf \
--config-files /etc/nginx/koi-win \
--config-files /etc/nginx/nginx.conf.default \
--config-files /etc/nginx/mime.types.default \
--config-files /etc/nginx/koi-utf \
--config-files /etc/nginx/fastcgi_params.default \
--config-files /etc/nginx/mime.types \
--config-files /etc/nginx/fastcgi.conf \
etc usr var run
FPM 运行后我得到
Created package {:path=>"openresty_1.7.2.1-1_amd64.deb"}
当我使用 dpkg 安装时,我在 /etc/nginx 中只得到以下文件
scgi_params scgi_params.default uwsgi_params uwsgi_params.default
我在这里做错了什么?
答案1
您不需要--config-files
向 fpm 添加任何选项。只需将配置文件放在其中/tmp/openresty/etc/nginx
就足够了。我怀疑将这些选项指向不存在的文件是导致您出现问题的原因。
如果您想要具有 sites-available 和 sites-enabled 的 Debian 标准 Nginx 配置,那么您需要在/tmp/openresty/etc/nginx
构建包之前将相关文件添加到您的包树中。
作为参考,我刚刚在这里开源了我自己的 OpenResty 包构建器:https://github.com/tapstream/openresty-debian。