Tag Archive for ‘apache’

使用apache2-mpm-itk为apache的虚拟主机指定单独的用户运行

在用Python和django写一个类似github的程序,当然功能是非常少的,目前只想做到可以创建git仓库,自行管理ssh公钥还有些基本的权限控制。

在ssh公钥管理这里,其实就是管理Linux用户目录下的.ssh/authorized_keys文件,当用户提交公钥时,向这个文件里写入公钥内容。

authorized_keys的权限设置非常严格,只有当除了用户自己可以有写权限外,组权限和其他权限都不能有写入的权限才行,否则这个文件就无效,即使把公钥写入这个文件,通过ssh登录到该用户时还是需要输入密码,这是ssh出于安全的考虑,防止由于用户自己对权限设置不当而造成安全问题。

但是现在我要通过web界面管理这个文件,那么读写这个文件的用户就是运行web服务器的用户,一般来说运行apache的用户是www-data,那么就无法写入了,我本身对apache也只会一些最基本的配置,然后就搜阿搜。。。

搜到一个suexec,然后装啊,设置阿,测试阿,弄了半天不是太明白,也没成功,运行虚拟主机的用户仍旧是www-data。

然后继续搜阿搜,找到个文章: Running apache2 virtualhost with different users

然后按照里面说的装了 apache2-mpm-itk

$ sudo apt-get install apache2-mpm-itk

在apache的VirtualHost里加入

<IfModule mpm_itk_module>
   AssignUserId git git
</IfModule>

AssignUserId 后面2个参数一个是运行该虚拟主机的用户,另一个就是组。
我把所有git仓库都放在一个叫git的linux用户目录下作为git服务器,所以AssignUserId就是 git git。

最后把django项目下的所有文件的用户和组都设置为git,重启apache,测试后果然就可以了。

使用这个mpm_itk非常方便,之前搜到的suexec我虽然没弄成功过,但是了解下来似乎python程序要通过fastcgi方式运行才行。

我现在django的运行方式是,apache+mod_wsgi,用mpm_itk后同样可以达到效果了。

记录一在Debian下配置Redmine运行在apache+fastcgi

Redmine的确不错,以前用Trac,不过试用了Redmine后觉得更加好用,比如多个项目的管理,可以完全基于web的配置管理,还有完整的国际化语言包,非常方便。

对于 ruby on rails 我是从来没接触过,安装这个东西我都是通过google到处搜索的,折腾了一段时间才装上- -,下面就是记录下。

Redmine 的基本安装可以先看 官方文档,Apache要启用mod_rewrite 。

在Apache里设置一个别名,设置后可以通过http://domain/redmine访问。

<ifModule alias_module>
<ifModule mime_module>
    Alias /redmine "/path/to/redmine/public/"
    <directory "/path/to/redmine/public/">
        AllowOverride All
        Order allow,deny
        Allow from all
    </directory>
</ifModule>
</ifModule>

如果是通过mod_cgi运行的话,只要把redmine/public目录下的dispatch.cgi.example改名为dispatch.cgi 然后基本就可以了,不过mod_cgi运行起来感觉比较慢阿,网上查了下说通过fastcgi会快很多,然后又折腾了一点时间才搞定。

安装apache的mod_fcgid模块,记得装好后重启下apache

$ sudo apt-get install libapache2-mod-fcgid
$ sudo ln -s /etc/apache2/mods-available/fcgid.* /etc/apache2/mods-enabled/

然后要安装ruby fastcgi,不过之前还要先装下ruby-dev

$ sudo apt-get install ruby-dev

通过gem直接安装ruby-fcgi好像有点问题,下载源码安装

$ wget sugi.nemui.org/pub/ruby/fcgi/ruby-fcgi-0.8.6.tar.gz
$ tar -xzf ruby-fcgi-0.8.6.tar.gz
$ cd ruby-fcgi-0.8.6
$ ruby install.rb config
$ ruby install.rb setup
$ sudo ruby install.rb install

这下应该差不多了,把redmine/public里的dispatch.fcgi.example改名为dispatch.fcgi,还有最好把.htaccess里关于mod_fastcgi和mod_cgi的块都注释掉,只留mod_fcgid的。

现在访问的话,可能是会连接development的数据库,不知道怎么样可以传production进去,然后找到一个办法是 打开redmine/config/environment.rb把 ENV['RAILS_ENV'] ||= ‘production’ 这一行的注释去掉,就行了。

这下速度快多了 哈哈。

如果还没搞定,可以再google下,这篇文章也很有参考价值。