webサイトを更新 (2017/3/28)

Webサイトを更新しました.CMSそのものを入れ替えてコンテンツなどを整理しました.更新によってなにか今まで公開していた古いデータなどがもし必用な場合はご連絡下さい.

redmine1.1.2から redmine3.2に問題なく移行(2016/11/04)

CentOS7.2 に新規にredmine3.2を入れて,旧redmine1.1.2で作成してきたデータを移行できました.redmineってよくできてます.下記が方法です.

データの保存

  • データの保存(mysql)
    mysqldump -u root -p --default-character-set=utf8 db_redmine > /tmp/redmine_backup_`date +%Y%m%d-%H%M%S`.sql
  • データの保存(wikiなどでの添付ファイル)
    /var/lib/redmine/files をtarで固めて移動 (/var/lib/redmineの部分は設定による)
    cd /var/lib/redmine
    tar cvfz filesback.tgz files

インストール (CentOS7.2)

  • getenforce で確認して SELinux切る
  • firewall 空ける
    firewall-cmd --zone=public --add-service=http --permanent
    firewall-cmd --reload
  • パッケージインストール
    yum groupinstall "Development Tools"
    yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel httpd-devel 
    yum install ImageMagick ImageMagick-devel ipa-pgothic-fonts 
  • mysqlを入れる (mariaDBの削除)
    yum remove mariadb-libs
    yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    yum install mysql-community-server
    yum install mysql-devel
    • /etc/my.cnf を開いて最後に下記を追加(文字はUTF-8を利用)
      character_set_server=utf8
      skip-character-set-client-handshake
    • 起動
      touch  /var/lib/mysql/mysql.sock
      chown -R mysql:mysql /var/lib/mysql
      systemctl start mysqld.service
    • mysqlのパスワードなど設定
      mysql_secure_installation (これを実行)
      この時,最初のmysqlのrootパスワードの質問は無視
      Enter current password for root (enter for none): (空でenter)
      あとはいろいろ
      systemctl restart mysqld.service
  • DBにredmine(ver1.1.2)をコピーする
    • まずDBに空の redmineデータベースを作成し,redmineユーザを作る
      mysql -u root -p で入る
      CREATE DATABASE redmine CHARACTER SET utf8;
      CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'パスワード';
      GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
      quit;
    • 先ほど保存した過去のredmineDBを入れる
      mysql -u root -p --default-character-set=utf8 redmine < redmine_backup_20161104-080707.sql 
  • Rubyを CentOS7.2にいれる
    • デフォルトでは 2.0.0 が入ってるが(/usr/bin/ruby)それは削除.2.2.3にする.
    • 特に消してもバージョンアップしても今のところ問題なかった
      curl -O https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
      tar xvfz ruby-2.2.3.tar.gz
      cd ruby-2.2.3
      ./configure --disable-install-doc
      make
      make install で
      /usr/local/bin/ruby に入る
      (確認)
      ruby -v
  • gemのインストール
    gem install bundler --no-rdoc --no-ri
  • Redmineを入れる 参考は http://blog.redmine.jp/articles/3_2/install/centos/ http://weblabo.oscasierra.net/install-redmine32-centos7-1/など.redmine 3.2を入れる
    curl -O http://www.redmine.org/releases/redmine-3.2.0.tar.gz
    tar xvfz redmine-3.2.0.tar.gz
    mv redmine-3.2.0 /var/lib/  (ここはお好み)
    それで名前をredmineに変える
    cd /var/lib/
    mv redmine-3.2.0  redmine
    (この後,redmineディレクトリの下を全部 ユーザapache,グループapacheに変更するが,まだいろいろインストールするので最後にする)
  • Redmineまわりの設定とファイルの移動

    • データベース接続設定
      cd /var/lib/redmine/config/
      cp database.yml.example database.yml
      • database.ymlで 最初のproductionだけ書き直した
        production:
        adapter: mysql2
        database: redmine
        host: localhost
        username: redmine
        password: "パスワード"
        encoding: utf8
    • configuration.ymlの作成(メールの設定)
      • /var/lib/redmine/config/configuration.yml を新規に作る.configuration.yml.exampleというのもあるみたいだけど無視した
      • 内容は下記(メールの設定に合わせる)
        production:
         email_delivery:
           delivery_method: :smtp
           smtp_settings:
             address: "localhost" 
             port: 25
             domain: "fullのドメイン名" 
        
         rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
        
    • 必要なファイルのdownload
      cd /var/lib/redmine
      bundle install --without development test --path vendor/bundle
      ここでエラーがでた場合はメッセージを読む
      (database.ymlの中が正しいか,mysql関係のライブラリが不足しているか?など)
    • 秘密鍵の作成
      cd /var/lib/redmine
      bundle exec rake generate_secret_token
      下記のワーニングが出る
      /var/lib/redmine/vendor/bundle/ruby/2.2.0/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot"
    • httpd との連携にむけて (passengerなどいれる)
      cd /var/lib/redmine
      gem install passenger --no-rdoc --no-ri
      passenger-install-apache2-module --auto
    • httpdに登録すべき内容の表示
      passenger-install-apache2-module --snippet

      と打つと

      LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
      
       <IfModule mod_passenger.c>
       PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.30
       PassengerDefaultRuby /usr/local/bin/ruby
       </IfModule>
      
    • 上記の内容をhttpdに設定
      touch /etc/httpd/conf.d/redmine.conf
      • としてファイルを作って内容は下記
         
         <Directory "/var/lib/redmine/public">
         Require all granted
         </Directory>
         
         LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
         
         <IfModule mod_passenger.c>
          PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.30
          PassengerDefaultRuby /usr/local/bin/ruby
         </IfModule>
         
         RackBaseURI /redmine
         (この最後の1行も重要)

  • 旧redmineのfileをコピーする
    cd /var/lib/redmine
    mv files filesBak
    mv filesback.tgz  .
    tar xvfz filesback.tgz
    これで files ディレクトリが /var/lib/redmineの下にできる
  • データベースを修正する(これが重要)
    cd /var/lib/redmine
    RAILS_ENV=production bundle exec rake db:migrate
  • Redmineの下を apacheユーザ,apacheグループの権限に変える
    chown -R apache:apache /var/lib/redmine
  • /var/www/html/ がhttpdが公開するディレクトリの時,この下にシンボリックリンクを張る
    ln -s /var/lib/redmine/public /var/www/html/redmine 

起動

 systemctl restart httpd.service

起動時に自動で立ち上げるには

 systemctl enable httpd.service

アクセス

http://localhost/redmine/ のところにアクセスすると表示される. 

Scalaでhtmlをパース (DOM) (2015/6/9)

Scalaでhtmlファイルを読み込んでいろいろ処理をしたいときがあります.DOMの構造に落とすことが出来るのでやってみました(2015.6.9) Scalaのversionは 2.10.4.Eclipse4.4上で Scalaは pluginで入れました.

まず準備

nu.validator.htmlparser.dom.HtmlDocumentBuilderを使うためにインストールします.googleで検索して htmlparser-1.4.zip というファイルをdownloadします.

次に展開して htmlparser-1.4.jar ファイルをEclipseの Scalaに読み込ませます.やり方はEclipseの [プロジェクト]>[プロパティ]>[Javaのビルド・パス]の[ライブラリー]タブを開き,「外部jar追加」でさきほどの htmlparser-1.4.jarを読み込ませます.これでnu.validator.htmlparser.dom.HtmlDocumentBuilderをimport出来ます.

プログラム

import scala.io.Source

import nu.validator.htmlparser.dom.HtmlDocumentBuilder
import java.io.StringReader
import org.xml.sax.InputSource

object Domp {
 def main(args: Array[String]) {
   val builder = new HtmlDocumentBuilder()
   val source = Source.fromFile("/home/なにかhtmlのファイル")
   val sreader = new StringReader(source.mkString)
   
   // parseをします
   val dom = builder.parse(new InputSource(sreader))
   
   // 一番上の一つ下の子供はhtml.なのでその下を取ってみます
   val child = dom.getChildNodes().item(0) //この0番目は トップのhtml
   val size = child.getChildNodes().getLength //htmlの下を取る
   //どうもJavaベースらしく配列に対して数を数えてループを回さないととれない!?
   for(i <- 0 until size){
         println("i="+i) //何番目の子供か表示させてみました
        println (child.getChildNodes().item(i).getNodeName) //子のタグ名
   }
 }
}
入力のファイルはこんな感じ
test.html

<html>
<title>テストタイトル</title>
<body>
<h1> テスト </h1>
</body>
</html>

すると出力は下記のようになります

i=0
head
i=1
body

つまり htmlのタグの下には titleとbodyタグが子ノードしてあることがわかります.

childなどの型は org.w3c.dom.Nodeなのであとは調べるといろいろメソッドがありそうです.

参考: http://blog.mwsoft.jp/article/45131631.html