Arc*_*var 2 mod-rewrite apache2 apache2-module docker alpine-linux
老实说,我几乎没有使用Alpine Linux的经验,但是我喜欢它的方法,因此想改变它。我也是Docker的新手,所以如果这是一个“愚蠢”的问题,请多多包涵。
我想要实现的是在httpd:alpine图像上构建并将HTTPd扩展到我的需求。
这将包括激活mod_rewrite模块并将自定义.htaccess复制到映像中。
这是我到目前为止的内容:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN apk update
RUN apk upgrade
RUN apk add apache2-utils
RUN a2enmod rewrite
RUN rc-service apache2 restart
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我不断收到“ a2enmod not found”错误,我不知道该如何解决。那可能是因为a2enmod是纯粹的Debian / Ubuntu / ...东西,但是我不知道任何激活mod_rewrite的替代方法(或与此相关的任何模块)。
预先非常感谢大家的支持!
Tho*_*rzl 12
mod_rewrite默认情况下在Alpine中与apache一起安装,因此无需再次安装。因此,这是mod_rewrite在Alpine中启用的方法:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
RUN { \
echo 'IncludeOptional conf.d/*.conf'; \
} >> /usr/local/apache2/conf/httpd.conf \
&& mkdir /usr/local/apache2/conf.d
Run Code Online (Sandbox Code Playgroud)
Daw*_*ski 12
我想您希望拥有有效的 .htaccess 重写机制。为此,您需要做两件事:
在 httpd.conf 中通过取消注释行启用 mod_rewrite:
LoadModule rewrite_module 模块/mod_rewrite.so
在 httpd.conf 中将工作目录的AllowOverride更改为All(不要更改每个AllowOverride,因为这是安全问题)
允许覆盖全部
最好的做法是从容器下载 httpd.conf,更改此值,然后在将映像构建到同一目录时上传新的 httpd.conf:
例如
提取httpd.conf docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf
上传新的 httpd.confon 构建过程: COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
| 归档时间: |
|
| 查看次数: |
10549 次 |
| 最近记录: |