CentOS7.5上用Apache运行Redmine

之前已安装redmine,但它默认的WEB服务软件是WEBrick,这个是Rails开发测试用的服务器,性能很差。之前就发现打开响应特别慢,今天又出问题:只要在redmine上登录用户就卡死无响应,一气之下就想换apache来运行redmine。说干就干,下面就来记叙改造过程。

安装Apache

我下载的是apache2.4.33,在运行./configure命令时,报了error: APR not found.

原来是要安装如下软件包:

wget http://archive.apache.org/dist/apr/apr-1.6.3.tar.gz

wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz

具体步骤如下:

安装apr

[root@xt test]# tar -zxf apr-1.6.3.tar.gz
[root@xt test]# cd apr-1.6.3
[root@xt apr-1.6.3]# ./configure –prefix=/usr/local/apr
[root@xt apr-1.6.3]# make && make install

Centos7还需要装:
yum install expat-devel

安装APR-util

[root@xt test]# tar -zxf apr-util-1.6.1.tar.gz
[root@xt test]# cd apr-util-1.6.1
[root@xt apr-util-1.6.1]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
[root@xt apr-util-1.6.1]# make && make install

安装pcre

[root@xt test]#tar -zxf pcre-8.42.tar.gz
[root@xt test]#cd pcre-8.42
[root@xt pcre-8.42]#./configure –prefix=/usr/local/pcre
[root@xt pcre-8.42]#make && make install

编译Apache

cd httpd-2.4.33

./configure –prefix=/usr/local/apache2.4.33 \
–with-apr=/usr/local/apr \
–with-apr-util=/usr/local/apr-util/ \
–with-pcre=/usr/local/pcre \
–enable-deflate \
–enable-expires \
–enable-headers \
–enable-modules=most \
–enable-so \
–with-mpm=worker \
–enable-rewrite

make

如果make过程中有如下报错:
collect2: ld returned 1 exit status make[2]: *** [htpasswd] խϳ 1 make[2]: Leaving
则可尝试安装libtools-ltdl-devel解决。

如果不行,将apr目录拷贝到httpd下:
cp -r apr-1.5.2 httpd-2.4.33/srclib/apr

然后运行:

./configure --prefix=/usr/local/apache2.4.33 \
--with-included-apr
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--with-pcre=/usr/local/pcre \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite

再:

make install

配置apache

useradd apache -s /sbin/nologin

vim /usr/local/apache/conf/httpd.conf

改如下参数:

User apache

Group apache

ServerName 127.0.0.1:80  #前面的注释符去掉

Listen 80

Listen 3000

DirectoryIndex index.html index.php index.htm

Include conf/extra/httpd-vhosts.conf

运行apache服务:
vim /usr/lib/systemd/system/httpd.service

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=forking

EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl graceful
ExecStop=/usr/local/apache2/bin/apachectl stop
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

一般装完上述文件已存在,只要参照修改一下就行。

开启服务:systemctl start httpd
关闭服务:systemctl stop httpd

加入自启动功能:systemctl enable httpd

整合Redmine和Apache

设置redmine文件权限:

cd /usr/local/redmine

chown -R apache:apache files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

安装httpd httpd-devel 

yum install -y httpd httpd-devel

绑定apache

gem install passenger

yum install libcurl-devel -y

passenger-install-apache2-module  #根据提示操作

在/usr/local/apache/conf/httpd.conf中加入:

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.3.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.3.2
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.4.1/wrappers/ruby
</IfModule>

在/usr/local/apache/conf/httpd.conf中:

去掉两行注释,开启vhosts功能:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf

去掉ServerName注释:
ServerName www.testhost.com:80

 

在/usr/local/apache/conf/extra/httpd-vhosts.conf中:
<VirtualHost *:3000>
ServerAdmin nowguy@qq.com
DocumentRoot “/usr/local/redmine/public”
ServerName redmine.testhost.com
ServerAlias redmine.testhostalias.com
ErrorLog “logs/redmine-error_log”
CustomLog “logs/redmine-access_log” common

<Directory “/usr/local/redmine/public”>
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>

重启Aphache:

/usr/local/apache/bin/apachectl graceful

在浏览器中输入http://IP:3000即可看到网页了。

这里有个问题,涉及添加修改用户的页面给775的权限都不能打开,只好把files、 log 、tmp 、public设置成777才行。照理用apache用户访问的话前者权限就够了。因为只是个人在用,这个问题先放放,如果有知道的朋友麻烦留言告之,谢谢!

 

作者: Josh Chen

技术引领潮流!