- MetaTraderという取引ツール(Windows用)がある。チャート機能が強い。対応した証券会社であればそれで取引ができ、そうでなくてもチャート機能だけ使うのもあり。
公式サイト[http://www.metaquotes.net/]
まとめwiki[http://hikaku.fxtec.info/metatrader/] - MetaTraderは通常は公式サイトからダウンロードするけど、証券会社によってはカスタマイズされたものを使う必要があるっぽい。また、この際にユーザに不利になるようなカスタマイズもあるっぽい?ただ、そもそも、特に海外は、証券会社側での不正な操作が疑われることが多々あるっぽい?
- MetaTraderではデモ取引が可能なので最初の練習ツールとしても最適。
- チャートのプラグイン開発や、自動取引機能の開発ができるらしい。その際に使われる言語はMQLで、MetaTrader独自の言語っぽい。
- MQLは通常、専用エディタで開発するぽいけど、eclipseプラグインがある模様。ただし、署名がないっぽいプラグインで、怪しい雰囲気がある。自己責任で
http://yamanekou.blog.fc2.com/blog-entry-52.html - MetaTraderはWindows用だけど、MACでもWineというWindowsアプリを動作させるツールを使えば概ね動作する。今回はWineのカスタム版であるNihonshuというツールを利用した。
Nihonshu[http://matome.naver.jp/odai/2138009369610432001] - GMOクリック証券では取引ツールとして「はっちゅう君」、チャートツールとして「プラチナチャート」が提供されている。はっちゅう君の方はよくわからないけど、プラチナチャートはかなり使いやすい。難があるとしたら、はっちゅう君は毎回ログイン情報を求められる(パスワード保存できない)。プラチナチャートの方は起動毎に設定し直さないといけないこと。なお、プラチナチャートははっちゅう君から起動すれば、ログインしなくてよい。
- スマフォ(iPhone)取引アプリとしてはGMOクリック証券から「iClickFXneo」が提供されている。他の証券会社のをだいたい試したけど、少なくともチャートとしてはiClickFXneoがかなり使いやすかった。為替アラート機能も○。
- MetaTraderのiPhone版もあり、スマフォ用チャートアプリとしては最強だった。好きなチャートを同じウィンドウに重ねて表示したりがかなり柔軟で、色変更やパラメータ設定も可能。また、起動時に画面ロック無効にしてくれる機能もある。基本的にはiClickFXneoとMetaTraderでスマフォツールは完備となる。
- iPhone版MetaTraderからはPC版MetaTraderのデモアカウントにログインできない?かも。改めて作るのが無難か。
- 時々使う「DMMFX Trader」は4つのチャートを同時表示できるのが便利。神経質にチャートを見たい時に重宝。
- 他にも色々試したけど、上記のアプリさえあれば基本的には要らない。が、チャート設定を色々変えたい場合に、普段使ってるアプリでかえると戻すのが面倒。そこで、他アプリをいくつか入れて予備に使うのが○。「FX PLUS」「FX Cymo」「fxTrade」といったアプリが存在する。
- 「羊飼いのFXアプリ」というアプリが存在する。指標スケジュールやそれの詳細が記載されているウェブサイトへのリンク機能があるので便利。アラート機能が充実しているけど、為替アラーとなんか反応が遅いので指定為替レートアラート機能は使ってない。その他のアラートは一応ONにしている。
このブログを検索
2013-12-30
FXメモ
labels:
fx
今月からFX始めました。
今月からFXを始めたので時々記録をつけていきます。
とりあえずは簡単な記録から。
とりあえずは簡単な記録から。
- 某日、FXに関する書籍を購入し雰囲気を知る。
間違えて売ってしまったので何を買ったか忘れたけど、確かこれ
一番売れてる投資の雑誌ザイが作った『FX』入門 ザイ編集部&羊飼い
最初に読むには丁度良かったです、オススメでした。
が、結局実際にやってみるまではサッパリわかりませんでしたね。 - 12/8、GMOクリック証券(FXネオ)で開始
- 軍資金11万くらいから
- 基本的にUSD/JPYでスキャル〜デイ
- 途中、書籍を適当に入門書っぽいものを二冊購入。
一冊目
朝30分! 会社勤めをしながら稼ぐ私のFX投資法 長瀬博雅
・・・これは完全に失敗でした。
まず、そもそもある証券会社でのみ使えるシステムに関する説明資料であったこと。よく見てなかったのが悪いですがだまされた・・・。また、その説明資料だとしても、本当に説明書レベルのことしか書いておらず、例えそのシステムのことが知りたかったとしても、「ぐぐればわかるよ!」といった程度のことしか書いていないこと。
なお、そのシステムというのは「トラップリピートイフダン」という名称の注文方法で、ある証券会社というのは確か「マネースクウェアジャパン」。
ただまぁ、書籍は最悪でしたが、この「トラップリピートイフダン」というのはなかなか良さそうでした。イフダン注文の指定をしておけば、その条件を満たすなら何度でも繰り返す注文方法。さらに、複数指定できるので「トラップ」ということらしい。
二冊目
株とFX たったの3時間でプロ並にチャートが読めるようになる 間地秀三
これはなかなか良書でした。中級者には当然だろうことしか書いてませんでしたが、為替チャート初めて!って人にはかなり良いと思います。
内容としては、チャートのテクニカル分析のいろはについてが書かれていました。
逆に、それだけが書かれています。すぐ読み終わるので1500円は高いと感じました・・・が、内容は良かったので良しとします。 - 12/30現在、+2万
labels:
fx
2013-11-04
eclipseでandroid開発環境構築のメモ
かなり古いメモだけど転記し忘れてた。
http://www.infinity-dimensions.com/blog/archives/android-app-develop-sdkinstall.html
http://www.infinity-dimensions.com/blog/archives/android-app-develop-sdkinstall.html
Android SDK(SOFTWARE DEVELOPMENT KIT) のダウンロードとインストール
インストールは以前していたみたいなので省略
Android SDK Managerを起動
Android X.Xをインストールする
手持ちのAndroidは2.3.7なので2.3.3を展開
とりあえずSDK Platform/Sample for SDK/Google APIs by Google Inc.をチェック
既にインストールされてるけど多分次のやつも必要
TollsのAndroid SDK Tools/Android SDK Platform-tools
途中、アクセスが拒否されました。とかいうエラーが出たが、
SDK Managerを管理者権限で起動しなおしたらうまくいった。
パスを通す
Pathに以下を追加
C:\Program Files (x86)\Android\android-sdk\tools
C:\Program Files (x86)\Android\android-sdk\platform-tools
JDKインストール
eclipseについてくるので不要
Eclipseインストール
日本語化&いろいろ込みのpleiadesを使用する
から
Eclipse 3.6 HeliosのFull All In One(JREあり)のJavaパッケージをダウンロード
インストール
今回はc:\eclipse\pleiades-java-3.6.2\にインストールした
※最新は3.7だがAndroid開発ツールが3.6までしか対応していない
Eclipseセットアップ
"eclipse.exe"を起動する
ワークスペースの選択と出るのでここでは"c:\workspace\android"を指定
ウィンドウ→設定→Java→インストール済みのJRE
jre1.6を選択する
→コンパイラー
コンパイラー準拠レベル:1.6
EclipseにADT(Android Development Tools)インストール
ヘルプ→新規ソフトウェアのインストール
作業対象で追加したロケーションを選択
下の枠内に"保留中"と出たら数分待つ
開発ツールというのが出たらチェックを入れる(全部に入る)→次へと進めて完了させる
Eclipseメイン画面に戻るとステータスバーにインストール状況が表示されるので待つ
完了したら再起動
※途中でエラーが出る場合
まずは同じ手順を二回繰り返す(それでいけた)
だめならhttpsをhttpに変えてRetry
再起動するとWelcometo Android Development Toolsという画面が表示される
Use existing SDKsを選択してロケーションに
今回は"C:\Program Files (x86)\Android\android-sdk"を指定
AVD(Androidエミュレーター)の作成
ウィンドウ→AVD Manager→新規
名前:android2.2
SDCardサイズ:64
Snapshot使用可能:チェック
Skin解決:600x1024
Keyboard support:yes
→CreateAVD
さらに
開始→起動
Hello作成
ファイル→新規→その他を選択
Android→Androidプロジェクトを選択→次へ
プロジェクト名:HelloAndroid→次へ
ビルドターゲット:Android2.3.3→次へ
パッケージ名:com.blogspot.xelalko.hello→完了
この状態で
実行→実行→Android アプリケーション
とすると仮想端末が実行される。
ホーム画面を表示するとHelloアプリケーションが実行される。
2013-10-19
CentOSで固定IPの設定
CentOS6.3(6.2?)で固定IPの設定
この辺ってディストリビューションによって異なるから面倒。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”static”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
IPADDR=192.168.1.11
NETMASK=255.255.255.0
--------------------------------------------------------------------------------
# /etc/init.d/network restart
おまけ
うまくいかなかったけどDHCPでIP取得
これで良かったはずなんだけど・・・
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”dhcp”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
--------------------------------------------------------------------------------
# /etc/init.d/network restart
この辺ってディストリビューションによって異なるから面倒。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”static”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
IPADDR=192.168.1.11
NETMASK=255.255.255.0
--------------------------------------------------------------------------------
# /etc/init.d/network restart
おまけ
うまくいかなかったけどDHCPでIP取得
これで良かったはずなんだけど・・・
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------------------------------------------
DEVICE=”eth0”
BOOTPROTO=”dhcp”
HWADDR=”・・・”
ONBOOT=”yes”
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
--------------------------------------------------------------------------------
# /etc/init.d/network restart
CentOSにMercurialをインストールする
CentOS6.3(6.2?)にMercurialをインストールする。
この際、特にWEBサーバーのインストールに躓いたのでメモを残す。
バージョン違いなのか、ネット上の情報通りにやってもうまくいかない。
ただ、認証方法周りはあまり動作確認していなかったかも。結構前の手順メモ。
やりたかったことはhttp(s)プロトコル経由でhgコマンドを動かし、URLにユーザー名を含めた認証にしたかったけど、
この手順で本当にできたかは記憶が定かではない。場合によっては修正や追加が必要かも。
ポート開放
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10443 -j ACCEPT
# useradd -m hg
# passwd hg
パスワード
# gpasswd -a apache hg
# yum install python-devel
# yum install make
# yum install gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial
メモ:hgweb.cgiインストール場所
/usr/share/doc/mercurial-1.4/hgweb.cgi
メモ:apacheインストール場所(デフォルト)
/etc/httpd
# mkdir /var/www/hg
# su hg
# mkdir /var/www/hg/test
# chmod 775 /var/www/hg/test
# cd /var/www/hg/test
# hg init
# vi /var/www/hg/test/.hg/hgrc
[web]
push_ssl = false
allow_push = *
contact = xxx@xxx.xxx
name = xxxx
description = xxxx
# vi /var/www/hg/hgweb.config
[paths]
test = /var/www/hg/test
簡易サーバー
# hg serve -p 8080 --webdir-conf /var/www/hg/hgweb.config &
http://localhost:8080/
apacheサーバー
# mkdir /var/www/cgi-bin/hg
# cp /usr/share/doc/mercurial-1.4/hgweb.cgi /var/www/cgi-bin/hg/.
# chown apache:apache /var/www/cgi-bin/hg/hgweb.cgi
# chmod 755 /var/www/cgi-bin/hg/hgweb.cgi
# vi /var/www/cgi-bin/hg/hgweb.cgi
コメントアウト解除
--------------------------------------------------------------------------------------
import sys
--------------------------------------------------------------------------------------
コメントアウト
--------------------------------------------------------------------------------------
#sys.path.insert(0, "/usr/lib/python2.6/site-packages/")
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
config = "/var/www/hg/hgweb.config"
--------------------------------------------------------------------------------------
コメントアウト解除
--------------------------------------------------------------------------------------
import os
os.environ["HGENCODING"] = "UTF-8"
--------------------------------------------------------------------------------------
そのしたに追記
--------------------------------------------------------------------------------------
os.environ["HGRCPATH"] = "/etc/httpd/conf/hgrc"
--------------------------------------------------------------------------------------
コメントアウト
--------------------------------------------------------------------------------------
#from mercurial.hgweb.hgweb_mod import hgweb
#import mercurial.hgweb.wsgicgi as wsgicgi
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
--------------------------------------------------------------------------------------
結果
--------------------------------------------------------------------------------------
#!/usr/bin/python
import sys
from mercurial import demandimport; demandimport.enable()
config = "/var/www/hg/hgweb.config"
import os
os.environ["HGENCODING"] = "UTF-8"
os.environ["HGRCAPATH"] = "/etc/httpd/conf/hgrc"
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
--------------------------------------------------------------------------------------
# vi /etc/httpd/conf/hgrc
[trusted]
users = hg
groups = hg
# cd /var/www/hg/test
# chmod g+w .hg .hg/* .hg/store/*
# chmod g+s .hg .hg/store .hg/store/data
参考:
http://d.hatena.ne.jp/kokutoto/20090505/p1
http://d.hatena.ne.jp/eldesh/20110125/1295938971
http://d.hatena.ne.jp/takuya_1st/20120120/1327028570
http://blog.oklab.org/?tag=mercurial
http://d.hatena.ne.jp/tututen/20100721/1279738184
自己証明(適当、Redmineインストールの記事の方が適切)
# cd /etc/httpd/conf
# openssl genrsa -out server.key 1024
# openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
パスワード
# openssl x509 -in server.csr -out server.crt -req -signkey server.key
# vi /etc/httpd/conf/httpd.conf
追記・・・だけど、もとからconfは全て読むしmod_sslはssl.confに書かれてるし、作業の必要なし
--------------------------------------------------------------------------------------
LoadModule ssl_module modules/mod_ssl.so
include /etc/httpd/conf.d/ssl.conf
--------------------------------------------------------------------------------------
変更(http用の設定だけどポートは閉じるので意味なし)
--------------------------------------------------------------------------------------
#Listen 10080
ServerName localhost:10080
<Directory "/var/www/html/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------
# yum install mod_ssl
# vi /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
Listen 10443
--------------------------------------------------------------------------------------
新規
--------------------------------------------------------------------------------------
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
--------------------------------------------------------------------------------------
変更
--------------------------------------------------------------------------------------
<VirtualHost _default_:10443>
--------------------------------------------------------------------------------------
変更
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
<Directory "/var/www/cgi-bin/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------
# htdigest -c /etc/httpd/.htdigest 'Secret Zone' hg
--------------------------------------------------------------------------------------
パスワード入力:
--------------------------------------------------------------------------------------
このままだと10443とかにポート変更した影響でSELinuxが邪魔する
# yum install policycoreutils-python
確認
# semanage port -l | grep http
# semanage port -a -t http_port_t -p tcp 10080
# semanage port -a -t http_port_t -p tcp 10443
# /etc/init.d/httpd restart
接続確認
https://localhost:10443/cgi-bin/hg/hgweb.cgi
hg clone
ソース:https://hg@localhost:10443/cgi-bin/hg/hgweb.cgi/test/
ソース:ssh://hg@localhost//var/www/hg/test
この際、特にWEBサーバーのインストールに躓いたのでメモを残す。
バージョン違いなのか、ネット上の情報通りにやってもうまくいかない。
ただ、認証方法周りはあまり動作確認していなかったかも。結構前の手順メモ。
やりたかったことはhttp(s)プロトコル経由でhgコマンドを動かし、URLにユーザー名を含めた認証にしたかったけど、
この手順で本当にできたかは記憶が定かではない。場合によっては修正や追加が必要かも。
ポート開放
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10443 -j ACCEPT
# useradd -m hg
# passwd hg
パスワード
# gpasswd -a apache hg
# yum install python-devel
# yum install make
# yum install gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial
メモ:hgweb.cgiインストール場所
/usr/share/doc/mercurial-1.4/hgweb.cgi
メモ:apacheインストール場所(デフォルト)
/etc/httpd
# mkdir /var/www/hg
# su hg
# mkdir /var/www/hg/test
# chmod 775 /var/www/hg/test
# cd /var/www/hg/test
# hg init
# vi /var/www/hg/test/.hg/hgrc
[web]
push_ssl = false
allow_push = *
contact = xxx@xxx.xxx
name = xxxx
description = xxxx
# vi /var/www/hg/hgweb.config
[paths]
test = /var/www/hg/test
簡易サーバー
# hg serve -p 8080 --webdir-conf /var/www/hg/hgweb.config &
http://localhost:8080/
apacheサーバー
# mkdir /var/www/cgi-bin/hg
# cp /usr/share/doc/mercurial-1.4/hgweb.cgi /var/www/cgi-bin/hg/.
# chown apache:apache /var/www/cgi-bin/hg/hgweb.cgi
# chmod 755 /var/www/cgi-bin/hg/hgweb.cgi
# vi /var/www/cgi-bin/hg/hgweb.cgi
コメントアウト解除
--------------------------------------------------------------------------------------
import sys
--------------------------------------------------------------------------------------
コメントアウト
--------------------------------------------------------------------------------------
#sys.path.insert(0, "/usr/lib/python2.6/site-packages/")
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
config = "/var/www/hg/hgweb.config"
--------------------------------------------------------------------------------------
コメントアウト解除
--------------------------------------------------------------------------------------
import os
os.environ["HGENCODING"] = "UTF-8"
--------------------------------------------------------------------------------------
そのしたに追記
--------------------------------------------------------------------------------------
os.environ["HGRCPATH"] = "/etc/httpd/conf/hgrc"
--------------------------------------------------------------------------------------
コメントアウト
--------------------------------------------------------------------------------------
#from mercurial.hgweb.hgweb_mod import hgweb
#import mercurial.hgweb.wsgicgi as wsgicgi
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
--------------------------------------------------------------------------------------
結果
--------------------------------------------------------------------------------------
#!/usr/bin/python
import sys
from mercurial import demandimport; demandimport.enable()
config = "/var/www/hg/hgweb.config"
import os
os.environ["HGENCODING"] = "UTF-8"
os.environ["HGRCAPATH"] = "/etc/httpd/conf/hgrc"
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
--------------------------------------------------------------------------------------
# vi /etc/httpd/conf/hgrc
[trusted]
users = hg
groups = hg
# cd /var/www/hg/test
# chmod g+w .hg .hg/* .hg/store/*
# chmod g+s .hg .hg/store .hg/store/data
参考:
http://d.hatena.ne.jp/kokutoto/20090505/p1
http://d.hatena.ne.jp/eldesh/20110125/1295938971
http://d.hatena.ne.jp/takuya_1st/20120120/1327028570
http://blog.oklab.org/?tag=mercurial
http://d.hatena.ne.jp/tututen/20100721/1279738184
自己証明(適当、Redmineインストールの記事の方が適切)
# cd /etc/httpd/conf
# openssl genrsa -out server.key 1024
# openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
パスワード
# openssl x509 -in server.csr -out server.crt -req -signkey server.key
# vi /etc/httpd/conf/httpd.conf
追記・・・だけど、もとからconfは全て読むしmod_sslはssl.confに書かれてるし、作業の必要なし
--------------------------------------------------------------------------------------
LoadModule ssl_module modules/mod_ssl.so
include /etc/httpd/conf.d/ssl.conf
--------------------------------------------------------------------------------------
変更(http用の設定だけどポートは閉じるので意味なし)
--------------------------------------------------------------------------------------
#Listen 10080
ServerName localhost:10080
<Directory "/var/www/html/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------
# yum install mod_ssl
# vi /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
Listen 10443
--------------------------------------------------------------------------------------
新規
--------------------------------------------------------------------------------------
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
--------------------------------------------------------------------------------------
変更
--------------------------------------------------------------------------------------
<VirtualHost _default_:10443>
--------------------------------------------------------------------------------------
変更
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key
--------------------------------------------------------------------------------------
追記
--------------------------------------------------------------------------------------
<Directory "/var/www/cgi-bin/">
AuthDigestProvider file
AuthType Digest
AuthName "Secret Zone"
AuthDigestDomain /
AuthUserFile /etc/httpd/.htdigest
Require valid-user
・・・
</Directory>
--------------------------------------------------------------------------------------
# htdigest -c /etc/httpd/.htdigest 'Secret Zone' hg
--------------------------------------------------------------------------------------
パスワード入力:
--------------------------------------------------------------------------------------
このままだと10443とかにポート変更した影響でSELinuxが邪魔する
# yum install policycoreutils-python
確認
# semanage port -l | grep http
# semanage port -a -t http_port_t -p tcp 10080
# semanage port -a -t http_port_t -p tcp 10443
# /etc/init.d/httpd restart
接続確認
https://localhost:10443/cgi-bin/hg/hgweb.cgi
hg clone
ソース:https://hg@localhost:10443/cgi-bin/hg/hgweb.cgi/test/
ソース:ssh://hg@localhost//var/www/hg/test
CentOSにruby1.8を入れる
CentOS6.3(6.2?)にruby1.8を入れる際に躓いたのでメモ
rpm -i の際に他にもオプションがいるっぽい
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz
# tar zxvf ruby-1.8.7-p374.tar.gz
# cd ruby-1.8.7-p374
# ./configure
# make
# checkinstall --fstrans=no
# rpm -ivh --nodeps --nomd5 /root/rpmbuild/RPMS/i386/ruby-1.8.7-p374-1.i386.rpm
※普通にrpm -i とやるとフォルダが不足してるようなエラーが出るので無視
※無視以外の方法もネットにあるけどそれやるとrubyコマンドでセグメンテーション違反とでる
# vim /etc/profile
Make the section with pathmunge look alike like this:
2行追記(あんま意味わかってない)
--------------------------------------------------------------------------------
#Path manupulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/bin # ADDED THIS
else
pathmunge /usr/local/bin after # ADDED THIS
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin
fi
--------------------------------------------------------------------------------
# source /etc/profile
rpm -i の際に他にもオプションがいるっぽい
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz
# tar zxvf ruby-1.8.7-p374.tar.gz
# cd ruby-1.8.7-p374
# ./configure
# make
# checkinstall --fstrans=no
# rpm -ivh --nodeps --nomd5 /root/rpmbuild/RPMS/i386/ruby-1.8.7-p374-1.i386.rpm
※普通にrpm -i とやるとフォルダが不足してるようなエラーが出るので無視
※無視以外の方法もネットにあるけどそれやるとrubyコマンドでセグメンテーション違反とでる
# vim /etc/profile
Make the section with pathmunge look alike like this:
2行追記(あんま意味わかってない)
--------------------------------------------------------------------------------
#Path manupulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/bin # ADDED THIS
else
pathmunge /usr/local/bin after # ADDED THIS
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin
fi
--------------------------------------------------------------------------------
# source /etc/profile
RPMパッケージを作成する方法
Linuxでソースからビルドする必要があるアプリケーション。
パッケージ管理ツールで管理できないので不便です。
そこで試しにrubyをパッケージ化する方法をメモします。
全てのアプリケーションはできないと思いますが、ちゃんとしたアプリケーションなら恐らく対応できるんじゃないかと思います。
(要件をちゃんとしらべてません)
環境はCentOS6.3(6.2?)だったはず。
# yum install -y make gcc wget gettext
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel
checkinstallのインストール
# mkdir -p /root/rpmbuild/SOURCES
# yum -y install git gcc rpm-build
# cd /usr/local/src
# git clone http://checkinstall.izto.org/checkinstall.git/
# cd checkinstall
# make && make install
# checkinstall
デフォルトのまま進んでいく。
RPMかどうか選ぶところではRPMを選ぶ。
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
# ls -l /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
とやって
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo
が出れば成功
参考:
http://www.google.com/url?q=http%3A%2F%2Ftnakamura.hatenablog.com%2Fentry%2F20120226%2Finstall_the_ruby_to_centos&sa=D&sntz=1&usg=AFQjCNH2he-ba_1g2c4_wGB9iphMiYMj6w
おまけ ソースからインストールした場合に単純にファイルを削除する方法
# cd /usr/local/src/ruby-1.9.1-p429
# cat .installed.list | xargs rm
パッケージ管理ツールで管理できないので不便です。
そこで試しにrubyをパッケージ化する方法をメモします。
全てのアプリケーションはできないと思いますが、ちゃんとしたアプリケーションなら恐らく対応できるんじゃないかと思います。
(要件をちゃんとしらべてません)
環境はCentOS6.3(6.2?)だったはず。
# yum install -y make gcc wget gettext
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel
checkinstallのインストール
# mkdir -p /root/rpmbuild/SOURCES
# yum -y install git gcc rpm-build
# cd /usr/local/src
# git clone http://checkinstall.izto.org/checkinstall.git/
# cd checkinstall
# make && make install
# checkinstall
デフォルトのまま進んでいく。
RPMかどうか選ぶところではRPMを選ぶ。
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
# ls -l /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
とやって
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo
が出れば成功
参考:
http://www.google.com/url?q=http%3A%2F%2Ftnakamura.hatenablog.com%2Fentry%2F20120226%2Finstall_the_ruby_to_centos&sa=D&sntz=1&usg=AFQjCNH2he-ba_1g2c4_wGB9iphMiYMj6w
おまけ ソースからインストールした場合に単純にファイルを削除する方法
# cd /usr/local/src/ruby-1.9.1-p429
# cat .installed.list | xargs rm
お名前.comレンタルサーバーにRedmine2.3を入れる
最初、さくらレンタルに入れようとしていたRedmine。
root権限がある環境でやった方が確実で速い、そしてそうじゃないとまともに動かないということに気づいたので
お名前.comレンタルサーバー VPS(KVM)に入れてみました。
注意点はrubyを入れる際にrbenvだと普通はroot権限用になってしまうことくらいでしょうか。
環境による不都合はほぼありませんでした。
Redmine/Mercurial/SSL証明書を入れていきます。
[コントロールパネル操作]
■OSインストール
VPSコントロールパネルに繋ぐ
OS再インストール CentOS6.2を選択
SSH Private Keyと公式ヘルプを用い、SSH接続で接続できるようにする
[SSH]
■OSセットアップ
・yum高速化
# yum -y install yum-fastestmirror
# yum update
・vim入れる
# yum -y install vim
・locate入れる
# yum -y install mlocate
# updatedb
・firewall設定
※詳しくないので参考までに
# vim /etc/sysconfig/iptables
--------------------------------------------------------------------------------------
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#既にconnectionが張られている通信を許可,TCPの接続開始と応答、FTPデータなどを許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#icmp(ping) 許可
-A INPUT -p icmp -j ACCEPT
#ローカルホストの入力許可
-A INPUT -i lo -j ACCEPT
# FRAGMENT DROP ###
-A INPUT -f -j LOG --log-level debug --log-prefix 'FRAGMENT-DROP:'
-A INPUT -f -j DROP
#### PING OF DEATH ###
-N PINGOFDEATH
-A PINGOFDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A PINGOFDEATH -j LOG --log-level debug --log-prefix 'PINGDEATH-DROP:'
-A PINGOFDEATH -j DROP
-A INPUT -p icmp --icmp-type echo-request -j PINGOFDEATH
#### BROAD MULTI DROP ###
-A INPUT -d 255.255.255.255 -j DROP
-A INPUT -d 224.0.0.1 -j DROP
#### 113IDENT ###
-A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
#### SYNFLOOD ###
-N drop_synflood
-A drop_synflood -m limit --limit 10/s --limit-burst 20 -j RETURN
-A drop_synflood -j LOG --log-prefix "SYNFLOOD: " -m limit --limit 1/s --limit-burst 10
-A drop_synflood -j DROP
-A INPUT -p tcp --syn -j drop_synflood
#SSH許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#Web許可
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 3000 -j ACCEPT
#FTP許可
#-A INPUT -p tcp --dport 20 -j ACCEPT
#-A INPUT -p tcp --dport 21 -j ACCEPT
#-A INPUT -p tcp --dport 4000:4029 -j ACCEPT
#MAIL許可
#-A INPUT -p tcp --dport 25 -j ACCEPT
#-A INPUT -p tcp --dport 465 -j ACCEPT
#-A INPUT -p tcp --dport 110 -j ACCEPT
#-A INPUT -p tcp --dport 995 -j ACCEPT
#-A INPUT -p tcp --dport 143 -j ACCEPT
#-A INPUT -p tcp --dport 993 -j ACCEPT
#先に許可したポート以外全て不許可にする
#デフォルトであったけどDROPに変えたいのでコメントアウト
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#LOGGING
-A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'INPUT-DROP:'
-A INPUT -j DROP
-A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'FORWARD-DROP:'
-A FORWARD -j DROP
COMMIT
--------------------------------------------------------------------------------------
# /etc/init.d/iptables restart
・ログ出力設定
# vim /etc/rsyslog.conf
コメントされているkern.*の下あたりにでも追記
--------------------------------------------------------------------------------------
kern.debug /var/log/iptables.log
--------------------------------------------------------------------------------------
※iptables専用ではないけどkern.debugには他のログがこないからこれでいいらしい
・ファイル作成
# touch /var/log/iptables.log
# chmod 600 /var/log/iptables.log
・ローテート設定
# vim /etc/logrotate.d/syslog
{ の上あたりに追記
--------------------------------------------------------------------------------------
/var/log/iptables.log
--------------------------------------------------------------------------------------
参考:
http://www.rapidsite.jp/support/manual/rv_custom/e_4210.html
http://kazmax.zpp.jp/cmd/i/iptables.8.html
http://arisonsvr.org/web/maincontents/serverset/iptables/iptable.html
http://www3.big.or.jp/~sian/linux/tips/iptables.html
http://kensuke.jp/~kensuke/pukiwiki/index.php?debian%2Fns%2Fiptables
http://vok.paburica.com/index.php?iptables%2FSYN%20Flood%E5%AF%BE%E7%AD%96%E3%82%92%E3%81%97%E3%81%9F%E3%81%84
・作業ディレクトリ作る
# mkdir ~/tmp
・必要なパッケージを導入
基本的なもの
# yum install -y make gcc wget gettext-devel
rubyやredmineに必要っぽいもの
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel
gitに必要っぽいもの
# yum install -y expat-devel perl-ExtUtils-MakeMaker.x86_64
・gitインストール
# cd ~/tmp
# wget --no-check-certificate https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
# tar zxvf git-1.8.4.1.tar.gz
# cd git-1.8.4.1
# ./configure
# make && make install
# git version
■rubyインストール
ポイントはrootユーザだけでなくPassengerユーザ(apacheやredmineユーザ)が使うので
システム共有な場所にインストールする必要がある
また、Passengerは祖先に渡って全てのディレクトリに読込と実行権限が必要
よって/usr/local内にインストールする
・rbenv+ruby-buildのインストール
# echo 'export RBENV_ROOT="/usr/local/rbenv"' >> ~/.bashrc
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> ~/.bashrc
# source ~/.bashrc
# git clone https://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
# mkdir ${RBENV_ROOT}/plugins
# git clone https://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
# echo 'eval "$(rbenv init -)"' >> ~/.bashrc
# source ~/.bashrc
# rbenv --version
--------------------------------------------------------------------------------------
rbenv 0.4.0-67-g3300587
--------------------------------------------------------------------------------------
※この設定だと他ユーザがデフォルトでは使えないはずなので留意
・ruby2.0.0のインストール
使えるrubyバージョン確認
# rbenv install -l
rubyをインストール
# rbenv install 2.0.0-p247
パスを通す
# rbenv rehash
インストールしたバージョンを有効にする
# rbenv global 2.0.0-p247
# ruby -v
--------------------------------------------------------------------------------------
ruby 2.0.0p247
--------------------------------------------------------------------------------------
・rubygemsインストール
# rbenv exec gem install rubygems-update
# rbenv rehash
# update_rubygems
参考:
http://docs.rubygems.org/read/chapter/3#page83
・bundlerインストール
# rbenv exec gem install bundler --no-ri --no-rdoc
# rbenv rehash
■mysqlインストール
[SSH]
・サーバーインストール
# yum -y install mysql-server
# chkconfig mysqld on
# vim /etc/my.cnf
追記:
--------------------------------------------------------------------------------------
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
--------------------------------------------------------------------------------------
# service mysqld restart
# mysqladmin -u root password DBパスワード
# /usr/bin/mysql_secure_installation
--------------------------------------------------------------------------------------
Change the root password? : n
Remove anonymous users? : Y
Disallow root login remotely? : Y
Remove test database and access to it? : n
Reload privilege tables now? : Y
--------------------------------------------------------------------------------------
・redmine用DB作成
# mysql -u root -p
--------------------------------------------------------------------------------------
> create database redmine character set utf8;
> create user 'redmine'@'localhost' identified by 'DBパスワード';
> grant all privileges on redmine.* to 'redmine'@'localhost';
> \q
--------------------------------------------------------------------------------------
■redmineインストール
ここもPassengerが全てのディレクトリに権限がある場所に入れる必要がある
今回は/var/www配下におく
# cd ~/tmp
# wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
# tar zxvf redmine-2.3.3.tar.gz
# mv redmine-2.3.3 /var/www/redmine
# cd /var/www/redmine
# mkdir -p tmp tmp/pdf public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets
# cd /var/www/redmine/config
# cp -p database.yml.example database.yml
# vim database.yml
Change it to look like:
--------------------------------------------------------------------------------------
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "DBパスワード"
encoding: utf8
--------------------------------------------------------------------------------------
# cd /var/www/redmine
・Gemfileにpassengerを追加
# vim Gemfile
sourceの下に追記:
--------------------------------------------------------------------------------------
gem "passenger"
--------------------------------------------------------------------------------------
・gemをインストールする(ディレクトリ配下に)
# yum -y install gcc-c++ ImageMagick-devel libxml2-devel libxslt-devel
# bundle install --path vendor/bundle
・rails動作確認
# bundle exec rails -v
--------------------------------------------------------------------------------------
Rails 3.2.13
--------------------------------------------------------------------------------------
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production bundle exec rake redmine:load_default_data
--------------------------------------------------------------------------------------
Select Language: ja
--------------------------------------------------------------------------------------
・動作確認(WEBrick)
# bundle exec rails server -e production
>> http://IPアドレス:3000/
Redmineの初期アカウントはadmin:admin
・設定ファイルを用意
# cd /var/www/rails/redmine/config
# cp -p configuration.yml.example configuration.yml
・実行モードをproduction固定
# vim /var/www/rails/redmine/config/boot.rb
末尾に追記:
--------------------------------------------------------------------------------------
ENV['RAILS_ENV'] ||= 'production'
--------------------------------------------------------------------------------------
・再確認
# cd /var/www/redmine
# bundle exec rails server
>> http://IPアドレス:3000/
参考:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.redmine.org/projects/redmine/wiki/Redmine_on_CentOS_installation_HOWTO
http://www.sdmemo.com/wiki/Redmine%E3%81%AE%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86
■apache+passengerセットアップ
passengerはroot権限では動作しない
実行ユーザはredmine/config.ru(場合によってはconfig/environment.rb)のオーナーとなる
今回はredmineユーザーで動作させる
# adduser redmine
# passwd redmine
ユーザパスワード
# chown -R redmine:redmine /var/www/redmine
・passengerモジュールのインストール
# bundle exec passenger-install-apache2-module
# bundle exec passenger-install-apache2-module --snippet
apacheの設定に使う文字列が表示されるのでコピーする:
--------------------------------------------------------------------------------------
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby
--------------------------------------------------------------------------------------
・passenger設定ファイルを作成
# vim /etc/httpd/conf.d/passenger.conf
以下の内容で新規作成する
基本設定のところはsnippetで得られた文字列で置き換える:
--------------------------------------------------------------------------------------
# Passengerの基本設定
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby
# Passengerが追加するHTTPヘッダを削除するための設定
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加
PassengerMaxPoolSize 6
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 0
PassengerMaxPreloaderIdleTime 0
--------------------------------------------------------------------------------------
・文法チェック
# apachectl configtest
--------------------------------------------------------------------------------------
Syntax OK
--------------------------------------------------------------------------------------
・とりあえずredmine関係なくapacheの動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/
参考:
http://morizyun.github.io/blog/passenger-install-apache-ruby-rails/
メモ:
祖先にわたってすべてのディレクトリにapacheユーザの読み込みと実行権限が必要
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_to_a_virtual_host_8217_s_root
all parent folders. That is, /webapps/mycook and /webapps must also be readable and executable by Apache.
メモ:
passengerは仮想ホストかシンボリックリンクを使うべきで、
仮想ディレクトリだとうまく動かない模様
・redmineをSUB-URIで実行する(シンボリックリンクを用いる)
※但し今回の設定だとpassengerはSUB-URIで動作するがWEBrickはルートディレクトリで動作する
どちらも同じSUB-URIにする方法はわからなかった
# ln -s /var/www/redmine/public /var/www/html/redmine
# vim /etc/httpd/conf/httpd.conf
DocumentRoot(/var/www/html)の下あたりに追記
--------------------------------------------------------------------------------------
#Redmine
RackBaseURI /redmine
<Directory /var/www/redmine/public>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
--------------------------------------------------------------------------------------
# cd /var/www/redmine
# vim config/boot.rb
末尾に追記
--------------------------------------------------------------------------------------
ENV['RAILS_RELATIVE_URL_ROOT'] = '/redmine'
--------------------------------------------------------------------------------------
WEBrickで実行する際はconfig.ruにmapを追記する必要あるが、それだとpassengerが誤動作する
この状態でWEBrickで実行するとSUB-URIではない状態で実行される
動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/redmine
・redmineセットアップ
[redmine]
adminでログイン パスワードadmin
個人設定からパスワードを変更する
管理->情報からすべてにチェックマークがついていることを確認する
[SSH]
■Mercurialインストール
# cd ~/tmp
Mercurial用ユーザを作成(今回は使わないけどMercurialをWEBで動作させる際には必要のはず)
# useradd -m mercurial
# passwd mercurial
ユーザパスワード
・Mercurialをeasy_install経由でインストール
# yum -y install python-devel make gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial
# hg --version
ユーザ情報を設定する
# vim ~/.hgrc
--------------------------------------------------------------------------------------
[ui]
username = admin <redmine@mail.com>
--------------------------------------------------------------------------------------
動作確認
# cd ~/tmp
# mkdir hgtest
# hg init hgtest
Redmine用リポジトリを作る
# cd /var/www
# mkdir hg
# cd hg
# mkdir project01
# hg init project01
・この状態でredmineのプロジェクト設定からリポジトリを連携する
例(リポジトリパス):/home/アカウント名/hg/project01
識別子: 任意
パスのエンコーディング: 空欄
■Mercurialクライアントをインストール
[ローカル]
・TortoiseHgをダウンロードしてインストール
http://mercurial.selenic.com/
・デスクトップ等で右クリック->TortoiseHg->Global Settings
・Commit->Usernameをセット
名前 <メールアドレス>
・Edit File
・[ui]にsshをセット(圧縮オプション等をセット)
--------------------------------------------------------------------------------------
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -agent -ssh -2 -batch -C
--------------------------------------------------------------------------------------
・Save->OK
・TortoiseHgを公開暗号方式に対応させる
・puttygen(ASE対応)をダウンロードする
※ごった煮版等はASE対応してない
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
・実行してLoadからSSH Private Key ファイルを読み込み
・Save privete keyで●●●.ppkとして保存 -> c:\ssh_keys\ に保存したとする
・キー管理ツールのPageant.exeのショートカットを作成する
--------------------------------------------------------------------------------------
"C:\Program Files\TortoiseHg\Pageant.exe" "c:\ssh_keys\●●●.ppk"
--------------------------------------------------------------------------------------
動作確認
・ショートカットを実行する
・デスクトップ等で右クリック->TortoiseHg->Clone
source
--------------------------------------------------------------------------------------
ssh://root@IPアドレス//ssh://var/www/hg/project01
--------------------------------------------------------------------------------------
※必要に応じてユーザアカウントを作る方がよい
■SSL対応(自己証明)
[SSH]
# yum -y install openssl openssl-devel mod_ssl
# cd /etc/pki/tls/certs
・RSA秘密鍵生成
# openssl genrsa -des3 -out private.key 2048
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
--------------------------------------------------------------------------------------
・内容確認
# openssl rsa -in private.key -text -noout
・証明書要求(CSR)生成
# openssl req -new -key private.key -out server.csr
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]: Minato-ku
Organization Name (eg, company) [Default Company Ltd]: TEST Co., Ltd.
Organizational Unit Name (eg, section) []: TEST
Common Name (eg, your name or your server's hostname) []: IPアドレス
以降、省略(入力不要)
--------------------------------------------------------------------------------------
・内容確認
# openssl req -in server.csr -text -noout
・証明書発行
# openssl x509 -in server.csr -out server.crt -req -signkey private.key -days 365
・権限変更
# chmod 400 private.key server.crt server.csr
・RSA秘密鍵をしかるべき場所へ
# mv /etc/pki/tls/certs/private.key /etc/pki/tls/private/private.key
・apacheにセット
# vim /etc/httpd/conf.d/ssl.conf
コメント解除
--------------------------------------------------------------------------------------
DocumentRoot "/var/www/html"
--------------------------------------------------------------------------------------
変更する
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/private.key
--------------------------------------------------------------------------------------
</VirtualHost>の上あたりに追記する
--------------------------------------------------------------------------------------
# SSLでも画像やJavaScriptファイルがキャッシュされるように指定
Header onsuccess append Cache-Control publicExpiresActive On
ExpiresByType text/css "access plus 3 days"
ExpiresByType application/x-javascript "access plus 3 days"
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/png "access plus 3 days"
ExpiresByType image/gif "access plus 3 days"
--------------------------------------------------------------------------------------
# /etc/init.d/httpd restart
>> https://IPアドレス/redmine
・動作が確認できたらhttpを閉じる
# vim /etc/httpd/conf/httpd.conf
コメントアウト
--------------------------------------------------------------------------------------
#Listen 80
--------------------------------------------------------------------------------------
・今だとhttpd再起動毎にパスワード聞かれるので省略する
# vim /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
SSLPassPhraseDialog exec:/etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------
# mkdir /etc/httpd/certs
# vim /etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------
#!/bin/sh
echo "パスワード"
--------------------------------------------------------------------------------------
# chown root:root /etc/httpd/certs/pass_phrase.sh
# chmod 500 /etc/httpd/certs/pass_phrase.sh
・動作確認
# ./pass_phrase.sh
・動作確認
# /etc/init.d/httpd restart
・httpdをサービス化
# chkconfig httpd on
参考:
https://www.verisign.co.jp/ssl/help/csr/capache_new.html
http://d.hatena.ne.jp/mrgoofy33/20110209/1297262978
http://linux.kororo.jp/cont/server/openssl_command.php
http://centossrv.com/apache-ssl.shtml
http://takuya-1st.hatenablog.jp/entry/20110208/1297157015
おまけ
ruby1.8の場合、redmineのdatabase.ymlに記述する adapter: mysql2 は、mysqlになる。
ruby1.8の場合、redmineのGemfileに記述をしないとバージョンエラーになる。
# vim Gemfile
--------------------------------------------------------------------------------------
gem 'nokogiri', '~> 1.5.10' --------------------------------------------------------------------------------------
redmine2.3+ruby1.8の場合に、WEBrick実行時に変な警告が出る。
それを消す方法
# vim /var/www/redmine/lib/redmine/syntax_highlighting.rb
コメントアウト
--------------------------------------------------------------------------------------
#require 'coderay/helpers/file_type' --------------------------------------------------------------------------------------
参考:
http://www.redmine.org/issues/13692
root権限がある環境でやった方が確実で速い、そしてそうじゃないとまともに動かないということに気づいたので
お名前.comレンタルサーバー VPS(KVM)に入れてみました。
注意点はrubyを入れる際にrbenvだと普通はroot権限用になってしまうことくらいでしょうか。
環境による不都合はほぼありませんでした。
Redmine/Mercurial/SSL証明書を入れていきます。
[コントロールパネル操作]
■OSインストール
VPSコントロールパネルに繋ぐ
OS再インストール CentOS6.2を選択
SSH Private Keyと公式ヘルプを用い、SSH接続で接続できるようにする
[SSH]
■OSセットアップ
・yum高速化
# yum -y install yum-fastestmirror
# yum update
・vim入れる
# yum -y install vim
・locate入れる
# yum -y install mlocate
# updatedb
・firewall設定
※詳しくないので参考までに
# vim /etc/sysconfig/iptables
--------------------------------------------------------------------------------------
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#既にconnectionが張られている通信を許可,TCPの接続開始と応答、FTPデータなどを許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#icmp(ping) 許可
-A INPUT -p icmp -j ACCEPT
#ローカルホストの入力許可
-A INPUT -i lo -j ACCEPT
# FRAGMENT DROP ###
-A INPUT -f -j LOG --log-level debug --log-prefix 'FRAGMENT-DROP:'
-A INPUT -f -j DROP
#### PING OF DEATH ###
-N PINGOFDEATH
-A PINGOFDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A PINGOFDEATH -j LOG --log-level debug --log-prefix 'PINGDEATH-DROP:'
-A PINGOFDEATH -j DROP
-A INPUT -p icmp --icmp-type echo-request -j PINGOFDEATH
#### BROAD MULTI DROP ###
-A INPUT -d 255.255.255.255 -j DROP
-A INPUT -d 224.0.0.1 -j DROP
#### 113IDENT ###
-A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
#### SYNFLOOD ###
-N drop_synflood
-A drop_synflood -m limit --limit 10/s --limit-burst 20 -j RETURN
-A drop_synflood -j LOG --log-prefix "SYNFLOOD: " -m limit --limit 1/s --limit-burst 10
-A drop_synflood -j DROP
-A INPUT -p tcp --syn -j drop_synflood
#SSH許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#Web許可
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 3000 -j ACCEPT
#FTP許可
#-A INPUT -p tcp --dport 20 -j ACCEPT
#-A INPUT -p tcp --dport 21 -j ACCEPT
#-A INPUT -p tcp --dport 4000:4029 -j ACCEPT
#MAIL許可
#-A INPUT -p tcp --dport 25 -j ACCEPT
#-A INPUT -p tcp --dport 465 -j ACCEPT
#-A INPUT -p tcp --dport 110 -j ACCEPT
#-A INPUT -p tcp --dport 995 -j ACCEPT
#-A INPUT -p tcp --dport 143 -j ACCEPT
#-A INPUT -p tcp --dport 993 -j ACCEPT
#先に許可したポート以外全て不許可にする
#デフォルトであったけどDROPに変えたいのでコメントアウト
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#LOGGING
-A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'INPUT-DROP:'
-A INPUT -j DROP
-A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix 'FORWARD-DROP:'
-A FORWARD -j DROP
COMMIT
--------------------------------------------------------------------------------------
# /etc/init.d/iptables restart
・ログ出力設定
# vim /etc/rsyslog.conf
コメントされているkern.*の下あたりにでも追記
--------------------------------------------------------------------------------------
kern.debug /var/log/iptables.log
--------------------------------------------------------------------------------------
※iptables専用ではないけどkern.debugには他のログがこないからこれでいいらしい
・ファイル作成
# touch /var/log/iptables.log
# chmod 600 /var/log/iptables.log
・ローテート設定
# vim /etc/logrotate.d/syslog
{ の上あたりに追記
--------------------------------------------------------------------------------------
/var/log/iptables.log
--------------------------------------------------------------------------------------
参考:
http://www.rapidsite.jp/support/manual/rv_custom/e_4210.html
http://kazmax.zpp.jp/cmd/i/iptables.8.html
http://arisonsvr.org/web/maincontents/serverset/iptables/iptable.html
http://www3.big.or.jp/~sian/linux/tips/iptables.html
http://kensuke.jp/~kensuke/pukiwiki/index.php?debian%2Fns%2Fiptables
http://vok.paburica.com/index.php?iptables%2FSYN%20Flood%E5%AF%BE%E7%AD%96%E3%82%92%E3%81%97%E3%81%9F%E3%81%84
・作業ディレクトリ作る
# mkdir ~/tmp
・必要なパッケージを導入
基本的なもの
# yum install -y make gcc wget gettext-devel
rubyやredmineに必要っぽいもの
# yum install -y zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ncurses-devel gdbm-devel readline-devel sqlite-devel
gitに必要っぽいもの
# yum install -y expat-devel perl-ExtUtils-MakeMaker.x86_64
・gitインストール
# cd ~/tmp
# wget --no-check-certificate https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
# tar zxvf git-1.8.4.1.tar.gz
# cd git-1.8.4.1
# ./configure
# make && make install
# git version
■rubyインストール
ポイントはrootユーザだけでなくPassengerユーザ(apacheやredmineユーザ)が使うので
システム共有な場所にインストールする必要がある
また、Passengerは祖先に渡って全てのディレクトリに読込と実行権限が必要
よって/usr/local内にインストールする
・rbenv+ruby-buildのインストール
# echo 'export RBENV_ROOT="/usr/local/rbenv"' >> ~/.bashrc
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> ~/.bashrc
# source ~/.bashrc
# git clone https://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
# mkdir ${RBENV_ROOT}/plugins
# git clone https://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
# echo 'eval "$(rbenv init -)"' >> ~/.bashrc
# source ~/.bashrc
# rbenv --version
--------------------------------------------------------------------------------------
rbenv 0.4.0-67-g3300587
--------------------------------------------------------------------------------------
※この設定だと他ユーザがデフォルトでは使えないはずなので留意
・ruby2.0.0のインストール
使えるrubyバージョン確認
# rbenv install -l
rubyをインストール
# rbenv install 2.0.0-p247
パスを通す
# rbenv rehash
インストールしたバージョンを有効にする
# rbenv global 2.0.0-p247
# ruby -v
--------------------------------------------------------------------------------------
ruby 2.0.0p247
--------------------------------------------------------------------------------------
・rubygemsインストール
# rbenv exec gem install rubygems-update
# rbenv rehash
# update_rubygems
参考:
http://docs.rubygems.org/read/chapter/3#page83
・bundlerインストール
# rbenv exec gem install bundler --no-ri --no-rdoc
# rbenv rehash
■mysqlインストール
[SSH]
・サーバーインストール
# yum -y install mysql-server
# chkconfig mysqld on
# vim /etc/my.cnf
追記:
--------------------------------------------------------------------------------------
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
--------------------------------------------------------------------------------------
# service mysqld restart
# mysqladmin -u root password DBパスワード
# /usr/bin/mysql_secure_installation
--------------------------------------------------------------------------------------
Change the root password? : n
Remove anonymous users? : Y
Disallow root login remotely? : Y
Remove test database and access to it? : n
Reload privilege tables now? : Y
--------------------------------------------------------------------------------------
・redmine用DB作成
# mysql -u root -p
--------------------------------------------------------------------------------------
> create database redmine character set utf8;
> create user 'redmine'@'localhost' identified by 'DBパスワード';
> grant all privileges on redmine.* to 'redmine'@'localhost';
> \q
--------------------------------------------------------------------------------------
■redmineインストール
ここもPassengerが全てのディレクトリに権限がある場所に入れる必要がある
今回は/var/www配下におく
# cd ~/tmp
# wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
# tar zxvf redmine-2.3.3.tar.gz
# mv redmine-2.3.3 /var/www/redmine
# cd /var/www/redmine
# mkdir -p tmp tmp/pdf public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets
# cd /var/www/redmine/config
# cp -p database.yml.example database.yml
# vim database.yml
Change it to look like:
--------------------------------------------------------------------------------------
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "DBパスワード"
encoding: utf8
--------------------------------------------------------------------------------------
# cd /var/www/redmine
・Gemfileにpassengerを追加
# vim Gemfile
sourceの下に追記:
--------------------------------------------------------------------------------------
gem "passenger"
--------------------------------------------------------------------------------------
・gemをインストールする(ディレクトリ配下に)
# yum -y install gcc-c++ ImageMagick-devel libxml2-devel libxslt-devel
# bundle install --path vendor/bundle
・rails動作確認
# bundle exec rails -v
--------------------------------------------------------------------------------------
Rails 3.2.13
--------------------------------------------------------------------------------------
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production bundle exec rake redmine:load_default_data
--------------------------------------------------------------------------------------
Select Language: ja
--------------------------------------------------------------------------------------
・動作確認(WEBrick)
# bundle exec rails server -e production
>> http://IPアドレス:3000/
Redmineの初期アカウントはadmin:admin
・設定ファイルを用意
# cd /var/www/rails/redmine/config
# cp -p configuration.yml.example configuration.yml
・実行モードをproduction固定
# vim /var/www/rails/redmine/config/boot.rb
末尾に追記:
--------------------------------------------------------------------------------------
ENV['RAILS_ENV'] ||= 'production'
--------------------------------------------------------------------------------------
・再確認
# cd /var/www/redmine
# bundle exec rails server
>> http://IPアドレス:3000/
参考:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.redmine.org/projects/redmine/wiki/Redmine_on_CentOS_installation_HOWTO
http://www.sdmemo.com/wiki/Redmine%E3%81%AE%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86
■apache+passengerセットアップ
passengerはroot権限では動作しない
実行ユーザはredmine/config.ru(場合によってはconfig/environment.rb)のオーナーとなる
今回はredmineユーザーで動作させる
# adduser redmine
# passwd redmine
ユーザパスワード
# chown -R redmine:redmine /var/www/redmine
・passengerモジュールのインストール
# bundle exec passenger-install-apache2-module
# bundle exec passenger-install-apache2-module --snippet
apacheの設定に使う文字列が表示されるのでコピーする:
--------------------------------------------------------------------------------------
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby
--------------------------------------------------------------------------------------
・passenger設定ファイルを作成
# vim /etc/httpd/conf.d/passenger.conf
以下の内容で新規作成する
基本設定のところはsnippetで得られた文字列で置き換える:
--------------------------------------------------------------------------------------
# Passengerの基本設定
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
PassengerRoot /var/www/redmine/vendor/bundle/ruby/2.0.0/gems/passenger-4.0.20
PassengerDefaultRuby /usr/local/rbenv/versions/2.0.0-p247/bin/ruby
# Passengerが追加するHTTPヘッダを削除するための設定
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加
PassengerMaxPoolSize 6
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 0
PassengerMaxPreloaderIdleTime 0
--------------------------------------------------------------------------------------
・文法チェック
# apachectl configtest
--------------------------------------------------------------------------------------
Syntax OK
--------------------------------------------------------------------------------------
・とりあえずredmine関係なくapacheの動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/
参考:
http://morizyun.github.io/blog/passenger-install-apache-ruby-rails/
メモ:
祖先にわたってすべてのディレクトリにapacheユーザの読み込みと実行権限が必要
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_to_a_virtual_host_8217_s_root
all parent folders. That is, /webapps/mycook and /webapps must also be readable and executable by Apache.
メモ:
passengerは仮想ホストかシンボリックリンクを使うべきで、
仮想ディレクトリだとうまく動かない模様
・redmineをSUB-URIで実行する(シンボリックリンクを用いる)
※但し今回の設定だとpassengerはSUB-URIで動作するがWEBrickはルートディレクトリで動作する
どちらも同じSUB-URIにする方法はわからなかった
# ln -s /var/www/redmine/public /var/www/html/redmine
# vim /etc/httpd/conf/httpd.conf
DocumentRoot(/var/www/html)の下あたりに追記
--------------------------------------------------------------------------------------
#Redmine
RackBaseURI /redmine
<Directory /var/www/redmine/public>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
--------------------------------------------------------------------------------------
# cd /var/www/redmine
# vim config/boot.rb
末尾に追記
--------------------------------------------------------------------------------------
ENV['RAILS_RELATIVE_URL_ROOT'] = '/redmine'
--------------------------------------------------------------------------------------
WEBrickで実行する際はconfig.ruにmapを追記する必要あるが、それだとpassengerが誤動作する
この状態でWEBrickで実行するとSUB-URIではない状態で実行される
動作確認
# /etc/init.d/httpd restart
>> http://IPアドレス/redmine
・redmineセットアップ
[redmine]
adminでログイン パスワードadmin
個人設定からパスワードを変更する
管理->情報からすべてにチェックマークがついていることを確認する
[SSH]
■Mercurialインストール
# cd ~/tmp
Mercurial用ユーザを作成(今回は使わないけどMercurialをWEBで動作させる際には必要のはず)
# useradd -m mercurial
# passwd mercurial
ユーザパスワード
・Mercurialをeasy_install経由でインストール
# yum -y install python-devel make gcc
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install -U mercurial
# hg --version
ユーザ情報を設定する
# vim ~/.hgrc
--------------------------------------------------------------------------------------
[ui]
username = admin <redmine@mail.com>
--------------------------------------------------------------------------------------
動作確認
# cd ~/tmp
# mkdir hgtest
# hg init hgtest
Redmine用リポジトリを作る
# cd /var/www
# mkdir hg
# cd hg
# mkdir project01
# hg init project01
・この状態でredmineのプロジェクト設定からリポジトリを連携する
例(リポジトリパス):/home/アカウント名/hg/project01
識別子: 任意
パスのエンコーディング: 空欄
■Mercurialクライアントをインストール
[ローカル]
・TortoiseHgをダウンロードしてインストール
http://mercurial.selenic.com/
・デスクトップ等で右クリック->TortoiseHg->Global Settings
・Commit->Usernameをセット
名前 <メールアドレス>
・Edit File
・[ui]にsshをセット(圧縮オプション等をセット)
--------------------------------------------------------------------------------------
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -agent -ssh -2 -batch -C
--------------------------------------------------------------------------------------
・Save->OK
・TortoiseHgを公開暗号方式に対応させる
・puttygen(ASE対応)をダウンロードする
※ごった煮版等はASE対応してない
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
・実行してLoadからSSH Private Key ファイルを読み込み
・Save privete keyで●●●.ppkとして保存 -> c:\ssh_keys\ に保存したとする
・キー管理ツールのPageant.exeのショートカットを作成する
--------------------------------------------------------------------------------------
"C:\Program Files\TortoiseHg\Pageant.exe" "c:\ssh_keys\●●●.ppk"
--------------------------------------------------------------------------------------
動作確認
・ショートカットを実行する
・デスクトップ等で右クリック->TortoiseHg->Clone
source
--------------------------------------------------------------------------------------
ssh://root@IPアドレス//ssh://var/www/hg/project01
--------------------------------------------------------------------------------------
※必要に応じてユーザアカウントを作る方がよい
■SSL対応(自己証明)
[SSH]
# yum -y install openssl openssl-devel mod_ssl
# cd /etc/pki/tls/certs
・RSA秘密鍵生成
# openssl genrsa -des3 -out private.key 2048
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
--------------------------------------------------------------------------------------
・内容確認
# openssl rsa -in private.key -text -noout
・証明書要求(CSR)生成
# openssl req -new -key private.key -out server.csr
--------------------------------------------------------------------------------------
Enter pass phrase for private.key: パスワード
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]: Minato-ku
Organization Name (eg, company) [Default Company Ltd]: TEST Co., Ltd.
Organizational Unit Name (eg, section) []: TEST
Common Name (eg, your name or your server's hostname) []: IPアドレス
以降、省略(入力不要)
--------------------------------------------------------------------------------------
・内容確認
# openssl req -in server.csr -text -noout
・証明書発行
# openssl x509 -in server.csr -out server.crt -req -signkey private.key -days 365
・権限変更
# chmod 400 private.key server.crt server.csr
・RSA秘密鍵をしかるべき場所へ
# mv /etc/pki/tls/certs/private.key /etc/pki/tls/private/private.key
・apacheにセット
# vim /etc/httpd/conf.d/ssl.conf
コメント解除
--------------------------------------------------------------------------------------
DocumentRoot "/var/www/html"
--------------------------------------------------------------------------------------
変更する
--------------------------------------------------------------------------------------
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/private.key
--------------------------------------------------------------------------------------
</VirtualHost>の上あたりに追記する
--------------------------------------------------------------------------------------
# SSLでも画像やJavaScriptファイルがキャッシュされるように指定
Header onsuccess append Cache-Control publicExpiresActive On
ExpiresByType text/css "access plus 3 days"
ExpiresByType application/x-javascript "access plus 3 days"
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/png "access plus 3 days"
ExpiresByType image/gif "access plus 3 days"
--------------------------------------------------------------------------------------
# /etc/init.d/httpd restart
>> https://IPアドレス/redmine
・動作が確認できたらhttpを閉じる
# vim /etc/httpd/conf/httpd.conf
コメントアウト
--------------------------------------------------------------------------------------
#Listen 80
--------------------------------------------------------------------------------------
・今だとhttpd再起動毎にパスワード聞かれるので省略する
# vim /etc/httpd/conf.d/ssl.conf
変更
--------------------------------------------------------------------------------------
SSLPassPhraseDialog exec:/etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------
# mkdir /etc/httpd/certs
# vim /etc/httpd/certs/pass_phrase.sh
--------------------------------------------------------------------------------------
#!/bin/sh
echo "パスワード"
--------------------------------------------------------------------------------------
# chown root:root /etc/httpd/certs/pass_phrase.sh
# chmod 500 /etc/httpd/certs/pass_phrase.sh
・動作確認
# ./pass_phrase.sh
・動作確認
# /etc/init.d/httpd restart
・httpdをサービス化
# chkconfig httpd on
参考:
https://www.verisign.co.jp/ssl/help/csr/capache_new.html
http://d.hatena.ne.jp/mrgoofy33/20110209/1297262978
http://linux.kororo.jp/cont/server/openssl_command.php
http://centossrv.com/apache-ssl.shtml
http://takuya-1st.hatenablog.jp/entry/20110208/1297157015
おまけ
ruby1.8の場合、redmineのdatabase.ymlに記述する adapter: mysql2 は、mysqlになる。
ruby1.8の場合、redmineのGemfileに記述をしないとバージョンエラーになる。
# vim Gemfile
--------------------------------------------------------------------------------------
gem 'nokogiri', '~> 1.5.10' --------------------------------------------------------------------------------------
redmine2.3+ruby1.8の場合に、WEBrick実行時に変な警告が出る。
それを消す方法
# vim /var/www/redmine/lib/redmine/syntax_highlighting.rb
コメントアウト
--------------------------------------------------------------------------------------
#require 'coderay/helpers/file_type' --------------------------------------------------------------------------------------
参考:
http://www.redmine.org/issues/13692
さくらレンタルサーバーにRedmine2.3を入れる
さくらレンタルサーバーのスタンダードプラン(FreeBSD)にRedmine現在最新の2.3.3+ruby2.0.0を入れてみたので手順を公開します。
また、Mercurialもインストールしました。
ネットで調べるとこのRedmine2.3+ruby2.0.0構成で入れている記事は無く、古いRedmineだったり古いrubyだったり。
ただ、結論としては、入るけど遅くて使いものにならない、でした。
1画面遷移10秒とかになります。
原因はWEBサーバーが自由に使えないことにあり、
さくらレンタルサーバーではデフォルトでapacheが用意されていますが、
そこを経由するとRailsがアプリケーションとして動作できません。
で、汎用的なCGIモードというので動作させると遅い、という結果になります。
また、Railsをアプリケーションとして動作させる独自サーバープロセスを立ち上げることもできるのですが、
そうすると数分でシステムからKillされてしまいます。
どうもさくらレンタルでは常駐型のプロセスを許してなかったり、負荷や常駐時間の閾値を超えるとKillされたりがあるようです。
よって、Redmineを入れたければさくらレンタルで頑張るよりは、最初からさくらVPS他のサービスを契約したほうが良いです。
ポイント
・root権限ないのでパッケージインストール等は全てHOME上に行う
・WEBサーバーはサービス側で用意されているapacheを用いる
apache側に設定が必要なアプリは使えない
・RedmineはCGIモード(?)で動作させる
・いくつかのパッケージのビルドにはgmakeを使う
では手順です。
※お古の環境のためもしかしたら他にもパッケージインストールが必要かもしれません
※思考錯誤したままなのでおかしな手順があるかもしれません
■シェルをbashに変更
FreeBSDはcshというシェルらしいけど、不慣れなのと世の情報は大抵bashのためbashに変更する。
$ cat /etc/shells
$ chsh -s /usr/local/bin/bash
$ cd
$ vi .bash_profile
--------------------------------------------------------------------------------
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
--------------------------------------------------------------------------------
$ vi .bashrc
--------------------------------------------------------------------------------
PATH=$HOME/local/bin:$PATH
export LANG=ja_JP.UTF-8
--------------------------------------------------------------------------------
この状態でいったんログオフ再ログイン
$ exit
参考:
http://blog.smileeeen.com/2010/06/sakura/bash/
■vimインストール
エディタとして今回はvimを入れる
$ cd ~/tmp
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
$ tar jxvf vim-7.4.tar.bz2
$ cd vim74
$ mkdir patches
$ cd ./patches
$ curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.[001-052]'
$ cd ..
$ cat patches/7.4.* | patch -p0
$ ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big --prefix=$HOME/local
$ make && make install
キー操作がなんかおかしいのに対応
$ cat << EOF >> .vimrc
--------------------------------------------------------------------------------
set nocompatible
EOF
--------------------------------------------------------------------------------
■gitインストール
$ cd ~/tmp
$ wget --no-check-certificate https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
$ tar zxvf git-1.8.4.1.tar.gz
$ cd git-1.8.4.1.tar.gz
$ ./configure --prefix=$HOME --enable-pthreads=-pthread --with-curl=/usr/local
$ gmake && gmake install
$ git version
※makeじゃだめらしい
※もしgitがコマンドエラーになった場合はログインしなおせばいける
参考:
http://www.machu.jp/diary/20130622.html#p01
■rbenv+ruby-buildインストール
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ rbenv --version
--------------------------------------------------------------------------------
rbenv 0.4.0-67-g3300587
--------------------------------------------------------------------------------
■ruby2インストール
$ echo 'export TMPDIR="$HOME/tmp"' >> ~/.bashrc
※/var/tmp が noexec に設定されているための処置
$ source ~/.bashrc
一時的にmakeをgmakeとする
$ export MAKE="gmake"
使えるrubyバージョン確認
$ rbenv install -l
rubyをインストール
$ CONFIGURE_OPTS="--with-openssl-dir=/usr/local --with-readline-dir=/usr/local --with-iconv-dir=/usr/local" rbenv install 2.0.0-p247
パスを通す
$ rbenv rehash
インストールしたバージョンを有効にする
$ rbenv global 2.0.0-p247
$ ruby -v
--------------------------------------------------------------------------------
ruby 2.0.0p247
--------------------------------------------------------------------------------
MAKEを戻すためにログオフ再ログイン
$ exit
rubygemsをアップデート
$ rbenv exec gem install rubygems-update
$ rbenv rehash
$ update_rubygems
bundlerインストール
$ rbenv exec gem install bundler --no-ri --no-rdoc
$ rbenv rehash
■mysqlセットアップ
[コントロールパネルで操作]
--------------------------------------------------------------------------------
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
--------------------------------------------------------------------------------
相当の設定をする
※おそらくデフォルト値なので何もしない
--------------------------------------------------------------------------------
> create database redmine character set utf8;
--------------------------------------------------------------------------------
相当の設定をする
実際は アカウント名_DB名 になる
ユーザーや権限設定は不要(アカウント名固定)
■redmineのインストール
$ cd
$ mkdir rails
$ cd rails
$ wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
$ tar zxvf redmine-2.3.3.tar.gz
$ mv redmine-2.3.3 redmine
$ cd redmine
$ mkdir -p tmp tmp/pdf public/plugin_assets
$ chmod -R 757 files log tmp public/plugin_assets
$ cd ~/rails/redmine/config
$ cp database.yml.example database.yml
$ vim database.yml
Change it to look like:
--------------------------------------------------------------------------------
production:
adapter: mysql2
database: DBユーザー名_redmine(さくらレンタルだとコントロールパネルから調べる)
host: DBサーバー名(さくらレンタルだとコントロールパネルから調べる)
username: DBユーザー名(さくらレンタルだとコントロールパネルから調べる)
password: "DBパスワード"(さくらレンタルだとコントロールパネルからセットする)
encoding: utf8
--------------------------------------------------------------------------------
$ cd ~/rails/redmine
gemをディレクトリ配下にインストールする
$ bundle install --path vendor/bundle
※Gemfileは最初からある
※make=gmakeを残しているとここでffiがエラーとなるで注意
動作確認
$ bundle exec rails -v
$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data
--------------------------------------------------------------------------------
Select Language: ja
--------------------------------------------------------------------------------
動作確認(WEBrick)
$ bundle exec rails server -e production
http://ドメイン:3000/
設定ファイルを用意
$ cd ~/rails/redmine/config
$ cp -p configuration.yml.example configuration.yml
htaccessファイルを用意(WEBrickでは使われない)
$ cd ~/rails/redmine/public
$ cp -p htaccess.fcgi.example .htaccess
--------------------------------------------------------------------------------
<IfModule mod_fastcgi.c>関連 コメントアウト
<IfModule mod_fcgid.c>関連 コメントアウト
Options +FollowSymLinks +ExecCGI コメントアウト
<IfModule mod_fastcgi.c>関連 コメントアウト
<IfModule mod_fcgid.c>関連 コメントアウト
--------------------------------------------------------------------------------
実行モードをproduction固定
$ vim ~/rails/redmine/config/boot.rb
末尾に追記
--------------------------------------------------------------------------------
ENV['RAILS_ENV'] ||= 'production'
--------------------------------------------------------------------------------
再確認
$ bundle exec rails server
http://ドメイン:3000/
参考:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.machu.jp/diary/20130622.html#p01
http://t100life.blog121.fc2.com/blog-entry-148.html
http://manablog.eek.jp/linux/install_redmine_to_sakura/
http://tmpz84.blogspot.jp/2011/07/rails-3.html
■redmineをさくらレンタルのapacheで動作させる
要点
・さくらレンタルでは常駐型プロセスを認めておらずKillされる可能性が高い
そこで共有サーバーのapache上でCGIモードで動作させる
その場合、config.ruが実行されないため、それに相当するdispatch.cgiというのを作ってやる
さくらではデフォルトでONになってるらしく、指定するとエラーとなるのでしない
・DocumentRoot=/redmine/publicは権限不足で無理そうなのでSUB-URI(http:/ドメイン/redmine)で動作させる
publicディレクトリを~/www/redmineとしてシンボリックリンクを張る
この際、SUB-URIは本来はapache設定ファイルで指定するができないため無理繰り対応させる
・apacheユーザは環境変数が異なるため指定してやる必要があるらしい
$ cd ~/rails/redmine
$ ln -s $HOME/rails/redmine/public $HOME/www/redmine
環境変数等をセット
$ vim config/boot.rb
末尾に追記
--------------------------------------------------------------------------------
#ruby lib 関連
$LOAD_PATH.push('/home/アカウント名/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0')
$LOAD_PATH.push('/home/アカウント名/.rbenv/versions/2.0.0-p247/lib/ruby')
#PATHにさくらアカウントのbinを追加
ENV['PATH'] += ':/home/アカウント名/bin'
ENV['PATH'] += ':/home/アカウント名/local/bin'
#Mercurial用にPython変数指定
ENV['PYTHONPATH'] ||= '/home/アカウント名/lib/python'
#GEM_HOME指定
ENV['GEM_HOME'] ||= '/home/アカウント名/rails/redmine/vendor/bundle/ruby/2.0.0'
#RAILSをSUB-URIに対応
ENV['RAILS_RELATIVE_URL_ROOT'] = '/redmine'
--------------------------------------------------------------------------------
WEBrick用にSUB-URIをセット
$ vim config.ru
runをmapで囲む
--------------------------------------------------------------------------------
map ActionController::Base.config.relative_url_root || "/" do
run RedmineApp::Application
end
--------------------------------------------------------------------------------
確認(画面遷移も確認すること)
$ bundle exec rails server
http://ドメイン名:3000/redmine
htaccessファイルにconfig.ru相当のcgiを呼び出す処理を追記
$ cp -p public/htaccess.fcgi.example public/.htaccess
$ vim public/.htaccess
最初の方に追記
--------------------------------------------------------------------------------
AddHandler cgi-script .cgi
--------------------------------------------------------------------------------
ほかのRewriteRuleが記載されてるあたりに追記
--------------------------------------------------------------------------------
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
--------------------------------------------------------------------------------
fastcgi用dispatch.fcgiを参考にconfig.ru相当のCGIを作る
$ cp -p public/dispatch.fcgi.example public/dispatch.cgi
rubyのパスを変更
--------------------------------------------------------------------------------
#!/home/アカウント名/.rbenv/versions/2.0.0-p247/bin/ruby
--------------------------------------------------------------------------------
call(env)の@app.call(env)直前に以下を追記
SUB-URI(/redmine)を使うとき、本来ならApach設定ファイルのVirtualHostディレクティブの中に
RackBaseURI指定をするらしいがさくらではそれができない
このままだとアプリ内で生成されるURIにSUB-URIがつかないのでSCRIPT_NAMEに入れることで対応
--------------------------------------------------------------------------------
#PATH_INFOからSUB-URIを除去
env['PATH_INFO'] = env['PATH_INFO'].gsub(/\A#{ENV['RAILS_RELATIVE_URL_ROOT']}(.*)\Z/, '\1')
env['SCRIPT_NAME'] = ENV['RAILS_RELATIVE_URL_ROOT']
--------------------------------------------------------------------------------
※試行錯誤してたらたまたまうまくいった方法で、もしかしたら他に不具合出るかも
apacheで確認(画面遷移も確認すること)
http://ドメイン名/redmine
メモ:
rails2.2以前と2.3以降とでRack対応かどうかが異なり、設定が変わる
ネット上にある情報は2.2以前のものが多い
参考:
http://quickhack.net/nom/blog/2012-09-19-rails-with-relative-url-root.html
http://manablog.eek.jp/linux/install_redmine_to_sakura/
http://nyon2.net/archives/ruby-on-rails/
http://zaya3.blog.fc2.com/blog-entry-50.html
http://ascarpediemstyle.com/?p=409
http://takuya-1st.hatenablog.jp/entry/20120108/1326043011
http://t100life.blog121.fc2.com/blog-entry-148.html
http://d.hatena.ne.jp/cimadai/20080923/RubyonRails_on_sakura
http://manablog.eek.jp/linux/install_redmine_to_sakura/
■Mercurialインストール
インストール先を$HOME/localにするとSSH経由コマンドで見つからないぽい
HOME直下に入れること
$ cd ~/tmp
$ wget http://www.selenic.com/mercurial/release/mercurial-2.7.2.tar.gz
$ tar zxvf mercurial-2.7.2.tar.gz
$ cd mercurial-2.7.2
$ python setup.py install --home=$HOME
$ echo 'export PYTHONPATH="$HOME/lib/python"' >> ~/.bashrc
$ source ~/.bashrc
$ hg --version
ユーザー情報登録
$ vim ~/.hgrc
--------------------------------------------------------------------------------
[ui]
username = admin <redmine@mail.com>
--------------------------------------------------------------------------------
試す
$ cd ~/tmp
$ mkdir hgtest
$ hg init hgtest
redmine用にリポジトリ作る
$ cd
$ mkdir hg
$ cd hg
$ mkdir project01
$ hg init project01
この状態でredmineのプロジェクト設定からリポジトリを連携する
例(リポジトリパス):/home/アカウント名/hg/project01
■Mercurialクライアントインストール
HTTP経由にもできるけど今回はSSH経由で
[ローカル操作]
・TortoiseHgをダウンロードしてインストール
http://mercurial.selenic.com/
・デスクトップ等で右クリック->TortoiseHg->Global Settings
・Commit->Usernameをセット
名前 <メールアドレス>
・Edit File
・[ui]にsshをセット(圧縮オプション等をセット)
--------------------------------------------------------------------------------
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -agent -ssh -2 -batch -C
--------------------------------------------------------------------------------
・Save->OK
・この状態でクローンを試す
・デスクトップ等で右クリック->TortoiseHg->Clone
source
--------------------------------------------------------------------------------
ssh://アカウント名@アカウント名.sakura.ne.jp//home/アカウント名/hg/project01
--------------------------------------------------------------------------------
これでローカルからサーバーに接続可能になる
但しこの状態だと何かする度にパスワードを尋ねられて使い辛いので
以降の操作でSSH認証を公開鍵方式にする
■SSHを公開暗号鍵方式にする
$ ssh-keygen -t dsa
--------------------------------------------------------------------------------
Enter file in which to save the key (/home/アカウント名/.ssh/id_dsa): ※そのままEnter
Enter passphrase (empty for no passphrase): ※パスワード入力
--------------------------------------------------------------------------------
$ cd ~/.ssh
$ mv id_dsa.pub authorized_keys
$ chmod 600 authorized_keys
この手順で元の認証方式と公開鍵方式両方でログインできるようになる
■TortoiseHgを公開暗号方式に対応させる
公開鍵をローカルにもってきてTortoiseHg付属のPageantに登録する
そうすることでクローン等の際に鍵を使ってログインするようになる
但し、毎回改めて鍵を指定してやる必要がある
いくつか方法があるが今回は、ショートカットの引数で渡すようにする
公開鍵は形式変換する必要があり、puttygenで変換する
[SSH]
$ cd ~/.ssh
$ more id_dsa
内容をクリップボードにコピー
[ローカル操作]
・クリップボードの中身をテキストファイルに張り付けて保存
・puttygen(ASE対応版)をダウンロードする
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
・実行してLoadから先ほどのテキストファイルを読み込み
・Save privete keyで"○○○.ppk"として保存 -> c:\ssh_keys\に保存
・キー管理ツールのPageant.exeのショートカットを作成する
--------------------------------------------------------------------------------
"C:\Program Files\TortoiseHg\Pageant.exe" "c:\ssh_keys\○○○.ppk"
--------------------------------------------------------------------------------
※今後鍵が増えても都度ショートカット実行すれば、Pageant実行中でもキーが有効になる
クローンを試す
・Pageantショートカットを実行しパスワードを入力する
・その状態で先ほどと同じようにクローンする
参考:
http://d.hatena.ne.jp/NAT_programming/20080504/1209901660
http://0xc000013a.blog96.fc2.com/blog-entry-65.html
http://sh1.2-d.jp/b/2007-10-18-00-05.html
http://www.dodgson.org/omo/t/?date=20070519
http://www.emptypage.jp/notes/pymods-on-sakura.html#ID000301
http://umezo.hatenablog.jp/entry/20080320/1206015911
■SSL対応
[コントロールパネル操作] ・さくらレンタルのドメイン設定から共有SSLをONにする
https://ドメイン名/redmine
以下、没ネタのメモ。
■本来redmine(rails3.2)でSSL接続させるらしい設定
なんかうまくいかなかった
$ vim ~/rails/redmine/config/application.rb
次の場所にconfig.force_sslをセットする
--------------------------------------------------------------------------------
module RedmineApp
class Application < Rails::Application
config.force_ssl = true
・
・
・
--------------------------------------------------------------------------------
■fastcgiインストール
CGIモードながら、キャッシュを駆使して速くするらしい方法
着手し始めたものの、どうもapacheの設定や再起動が必要っぽい気がしたので途中で断念。
一応、これでいいかな?と思える手順を残す。
$ cd ~/tmp
$ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
$ tar xzvf fcgi-2.4.0.tar.gz
$ cd fcgi-2.4.0
$ ./configure --prefix=$HOME/local CFLAGS="-g -O2 -Wall -fPIC" CXXFLAGS="-g -O2 -Wall -fPIC"
$ make && make install
$ cgi-fcgi
※configureにいろいろオプションつけないとgem installでこける
$ cd ~/rails/redmine
$ bundle exec gem install fcgi -- --with-fcgi-include=$HOME/local/include --with-fcgi-lib=$HOME/local/lib
※bundle install/updateにオプション付ける機能がないので先に入れる
$ vim Gemfile
適当な場所、sourceの下あたりに追記
--------------------------------------------------------------------------------
gem "fcgi"
--------------------------------------------------------------------------------
$ bundle update
$ vim public/.htaccess
コメントアウト
--------------------------------------------------------------------------------
#Options +FollowSymLinks +ExecCGI
--------------------------------------------------------------------------------
$ cp -p public/dispatch.fcgi.example public/dispatch.fcgi
中身は元の手順と基本同じとする
以下、元の手順との差分
$ vim public dispatch.fcgi
requireの下に追記
--------------------------------------------------------------------------------
require 'rubygems'
require 'fcgi'
--------------------------------------------------------------------------------
また、Mercurialもインストールしました。
ネットで調べるとこのRedmine2.3+ruby2.0.0構成で入れている記事は無く、古いRedmineだったり古いrubyだったり。
ただ、結論としては、入るけど遅くて使いものにならない、でした。
1画面遷移10秒とかになります。
原因はWEBサーバーが自由に使えないことにあり、
さくらレンタルサーバーではデフォルトでapacheが用意されていますが、
そこを経由するとRailsがアプリケーションとして動作できません。
で、汎用的なCGIモードというので動作させると遅い、という結果になります。
また、Railsをアプリケーションとして動作させる独自サーバープロセスを立ち上げることもできるのですが、
そうすると数分でシステムからKillされてしまいます。
どうもさくらレンタルでは常駐型のプロセスを許してなかったり、負荷や常駐時間の閾値を超えるとKillされたりがあるようです。
よって、Redmineを入れたければさくらレンタルで頑張るよりは、最初からさくらVPS他のサービスを契約したほうが良いです。
ポイント
・root権限ないのでパッケージインストール等は全てHOME上に行う
・WEBサーバーはサービス側で用意されているapacheを用いる
apache側に設定が必要なアプリは使えない
・RedmineはCGIモード(?)で動作させる
・いくつかのパッケージのビルドにはgmakeを使う
では手順です。
※お古の環境のためもしかしたら他にもパッケージインストールが必要かもしれません
※思考錯誤したままなのでおかしな手順があるかもしれません
■シェルをbashに変更
FreeBSDはcshというシェルらしいけど、不慣れなのと世の情報は大抵bashのためbashに変更する。
$ cat /etc/shells
$ chsh -s /usr/local/bin/bash
$ cd
$ vi .bash_profile
--------------------------------------------------------------------------------
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
--------------------------------------------------------------------------------
$ vi .bashrc
--------------------------------------------------------------------------------
PATH=$HOME/local/bin:$PATH
export LANG=ja_JP.UTF-8
--------------------------------------------------------------------------------
この状態でいったんログオフ再ログイン
$ exit
参考:
http://blog.smileeeen.com/2010/06/sakura/bash/
■vimインストール
エディタとして今回はvimを入れる
$ cd ~/tmp
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
$ tar jxvf vim-7.4.tar.bz2
$ cd vim74
$ mkdir patches
$ cd ./patches
$ curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.[001-052]'
$ cd ..
$ cat patches/7.4.* | patch -p0
$ ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big --prefix=$HOME/local
$ make && make install
キー操作がなんかおかしいのに対応
$ cat << EOF >> .vimrc
--------------------------------------------------------------------------------
set nocompatible
EOF
--------------------------------------------------------------------------------
■gitインストール
$ cd ~/tmp
$ wget --no-check-certificate https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
$ tar zxvf git-1.8.4.1.tar.gz
$ cd git-1.8.4.1.tar.gz
$ ./configure --prefix=$HOME --enable-pthreads=-pthread --with-curl=/usr/local
$ gmake && gmake install
$ git version
※makeじゃだめらしい
※もしgitがコマンドエラーになった場合はログインしなおせばいける
参考:
http://www.machu.jp/diary/20130622.html#p01
■rbenv+ruby-buildインストール
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ rbenv --version
--------------------------------------------------------------------------------
rbenv 0.4.0-67-g3300587
--------------------------------------------------------------------------------
■ruby2インストール
$ echo 'export TMPDIR="$HOME/tmp"' >> ~/.bashrc
※/var/tmp が noexec に設定されているための処置
$ source ~/.bashrc
一時的にmakeをgmakeとする
$ export MAKE="gmake"
使えるrubyバージョン確認
$ rbenv install -l
rubyをインストール
$ CONFIGURE_OPTS="--with-openssl-dir=/usr/local --with-readline-dir=/usr/local --with-iconv-dir=/usr/local" rbenv install 2.0.0-p247
パスを通す
$ rbenv rehash
インストールしたバージョンを有効にする
$ rbenv global 2.0.0-p247
$ ruby -v
--------------------------------------------------------------------------------
ruby 2.0.0p247
--------------------------------------------------------------------------------
MAKEを戻すためにログオフ再ログイン
$ exit
rubygemsをアップデート
$ rbenv exec gem install rubygems-update
$ rbenv rehash
$ update_rubygems
bundlerインストール
$ rbenv exec gem install bundler --no-ri --no-rdoc
$ rbenv rehash
■mysqlセットアップ
[コントロールパネルで操作]
--------------------------------------------------------------------------------
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
--------------------------------------------------------------------------------
相当の設定をする
※おそらくデフォルト値なので何もしない
--------------------------------------------------------------------------------
> create database redmine character set utf8;
--------------------------------------------------------------------------------
相当の設定をする
実際は アカウント名_DB名 になる
ユーザーや権限設定は不要(アカウント名固定)
■redmineのインストール
$ cd
$ mkdir rails
$ cd rails
$ wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
$ tar zxvf redmine-2.3.3.tar.gz
$ mv redmine-2.3.3 redmine
$ cd redmine
$ mkdir -p tmp tmp/pdf public/plugin_assets
$ chmod -R 757 files log tmp public/plugin_assets
$ cd ~/rails/redmine/config
$ cp database.yml.example database.yml
$ vim database.yml
Change it to look like:
--------------------------------------------------------------------------------
production:
adapter: mysql2
database: DBユーザー名_redmine(さくらレンタルだとコントロールパネルから調べる)
host: DBサーバー名(さくらレンタルだとコントロールパネルから調べる)
username: DBユーザー名(さくらレンタルだとコントロールパネルから調べる)
password: "DBパスワード"(さくらレンタルだとコントロールパネルからセットする)
encoding: utf8
--------------------------------------------------------------------------------
$ cd ~/rails/redmine
gemをディレクトリ配下にインストールする
$ bundle install --path vendor/bundle
※Gemfileは最初からある
※make=gmakeを残しているとここでffiがエラーとなるで注意
動作確認
$ bundle exec rails -v
$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data
--------------------------------------------------------------------------------
Select Language: ja
--------------------------------------------------------------------------------
動作確認(WEBrick)
$ bundle exec rails server -e production
http://ドメイン:3000/
設定ファイルを用意
$ cd ~/rails/redmine/config
$ cp -p configuration.yml.example configuration.yml
htaccessファイルを用意(WEBrickでは使われない)
$ cd ~/rails/redmine/public
$ cp -p htaccess.fcgi.example .htaccess
--------------------------------------------------------------------------------
<IfModule mod_fastcgi.c>関連 コメントアウト
<IfModule mod_fcgid.c>関連 コメントアウト
Options +FollowSymLinks +ExecCGI コメントアウト
<IfModule mod_fastcgi.c>関連 コメントアウト
<IfModule mod_fcgid.c>関連 コメントアウト
--------------------------------------------------------------------------------
実行モードをproduction固定
$ vim ~/rails/redmine/config/boot.rb
末尾に追記
--------------------------------------------------------------------------------
ENV['RAILS_ENV'] ||= 'production'
--------------------------------------------------------------------------------
再確認
$ bundle exec rails server
http://ドメイン:3000/
参考:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.machu.jp/diary/20130622.html#p01
http://t100life.blog121.fc2.com/blog-entry-148.html
http://manablog.eek.jp/linux/install_redmine_to_sakura/
http://tmpz84.blogspot.jp/2011/07/rails-3.html
■redmineをさくらレンタルのapacheで動作させる
要点
・さくらレンタルでは常駐型プロセスを認めておらずKillされる可能性が高い
そこで共有サーバーのapache上でCGIモードで動作させる
その場合、config.ruが実行されないため、それに相当するdispatch.cgiというのを作ってやる
さくらではデフォルトでONになってるらしく、指定するとエラーとなるのでしない
・DocumentRoot=/redmine/publicは権限不足で無理そうなのでSUB-URI(http:/ドメイン/redmine)で動作させる
publicディレクトリを~/www/redmineとしてシンボリックリンクを張る
この際、SUB-URIは本来はapache設定ファイルで指定するができないため無理繰り対応させる
・apacheユーザは環境変数が異なるため指定してやる必要があるらしい
$ cd ~/rails/redmine
$ ln -s $HOME/rails/redmine/public $HOME/www/redmine
環境変数等をセット
$ vim config/boot.rb
末尾に追記
--------------------------------------------------------------------------------
#ruby lib 関連
$LOAD_PATH.push('/home/アカウント名/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0')
$LOAD_PATH.push('/home/アカウント名/.rbenv/versions/2.0.0-p247/lib/ruby')
#PATHにさくらアカウントのbinを追加
ENV['PATH'] += ':/home/アカウント名/bin'
ENV['PATH'] += ':/home/アカウント名/local/bin'
#Mercurial用にPython変数指定
ENV['PYTHONPATH'] ||= '/home/アカウント名/lib/python'
#GEM_HOME指定
ENV['GEM_HOME'] ||= '/home/アカウント名/rails/redmine/vendor/bundle/ruby/2.0.0'
#RAILSをSUB-URIに対応
ENV['RAILS_RELATIVE_URL_ROOT'] = '/redmine'
--------------------------------------------------------------------------------
WEBrick用にSUB-URIをセット
$ vim config.ru
runをmapで囲む
--------------------------------------------------------------------------------
map ActionController::Base.config.relative_url_root || "/" do
run RedmineApp::Application
end
--------------------------------------------------------------------------------
確認(画面遷移も確認すること)
$ bundle exec rails server
http://ドメイン名:3000/redmine
htaccessファイルにconfig.ru相当のcgiを呼び出す処理を追記
$ cp -p public/htaccess.fcgi.example public/.htaccess
$ vim public/.htaccess
最初の方に追記
--------------------------------------------------------------------------------
AddHandler cgi-script .cgi
--------------------------------------------------------------------------------
ほかのRewriteRuleが記載されてるあたりに追記
--------------------------------------------------------------------------------
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
--------------------------------------------------------------------------------
fastcgi用dispatch.fcgiを参考にconfig.ru相当のCGIを作る
$ cp -p public/dispatch.fcgi.example public/dispatch.cgi
rubyのパスを変更
--------------------------------------------------------------------------------
#!/home/アカウント名/.rbenv/versions/2.0.0-p247/bin/ruby
--------------------------------------------------------------------------------
call(env)の@app.call(env)直前に以下を追記
SUB-URI(/redmine)を使うとき、本来ならApach設定ファイルのVirtualHostディレクティブの中に
RackBaseURI指定をするらしいがさくらではそれができない
このままだとアプリ内で生成されるURIにSUB-URIがつかないのでSCRIPT_NAMEに入れることで対応
--------------------------------------------------------------------------------
#PATH_INFOからSUB-URIを除去
env['PATH_INFO'] = env['PATH_INFO'].gsub(/\A#{ENV['RAILS_RELATIVE_URL_ROOT']}(.*)\Z/, '\1')
env['SCRIPT_NAME'] = ENV['RAILS_RELATIVE_URL_ROOT']
--------------------------------------------------------------------------------
※試行錯誤してたらたまたまうまくいった方法で、もしかしたら他に不具合出るかも
apacheで確認(画面遷移も確認すること)
http://ドメイン名/redmine
メモ:
rails2.2以前と2.3以降とでRack対応かどうかが異なり、設定が変わる
ネット上にある情報は2.2以前のものが多い
参考:
http://quickhack.net/nom/blog/2012-09-19-rails-with-relative-url-root.html
http://manablog.eek.jp/linux/install_redmine_to_sakura/
http://nyon2.net/archives/ruby-on-rails/
http://zaya3.blog.fc2.com/blog-entry-50.html
http://ascarpediemstyle.com/?p=409
http://takuya-1st.hatenablog.jp/entry/20120108/1326043011
http://t100life.blog121.fc2.com/blog-entry-148.html
http://d.hatena.ne.jp/cimadai/20080923/RubyonRails_on_sakura
http://manablog.eek.jp/linux/install_redmine_to_sakura/
■Mercurialインストール
インストール先を$HOME/localにするとSSH経由コマンドで見つからないぽい
HOME直下に入れること
$ cd ~/tmp
$ wget http://www.selenic.com/mercurial/release/mercurial-2.7.2.tar.gz
$ tar zxvf mercurial-2.7.2.tar.gz
$ cd mercurial-2.7.2
$ python setup.py install --home=$HOME
$ echo 'export PYTHONPATH="$HOME/lib/python"' >> ~/.bashrc
$ source ~/.bashrc
$ hg --version
ユーザー情報登録
$ vim ~/.hgrc
--------------------------------------------------------------------------------
[ui]
username = admin <redmine@mail.com>
--------------------------------------------------------------------------------
試す
$ cd ~/tmp
$ mkdir hgtest
$ hg init hgtest
redmine用にリポジトリ作る
$ cd
$ mkdir hg
$ cd hg
$ mkdir project01
$ hg init project01
この状態でredmineのプロジェクト設定からリポジトリを連携する
例(リポジトリパス):/home/アカウント名/hg/project01
■Mercurialクライアントインストール
HTTP経由にもできるけど今回はSSH経由で
[ローカル操作]
・TortoiseHgをダウンロードしてインストール
http://mercurial.selenic.com/
・デスクトップ等で右クリック->TortoiseHg->Global Settings
・Commit->Usernameをセット
名前 <メールアドレス>
・Edit File
・[ui]にsshをセット(圧縮オプション等をセット)
--------------------------------------------------------------------------------
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -agent -ssh -2 -batch -C
--------------------------------------------------------------------------------
・Save->OK
・この状態でクローンを試す
・デスクトップ等で右クリック->TortoiseHg->Clone
source
--------------------------------------------------------------------------------
ssh://アカウント名@アカウント名.sakura.ne.jp//home/アカウント名/hg/project01
--------------------------------------------------------------------------------
これでローカルからサーバーに接続可能になる
但しこの状態だと何かする度にパスワードを尋ねられて使い辛いので
以降の操作でSSH認証を公開鍵方式にする
■SSHを公開暗号鍵方式にする
$ ssh-keygen -t dsa
--------------------------------------------------------------------------------
Enter file in which to save the key (/home/アカウント名/.ssh/id_dsa): ※そのままEnter
Enter passphrase (empty for no passphrase): ※パスワード入力
--------------------------------------------------------------------------------
$ cd ~/.ssh
$ mv id_dsa.pub authorized_keys
$ chmod 600 authorized_keys
この手順で元の認証方式と公開鍵方式両方でログインできるようになる
■TortoiseHgを公開暗号方式に対応させる
公開鍵をローカルにもってきてTortoiseHg付属のPageantに登録する
そうすることでクローン等の際に鍵を使ってログインするようになる
但し、毎回改めて鍵を指定してやる必要がある
いくつか方法があるが今回は、ショートカットの引数で渡すようにする
公開鍵は形式変換する必要があり、puttygenで変換する
[SSH]
$ cd ~/.ssh
$ more id_dsa
内容をクリップボードにコピー
[ローカル操作]
・クリップボードの中身をテキストファイルに張り付けて保存
・puttygen(ASE対応版)をダウンロードする
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
・実行してLoadから先ほどのテキストファイルを読み込み
・Save privete keyで"○○○.ppk"として保存 -> c:\ssh_keys\に保存
・キー管理ツールのPageant.exeのショートカットを作成する
--------------------------------------------------------------------------------
"C:\Program Files\TortoiseHg\Pageant.exe" "c:\ssh_keys\○○○.ppk"
--------------------------------------------------------------------------------
※今後鍵が増えても都度ショートカット実行すれば、Pageant実行中でもキーが有効になる
クローンを試す
・Pageantショートカットを実行しパスワードを入力する
・その状態で先ほどと同じようにクローンする
参考:
http://d.hatena.ne.jp/NAT_programming/20080504/1209901660
http://0xc000013a.blog96.fc2.com/blog-entry-65.html
http://sh1.2-d.jp/b/2007-10-18-00-05.html
http://www.dodgson.org/omo/t/?date=20070519
http://www.emptypage.jp/notes/pymods-on-sakura.html#ID000301
http://umezo.hatenablog.jp/entry/20080320/1206015911
■SSL対応
[コントロールパネル操作] ・さくらレンタルのドメイン設定から共有SSLをONにする
https://ドメイン名/redmine
以下、没ネタのメモ。
■本来redmine(rails3.2)でSSL接続させるらしい設定
なんかうまくいかなかった
$ vim ~/rails/redmine/config/application.rb
次の場所にconfig.force_sslをセットする
--------------------------------------------------------------------------------
module RedmineApp
class Application < Rails::Application
config.force_ssl = true
・
・
・
--------------------------------------------------------------------------------
■fastcgiインストール
CGIモードながら、キャッシュを駆使して速くするらしい方法
着手し始めたものの、どうもapacheの設定や再起動が必要っぽい気がしたので途中で断念。
一応、これでいいかな?と思える手順を残す。
$ cd ~/tmp
$ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
$ tar xzvf fcgi-2.4.0.tar.gz
$ cd fcgi-2.4.0
$ ./configure --prefix=$HOME/local CFLAGS="-g -O2 -Wall -fPIC" CXXFLAGS="-g -O2 -Wall -fPIC"
$ make && make install
$ cgi-fcgi
※configureにいろいろオプションつけないとgem installでこける
$ cd ~/rails/redmine
$ bundle exec gem install fcgi -- --with-fcgi-include=$HOME/local/include --with-fcgi-lib=$HOME/local/lib
※bundle install/updateにオプション付ける機能がないので先に入れる
$ vim Gemfile
適当な場所、sourceの下あたりに追記
--------------------------------------------------------------------------------
gem "fcgi"
--------------------------------------------------------------------------------
$ bundle update
$ vim public/.htaccess
コメントアウト
--------------------------------------------------------------------------------
#Options +FollowSymLinks +ExecCGI
--------------------------------------------------------------------------------
$ cp -p public/dispatch.fcgi.example public/dispatch.fcgi
中身は元の手順と基本同じとする
以下、元の手順との差分
$ vim public dispatch.fcgi
requireの下に追記
--------------------------------------------------------------------------------
require 'rubygems'
require 'fcgi'
--------------------------------------------------------------------------------
2013-07-24
TCHAR型
完全にメモ
http://paken.s1.hayasoft.com/sb/log/eid13.html
TCHAR型のススメ
2007年01月31日 水曜日 | Paken > Iketaki |
C/C++でWindowsプログラミングをやり始めたとき、誰もが一度は嫌になるあの謎のデータ型。
"LPCTSTR"なんてのはその典型例です。
しかし、これが何かを知らぬまま放っておいてる、ということが意外とありがちなんですよね。
というわけで、一応簡単に解説しておくことにしよう、と思ったまでです。
※ C/C++を使った一般的なWindowsプログラミングをする方向けです。
※ 開発環境は、Microsoft Visual C++ 2005 を想定しています。
1.UNICODE
文字コードとはつまり、数値と文字の関係を示したものです。
文字'a'は128で表し、文字'b'は129で表し・・・と文字と数値が一対一で対応して定められています。(数値は適当です)
UNICODEも、その文字コードの一種で、古い文字コードのASCIIに比べて新しいものです。
NT系のWindowsには全て対応しているので、現在のほとんどの環境がUNICODE対応となっています。
だったら、プログラムもUNICODEに対応させた方が良いですね。
2.TCHAR型
C#という新しい言語のchar型はUNICODEですが、C/C++言語では、char型はASCII、古い文字コードです。
C/C++言語でUnicodeの文字を表すにはwchar_t型を使い、VC++ならWCHAR型とtypedefされています。
というわけで、UNICODE対応プログラムを作るにはWCHAR型を使えばOKです。
・・・OKなのですが、実はもっと良い型があります。
TCHAR型です。
こいつは何かというと、ASCIIとUNICODE両方に切り替えることが出来る万能型です。
コンパイラの設定で、UNICODEを使用する設定にすれば、UNICODEを使用し、そうでなければWindows9x系でも動作するASCIIを使用することになります。
非常に簡単に両方に対応しているプログラムが生成できるので、プログラムを作成する際にはTCHAR型をお勧めします。
3.文字または文字列の表し方
TCHAR chara;
chara = 'a';
上のコードは間違いです。なぜでしょうか。
char型で在れば問題ないのですが、ここではTCHAR型を宣言しているため、'a'がchar型だと認識されてしまうのです。
そのため、TCHAR型の文字を表すには、_TマクロまたはTEXTマクロを使用します。
TCHAR chara;
chara = _T('a');
// あるいは
chara = TEXT('a');
文字列の場合でも同じく、_T("PAKEN")、TEXT("PAKEN")、と記述してください。
(ちなみに、WCHAR型の場合は頭にLをつけ、L'a'、L"PAKEN"、などと表します)
4.謎のデータ型LPCTSTR
さて、char、WCHAR、TCHARの違いがわかったところで、一気に文字列を表すデータ型を見てみましょう。
LPSTR = char*
LPCSTR = const char*
LPWSTR = WCHAR*
LPCWSTR = const WCHAR*
LPTSTR = TCHAR*
LPCTSTR = const TCHAR*
お分かりですね。
LPCTSTRはTCHAR型の文字列なわけです。
今までchar型の文字列をLPCTSTRに強引にキャストして使っていた人もいたのではないでしょうか?
コンパイラの設定でUNICODEを使用しないようにすれば、TCHAR型はchar型に変換されるので、使うことが出来ます。
しかし、UNICODEを使用する設定にしていた人は、TCHAR型がWCHAR型に変換されるため、エラーが発生するはずです。
このような間違いを防ぐためにも、最初からchar型ではなくTCHAR型を使うことが推奨されているのです。
5.注意点
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd);
見慣れたWinMain関数ですね。ですが、ここには問題点が一つあります。
お分かりですね。第3引数にchar型の文字列であるLPSTRが使われています。
ちゃんとTCHAR型のLPTSTRにしてあげなくてはなりません。
そのためには、WinMainの頭に_tをつけてあげます。なお、tchar.hをインクルードします
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPTSTR lpCmdLine, int nShowCmd);
これで問題ないですね。
ほとんど全てのWin32APIは、LPCTSTRまたはLPTSTRを使用しているので、私たちは気にする必要がありません。
ですが、このままだとstrcpyやfopenなど、C言語標準ライブラリ関数が使えなくなります。
でもご安心を。ちゃんとtchar.hにTCHAR型用に定義されています。
(tchar.hに定義されている例)
strcpy() → _tcscpy()
fopen() → _tfopen()
atoi() → _ttoi()
sprintf() → _stprintf()
何を使用すればよいのかわからなくなったら、tchar.h内を検索してみましょう。
TCHAR型を使用した代わりの関数が見つかります。
6.おわりに
実際やることは大したことないですがやたらと長くなってしまいました・・・
ほとんどの人は知っていることだとは思いますが、これは非常に重要なことです。
この記事を読んで初めて知った人は、出来るだけTCHAR型を使用して書くようにしましょう。
今の時代、C/C++を使用してWindowsプログラミングをする人すらあまりいませんからね。
デフォルトUNICODE対応のC#でなんら問題はないのです。
http://paken.s1.hayasoft.com/sb/log/eid13.html
TCHAR型のススメ
2007年01月31日 水曜日 | Paken > Iketaki |
C/C++でWindowsプログラミングをやり始めたとき、誰もが一度は嫌になるあの謎のデータ型。
"LPCTSTR"なんてのはその典型例です。
しかし、これが何かを知らぬまま放っておいてる、ということが意外とありがちなんですよね。
というわけで、一応簡単に解説しておくことにしよう、と思ったまでです。
※ C/C++を使った一般的なWindowsプログラミングをする方向けです。
※ 開発環境は、Microsoft Visual C++ 2005 を想定しています。
1.UNICODE
文字コードとはつまり、数値と文字の関係を示したものです。
文字'a'は128で表し、文字'b'は129で表し・・・と文字と数値が一対一で対応して定められています。(数値は適当です)
UNICODEも、その文字コードの一種で、古い文字コードのASCIIに比べて新しいものです。
NT系のWindowsには全て対応しているので、現在のほとんどの環境がUNICODE対応となっています。
だったら、プログラムもUNICODEに対応させた方が良いですね。
2.TCHAR型
C#という新しい言語のchar型はUNICODEですが、C/C++言語では、char型はASCII、古い文字コードです。
C/C++言語でUnicodeの文字を表すにはwchar_t型を使い、VC++ならWCHAR型とtypedefされています。
というわけで、UNICODE対応プログラムを作るにはWCHAR型を使えばOKです。
・・・OKなのですが、実はもっと良い型があります。
TCHAR型です。
こいつは何かというと、ASCIIとUNICODE両方に切り替えることが出来る万能型です。
コンパイラの設定で、UNICODEを使用する設定にすれば、UNICODEを使用し、そうでなければWindows9x系でも動作するASCIIを使用することになります。
非常に簡単に両方に対応しているプログラムが生成できるので、プログラムを作成する際にはTCHAR型をお勧めします。
3.文字または文字列の表し方
TCHAR chara;
chara = 'a';
上のコードは間違いです。なぜでしょうか。
char型で在れば問題ないのですが、ここではTCHAR型を宣言しているため、'a'がchar型だと認識されてしまうのです。
そのため、TCHAR型の文字を表すには、_TマクロまたはTEXTマクロを使用します。
TCHAR chara;
chara = _T('a');
// あるいは
chara = TEXT('a');
文字列の場合でも同じく、_T("PAKEN")、TEXT("PAKEN")、と記述してください。
(ちなみに、WCHAR型の場合は頭にLをつけ、L'a'、L"PAKEN"、などと表します)
4.謎のデータ型LPCTSTR
さて、char、WCHAR、TCHARの違いがわかったところで、一気に文字列を表すデータ型を見てみましょう。
LPSTR = char*
LPCSTR = const char*
LPWSTR = WCHAR*
LPCWSTR = const WCHAR*
LPTSTR = TCHAR*
LPCTSTR = const TCHAR*
お分かりですね。
LPCTSTRはTCHAR型の文字列なわけです。
今までchar型の文字列をLPCTSTRに強引にキャストして使っていた人もいたのではないでしょうか?
コンパイラの設定でUNICODEを使用しないようにすれば、TCHAR型はchar型に変換されるので、使うことが出来ます。
しかし、UNICODEを使用する設定にしていた人は、TCHAR型がWCHAR型に変換されるため、エラーが発生するはずです。
このような間違いを防ぐためにも、最初からchar型ではなくTCHAR型を使うことが推奨されているのです。
5.注意点
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd);
見慣れたWinMain関数ですね。ですが、ここには問題点が一つあります。
お分かりですね。第3引数にchar型の文字列であるLPSTRが使われています。
ちゃんとTCHAR型のLPTSTRにしてあげなくてはなりません。
そのためには、WinMainの頭に_tをつけてあげます。なお、tchar.hをインクルードします
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPTSTR lpCmdLine, int nShowCmd);
これで問題ないですね。
ほとんど全てのWin32APIは、LPCTSTRまたはLPTSTRを使用しているので、私たちは気にする必要がありません。
ですが、このままだとstrcpyやfopenなど、C言語標準ライブラリ関数が使えなくなります。
でもご安心を。ちゃんとtchar.hにTCHAR型用に定義されています。
(tchar.hに定義されている例)
strcpy() → _tcscpy()
fopen() → _tfopen()
atoi() → _ttoi()
sprintf() → _stprintf()
何を使用すればよいのかわからなくなったら、tchar.h内を検索してみましょう。
TCHAR型を使用した代わりの関数が見つかります。
6.おわりに
実際やることは大したことないですがやたらと長くなってしまいました・・・
ほとんどの人は知っていることだとは思いますが、これは非常に重要なことです。
この記事を読んで初めて知った人は、出来るだけTCHAR型を使用して書くようにしましょう。
今の時代、C/C++を使用してWindowsプログラミングをする人すらあまりいませんからね。
デフォルトUNICODE対応のC#でなんら問題はないのです。
labels:
c
2013-07-03
centosのVMファイルを移動した後にネットワークに繋がらない時
/etc/init.d/network restartをした後、次のようなメッセージが出る。
解消方法
ifconfig -a でMACアドレス調べる
Device eth0 does not seem to be present, delaying initializationVMファイルを移動した後にMACアドレスの古い情報が残っているのが原因
解消方法
ifconfig -a でMACアドレス調べる
/etc/sysconfig/network-scripts/ifcfg-eth0 のHWADDRを変更http://dharry.hatenablog.com/entry/20120307/1331055287
/etc/udev/rules.d/70-persistent-net.rules のeth1を消してeth0のMACを変更
reboot
2013-06-30
Ubuntu12.04のインストールとSamba 4でActive Directory構築
久しぶりにUbuntuを再インストールしてみた。
以前RAID1によるHDD二重化をしていたけどそのうち片方が壊れた。
HDD追加で買うほど大切なデータも入れてないのでRAIDは今回はやめた。
代わりに、以前はUbuntuのバグか何かでうまくいかなかったLVMを使ってみた。
とりあえずインストール時に注意する要素として以前と同じく
・AdvancedFormatTechnologyのHDD
・AFTとなんだか相性の悪いマザーボード
・今のHDDだと微妙に2TB以下らしく標準インストールだとパーティションテーブルがGPTにならずMSDOSになる
といったところ。IntelliPark問題は前回対応済なので不要。
最近のUbuntuはAFTに対応しているっぽいけど、
GPTを使いたいがためにパーティショニングを手動で行う。
GPT周りについてのメモ
今回は関係ないけど/bootのメモ
パーティショニングに関して参考にしたサイト
http://www.linuxmania.jp/raid_md_grub.html
http://www.ibm.com/developerworks/jp/linux/library/l-grub2/
で、OS入れる際にまたまたなかなかうまく行かなかったので色々実験結果をメモしとく。
インストール&起動の結果
◆MSDOS&RAIDなし&LVMなし→OK
◆GPT&RAIDなし&LVMなし→OK
◆GPT&RAIDあり(/bootと/)&LVMなし→NG(一瞬起動メニューが出て先に進むけど真っ黒の画面で止まる)
◆GPT&RAIDあり(/)&LVMあり(/)→成功?(起動しかけたところで単独RAIDが原因っぽいエラーが発生)
AFT&LVM&RAIDあたりの注意事項について細かく記載のあるサイトがあったのでメモ
http://green-rabbit.sakura.ne.jp/blog/2010/11/27/2191/
※意味がよくわからなかったので今回は気にしないことにした
http://gparted.sourceforge.net/からGparted Live"gparted-live-0.16.1-1-amd64.iso"をダウンロードしてCDに焼く。
ディスクを入れて起動
ディスクを入れて起動
あまり細かくはわけず、ルート(20GB)とホーム(残り)の2つに分ける。
ちなみにパーティションを遣り直したい際、論理ボリュームの削除ができない。
これは日本語のバグらしく、メニューを戻って言語からEnglishを選択すれば削除できるようになる。
この時点で再起動すると、"No bootable device"と出て起動できない。
どうやら、マザーボード(BIOS)がUbuntuの作るGPTを読めていないらしい。
というのも、Ubuntuから見たGPTはブートフラグは関係しない不要な属性らしいけど、
マザーボードによってはブートフラグ前提で動いていて純粋なGPTに対応してなかったりするらしい。
というわけで、Live版のUbuntuからHDDに細工をしてマザーボードから読めるようにする。
起動さえすればあとはGRUBとかがうまくやってくれるらしい。
なお、この問題は10.XXから発生しているらしく、確かに以前10.XXがダメだったから9.10を入れた。
最近は対応策が発見されたらしい。
ついでに調べた事項のメモ、RAID1構成にしてインストールした時に以下のようなメッセージが出る場合について。
[Do you want to boot your system if your RAID becomes degraded?]
Yes を選ぶと、degraded 時に case.1
No を選ぶと、degraded 時に case.2
case.1
起動時に以下のメッセージが出て、そのまま起動します。
started the RAID in degraded mode.
case.2
起動時に以下のメッセージが出ます。
Do you wish to start the degraded RAID? [y/N]:
いいえが無難かなぁ。
参考
https://forums.ubuntulinux.jp/viewtopic.php?id=9232
初期セットアップ以降の手順
MACアドレスはHWaddr・・・のところ
以降、SSHクライアントから作業する
今回は、以前インストールしたPederosaからやる。
注意なのは、今後mysqlをインストールする際には直接コンソールからやること。
なぜかSSHクライアントからだと操作不能になる。
今回はNTPサーバー機能は入れない
↓winbindはsambaの兄弟で、今回はsambaをソースからインストールする関係で念のため入れないでおく
Windowsと同じようにNetBIOSの名前解決ができるようにする。
winbindをインストールし、名前解決方法にwinsを追加するとできるようになる。
簡単に操作するためのuwfというツールもある。
FireWall初期設定の確認
仕組みはよくわからないけど、何も触らなくてもインストールしたソフトは自動で使える、みたいな状態。
一度設定した以降は、ちゃんとポート設定しないといけないっぽい?
今回色々設定したけど記事の趣旨からは外れるのでここでは説明しない。
多分そのままでも動作はするはずで、だめなら必要に応じて設定すればよい。
ログイン情報を作成する
"Server certificate not trusted"と出ている場合はpemがおかしい
参考:
http://ubuntu-tutorials.com/2008/11/11/relaying-postfix-smtp-via-smtpgmailcom/
http://stevejenkins.com/blog/2011/06/fixing-postfix-certificate-verification-failed-for-gmail-untrusted-issuer-error-message/
メール通知の設定
これで基本的な初期セットアップ完了。
次はsamba4のインストールとActiveDirectoryの構築。
最近samba4のstable版がリリースされ、samba4からはActiveDirectoryのサーバー機能を備えている。
ActiveDirectoryに必要な機能はDNSサーバーとケルベロスサーバーで、samba4はこの辺を全て内包している。
sambaのサポートページ
http://wiki.samba.gr.jp/mediawiki/
aptitude等でsamba4を入れることもできるけどエラーが多発してインストールすらできない。
ソースからコンパイルして入れてみる。
参考
https://wiki.samba.org/index.php/Samba_4/OS_Requirements
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/
事前にopenldap関係のパッケージを入れておかないと生成されないっぽい?
入れるのはいいけどかといって動作しているとなぜかADがおかしくなる。
なのでサービスから外しとく。
今回は4.0.6で試した。
さっそくADをセットアップする。
Realm(レルム/Kerberosの管理範囲)にはADドメインを、DomainにはNTドメインを入れるらしい。
NTドメインにはドットが含められないらしい。
Realmは組織のDNS名を大文字にしたもの(例えば、SALES.EXAMPLE.COM)を使うのが慣例で、DNSと紐づかない閉じた環境では名前 + ".LOCAL"とすることが多いらしい。
ちなみにOSインストール時のドメイン名は上書きされる感じになるので無視していい。
ServerRoleにはDomainControlerであるdcを選択。ActiveDirectoryのサーバー以外にしたりするなら他を選ぶ。
DNS backendにはDNSサーバーの種類を選ぶ、今回はsambaに任せるのでSAMBA_INTERNAL。
DNS forwarder ・・・には親となるDNSサーバーを選ぶ、今回はルーターを。
※4.0.5->4.0.6で数がだいぶプロセス減ってるような?
次のようなスクリプトを記述する。
スクリプトを自動実行するようにする。
参考
http://www.be-dama.com/kb/samba4-ad-mini-howto/samba_init_setting.html
ホスト名
となっているものを
ホスト名.レルム
を(多分)小文字で記述する
今回だと
interfacesに書いてあるDNSサーバー情報とかを移動する。
interfaces辺りの編集を間違えててハマッタ
参考
http://d.hatena.ne.jp/studio-m/20080213/1202862706
http://iabsis.com/EN/article/35-2/Samba4-installation
nameserver UbuntuサーバーIP
に変更する。
interfacesから移動した記述を削除
dns-*系があればコメントアウトする
ネットワーク再起動
問題なくサービス再起動することを確認
一通り終わったので再起動してみる。
DNSの確認
ドメイン管理者でログオンできるか
sambaでadが動いた時点でサービスとしては動いてるはずで、udp88とかがnmapで確認できればよい。
問題はネットワーク設定がちゃんとしてなくてローカルから確認が失敗することが多そう。
adとしては起動に必須ではないはずで動いてるかわからないため念のため動作確認する。
sambaでドメイン立ち上げた時にできるテンプレートファイルをコピーしておく
kerberosクライアントインストール
レルムにはADのレルムを、
ケルベロスサーバーと管理サーバーに自分のホスト名を入れる。
何も帰ってこないか、パスワードに関する警告が出ればOK
接続のチケット(許可?)の一覧
試しにパスワードポリシー表示
他にも、SSHでログインできるようにもできるらしいけど今回は調べない。
セットアップ完了。
次会hADへのユーザー追加とかファイルサーバーのセットアップとか。
ユーザー追加
この時点でWindows機から確認してみる。
ネットワークの設定からDNSのIPをUbuntuサーバー機にする。
念の為ネットワークアダプタを無効にしてから有効化。
でもって、コントロールパネルのシステムからドメイン情報を入力すると参加できた。
ADユーザーとUbuntu情報の連携
make時にwinbindやpamといった名前のついたファイルができている。
これらをシステムに組み込んでユーザー情報を連携させる。
その際、既にあるファイルを退避させとく。
sambaのシェル設定
連携する用に設定
設定読み込み(再起動しても同じ効果らしい)
winbindの動作確認
ユーザー情報の連携確認
これでActiveDirectoryのユーザーがLinuxから参照できる?
UID/GIDに関してはよーわからんけど
lowerBound: 3000000
upperBound: 4000000
とかあるので、3000000~4000000の間でIDでが振られるのかもしれない
ADユーザー情報
ADグループ情報
GID=100 つまり users
というわけでグループを作ってみる
ADグループ情報
参考
http://web.chaperone.jp/w/index.php?samba%2Fuser
http://wiki.samba.gr.jp/mediawiki/index.php?title=Samba_4.0.0%E3%81%AEDC%E4%B8%8A%E3%81%A7UID/GID%E3%81%AE%E5%80%A4%E3%81%ABUNIX%E5%B1%9E%E6%80%A7%E3%81%8C%E5%8F%8D%E6%98%A0%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
ファイルサーバーセットアップ
sambaでファイルサーバーをセットアップする。
参考
http://sheepdogjam.cocolog-nifty.com/blog/2013/01/raspberrypi-sam.html
Windowsマシンから
\\192.168.1.XXX\
で共有フォルダが見えるようになる
ホスト名でも繋がるけど、何度かインストール手順を色々試してるとなぜかつながらないパターンがある。。。
プライマリグループの変更
このままだとドメインユーザーのプライマリグループがusersになっている。
ファイルサーバーで新規に作成したファイルのアクセス権設定がやりづらい。
設定ファイルを直接変更すれば変更できる。
などでユーザーの定義を探す
たぶん
objectClass: user
name: ユーザー名
となっていると思う
そこの
primaryGroupID: ・・・・
を変更先のグループに変える
IDを調べる方法は
今回だと
primaryGroupID: 1107
とセットする
(20131031追記) Windows機をADに参加
普通にシステム詳細からドメインに参加すればよい。 ○○○○.LOCAL この時、アカウント情報を求められるが、ドメイン管理者(Domain Amins)の権限が必要らしい。 そうじゃない場合、Samba4だけかもしれないが次のようなエラーメッセージが出て混乱させられる。 「 ”***”という名前のコンピューターアカウントが以前、別の資格情報で作成された可能性があります。 別のコンピューター名を使うか、管理者に連絡して、競合を発生している無効なアカウントを削除してもらって下さい。 アクセスが拒否されました。」 なので、一般ユーザーを登録する場合は、まずはシステム詳細から管理者権限でドメインに参加し、 その後、一般ユーザーでPCにログインさせるといった感じになる。 また、WindowsVista以降では次の操作をしないといけないらしい(Pro未満の場合はレジストリ操作になる?) Windowsキー+R -> secpol.msc ローカルポシリー->セキュリティオプション ネットワーク セキュリティ: LAN Manager 認証レベル を変更する 未定義 -> 「NTLM応答のみ送信する」または「LMとNTLM応答を送信する」に変更する ※一度変更すると初期値(設定前)に戻せないので注意、初期値は「NTMv2応答のみを送信する」
AD管理をWindows7から
Ubuntuからだとコマンドベースで大変。
UIでやるならWindows7のリモート管理ツールというのが使えるらしい。
http://www.microsoft.com/ja-jp/download/details.aspx?id=7887
Win7用リモート管理ツールをダウンロードしてインストール
コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化
役割管理ツール→AD DS およびAD LDSツール→AD DSツール→ActiveDirectory管理センタをチェックする
一緒にいくつかチェックされるのでそのままにしておく→OK
で、前提条件としてWindows機からドメインに管理者権限で参加しておく必要があるっぽい。
スタートメニュー→管理ツール→ActiveDirectoryユーザーとコンピュータ
エラーが出るけど気にしない
操作→ドメインコントローラの変更→次のドメインコントローラーまたはAD LDS インスタンス
ドメイン名を入力
状態がオンラインになればOK
参考
http://www.kurobuti.com/blog/?p=6318
http://d.hatena.ne.jp/rti7743/20110425/1303688263
RAID1構築後に2台目HDDのbiosgrubパーティションセットアップ
1台目の情報をコピーする。
参考
http://nabe.blog.abk.nu/0301
http://blog.lwlv.net/archives/323
samba起動エラー解消
そのままだとsamba起動時にエラーが出ている。
$ sudo vim /usr/local/samba/etc/smb.conf
[global]に以下を追記
printing = bsd
load printers = no
printcap name = /dev/null
$ sudo /etc/init.d/samba4 restart
SWATのインストール
sambaの管理UI
$ sudo aptitude purge openbsd-inetd
※なければそれでよい
$ sudo aptitude install xinetd
$ sudo update-inetd --enable 'swat'
$ sudo dpkg-reconfigure xinetd
$ sudo vim /etc/xinetd.d/swat
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1 192.168.1.0/24
user = root
server = /usr/local/samba/sbin/swat
log_on_failure += USERID
disable = no
}
$ sudo vim /etc/inetd.conf
からswatに関する記述をコメントアウト
なぜかconfが残りっぱなしでxinetdが若干影響受けてるっぽいので念の為
※もともとなければ不要
swatのヘルプページがなぜかおかしいのは放置
samba-docを入れてwelcome.htmlを修正すればいいらしいが・・・
全部修正するのは大変だしsamba4のdocumentでちゃんとしたのが見つからなかった
もいちど再起動
$ sudo dpkg-reconfigure xinetd
rootにパスワードを与える
$ sudo passwd root
Windows機から
http://Ubuntuホスト名:901/
でswatに繋がる
なお、Ubuntu12.04の通常のsambaとswatではなぜかswatには繋がるけど
何かすると真っ白になるという状態になった
samba4でイチからビルドした場合はうまくいくっぽい
名前解決
インストール内容によってはWinowsマシンからLinuxマシンを名前解決できないケースがある。
その場合は次の操作で繋がるパターンがあった。
nmbdを入れる
$ sudo aptitude install samba
nmbdだけ欲しくてsmbdはいらないのでサービス停止
$ sudo /etc/init.d/smbd stop
smbdはupstartでサービス登録されているけど
念の為 SysV init の停止もする。多分えらー
$ sudo update-rc.d smbd disable
upstartの記述を削除する
$ sudo vim /etc/init/smbd.conf
start on ・・・ という行を#でコメントアウト
これで再起動してもsmbdが起動しないようになる
なお、/etc/init.d/ではなくserviceコマンドを使うこともあるが
これはupstartとSysV initの区別をしなくてもいいコマンドらしい
この状態でWIndowsマシンから
> ping ホスト名
で名前解決できていることを確認
http://blog.bis5.net/archives/138
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/
https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
http://www.matrix44.net/cms/notes/gnulinux/samba-4-ad-domain-with-ubuntu-12-04
http://d.hatena.ne.jp/vivid_skid/20130417/1366159279
http://krakenbeal.blogspot.jp/2011/03/ubuntuswat.html
http://www.aconus.com/~oyaji/samba/samba.htm
http://www.samba.gr.jp/doc/contrib/begin_samba2.0.html
http://askubuntu.com/questions/196272/how-to-install-and-configure-swat-in-ubuntu-server-12-04
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/FastStart.html
http://fummy-net.blogspot.jp/2013/04/samba4-active-directory-pdc.html#centos_domain_login
以前RAID1によるHDD二重化をしていたけどそのうち片方が壊れた。
HDD追加で買うほど大切なデータも入れてないのでRAIDは今回はやめた。
代わりに、以前はUbuntuのバグか何かでうまくいかなかったLVMを使ってみた。
とりあえずインストール時に注意する要素として以前と同じく
・AdvancedFormatTechnologyのHDD
・AFTとなんだか相性の悪いマザーボード
・今のHDDだと微妙に2TB以下らしく標準インストールだとパーティションテーブルがGPTにならずMSDOSになる
といったところ。IntelliPark問題は前回対応済なので不要。
最近のUbuntuはAFTに対応しているっぽいけど、
GPTを使いたいがためにパーティショニングを手動で行う。
GPT周りについてのメモ
GRUBをMBRにインストールした場合、追加でBIOSブートパーティション/予約済み BIOS ブート領域(bios_grubフラグのたったパーティション)に情報を保存する。RAID1を構築した場合、bios_grubはOSインストール後に手動でミラーにインストールするのが良さそう。
もしなければ/bootの情報を使おうとする。そうすると何らかの原因でブートができなくなる可能性があるらしく、BIOSブートパーティションを設けたほうがいいらしい。
BIOSブートパーティションは最低31KB必要らしく、通常は多めに1MBほど確保される。
UbuntuではこれがないとGRUBインストールに失敗するとの情報あり。
今回は関係ないけど/bootのメモ
/bootパーティションには起動するための情報が格納される。なければ/に格納される。ついでに、LVMの上に/bootを載せるのは少なくともうちの環境では動かないっぽい(RAIDは未確認
これは基本的にはRAIDの外に出さないといけないが、RAID1ははやくから対応されている。
RAID1の時、縮退すると起動できなくなってしまうので、/bootもRAIDに載せるほうがよいらしい。
パーティショニングに関して参考にしたサイト
http://www.linuxmania.jp/raid_md_grub.html
http://www.ibm.com/developerworks/jp/linux/library/l-grub2/
で、OS入れる際にまたまたなかなかうまく行かなかったので色々実験結果をメモしとく。
インストール&起動の結果
◆MSDOS&RAIDなし&LVMなし→OK
◆GPT&RAIDなし&LVMなし→OK
◆GPT&RAIDあり(/bootと/)&LVMなし→NG(一瞬起動メニューが出て先に進むけど真っ黒の画面で止まる)
◆GPT&RAIDあり(/)&LVMあり(/)→成功?(起動しかけたところで単独RAIDが原因っぽいエラーが発生)
AFT&LVM&RAIDあたりの注意事項について細かく記載のあるサイトがあったのでメモ
http://green-rabbit.sakura.ne.jp/blog/2010/11/27/2191/
※意味がよくわからなかったので今回は気にしないことにした
AdvancedFormatTechnology対応したパーティショニングをGPartedで行う
注意としては、流用したHDDだと前の情報が残っていたりするっぽいので、適当なフォーマットと適当なラベル付を行う。http://gparted.sourceforge.net/からGparted Live"gparted-live-0.16.1-1-amd64.iso"をダウンロードしてCDに焼く。
ディスクを入れて起動
- ・・・Live・・・
- Don't touch keymap
- 15: Japan
- 0) COntinue to start X to use GParted automatically
- 右上の/dev/・・・から操作したいHDDを選択、今回は"/dev/sda"
- メニュー→デバイス→パーティションの作成→詳細→[新しいパーティションテーブルの形式を選択]"gpt"→"Apply"
- まず、gpt用のgrub用領域を1MB分作成する。 未割り当てを選択→New→前方の空き領域"1"、新しいサイズ"1"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"grub"
- 次に、ブート用の領域を256MB分作成する。 未割り当てを選択→New→前方の空き領域"0"、新しいサイズ"256"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"boot" RAID化しておけば片方のHDD異常でも起動ができるらしい。
- 次に、スワップ領域をディスクの末尾に作成する。メモリが2GBでそれより多めにとる。 今回はとりあえず3GBととする。 未割り当てを選択→New→新しいサイズ"3072"MiB、後方の空き領域"0"、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"swap" なお、スワップ領域をRAID化する意味はないらしい。
- 最後に、それ以外のメイン部分の領域を残り全部で作成する。 ただ、のちのち別HDDとRAID1化するので念の為少し小さめに数十MBくらい残しておく。 未割り当てを選択→New→前方の空き領域"0"、新しいサイズ"1904300"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"data"
- 念の為、これまで作成したパーティションを右クリックしてinformationから開始セクターを確認する。 8の倍数であることを確認する。
- ・・・確かApplyをクリックして適用。
- Exitをダブルクリックして終了。
Ubuntu Server 64bit版をインストールする
http://www.ubuntu.com/server/から"ubuntu-12.04.2-server-amd64.iso"をダウンロードしてCDに焼く。ディスクを入れて起動
インストール手順1(基本情報)
- [Language]画面"日本語"
- "Ubuntu Serverをインストール"
- [インストーラの翻訳は、選択された言語では完全ではありません]画面"はい"
- [場所の選択]画面"日本"
- [キーボードの設定]画面"日本語"→キーボードのレイアウト"日本語"
- [ネットワークの設定]画面の[このシステムのホスト名を入力して下さい]画面(ネットワーク手動設定のために)"戻る"→"ネットワークを手動で設定"→[IP address]任意入力"192.168.1.xxx"して"続ける"→[ネットマスク]任意入力"255.255.255.0"→[ゲートウェイ]任意入力"192.168.1.1"→[ネームサーバーアドレス]任意入力"192.168.1.1"→[このシステムのホスト名を入力して下さい]任意入力"ubuntu"→[ドメイン名]任意入力"mydomain"※他のドメイン名にあわせる
- [ユーザーとパスワードのセットアップ]画面の[新しいユーザーの本名]任意入力"TestUser"→[あなたのアカウントのユーザ名]任意入力"testuser"→[新しいユーザーのパスワードを選んで下さい]任意入力"xxxxxxxx"→[確認のため、再度パスワードを入力して下さい]先と同じ値を入力
- [ホームディレクトリを暗号化しますか]"いいえ"※持ち歩かない端末なので盗難は心配せず、パフォーマンス優先
- [時間の設定]画面で[your time zone is Asia/Tokyo]と出てるので[Is this time zone correct]"はい"
インストール手順2(パーティショニング)
概要としては、システム周りは先程パーティショニングした通りで、ルートなどはLVM上に構築していく。あまり細かくはわけず、ルート(20GB)とホーム(残り)の2つに分ける。
ちなみにパーティションを遣り直したい際、論理ボリュームの削除ができない。
これは日本語のバグらしく、メニューを戻って言語からEnglishを選択すれば削除できるようになる。
- [ディスクのパーティショニング]画面→[パーティショニングの方法]"手動"
- [・・・sda・・・]の
- 1.(bios用領域)→ [利用方法]"予約済みBIOSブート領域" [起動フラグ]"オフ"
- 2.(boot用)→ [利用方法]"ext4" [パーティションの初期化]"初期化" [マウントポイント]"/boot" [起動フラグ]"オフ"
- 3.(swap用)→ [利用方法]"スワップ領域" [起動フラグ]"オフ"
- 4.(rootなどその他用)→ 論理ボリュームにするので触らない
- →"論理ボリュームマネージャの設定"→[LVM設定アクション]"ボリュームグループの作成"→[ボリュームグループ名]"vg0"→[新しいボリュームグループのデバイス]"/dev/sda4"(rootなど用)を選択して"続ける"
- →[LVM設定アクション]"論理ボリュームの作成"→[ボリュームグループ]"vg0"→[論理ボリューム名]"lv0"を入力して"続ける"→[論理ボリュームサイズ]任意入力"20GB"
- →[LVM設定アクション]"論理ボリュームの作成"→[ボリュームグループ]"vg0"→[論理ボリューム名]"lv1"を入力して"続ける"→[論理ボリュームサイズ]任意入力※残り全部※デフォルト値
- →[LVM設定アクション]"完了"
- →[LVM VG・・・lv0・・"の"1.・・・]を選択→ [利用方法]"ext4" [マウントポイント]"/" [マウントオプション]"defaults"※デフォルト値 [ラベル]任意入力"root" [予約ブロック]"5%"※デフォルト値 [典型的な利用方法]"標準"※デフォルト値
- →"パーティションのセットアップを終了"
- →[LVM VG・・・lv1・・"の"1.・・・]を選択→ [利用方法]"ext4" [マウントポイント]"/home" [マウントオプション]"defaults"※デフォルト値 [ラベル]任意入力"home" [予約ブロック]"5%"※デフォルト値 [典型的な利用方法]"標準"※デフォルト値
- →"パーティションのセットアップを終了"
- →"パーティショニングの終了とディスクへの書き込み"
インストール手順3(ソフトウェア周り)
- [taskselを設定しています]画面の[このシステムのアップグレードをどのように管理しますか"自動的にアップデートしない"
- [ソフトウェアの選択]画面"OpenSSH server","Mail server"
- [Postfix Configuration]画面の[メール設定の一般形式]"インターネットサイト"
- →[システムメール名]任意入力"ホスト名.ドメイン名" ※何入れればいいかわからん Samba入れたら ホスト名.ドメイン名、いれなかったらホスト名がデフォルト値だった
- [ハードディスクへのGRUBブートローダのインストール]画面の[マスターブートレコードにGRUBブートローダをインストールしますか]"はい"
- [インストールの完了]画面でディスクを抜き"続ける"
この時点で再起動すると、"No bootable device"と出て起動できない。
どうやら、マザーボード(BIOS)がUbuntuの作るGPTを読めていないらしい。
というのも、Ubuntuから見たGPTはブートフラグは関係しない不要な属性らしいけど、
マザーボードによってはブートフラグ前提で動いていて純粋なGPTに対応してなかったりするらしい。
というわけで、Live版のUbuntuからHDDに細工をしてマザーボードから読めるようにする。
起動さえすればあとはGRUBとかがうまくやってくれるらしい。
なお、この問題は10.XXから発生しているらしく、確かに以前10.XXがダメだったから9.10を入れた。
最近は対応策が発見されたらしい。
適当なパーティションに起動フラグセット
どこか適当なパーティションに起動フラグをセットする必要がある、今回の構成だとスワップ以外につけられるところがないのでスワップをONにする。 http://www.ubuntulinux.jp/download/ja-remixから"ubuntu-ja-12.04.2-desktop-i386.iso"をダウンロードしてCDに焼く。 ディスクを入れて起動する。- "Ubuntuを試す"で起動してDash→検索"terminal"
- $ sudo fdisk /dev/sda [GPTをサポートしません・・・]とか言われるけど無視する。
- とりあえず状態を確認
- パーティションをアクティブにする
- 終了
: p
デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 39070・・・ 19535・・・ ee GPT
"a"→"1"→"w"
$ sudo shutdown -h 0
ついでに調べた事項のメモ、RAID1構成にしてインストールした時に以下のようなメッセージが出る場合について。
[Do you want to boot your system if your RAID becomes degraded?]
Yes を選ぶと、degraded 時に case.1
No を選ぶと、degraded 時に case.2
case.1
起動時に以下のメッセージが出て、そのまま起動します。
started the RAID in degraded mode.
case.2
起動時に以下のメッセージが出ます。
Do you wish to start the degraded RAID? [y/N]:
いいえが無難かなぁ。
参考
https://forums.ubuntulinux.jp/viewtopic.php?id=9232
初期セットアップ以降の手順
文字化け対策
$ vim ~/.profile以下を追記
case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8 ;;
esac
:wq
$ sudo shutdown -r 0今後の新規ユーザーにも適用する
$ sudo vim /etc/skel/.profile自分の.profileと同じ変更をする(動作未確認)
念の為IP確認
$ ifconfigIPはinet addr:・・・のところ
MACアドレスはHWaddr・・・のところ
ネットワーク設定確認
$ more /etc/network/interfaces
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcase 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-search mydomain
ソフトウェアアップデート
※今回はapt-getではなく、aptitudeを採用してみる$ sudo aptitude update
$ sudo aptitude full-upgrade
$ sudo shutdown -r 0
以降、SSHクライアントから作業する
今回は、以前インストールしたPederosaからやる。
注意なのは、今後mysqlをインストールする際には直接コンソールからやること。
なぜかSSHクライアントからだと操作不能になる。
インストール作業に用いるソフトウェアインストール
$ sudo aptitude install zip
時計のセットアップ
9.04と比べて設定ファイル名が変わっていた今回はNTPサーバー機能は入れない
$ sudo sed -i 's/NTPSERVERS="ntp.ubuntu.com"/NTPSERVERS="ntp.nict.jp"/g' /etc/default/ntpdateハードウェアの時計に反映
$ sudo ntpdate -u ntp.nict.jp
$ sudo hwclock -wなお、手動で日時変更する場合は
$ sudo date 1129225808これで2008/11/29 22:58:00になる
↓winbindはsambaの兄弟で、今回はsambaをソースからインストールする関係で念のため入れないでおく
Ubuntu→Windowsの名前解決
そのままだとUbuntuからWindowsの名前を解決できない。Windowsと同じようにNetBIOSの名前解決ができるようにする。
winbindをインストールし、名前解決方法にwinsを追加するとできるようになる。
$ ping Windows機ホスト名→だめ
$ sudo aptitude install winbind
$ sudo vim /etc/nsswitch.conf
hosts: files dns となっているところを
hosts: files dns wins にする
$ sudo /etc/init.d/winbind restart
$ ping Windows機ホスト名
FireWallのセットアップ
UbuntuのFireWallはiptablesで行われる。簡単に操作するためのuwfというツールもある。
FireWall初期設定の確認
$ sudo iptables -L -n何も設定されていない。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
仕組みはよくわからないけど、何も触らなくてもインストールしたソフトは自動で使える、みたいな状態。
一度設定した以降は、ちゃんとポート設定しないといけないっぽい?
今回色々設定したけど記事の趣旨からは外れるのでここでは説明しない。
多分そのままでも動作はするはずで、だめなら必要に応じて設定すればよい。
postfixによるメール設定
ここではgmailを使用する$ sudo postconf -e relay_transport=smtp
$ sudo postconf -e relayhost=[smtp.gmail.com]:587
$ sudo postconf -e smtp_use_tls=yes
$ sudo postconf -e smtp_sasl_auth_enable=yes
$ sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
$ sudo postconf -e smtp_sasl_security_options=noanonymous
$ sudo postconf -e smtp_sasl_mechanism_filter=plain
$ sudo postconf -e smtp_tls_security_level=secure
$ sudo postconf -e smtp_tls_CApath=/etc/postfix/certs
ログイン情報を作成する
$ sudo touch /etc/postfix/sasl_passwd
$ sudo vim /etc/postfix/sasl_passwd
↓の行を記入する
[smtp.gmail.com]:587 メールアドレス:パスワード
$ sudo chmod 600 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd
$ sudo mkdir /etc/postfix/certs
$ sudo chmod 600 /etc/postfix/certs
$ cat /etc/ssl/certs/Equifax_Secure_CA.pem | sudo tee -a /etc/postfix/certs/Equifax_Secure_CA.pem
$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/Thawte_Premium_Server_CA.pem
$ c_rehash /etc/postfix/certs
$ sudo vim /etc/postfix/submit.cred
submitcred version 1
hostname|username|password
$ sudo chmod 600 /etc/postfix/submit.cred
※submit.credは要らない可能性あり
$ sudo /etc/init.d/postfix restart送信テスト
$ mail 宛先メールアドレスうまくいかない場合は/var/log/mail.logを確認
本文は.で終了
"Server certificate not trusted"と出ている場合はpemがおかしい
参考:
http://ubuntu-tutorials.com/2008/11/11/relaying-postfix-smtp-via-smtpgmailcom/
http://stevejenkins.com/blog/2011/06/fixing-postfix-certificate-verification-failed-for-gmail-untrusted-issuer-error-message/
メール通知の設定
$ sudo vim /etc/aliases
最初はpostmaster: rootみたいな設定だけある
root: ユーザーアカウント
ユーザーアカウント: メールアドレス
という設定を追記
カンマ区切りで複数設定可能
$ sudo postalias /etc/aliases
これで基本的な初期セットアップ完了。
次はsamba4のインストールとActiveDirectoryの構築。
最近samba4のstable版がリリースされ、samba4からはActiveDirectoryのサーバー機能を備えている。
ActiveDirectoryに必要な機能はDNSサーバーとケルベロスサーバーで、samba4はこの辺を全て内包している。
sambaのサポートページ
http://wiki.samba.gr.jp/mediawiki/
aptitude等でsamba4を入れることもできるけどエラーが多発してインストールすらできない。
ソースからコンパイルして入れてみる。
参考
https://wiki.samba.org/index.php/Samba_4/OS_Requirements
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/
必要なパッケージインストール
$ sudo aptitude install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr docbook-xsl libcups2-dev xsltproc inkscape libpam0g-dev※krb5-user はあとで入れる
$ sudo aptitude install gcc python2.7-dev make libacl1-dev python※インストールされるものはなかった、上記のに含まれてるかも
openldapインストール
samba4をコンパイルするとwinbindやpam関連のsoファイルが生成されるべきだけど、事前にopenldap関係のパッケージを入れておかないと生成されないっぽい?
$ sudo aptitude install slapd ldap-utils
管理者のパスワード: ※使わないのでなんでもよい
入れるのはいいけどかといって動作しているとなぜかADがおかしくなる。
なのでサービスから外しとく。
$ sudo update-rc.d -f slapd remove
samba4インストール
ソースをダウンロードしてmakeところから。今回は4.0.6で試した。
$ cd
$ wget http://ftp.samba.org/pub/samba/samba-4.0.6.tar.gz
$ tar -zxvf samba-4.0.6.tar.gz
$ cd samba-4.0.6
$ ./configure
$ sudo make && sudo make install
さっそくADをセットアップする。
Realm(レルム/Kerberosの管理範囲)にはADドメインを、DomainにはNTドメインを入れるらしい。
NTドメインにはドットが含められないらしい。
Realmは組織のDNS名を大文字にしたもの(例えば、SALES.EXAMPLE.COM)を使うのが慣例で、DNSと紐づかない閉じた環境では名前 + ".LOCAL"とすることが多いらしい。
ちなみにOSインストール時のドメイン名は上書きされる感じになるので無視していい。
ServerRoleにはDomainControlerであるdcを選択。ActiveDirectoryのサーバー以外にしたりするなら他を選ぶ。
DNS backendにはDNSサーバーの種類を選ぶ、今回はsambaに任せるのでSAMBA_INTERNAL。
DNS forwarder ・・・には親となるDNSサーバーを選ぶ、今回はルーターを。
$ sudo /usr/local/samba/bin/samba-tool domain provision起動は単純に実行するだけ
Realm []: MYDOMAIN.LOCAL
Domain []: MYDOMAIN
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]:
Administrator password: パスワード
$ sudo /usr/local/samba/sbin/sambaずらずら表示されていたらOK
$ ps aux|grep samba
※4.0.5->4.0.6で数がだいぶプロセス減ってるような?
sambaのサービス化
毎回手動実行は大変なのでサービス登録する$ sudo vim /etc/init.d/samba4
次のようなスクリプトを記述する。
#! /bin/sh注意:ファイル名はsambaではだめなのでsamba4にしている、killallで処理中のこのスクリプトまでkillされてしまう
### BEGIN INIT INFO
# Provides: samba
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Samba
# Description: Samba Domain controller
# scheduler
### END INIT INFO
#
#
#
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/local/samba/sbin/samba
test -x $DAEMON || exit 0
case "$1" in
start)
echo -ne "Starting Samba" "samba \n"
$DAEMON -D
;;
stop)
echo -ne "Stopping Samba" "samba \n"
PIDSMB=`ps -e | grep samba | awk '{ print $1 }'`
killall samba
;;
restart)
$0 stop
echo -ne "Sleeping 5 Seconds Before Start: \n"
sleep 5
$0 start
;;
*)
echo "Usage: /etc/init.d/samba4 {start|stop|restart)"
exit 1
;;
esac
exit 0
スクリプトを自動実行するようにする。
$ sudo chmod +x /etc/init.d/samba4ちなみにサービスの状態を確認するには
$ sudo update-rc.d samba4 defaults 98 02
$ sudo aptitude install chkconfigランレベル毎に表示されるらしい。
$ sudo chkconfig --list samba4
ネットワーク設定を正す
インストールしただけだとネットワーク関連の設定ファイルが全然だめな状態なので直す。参考
http://www.be-dama.com/kb/samba4-ad-mini-howto/samba_init_setting.html
$ sudo vim /etc/hostnameもともと
ホスト名
となっているものを
ホスト名.レルム
を(多分)小文字で記述する
ubuntu.mydomain.local
$ sudo vim /etc/hosts
127.0.0.1 localhost
UbuntuサーバーIP ホスト名.レルム ホスト名
今回だと
192.168.1.xxx ubuntu.mydomain.local ubuntu
interfacesに書いてあるDNSサーバー情報とかを移動する。
interfaces辺りの編集を間違えててハマッタ
参考
http://d.hatena.ne.jp/studio-m/20080213/1202862706
http://iabsis.com/EN/article/35-2/Samba4-installation
$ sudo vim /etc/resolvconf/resolv.conf.d/basesearch レルム名
もともと空
nameserver UbuntuサーバーIP
に変更する。
search mydomain.local
nameserver 192.168.1.xxx
$ sudo resolvconf -uポイントはnameserver(DNS)にルーターを指定せず自分を指定するところ。
interfacesから移動した記述を削除
$ sudo vim /etc/network/interfaces
もともと
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.1
dns-search mydomain
dns-*系があればコメントアウトする
# dns-* options are implemented by the resolvconf package, if installed
#dns-nameservers 192.168.1.1
#dns-search mydomain
ネットワーク再起動
$ sudo ifdown eth0 && sudo ifup eth0
問題なくサービス再起動することを確認
$ sudo /etc/init.d/samba4 restart
一通り終わったので再起動してみる。
$ sudo shutdown -r 0
ADの動作確認
ドメイン定義の確認$ /usr/local/samba/bin/smbclient -L localhost -U%みたいな感じで表示されればOK
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 4.0.6)
sysvol Disk
netlogon Disk
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]
Server Comment
--------- -------
Workgroup Master
--------- -------
DNSの確認
$ sudo host -t SRV _ldap._tcp.mydomain.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.mydomain.local has SRV record 0 100 389 ubuntu.mydomain.local.
ドメイン管理者でログオンできるか
$ /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'パスワード' -c 'ls'※パスワードに'が含まれている場合は"で囲む
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]
. D 0 Sun May 19 22:48:09 2013
.. D 0 Sun May 19 22:48:20 2013
34196 blocks of size 524288. 27826 blocks available
kerberosの確認
adの暗号認証が機能しているか確認する。sambaでadが動いた時点でサービスとしては動いてるはずで、udp88とかがnmapで確認できればよい。
問題はネットワーク設定がちゃんとしてなくてローカルから確認が失敗することが多そう。
adとしては起動に必須ではないはずで動いてるかわからないため念のため動作確認する。
sambaでドメイン立ち上げた時にできるテンプレートファイルをコピーしておく
$ sudo cp /usr/local/samba/private/krb5.conf /etc/.
kerberosクライアントインストール
レルムにはADのレルムを、
ケルベロスサーバーと管理サーバーに自分のホスト名を入れる。
$ sudo aptitude install krb5-user※質問の順番がなぜか違う時がある
デフォルトのケルベロスバージョン 5 レルム:MYDOMAIN.LOCAL
あなたのレルムのケルベロスサーバ: ubuntu
あなたのケルベロスレルムの管理サーバー: ubuntu
$ sudo shutdown -r 0※再起動しないとなぜかだめだった
$ kinit administrator@MYDOMAIN.LOCAL※レルム名は大文字
何も帰ってこないか、パスワードに関する警告が出ればOK
接続のチケット(許可?)の一覧
$ klistみたいな感じで出ればOK
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@MYDOMAIN.LOCAL
AD管理ツールでの確認
$ sudo /usr/local/samba/bin/wbinfo -tsucceededと出ればOK
checking the trust secret for domain MYDOMAIN via RPC calls succeeded
$ sudo /usr/local/samba/bin/wbinfo -uでドメインのユーザーとグループが表示されればOK
$ sudo /usr/local/samba/bin/wbinfo -g
試しにパスワードポリシー表示
$ sudo /usr/local/samba/bin/samba-tool domain passwordsettings show
Password informations for domain 'DC=mydomain,DC=local'
Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
他にも、SSHでログインできるようにもできるらしいけど今回は調べない。
セットアップ完了。
次会hADへのユーザー追加とかファイルサーバーのセットアップとか。
ユーザー追加
$ sudo /usr/local/samba/bin/samba-tool user add tester
この時点でWindows機から確認してみる。
ネットワークの設定からDNSのIPをUbuntuサーバー機にする。
念の為ネットワークアダプタを無効にしてから有効化。
ping mydomain.localで通ることを確認。
でもって、コントロールパネルのシステムからドメイン情報を入力すると参加できた。
ADユーザーとUbuntu情報の連携
make時にwinbindやpamといった名前のついたファイルができている。
これらをシステムに組み込んでユーザー情報を連携させる。
その際、既にあるファイルを退避させとく。
$ sudo mv /lib/x86_64-linux-gnu/libnss_winbind.so.2 /var/tmp/.
$ sudo ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/x86_64-linux-gnu/libnss_winbind.so
$ sudo ln -s /lib/x86_64-linux-gnu/libnss_winbind.so /lib/x86_64-linux-gnu/libnss_winbind.so.2
$ sudo mv /lib/x86_64-linux-gnu/security/pam_winbind.so /var/tmp/
$ sudo ln -s /usr/local/samba/lib/pam_winbind.so /lib/x86_64-linux-gnu/security/pam_winbind.so
sambaのシェル設定
$ sudo vim /usr/local/samba/etc/smb.conf
[global]
...
template shell = /bin/bash
...
連携する用に設定
$ sudo vim /etc/nsswitch.conf
passwd: compat
group: compat
shadow: compat
を
passwd: compat winbind
group: compat winbind
shadow: compat winbind
に変更
設定読み込み(再起動しても同じ効果らしい)
$ sudo ldconfig -v | grep winbind
winbindの動作確認
$ /usr/local/samba/bin/wbinfo -p
Ping to winbindd succeeded
ユーザー情報の連携確認
$ getent passwdなどがずらずらでればOK
MYDOMAIN\Administrator:*:0:100::/home/MYDOMAIN/Administrator:/bin/bash
これでActiveDirectoryのユーザーがLinuxから参照できる?
$ id Administrator
uid=0(root) gid=100(users) groups=0(root),100(users),3000004(MYDOMAIN\Group Policy Creator Owners),3000006(MYDOMAIN\Enterprise Admins),3000008(MYDOMAIN\Domain Admins),3000007(MYDOMAIN\Schema Admins)
UID/GIDに関してはよーわからんけど
$ sudo /usr/local/samba/bin/ldbedit -e vi -H /usr/local/samba/private/idmap.ldbでUIDとかのマッピング情報が見られるらしく
lowerBound: 3000000
upperBound: 4000000
とかあるので、3000000~4000000の間でIDでが振られるのかもしれない
ADユーザー情報
$ /usr/local/samba/bin/wbinfo --user-info AdministratorUID=0 つまりroot
MYDOMAIN\Administrator:*:0:100::/home/MYDOMAIN/Administrator:/bin/false
$ /usr/local/samba/bin/wbinfo --user-info testerUID=3000016 新たなID
MYDOMAIN\tester:*:3000016:100::/home/MYDOMAIN/tester:/bin/false
ADグループ情報
$ /usr/local/samba/bin/wbinfo --group-info 'Domain Users'MYDOMAIN\Domain Users:*:100:
GID=100 つまり users
というわけでグループを作ってみる
$ sudo /usr/local/samba/bin/samba-tools group add 'TestUsers'※カンマ区切りで複数追加できるっぽい
$ sudo /usr/local/samba/bin/samba-tools group addmembers 'TestUsers' tester
ADグループ情報
$ /usr/local/samba/bin/wbinfo --group-info 'TestUsers'MYDOMAIN\TestUsers:*:3000019:
参考
http://web.chaperone.jp/w/index.php?samba%2Fuser
http://wiki.samba.gr.jp/mediawiki/index.php?title=Samba_4.0.0%E3%81%AEDC%E4%B8%8A%E3%81%A7UID/GID%E3%81%AE%E5%80%A4%E3%81%ABUNIX%E5%B1%9E%E6%80%A7%E3%81%8C%E5%8F%8D%E6%98%A0%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
ファイルサーバーセットアップ
sambaでファイルサーバーをセットアップする。
$ sudo vim /usr/local/samba/etc/smb.confみたいな感じになっているところに
# Global parameters
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.LOCAL
netbios name = UBUNTU
server role = active directory domain controller
dns forwarder = 192.168.1.1
[netlogon]
path = /usr/local/samba/var/locks/sysvol/mydomain.local/scripts
read only = No
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
[global]を追記する
dos charset = CP932
unix charset = UTF-8
[share]
comment = share contents
path = /home/MYDOMAIN
read only = No
$ sudo /etc/init.d/samba4 restart
$ sudo mkdir /home/MYDOMAIN
$ sudo chmod 755 /home/MYDOMAIN
$ sudo chown root:'MYDOMAIN\TestUsers' /home/MYDOMAIN
参考
http://sheepdogjam.cocolog-nifty.com/blog/2013/01/raspberrypi-sam.html
Windowsマシンから
\\192.168.1.XXX\
で共有フォルダが見えるようになる
ホスト名でも繋がるけど、何度かインストール手順を色々試してるとなぜかつながらないパターンがある。。。
プライマリグループの変更
このままだとドメインユーザーのプライマリグループがusersになっている。
ファイルサーバーで新規に作成したファイルのアクセス権設定がやりづらい。
設定ファイルを直接変更すれば変更できる。
$ sudo /usr/local/samba/bin/ldbedit -e vi -H /usr/local/samba/private/sam.ldb/ユーザー名
などでユーザーの定義を探す
たぶん
objectClass: user
name: ユーザー名
となっていると思う
そこの
primaryGroupID: ・・・・
を変更先のグループに変える
IDを調べる方法は
$ /usr/local/samba/bin/wbinfo --name-to-sid グループ名とした結果の末尾がID
今回だと
S-1-5-21-3800727457-1005178589-2210324449-1107 SID_DOM_GROUP (2)となって、1107がIDとなる
primaryGroupID: 1107
とセットする
$ sudo /etc/init.d/samba4 restartこれで、プライマリグループの変更ができる。
おまけ
未確認やあまりはっきりしないことなど。(20131031追記) Windows機をADに参加
普通にシステム詳細からドメインに参加すればよい。 ○○○○.LOCAL この時、アカウント情報を求められるが、ドメイン管理者(Domain Amins)の権限が必要らしい。 そうじゃない場合、Samba4だけかもしれないが次のようなエラーメッセージが出て混乱させられる。 「 ”***”という名前のコンピューターアカウントが以前、別の資格情報で作成された可能性があります。 別のコンピューター名を使うか、管理者に連絡して、競合を発生している無効なアカウントを削除してもらって下さい。 アクセスが拒否されました。」 なので、一般ユーザーを登録する場合は、まずはシステム詳細から管理者権限でドメインに参加し、 その後、一般ユーザーでPCにログインさせるといった感じになる。 また、WindowsVista以降では次の操作をしないといけないらしい(Pro未満の場合はレジストリ操作になる?) Windowsキー+R -> secpol.msc ローカルポシリー->セキュリティオプション ネットワーク セキュリティ: LAN Manager 認証レベル を変更する 未定義 -> 「NTLM応答のみ送信する」または「LMとNTLM応答を送信する」に変更する ※一度変更すると初期値(設定前)に戻せないので注意、初期値は「NTMv2応答のみを送信する」
AD管理をWindows7から
Ubuntuからだとコマンドベースで大変。
UIでやるならWindows7のリモート管理ツールというのが使えるらしい。
http://www.microsoft.com/ja-jp/download/details.aspx?id=7887
Win7用リモート管理ツールをダウンロードしてインストール
コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化
役割管理ツール→AD DS およびAD LDSツール→AD DSツール→ActiveDirectory管理センタをチェックする
一緒にいくつかチェックされるのでそのままにしておく→OK
で、前提条件としてWindows機からドメインに管理者権限で参加しておく必要があるっぽい。
スタートメニュー→管理ツール→ActiveDirectoryユーザーとコンピュータ
エラーが出るけど気にしない
操作→ドメインコントローラの変更→次のドメインコントローラーまたはAD LDS インスタンス
ドメイン名を入力
状態がオンラインになればOK
参考
http://www.kurobuti.com/blog/?p=6318
http://d.hatena.ne.jp/rti7743/20110425/1303688263
RAID1構築後に2台目HDDのbiosgrubパーティションセットアップ
1台目の情報をコピーする。
$ sudo dd if=/dev/sda1 of=/dev/sdb1 bs=512をする
参考
http://nabe.blog.abk.nu/0301
http://blog.lwlv.net/archives/323
samba起動エラー解消
そのままだとsamba起動時にエラーが出ている。
$ sudo vim /usr/local/samba/etc/smb.conf
[global]に以下を追記
printing = bsd
load printers = no
printcap name = /dev/null
$ sudo /etc/init.d/samba4 restart
SWATのインストール
sambaの管理UI
$ sudo aptitude purge openbsd-inetd
※なければそれでよい
$ sudo aptitude install xinetd
$ sudo update-inetd --enable 'swat'
$ sudo dpkg-reconfigure xinetd
$ sudo vim /etc/xinetd.d/swat
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1 192.168.1.0/24
user = root
server = /usr/local/samba/sbin/swat
log_on_failure += USERID
disable = no
}
$ sudo vim /etc/inetd.conf
からswatに関する記述をコメントアウト
なぜかconfが残りっぱなしでxinetdが若干影響受けてるっぽいので念の為
※もともとなければ不要
swatのヘルプページがなぜかおかしいのは放置
samba-docを入れてwelcome.htmlを修正すればいいらしいが・・・
全部修正するのは大変だしsamba4のdocumentでちゃんとしたのが見つからなかった
もいちど再起動
$ sudo dpkg-reconfigure xinetd
rootにパスワードを与える
$ sudo passwd root
Windows機から
http://Ubuntuホスト名:901/
でswatに繋がる
なお、Ubuntu12.04の通常のsambaとswatではなぜかswatには繋がるけど
何かすると真っ白になるという状態になった
samba4でイチからビルドした場合はうまくいくっぽい
名前解決
インストール内容によってはWinowsマシンからLinuxマシンを名前解決できないケースがある。
その場合は次の操作で繋がるパターンがあった。
nmbdを入れる
$ sudo aptitude install samba
nmbdだけ欲しくてsmbdはいらないのでサービス停止
$ sudo /etc/init.d/smbd stop
smbdはupstartでサービス登録されているけど
念の為 SysV init の停止もする。多分えらー
$ sudo update-rc.d smbd disable
upstartの記述を削除する
$ sudo vim /etc/init/smbd.conf
start on ・・・ という行を#でコメントアウト
これで再起動してもsmbdが起動しないようになる
なお、/etc/init.d/ではなくserviceコマンドを使うこともあるが
これはupstartとSysV initの区別をしなくてもいいコマンドらしい
この状態でWIndowsマシンから
> ping ホスト名
で名前解決できていることを確認
その他参考にしたかもしれないサイト
http://www.kurobuti.com/blog/?p=6278http://d.hatena.ne.jp/torutk/20130301/p1http://blog.bis5.net/archives/138
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/
https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
http://www.matrix44.net/cms/notes/gnulinux/samba-4-ad-domain-with-ubuntu-12-04
http://d.hatena.ne.jp/vivid_skid/20130417/1366159279
http://krakenbeal.blogspot.jp/2011/03/ubuntuswat.html
http://www.aconus.com/~oyaji/samba/samba.htm
http://www.samba.gr.jp/doc/contrib/begin_samba2.0.html
http://askubuntu.com/questions/196272/how-to-install-and-configure-swat-in-ubuntu-server-12-04
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/FastStart.html
http://fummy-net.blogspot.jp/2013/04/samba4-active-directory-pdc.html#centos_domain_login
登録:
投稿 (Atom)