其實我是自討苦吃, Redmine 有現成安裝好的 (bitnami, 或者 docker), 但我還是忍不住要自己安裝.

1. 環境

  • CentOS 7 x64
  • Passenger 5.2.1
  • Nginx 1.12.2 (安裝目錄 /opt/nginx)
  • Ruby 2.3.6
  • Rails 4.2.10
  • Redmine 3.4.4 (安裝目錄 /opt/www/redmine)
  • MariaDB 10.1.31
  • 安裝與執行的帳號: nginx

 

2. 準備工作

##
## 以 root 登入 CentOS
##

##
## 設定防火牆, 開放80/tcp與443/tcp
##
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
firewall-cmd --reload

##
## 建立帳號nginx, 作為 nginx/ruby/rails 與 redmine 的安裝與使用者
## 並建立以下目錄安裝目錄作為 www root 放置 nginx 的 log
##
useradd nginx
passwd nginx ## 請給個密碼
mkdir /opt/nginx ## 作為 nginx 的安裝目錄
mkdir /opt/www ## 作為 nginx 的 web root
mkdir /var/log/nginx ## 作為 nginx 放置 log 的目錄
chown -R nginx.nginx /opt/nginx
chown -R nginx.nginx /opt/www
chown -R nginx.nginx /var/log/nginx

##
## 安裝必要套件
##
yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel epel-release
yum install -y nodejs subversion subversion-ruby ImageMagick ImageMagick-devel libcurl-devel

 

3. 安裝 MariaDB

##
## 建立 yum repository file
## PS1: 作者是過 MariaDB 10.2, 似乎有相容性問題, 因此都以 MariaDB 10.1 為主
## PS2: 是啦, 原本 yum 就可以直接裝 MariaDB (版次比較低), 作者就是犯賤想自己來囉
##
rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
cat << EOF > /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgcheck = 1
enabled = 1
EOF

##
## 安裝, 設定為自動啟動, 並設定 root 密碼
##
yum -y install MariaDB MariaDB-server MariaDB-devel
systemctl enable mariadb
systemctl start mariadb
mysqladmin -u root password

 

4. 安裝 Ruby and Rails

##
## 以 nginx 身分
##
su - nginx
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
exec $SHELL

##
## 登出 nginx 再登入, 讓上述的設定生效
##
exit
su - nginx

##
## 安裝 Ruby
##
rbenv install -v 2.3.6
rbenv global 2.3.6
ruby -v ## 顯示 Ruby 的版號

##
## 安裝 Rails
##
echo "gem: --no-document" > ~/.gemrc
gem install bundler
gem install rails -v 4.2.10
rbenv rehash
rails -v ## 顯示 Rails 的版號

##
## 安裝 OpenID 套件 (若有需要用 OpenID 登入 Redmine)
##
gem install ruby-openid

 

5. 安裝 Redmine

##
## 還是以 nginx 的身分
##

##
## 建立 Redmine 的資料庫 (redmine_db)
##
mysql -u root -p ## 按 Enter 後輸入 MariaDB root 的密碼
create database redmine_db character set utf8;
create user redmine_db_user@localhost identified by '<redmine_db_user的密碼>';
grant all on redmine_db.* to redmine_db_user@localhost;
flush privileges;
exit;

##
## 下載 Redmine 並解開到 /opt/www/redmine
##
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
tar -xvzf redmine-3.4.4.tar.gz
mv redmine-3.4.4 /opt/www/redmine
rm -f redmine-3.4.4.tar.gz

##
## 設定 Redmine 資料庫連線
##
## 將 Production 節裡面的
## database 設定為 redmine_db
## username 設定為 redmine_db_user
## password 設定為 <redmine_db_user的密碼>
##
cd /opt/www/redmine/config
cp database.yml.example database.yml
vi database.yml

##
## 初始化 Redmine
##
cd /opt/www/redmine
bundle install --without development test
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate ## 初始化資料庫
RAILS_ENV=production REDMINE_LANG=zh-TW bundle exec rake redmine:load_default_data ## 建立中文的預設資料 (若要英文就把 zh-TW 改為 en-US

##
## 以 Webrick 測試
##
## 執行下面指令啟動 Web Server
## 在本機瀏覽 http://localhost:3000
## 以 admin/admin 登入
## 登入後順便改一下 admin 的密碼
##
bundle exec rails server webrick -e production

 

6. 安裝 Passenger 與 Nginx

##
## 安裝 passenger
##
chmod o+x /home/nginx
cd ~
gem install passenger --no-ri --no-rdoc

##
## 利用passenger安裝nginx
##
## Step 1 (Welcome): Press <Enter> to continue
## Step 2 (Choose Language): Press <Enter> to use Ruby by default
## Step 3 (Download): Press <1> + <Enter> to install nginx automatically
## Step 4 (Location): Press <Enter> to install into /opt/nginx by default
## Step 5 (Installed): Press <Enter>
##
passenger-install-nginx-module

##
## 設定 nginx 指向 redmine
##
## 在server區塊, server_name下方加上
##        client_max_body_size 20M;
##        client_body_buffer_size 1M;
##        access_log  /var/log/nginx/host_access.log;
##        error_log  /var/log/nginx/host_error.log;
vi /opt/nginx/conf/nginx.conf

## 在原有的location / { … } 下方新增一個location
##        location ~ ^/redmine(/.*|$) {
##            alias /opt/www/redmine/public;
##            access_log /var/log/nginx/redmine_access.log;
##            error_log /var/log/nginx/redmine_error.log;
##            passenger_base_uri /redmine;
##            passenger_app_root /opt/www/redmine;
##            passenger_document_root /opt/www/redmine/public;
##            passenger_enabled on;
##        }

 

7. 設定 Nginx 自動啟動

##
## 回到 root 身分
##

##
## 建立Service檔案
##
cat << EOF > /lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
EOF


##
## 啟用並啟動nginx服務
##
systemctl enable nginx
systemctl start nginx


##
## 設定nginx可以控制nginx服務
##
cat << EOF > /etc/sudoers.d/nginx
%nginx ALL=NOPASSWD: /bin/systemctl start nginx, /bin/systemctl stop nginx, /bin/systemctl restart nginx, /bin/systemctl status nginx
EOF

##
## 測試
##
## 在本機打開 http://localhost/redmine (或在非本機打開)
##
 

arrow
arrow
    文章標籤
    Redmine CentOS MariaDB Nginx
    全站熱搜

    Egg Chang 發表在 痞客邦 留言(0) 人氣()