AccessとLinux

中小企業での販売管理プログラムの作成についての所感

サーバーの更新3 (CentOS7+PostgreSQL9.4.4)

2015年07月20日 18時02分09秒 | Weblog
<PostgreSQL 9.4.4のインストール>

最初、yumでインストールしようとしたが失敗した。PGDATAを2枚目のSSD(/pgdataとしてmount)したいのだが、createdb時にデータの場所(/pgdata)を指定すると、

$ createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0

自動起動に失敗する。起動スクリプトにデータの場所を指定しているようで、起動スクリプトの修正の仕方がわからなかった。
PostgreSQLのインストールが終了してからわかったのだが、/lib/systemd/systemにpostgresql-9.4.serviceというスクリプトがあったらしい。それを修正して、

#systemctl disable postgresql-9.4
#systemctl enable postgresql-9.4

と再度設定し直せば、良かったのかもしれない。

いずれにしても、気がついた時にはyumでインストールしたPostgreSQLを削除して、makeしたPostgreSQLをインストールし直した後だったので、手遅れだった。次回インストール時に確認してみたい。

てなわけで、yumでインストールした手順とmake、installした手順、両方記録しておく。

<yumでインストール>

pgdg-centos94-9.4-1.noarch.rpmをダウンロードしてきて、

#rpm -ivh /pub/pgdg-centos94-9.4-1.noarch.rpm

下記を修正。
/etc/yum.repos.d/CentOS-Base.repo
[base]に追記
exclude=postgresql*
[updates]に追記
exclude=postgresql*

http://hkou.hatenablog.com/entry/2015/05/16/162211

#yum install postgresql94-server postgresql94-contrib

.bashrcを編集、下記を追記
PATH="$PATH":/usr/pgsql-9.4/bin

#source ~/.bashrc

#postgresql94-setup initdb
#systemctl start postgresql-9.4
#systemctl status postgresql-9.4

postgresにパスワードを設定する
#passwd postgres

この段階ではpostgresにPostgreSQLのbinがパスが通っていない。root同様.bashrcを編集してパスを追加したいのだが、ホームディレクトリが/var/lib/pgsql/9.4/になっていてデータと同じディレクトリだ。
ホームディレクトリを/home/postgresにしたいので、その設定が必要。「サーバーの更新2」で書いた。

以下、postgresで
#su postgres
$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0

このままrootで
#systemctl enable postgresql-9.4

とやってしまうと、再起動すると、postgresqlの自動起動に失敗する。
起動スクリプトでデータの場所を指定しているらしい。
上記の通り、/lib/systemd/systemにpostgresql-9.4.serviceを編集してから、
#systemctl enable postgresql-9.4
とすること。

yumでインストールすると、initdb時にオプションを指定できないようなのだが、よく分からない。
また、initdbは通常postgresで行うのだが、rootで行う。これで、データディレクトのオーナーはpostgresになるから不思議だ。
initdbはpostgresで

$initdb --no-locale --encoding=UTF8

としたいのだが。この辺がyumだと不安になる。

<ソースからmake、install>
yumで起動スクリプトの修正の仕方がわからなかったので、アンイストールしてしまった後の作業として。

これはこれまでも何回もやっているので、以下、簡単に流れだけ。

下記をダウンロードして解凍。
postgresql-9.4.4.tar.gz

configure前に下記をインストール

#yum install readline readline-devel
#yum install zlib zlib-devel

configureはオプション無し
$ ./configure
$make all
$make install

.bashrcに下記を追加
PATH="$PATH":/usr/local/pgsql/bin
export PGDATA=/pgdata ここでデータの場所を指定する

$source ~/.bashrc

一応、PGDATAが環境変数として設定されているか確認
$printenv

$initdb --no-locale --encoding=UTF8

pg_hba.confの編集。下記を追加
host all all 0.0.0.0/0 trust

postgresql.confの編集(従来これでやってたので)
listen_addresses = '*'
shared_buffers = 160MB
temp_buffers = 40MB
work_mem = 10MB
max_connections = 32 (今回64から変更)

下記は設定がなかった
silent_mode = on

$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
$psql nhs -e < 150720.nhs データのリストア

$createuser -s tuikasuru_user_mei ユーザーの追加(スーパーユーザーにしないと、Accessでリンクテーブルを作成できなかった)

この後、起動スクリプトをどうするかが問題だった。
ここにサンプルがあったので、データの場所だけ変更して、設定した。

http://maplesystems.co.jp/blog/all/programming/11668.html


[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
PIDFile=/pgdata/postmaster.pid
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata start
ExecStop=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata stop -m fast

[Install]
WantedBy=multi-user.target

これを、「/lib/systemd/systemディレクトリに作成し"postgresql.service"というファイル名にしました。」

#systemctl enable postgresql.service

として登録。再起動して確認

#systemctl --type service
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

サーバーの更新2 (CentOS7+PostgreSQL9.4.4)

2015年07月20日 16時31分43秒 | Weblog
<CentOS7のインストール>
CentOS7をDVDに焼いてインストール。
Minimalでインストールした。
「開発ツール」と「Emacs」をオプションで追加したつもりだったが、うまく設定できていなかったのか、入っていなかった。
2枚のSSDは/sda、/sdbとして認識されて、/sdaに自動パーティションでインストールした。
ネットワークは有効にしてインストール。インストール後、固定IPに変更した。
kdumpはどうせ見ることないので、最初からインストールしなかった。

インストール後、
#systemctl --type service
とすると、network.serviceが「Active」「SUB」で「failed」になってしまう。
sambaで共有もできてるし、pingも通るのになぜ?
原因はよく分からないが、serviceの起動順がまずいのだろうか?
とりあえず、下記を実行すると「failed」は消える。
#systemctl restart network

また、下記を実行。
以下、「CentOS7.0 に PostgreSQL9.3.5をインストールしてみた」の再録

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2.emacsのインストール
いつも使っているemacsをインストールした。
#yum -y install emacs

3.SELinuxを止める
/etc/sysconfig/selinux を編集
selinux=disabled

4.ファイアウォールを止める(iptablesから変わった)
#systemctl disable firewalld.service

5.sambaのインストール
#yum -y install samba
#mkdir /home/pub
#chmod 777 /home/pub
#chown nobody:nobody /home/pub

/etc/samba/smb.conf の編集
[global]
workgroup = ItumonoGroup
security = share
map to guest = Bad User (これがないと、ユーザー認証画面が表示されてしまう)

[public]
path = /home/pub
public = yes
writable = yes
printable = no
gest ok = yes
gest only = yes

編集後
#systemctl enable smb
#systemctl enable nmb

再起動は
#service smb restart

6.telnetサーバーのインストール
#yum -y install telnet-server
#systemctl enable telnet.socket

/etc/xinetd.d/telnet ファイルは存在しない

8.chkconfig --list の代わり
#systemctl list-unit-files
例えばtelnet関係だけ表示させたい場合は
#systemctl list-unit-files | grep telnet

enabled は以前の on
disabled は以前の off
static は依存関係で決まるので直接さわることはない

9.ホスト名の変更
下記を編集
/etc/hostname

10.IPアドレスの変更
下記を編集
/etc/sysconfig/network-scripts/ifcfg-enp2s0

NM_CONTROLLED="yes"
BOOTPROTO="static"
DNS1="192.168.1.254"
IPADDR="192.168.1.203"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
ONBOOT="yes"

IPV6関係は削除してしまった。

11.unzip のインストール
#yum install unzip

12.ifconfig
下記に変わった。
$ip a

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

<今回、SSDを2枚挿しして、/sdbをPostgreSQLのデータディレトリ専用で使うので、そのための設定>
/sdbを認識させてプライマリーパーティションを1個、作成後、xfsデフォーマッティング

#fdisk /dev/sdb
#mkfs.xfs /deb/sdb1

今回、/pgdataにマウントするので、

#mkdir /pgdata
#mount /dev/sdb /pgdata
#chown postgre:postgre /pgdata

mountする時 /dev/sdb1 とすると、「ない!」と言ってきた。 /dev/sdb としてmount

/etc/fstab の編集。下記を追記。
/dev/sdb /pgdata xfs defaults 1 2

<停止したサービス>
kdumpは最初からインストールしてない
auditd
avahi-daemon
crond  (PostgreSQLはautovacuumするので、はずしてしまった)
postfix

<時間設定>
CentOS7では時間合せにNTPではなくChronyを使うそうです。

#yum install chrony

設定ファイルは/etc/chrony.conf
iburstは起動直後にサーバーに4回連続的に問い合わせをし時刻同期が早くなる。
時間合わせのサーバーになる必要はないので、サーバー設定だけでよいか、、、
server 135.15.64.8 iburst

ntpd.service は止めておく
#systemctl stop ntpd.service
#systemctl disable ntpd.service
#systemctl start chrony.service
#systemctl enable chrony.service
#systemctl restart chrony.service

<その他メモ>
1.postgresのホームディレクトリを設定
yumでPostgreSQLをインストールすると、自動で追加されるユーザーpostgresのホームディレクトリが環境変数PGDATAの場所になってしまう。
/var/lib/pgsql/9.4/
ここはPostgreSQLのデータディレクトリなので、.bashrcを入れたり、telnetでpostgresでログインした時、カレントディレクトリになったりすると気味が悪い。なので、手動でpostgresを追加した時と同じように、/home/postgresがホームディレクトリになるように設定したい。
/home/postgresをmkdirしてパーミッション等を設定して、

#usermod -d /home/postgres postgres
#su postgres
$pwd (これで確認する)

usermod実行時、最初にpostgresでログイン後、suでrootになっていたりすると変更されないので、再起動後、rootでログインしてから実行すること。

2.postgresのプロンプトの変更
.bashrcに下記を追加する。
ユーザー名、ホスト名、カレントディレクトリのベース名が表示される。

export PS1="[\u@\h \W]\$ "  ($の後にスペース)

3.postgres で sudoを実行できるようにする
#visudo
エディッタviで編集可能になる。最終行に下記を追記する。
postgres ALL=(ALL) ALL

4.zipのインストール
#yum install unzip

5.cdrom のマウント
#mkdir /mnt/cdrom
#mount -t iso9660 /dev/cdrom /mnt/cdrom

/etc/fstabを編集。下記を追記。
/dev/cdrom  /mnt/cdrom iso9660 noauto,users,ro 0 0
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

サーバーの更新1 (CentOS7+PostgreSQL9.4.4)

2015年07月20日 09時10分35秒 | Weblog


最近、困ったことに伝票が消えてなくなることがある。受注伝票だったり、売上伝票だったりする。原因がよくわからなかったのだが、たまにフォームが開かないことがあり、フォームのレコードソースにしているクエリーを直接開こうとしても開かない。どうもAccessから投げたクエリーがサーバーで止まっているようだ。

伝票が消えてしまうのも、両建て(売上、仕入の起票を一度にする)伝票を修正する場合、一端削除して、同一伝票番号で再発行する手順にしているので、伝票を削除した後、再登録するところで、クエリーが実行されなければ、伝票が消えてしまう。よくわからないのだが、AccessからODBCでPostgresqlのテーブルを操作する場合、同期処理されているとも思えず。一方的にAccessから投げたクエリーが順番に処理され、途中でクエリーが実行されなかった場合、Accessでエラー表示が出ず、処理が中断されてしまっているのでは。

結果として、両建伝票修正時、エラー表示がなく、伝票が消えてしまうのではないかと思った。対策としてサーバーを更新することにした。2012年12月に更新してまだ3年半。少し早いのだが、仕方ない。自動Vacuumされているのか、疑って見たりしたが、pgAdminの統計情報をみると、定期的にVacuumされているようだった。

下記のような構成で更新した。

<PC本体>
(株)セブンアールジャパン
http://pc-seven.jp/
基本構成: SR-ii7-7044C
CPU: Corei7-4790
マザーボード: ASRock H81M-HDS
メモリー: NB DDR-3-1600 8GB(4GB、2枚)
HDD: SSD 東芝製128G、2個
価格: 96,904円(税込み)

<OS>
CentOS7
http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso

<PostgreSQL>
postgresql-9.4.4.tar.gz postgresql-9.4.4.tar.gz

1.PC本体
OS無しでカスタマイズの範囲が広い、セブンアールジャパンで購入した。今回で2回目だ。クレジットカード払いだと、手数料?が4000円くらいかかってしまうので、支払方法は振込み。
HDDはSSD、2枚挿しにした。以前、SSDは故障が怖くて、使うのをあきらめたが、今は自宅でも会社でもクライアントPCでSSDを使用していて、トラブル無しなのでまあ、大丈夫だと思う。
SSDを2枚にしたのは、OS+プログラム部分とデータ部分を分けたかったからだ。HDDの時はデータ部分を分けた方が高速と言われていたので、SSDでどうだがわからないのだが、128G、1枚だと少し容量が少ない気もして2枚挿しにした。
しかし、実は、PostgreSQLのPGDATAとして2枚目のSSDに設定するのにアズッタのだった。

自分としては、現在、購入可能なハードとしてはこれ以上は望めないスペックだ。
現状がCorei5なので、今回はCorei7にした。

2.OS
CentOS6にするかCentOS7どちらにしようか迷った。CentOS7は起動プロセスが大きく変更になり、チョット怖いところもあるが、一度インストールしたこともあり、なんとかなると思った。結局、少し困ったのはPostgreSQLの自動起動の設定のところだけだった。
Linuxのインストールでよくあるハードがらみの難点は全くなかった。CentOS6ではSATAが認識されず、BIOSでIDEモードに変更しなければならないし、オンボードのネットワークアダプターも自動認識されず、設定が必要だった。
CentOS7のインストールについてはトラブル無しだった。

3.PostgreSQL
一つ前のバージョン9.3でも良いかと思ったが、9.4も小番が4まで上がっていたので、9.4.4にすることにした。
インストールは最初yumでやってみたが、結局、うまくいかず、ソースからconfigure、makeした。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

派遣?

2015年07月04日 10時21分46秒 | Weblog
最近、国会で派遣法改正の審議が行われているようだが、どうも派遣のメリットが理解できない。

同業者で派遣を使用しているところもあるにはあるのだか、自分の会社は人数も少ないし、派遣は使っていない。今、話題になっている3年と区切った有期雇用契約は、採用する会社にとって、割のいい話ではないと思う。

新人、再雇用者を含めて、新しく人を採用すると、仕事を覚えてもらうのにある程度の期間が必要だ。営業なら7年。内勤事務なら半年あれば取りあえずの仕事はできるものの、やはり3年はかかると思う。派遣を使う会社は教育期間で雇用が終了してしまい、仕事をしてもらった3年間の経験が全く無駄になってしまう。

仕事を覚えてもらう、かっこよく言えば人を育てていくことを考えれば、派遣より正社員として雇い、長年に渡って仕事をしてもらうのが本筋だろう。ただ、定期昇給もしなければならず、給料が徐々に増えていくのは仕方ないところで、その辺が派遣が使われる理由なのかもしれない。それが心配なら高齢者を雇用すれば、給与もある程度抑えられるし、雇用期間の見通しもつく。また、高齢者の雇用はハローワークでも歓迎される。

派遣の費用もそんなに安くないと思う。具体的に金額の提示を受けたことはないのだが、派遣会社に支払う費用は完全にウワにかかるわけだし、その分、会社で社会保険料を負担してもおつりが来る。使われる方もその方が将来受け取る年金が増えるはずだ。同業で派遣を使っているところの話を聞くと「退職金のことを考えると派遣の方が安上がりだ。」と言っていたが、当面は派遣の方が割高、先のことを考えれば派遣の方が割安とういうことで、しかも、その先というのは何十年先のことだ。

せっかく経験してもらっても、3年間で職場を去ってしまう派遣は会社にとって到底メリットがあるとは思えない。少なくとも自分の会社では。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする