モコ
ちょっとローカルにRails開発環境が必要になった。
ついでに次世代モコ鯖の秀作としてVirtualPC上にRails鯖を作成する。
今回はCentOSインスコ。確か5.2くらい。
http://centossrv.com/centos5.shtml
この辺を見ながらインスコ終了。
注意事項としては、VirtualPCの場合のインスコ選択画面で
CUI → linux text clock=pit
GUI → linux vesa i8042.noloop psmouse.proto=imps clock=pit
しないとインスコ途中で止まっちゃう。
あと初回起動時にも引数に入れないと起動しないし、
起動したら /etc/grub.conf kernelの行に追記しないと毎回起動しない。
これで困ってる人多そう。
んでインスコ終了
しばらくはrootで作業
ユーザ作成
>useradd hogehoge
>passwd hogehoge
>userdel -r hogehoge ←削除する場合
775じゃなくてもいいかも。でも、この配下にrailsアプリを置いたらパーミッションで怒られたので俺はこうする
>chmod 775 /home/hogehoge
yumのアップデート
>yum update yum -y
>yum update -y
>chkconfig acpid off
>chkconfig apmd off
>chkconfig atd off
>chkconfig auditd off
>chkconfig mcstrans off
>chkconfig restorecond off
>chkconfig bluetooth off
>chkconfig hidd off
>chkconfig netfs off
>chkconfig nfslock off
>chkconfig portmap off
>chkconfig rpcgssd off
>chkconfig rpcidmapd off
>chkconfig avahi-daemon off
>chkconfig iptables off
>chkconfig ip6tables off
>chkconfig cpuspeed off
>chkconfig cups off
>chkconfig firstboot off
>chkconfig gpm off
>chkconfig irqbalance off
>chkconfig mdmonitor off
>chkconfig pcscd off
>chkconfig yum-updatesd off
>chkconfig sendmail off
>chkconfig smartd off
SELinuxの無効化
>getenforce ← SELinux状態確認
Enforcing ← SELinuxが有効って事らしい
>setenforce 0 ← SELinux無効化
>getenforce ← SELinux状態確認
Permissive ← SELinux無効って事らしい
vi /etc/sysconfig/selinux ← SELinux設定ファイル編集
SELINUX=enforcing
↓
SELINUX=disabled
保存する
SSH rootログイン出来なくする
/etc/ssh/sshd_config を編集する
#PermitRootLogin yes
↓
PermitRootLogin no
保存して
>service sshd restart
いろいろインスコするよ
>yum install gcc-c++
>yum install httpd httpd-devel
>yum install mysql-server mysql-devel
>yum install ruby ruby-devel rdoc
>yum install mod_dav_svn
>yum install ntp
Subversionの設定
リポジトリを作成するディレクトリを作成する(場所はどこがいいんだろうねぇ
>mkdir /var/svn/
作成したディレクトリに移動する
>cd /var/svn/
リポジトリ作成
>svnadmin create hoge
Apacheがリポジトリに読み書きアクセス出来るように、所有権を変更
>chown -R apache:apache /var/svn/hoge
SubVersion設定ファイルを作成(編集)する 自動的にapacheが読みこんでくれるです。
>vi /etc/httpd/conf.d/subversion.conf
こんな感じで追記。
<Location /piyo/hoge>
DAV svn
SVNPath /var/svn/hoge
</Location>
/var/svn/hoge
ってのは、サーバ内部のリポジトリ絶対パスだね。
認証しないなら
#LoadModule authz_svn_module modules/mod_authz_svn.so
認証するならhttp://www.cozmixng.org/~kou/linux/svn
apache起動
>service httpd start
http://<設定したサーバ>/piyo/hoge
がブラウザで開ければOK! そのURLをSVNクライアントで指定してあげましょう
他のhttpdの設定は殆どいじってないな
またそのうち考えよう めどいめどい
/etc/ntp.conf の設定例
restrict -4 default kod nomodify notrap nopeer noquery
#restrict -6 default kod nomodify notrap nopeer noquery
restrict -4 127.0.0.1
#restrict -6 ::1
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
driftfile /var/lib/ntp/drift
logfile /var/log/ntp.log
時間合わせ
>ntpdate ntp.nict.jp
>chkconfig ntpd on
>service ntpd start
/etc/my.conf の設定例
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=0
default-character-set = utf8
skip-character-set-client-handshake
#↓このあたりの設定はネットで調べて必要だと思ったら入れるべし
#query_cache_size=24M
#thread_cache=512
#table_cache=512
[mysqld_safe]
log-error=/var/log/mysqld.log
log-query=/var/log/mysqld.query
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
>chkconfig mysqld on
>service mysqld start
さらに設定
>mysql -u root
mysql> select user,host,password from mysql.user;
+------+-----------------------+----------+
| user | host | password |
+------+-----------------------+----------+
| root | localhost | | ←これにパスワードを設定して
| root | localhost.localdomain | | ←これと
| root | 127.0.0.1 | | ←これを消しましょう(いいよね?)
+------+-----------------------+----------+
mysql> set password for root@localhost=password('NewPassword');
mysql> delete from mysql.user where host = 'localhost.localdomain';
mysql> delete from mysql.user where host = '127.0.0.1';
mysql> select user,host,password from mysql.user;
+------+-----------------------+----------+
| user | host | password |
+------+-----------------------+----------+
| root | localhost | gyhujiko |
+------+-----------------------+----------+
mysql> exit
>mysql -u root -p
パスワードを聞かれるのでさっき設定した奴を入力
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
mysql>drop database test; 不要なDBを消す
mysql> exit
なんとなくリブート
>reboot
rubygems入れるよ!
>wget http://rubyforge.org/frs/download.php/43985/rubygems-1.3.0.tgz
>tar xvzf rubygems-1.3.0.tgz
>ruby setup.rb
>gem update --system
>gem install rails --remote --include-dependencies
>gem install passenger --remote --include-dependencies
>passenger-install-apache2-module
/etc/httpd/conf.d/passenger.confに書く(インスコ時に出た情報を記入する)
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/bin/ruby
/etc/httpd/conf/httpd.confに追記
設定1
NameVirtualHost *:80
設定2
<VirtualHost *:80>
ServerName hoge.mokorin.net
DocumentRoot /home/hogehoge/rails/app_name/public
ErrorLog /home/hogehoge/rails/app_name/log/error.log
CustomLog /home/hogehoge/rails/app_name/log/access.log combined
RailsEnv development
#RailsMaxPoolSize 4
#RailsPoolIdleTime 30
#RailsSpawnServer
#RailsBaseURI
#RailsAutoDetect
#RailsAllowModRewrite
#RailsRuby
#RailsEnv
#RailsDefaultUser
</VirtualHost>
>chkconfig httpd on
>service httpd restart
Postfixのインスコ
>yum install postfix -y
>alternatives --config mta
postfixの番号を指定する
postfixの他の設定は俺の範疇外なのでぐぐれ
あとは
hogehogeユーザで
/home/hogehoge/rails/>rails -d mysql プロジェクト名
Railsのアプリを作ればいいんじゃないですかね
Hostsでも書き替えて、
http://hoge.mokorin.net
にアクセスればいいじゃないですかね
ここからはRailsの話で今回とは関係ない。
DB作れよ?migreateしろよ?
いろいろツッコミどころはあるかと思いますが、
ここからだんだんとセキュリティとか考えて変えていきますよ
鯖なんて 数日ぐぐりながら 唸りながらがんばれば 誰でも作れる
おまいらも作ってみればいいと思うよマジで
鯖にするPCがない?
VirtualPCなりVMwareなり使えばいーじゃねーの
仕事で必要になったのでチョコチョコスクリプト書いたメモ。
やること
tifは全てシングル。(複数画像がアーカイブされているマルチtifってのもあるのだ)
PDFは全て1ページだけで構成されている。
出力は上の2つを合わせた2ページのPDF。を任意のディレクトリに保存する
全てファイル名は一緒。元となるtifとPDFはそれぞれ任意のディレクトリにまとめて置いてある。
環境はこないだ作ったのと一緒の・・はず。
http://www.mokorin.net/blogdata/2007/05/imagemagickrmagick.php
とりあえずこんな感じのスクリプトを書いてみる。
require 'kconv'
require 'RMagick'
tifdir = "C:/Documents and Settings/moko/デスクトップ/in1/".tosjis
pdfdir = "C:/Documents and Settings/moko/デスクトップ/in2/".tosjis
outdir = "C:/Documents and Settings/moko/デスクトップ/out/".tosjis
Dir::glob(tifdir + '*.tif').each{|tiffilename|
tiffilename = tiffilename.tosjis
pdffilename = pdfdir + File.basename(tiffilename, ".*") + '.pdf'
outfilename = outdir + File.basename(tiffilename, ".*") + '.pdf'
puts tiffilename
puts pdffilename
puts outfilename
puts "TifReadStart"
tifimg = Magick::ImageList.new(tiffilename)
puts "TifReadEnd"
puts "PdfReadStart"
pdfimg = Magick::ImageList.new(pdffilename)
puts "PdfReadEnd"
puts "ImgMergeStart"
outimg = tifimg + pdfimg
puts "ImgMergeEnd"
puts "PdfWriteStart"
outimg.write(outfilename)
puts "PdfWriteEnd"
puts "GC Start"
GC.start
puts "GC End"
}
するとこんなエラーを出しやがる。
read : Postscript delegate failed `C:/パス/xxx.pdf' (Magick::ImageMagickError)
Google先生に聞いてみたら
「GhostScript」が要るって事が分かったのでインスコしてみる。
今回インスコしたのは「gs854w32full.zip」ってヤツが最新版っぽい。
ネット上のいろんなトコでミラーされてるみたいなので適当にぐぐればおけ。
http://www.nsknet.or.jp/~tony/TeX/install/win/gs.htm#ghostscript
この「3」を参考にインスコした。
「Use Windows TrueType fonts for Chinese, Japanese and Korean」にチェックを入れた以外は特にいじってない。
ていうか
「Chinese, Japanese and Korean」
なんか いやだ
なんか「GSview」っていうやつの説明もあるけど、こっちはインスコしてない。
んで、その後実行してみると普通に出来た。コレだけ。
思いがけない効果としては、tif画像の出力が出来るようになってた。
もちろん2ページ入りのマルチtif。
まぁ今回はtif出力は関係ないし、画像サイズも大きくなってるっぽかったのであまり気にしてない。
そのうち必要になったら調べてみようかねぇ
あとは
http://studio.imagemagick.org/RMagick/doc/
辺りをみながら適当に画像に効果を入れて出力してみた。









ひゃっほう!
なんかワクワクしてきたぞ
あとはRubyで、順次ファイルを開かせてそのファイル名を書いて保存するだけだなっと
Windowsでインスコして動かす機会なんてそんなに無いと思うけど、俺なんかがいじっても動くんもんだねぇ
※この後ハマった件
・tiffで出力できない
・gifで出力するとやけに重い
出力形式は問わないのでjpgで出力してまぁまぁおkスピード
こんな感じで書き出す(クオリティは最低にした)
img.write("#{ファイル名.jpg}"){self.quality = 1}
・メモリ食いすぎで異常終了
ループにGC.start入れたらおkだった。
ガベージコレクションが動く前に食いつぶしてたのかのう。
(昔は「ガーベジコレクション」って言ってた気がするけど気のせいかな?)
img = Magick::ImageList.new("c:\xxx\moko1.jpg")
は、
img = Magick::Image.read("c:\xxx\moko1.jpg").first
の方が良いのかも知れない。.firstは要るのか要らないのか試してない(めどい
モコです。
仕事でMT4iをいじらないといけなくなったのでいじる
導入するファイルは4つしかないし、かなり簡単でした
が、最後に一つこんなエラーで泣く。
エントリの更新画面でインタナルサバエラー
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\A passed through at /xxxxxxxxxx/mt4i.cgi line 620.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] "my" variable $text masks earlier declaration in same scope at /xxxxxxxxxx/mt4i.cgi line 3175.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 179.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 179.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 179.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 179.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 179.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 186.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 186.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Unrecognized escape \\s passed through at mt4ilib/Func.pl line 186.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] False [] range "\\w-" in regex; marked by <-- HERE in m/[^\\w- <-- HERE /\\\\]/ at /xxxxxxxxxx/plugins/MTPageRating.pl line 41.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in substitution (s///) at /usr/lib/perl5/5.8.5/Encode/JP/H2Z.pm line 157.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in substitution (s///) at extlib/Jcode/Tr.pm line 27.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in substitution (s///) at /usr/lib/perl5/5.8.5/Encode/JP/H2Z.pm line 157.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in substitution (s///) at extlib/Jcode/Tr.pm line 27.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Can't call method "entry_prefs" on an undefined value at /xxxxxxxxxx/mt4i.cgi line 2154.
[Fri May 18 00:20:44 2007] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: mt4i.cgi
最後の行の「Premature end of script headers」でぐぐると結構同じ事で悩んでいる人がいるらしく
これが原因と思い込んでしばらくgoogleとにらめっこしてた
結局、原因は設定ページの
「AuthorName - Entry投稿者のログイン名」
こいつを設定してなかったのが問題だったっぽい。
他に
#!/usr/bin/perl -w
を
#!/usr/bin/perl --
に変えたりとか、結局効果があったのかどうか結局謎だっぽ
mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /xx/xx/xx/xx / | +--------------------------+----------------------------+
mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /xx/xx/xx/xx / | +--------------------------+----------------------------+