安装Redmine 2.0

Redmine 这厮就这样大张旗鼓的升级到了2.0。正好公司的mantisbt实在是不给力,就准备安装Redmine。很之前安装的方法并没有什么区别,可以参考之前安装CentOS 6 安装Redmine。特此记录下。

下载Ruby 1.8.7稳定版即可。

cd ~
 
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
 
tar  xzvf ruby-1.8.7.tar.gz
 
cd ruby-1.8.7
 
./configure
 
make && make install

查看Ruby的版本,会报错。

ruby -v
 
-bash: /usr/bin/ruby: No such file or directory

查看ruby的安装路径

which ruby
 
/usr/local/bin/ruby
 
where ruby
 
ruby: /usr/lib/ruby /usr/local/bin/ruby /usr/local/lib/ruby

修复ruby的路径问题

ln -s /usr/local/bin/ruby /usr/bin/ruby

现在可以查看ruby的版本了

ruby -v
 
ruby 1.8.7 (2008-05-31 patchlevel 0) [i686-linux]

安装rubygems

wget http://production.cf.rubygems.org/rubygems/rubygems-1.4.2.tgz
 
tar xzvf rubygems-1.4.2.tgz
 
cd rubygems-1.4.2
 
ruby setup.rb
 
RubyGems 1.4.2 installed

修复gem的路径问题

ln -s /usr/local/bin/gem /usr/bin/gem
 
gem -v
 
1.4.2

安装 passenger模块

gem install passenger
 
//安装passenger的apache模块,同样也有nginx下的模块
//passenger-install-nginx-module
 
passenger-install-apache2-module

会提示你有哪些依赖没有被安装。

To install GNU C++ compiler:
Please run yum install gcc-c++ as root.
 
To install Curl development headers with SSL support:
Please run yum install curl-devel as root.
 
To install Zlib development headers:
Please run yum install zlib-devel as root.
 
yum install gcc-c++
 
yum install curl-devel
 
yum install zlib-devel
 
passenger-install-apache2-module

安装完成后 添加 配置到apache的配置文件

vim /etc/httpd/conf/httpd.conf
 
LoadModule passenger<em>module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.12/ext/apache2/mod</em>passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby
 
service httpd restart

从rubyforge下载redmine

wget http://rubyforge.org/frs/download.php/76134/redmine-2.0.0.tar.gz
 
tar xzvf redmine-2.0.0.tar.gz
 
cp -rf redmine-2.0.0 /var/www/redmine
 
//设置相关属性
cd /var/www
 
chmod 755 -R redmine
 
chown apache.apache -R redmine

添加网站配置文件

DocumentRoot /var/www/redmine/public
ServerName pms.xbc.me

添加数据库配置文件

cd redmine/config
 
cp database.yml.example database.yml
 
vim database.yml
 
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: my_password
encoding: utf8
 
chmod 755 -R database.yml
 
chown apache.apache -R database.yml

不要忘记了 redmine 1.4以后添加bundler依赖。

gem install bundler
 
bundle install --without development test

如果在bundle安装时,出现下面的这些错误的话,去掉一些不需要的扩展。

An error occured while installing pg (0.13.2), and Bundler cannot continue.
An error occured while installing rmagick (2.13.1), and Bundler cannot continue.
An error occured while installing sqlite3 (1.3.6), and Bundler cannot continue.
 
bundle install --without development test postgresql rmagick sqlite

生成session 密钥

cd /var/www/redmine
 
//Generate a session store secret.
rake generate_secret_token

创建数据库结构。

//Create the database structure, by running the following command under the application root directory:
 
RAILS_ENV=production rake db:migrate

导入默认的配置文件

RAILS_ENV=production rake redmine:load_default_data

安装环境为Centos 5.6+Apache2.2。
参考

http://www.redmine.org/boards/2/topics/30244

http://www.redmine.org/projects/redmine/wiki/RedmineInstall

添加Apache模块

和php添加模块类似,Apache也有动态添加模块的工具apxs。

找到下载的模块目录

cd /usr/local/apache/modules/filters
// 编译并安装
apxs -ica mod_deflate.c
 
//会出现编译问题,换成绝对路径编译
apxs -ica /usr/local/apache/modules/filters/mod_deflate.c

apxs在编译完成时,会自动将编译好的模块安装到apache的所在的模块目录,例如/usr/local/apache/modules。并在/etc/httpd/conf/httpd.conf添加

LoadModule deflate_module     modules/mod_deflate.so

参考

http://httpd.apache.org/docs/2.2/programs/apxs.html

apxs添加apache模块

动态添加php extension

通常情况下,在手动编译下都会添加一些常用的php模块,例如mbstring、curl等。那如果手动编译后,发现有些应用又需要添加新的php模块呢?

php官方列出了几种动态添加模块的方式:

1. 使用pear来安装pecl的模块。

2. 使用phpize来安装pecl模块。

3. 使用pecl来安装模块。

4. 重新静态编译php,添加相关的模块。

其中1和3都要求已经安装pecl或者pear模块。pecl和pear的命令参数都差不多了。使用pecl安装模块的命令如下:

/usr/local/php5.3.10/bin/pecl install apc
//卸载apc
/usr/local/php5.3.10/bin/pecl uninstall apc

不过我在使用pecl的安装模块出现了编译错误,只好使用phpize来安装。先在pecl.php.net上下载所需要的php模块,例如我需要安装apc。最新的stable版的是3.1.9。

cd /root/tmp
wget http://pecl.php.net/get/APC-3.1.9.tgz
tar xzvf APC-3.1.9.tgz
cd APC-3.1.9
/usr/local/php5.3.10/bin/phpize
./configure
make
make install

这样就安装了一个apc模块。默认情况下会安装include/php/ext/下,以我的为例就是/usr/local/php5.3.10/include/php/ext/。

参考资料

用 PEAR 编译共享 PECL 扩展库

利用vsftpd搭建ftp服务器

起因是帮朋友弄一个网站,服务器是最小化安装,并没有安装任何其他的cpanel软件,要实现的需求是建立一个用户chroot到一个特殊的目录。

安装vsftpd,很简单。

yum install vsftpd

/etc/init.d/vsftpd start

这样,我们就启动vsftpd服务了。按照默认的配置是可以匿名登录的。

cat /etc/vsftpd/vsftpd.conf | grep -v "#" 
anonymous_enable=NO 
local_enable=YES
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 
listen=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
userlist_deny=YES 
userlist_file=/etc/vsftpd/user_list 
user_config_dir=/etc/vsftpd/user_config 
tcp_wrappers=YES

Vsftpd的配置中,有几个注意的选项。

anonymous_enable=NO 这个会禁用匿名登录。

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list这三个选项是分别是默认限制用户在自己的主目录中。启用chroot列表。指定chroot文件的位置

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list这三个选项是启用userlist功能。设置在userlist中的用户将无法登录vsftpd服务。设置userlist文件的位置。

实现特定用户限制在特定目录的设置,如下

user_config_dir=/etc/vsftpd/user_config 设置自定义用户配置文件的目录。在该目录创建文件,以用户名为文件名ftp,内容为

local_root=/var/www/test这样当ftp登录时,会自动限制用户test只能访问/var/www/test目录。