サーバを移行したあと、メールを使うユーザを追加した際に
受信サーバにアクセスできない というエラーが帰って来た。
原因が分かったので、忘れないうちに残す
dovcotの制御が原因だった。
ユーザを作成
useradd -m [ユーザ名]
passwd [ユーザ名]
2回入力して作成する。
var/spool/mail/[ユーザ名]
このファイルのパーミッションを660(恐らくデフォルト)から600に変える
こうしないと、応答に答えてくれない仕様の用だ。
以前の設定は、
660でも問題なく動いており、
応答もしてくれているようなので、
これに気づかずに悩んでしまった。
2016/09/22
2016/09/06
サーバ移転で詰まったこと php関連
WEBサーバを移転した際に、嵌ってしまった原因を列挙しておく。
次回の更新が何年後か分からないが、忘備録
PHPのこと
/etc/php.ini
phpが稼働したら、
info.phpファイルを作り、設定確認
infophp();
?>
memory_limit (メモリ使用量の上限)
post_max_size (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)
↑今回、これを確認せず、8MBの壁にぶち当たり嵌った・・。
upload_max_filesize (1ファイルあたりの最大アップロードサイズ)
この辺の数値が小さいと、画面が白いままになったり、
IF関数等で正しく動かない。
反映は
# systemctl restart httpd.service
Postfixのこと
設定されているサイズを確認
# postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
postconf: warning: /etc/postfix/main.cf: unused parameter: mtp_sasl_security_options=
mailbox_size_limit = 此処をでかくする 例えば1GB 1073741824
message_size_limit = 此処を↑は小さくする 例えば100MB 104857600
反映は
# systemctl restart postfix.service
phpで作ったメールフォームで嵌った。
次回の更新が何年後か分からないが、忘備録
PHPのこと
/etc/php.ini
phpが稼働したら、
info.phpファイルを作り、設定確認
infophp();
?>
memory_limit (メモリ使用量の上限)
post_max_size (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)
↑今回、これを確認せず、8MBの壁にぶち当たり嵌った・・。
upload_max_filesize (1ファイルあたりの最大アップロードサイズ)
この辺の数値が小さいと、画面が白いままになったり、
IF関数等で正しく動かない。
反映は
# systemctl restart httpd.service
Postfixのこと
設定されているサイズを確認
# postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
postconf: warning: /etc/postfix/main.cf: unused parameter: mtp_sasl_security_options=
mailbox_size_limit = 此処をでかくする 例えば1GB 1073741824
message_size_limit = 此処を↑は小さくする 例えば100MB 104857600
反映は
# systemctl restart postfix.service
phpで作ったメールフォームで嵌った。
2016/08/09
postfixの設定など
社員用にPHPプログラム運用兼ファイルサーバを設置している。
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。
ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。
CentOS7.x はpostfixが推奨されているので、設定することにした。
はじめに
postfixが動いているか?確認
# systemctl status postfix.service
今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。
※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)
# systemctl restart httpd.service
PHPの設定有効
つづいてpostfixの設定
前のかなりラフなものをちゃんとする。
/etc/postfix/main.cf
L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)
myhostname = mail.xxx.co.jp 等
mydomain = xxx.co.jp 等
inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。
inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註
mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載
mydestination に $mydomain を記載する際の注意
内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。
そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。
※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
その他はそのままで大丈夫と思われる。
# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。
この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。
ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。
CentOS7.x はpostfixが推奨されているので、設定することにした。
はじめに
postfixが動いているか?確認
# systemctl status postfix.service
今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。
※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)
# systemctl restart httpd.service
PHPの設定有効
つづいてpostfixの設定
前のかなりラフなものをちゃんとする。
/etc/postfix/main.cf
L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)
myhostname = mail.xxx.co.jp 等
mydomain = xxx.co.jp 等
inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。
inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註
mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載
mydestination に $mydomain を記載する際の注意
内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。
そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。
※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
その他はそのままで大丈夫と思われる。
# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。
この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)
2016/07/08
PHP 複数行を持つ標準入力の配列化
複数行を持つ標準入力の配列化 <?php $input = trim(fgets(STDIN)); while ($input){ $array[] = $input; $input = trim(fgets(STDIN)); } これで、$arrayに標準出力の複数行で書かれたものを 配列に出来る。 一列づつ検証をする場合は、 while($input=fgets(STDIN)){ for ($i = 1; $i <= $input-1 ; $i++) { この中で検証する; } このように処理すれば良い。 スキルアップの為、codeIQとかで勉強を始めたが、 標準入力の取り扱い方が良くわからずに困っておった。 プログラム自体は掛けるのだが、 標準入力の配列化が出来ず、解けない問題があったので、 いろいろ調べた結果 こうなった。
2016/06/27
javascipt datePicker 営業日の制御
打ち合わせ希望日をカレンダーで選択してもらってフォームで予約を入れてもらう。 このような制御が必要になった。 当初<input type="date">で良いかな? と思ったが、ユーザがPC:スマホで7対3位で、まだまだPCが有利なので、 datepickerを使うことにした。 その際に、 ・土日は選択させない。 ・4営業日以降しか選択できない。 という条件を付けたい。 土日は選択させない事は先人の知恵で問題なく解決。 問題は、4営業日以降の縛り datepickerの変数だけでは処理できなかったので、 起算点を今日にして、今日の曜日を取得し、 datepikcerのオプション minDate で制御した。 以下ソース。 <HEAD> <META HTTP-EQUIV=Content-Type CONTENT=text/html;CHARSET=UTF-8> <TITLE>アポどり用フォーム</TITLE> <!-- jQuery--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <!-- jQuery-UI --> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> <!-- jQuery-UI-datepicker --> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js\"></script> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css\" > <script> <!-- 今日の曜日を抽出--> var dateObj = new Date() ; var weekDayList = [0,1,2,3,4,5,6] ; var todayWeekDay = weekDayList[ dateObj.getDay() ] ; <!--datepicker 定義--> $(function(){ // Datepicker の呼び出し $( "#datepicker" ).datepicker({onClose: function(dateText, inst) { //プラン番号の取得 //日付オブジェクトの作成 var date = new Date(dateText); var weekDay = parseInt(date.getDay()); var check = false; if(weekDay > 0 && weekDay < 6){ check = true; } if(!check){ alert("この日は選択できません"); $( "#datepicker" ).val(''); } }}); //判別4(木曜)、5(金曜)は+6day それ以外は+4dayでOK if(todayWeekDay == 4 || todayWeekDay == 5){ $( "#datepicker" ).datepicker( "option", 'minDate', "+6d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); } else{ $( "#datepicker" ).datepicker( "option", 'minDate', "+4d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); } } ); </script> </HEAD> <BODY> <FORM ACTION="mail.php" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded" > <input type="text" name="date1" class="form_text-small\" id="datepicker" readonly="readonly"> </FORM> こんな感じで実装すればよい。 $( "#datepicker" ).datepicker( "option", 'minDate', "+4d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); 肝はこの部分。
2016/05/24
CentOS7 ssh2_connectを実装する
正規の方法でインストールを試みるが、
#pecl install ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No
such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install install failed
エラー
ネイティブな解説ページが有ったので、
参考にしながら実装までのオボエガキ
先ずは、yumを最新にする。
# yum update
# yum install make gcc libssh2 php-deve
# pecl install -f ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.12, stability "beta"
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] : ←ここはブランクのまま エンターした。
Build process completed successfully
Installing '/usr/lib64/php/modules/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.12
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
となるので、
# echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
httpdを再起動させる。
# systemctl restart httpd.service
# php -m | grep ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
ssh2
phpinfo() で確認すると
となり、実装完了。
実装方法
<?php
$connection = ssh2_connect('アドレス', 22);
ssh2_auth_password($connection, 'ログインユーザ名', 'ログインパスワード');
ssh2_scp_send($connection, '../転送元ファイル', '転送先ディレクトリ/転送するファイル', 0644);
?>
#pecl install ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No
such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install install failed
エラー
ネイティブな解説ページが有ったので、
参考にしながら実装までのオボエガキ
先ずは、yumを最新にする。
# yum update
# yum install make gcc libssh2 php-deve
# pecl install -f ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.12, stability "beta"
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] : ←ここはブランクのまま エンターした。
Build process completed successfully
Installing '/usr/lib64/php/modules/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.12
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
となるので、
# echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
httpdを再起動させる。
# systemctl restart httpd.service
# php -m | grep ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
ssh2
phpinfo() で確認すると
ssh2
SSH2 support | enabled |
---|---|
extension version | 0.12 |
libssh2 version | 1.4.3 |
banner | SSH-2.0-libssh2_1.4.3 |
となり、実装完了。
実装方法
<?php
$connection = ssh2_connect('アドレス', 22);
ssh2_auth_password($connection, 'ログインユーザ名', 'ログインパスワード');
ssh2_scp_send($connection, '../転送元ファイル', '転送先ディレクトリ/転送するファイル', 0644);
?>
2016/05/23
phpexcelとlibreofficeのcuiを使ってPDFを作成する
かなりphpexcelの恩恵を受けているが、やはりpdfに加工したい事がある。
guiでせっせと作るのも良いのだが、
ボタン一つで作成させたい。
そこで、エクセルをpdfに変換するものをいろいろ探したところ、
libreofficeのCUIを使うのが一番崩れないようだ。
早速だが、CUIの環境を構築
#yum install libreoffice libreoffice-langpack-ja
早速コマンドを投げてみる。
libreoffice --nologo --nofirststartwizard --convert-to pdf /var/www/html/pdf/000001.xlsx
エラーが返ってきた。
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/ja
調べてみると、
オプションで --headless を付けないと、ユーザーインタフェースが動いてしまい、NGらしい。
そこで、追加でオプションを実装。
#yum install libreoffice-headless
libreoffice --headless --nologo --nofirststartwizard --convert-to pdf /var/www/html/excel/pdf/00001.xlsx
convert /var/www/html/excel/pdf/00001.xlsx -> /home/<>/00001.pdf using calc_pdf_Export
変換できた。
線種や文字化けはなさそう。
サイズが大きいと、ページを跨いでしまうようなので、余白の設定等で、そこをなんとかできれば、
十分使えそう。
guiでせっせと作るのも良いのだが、
ボタン一つで作成させたい。
そこで、エクセルをpdfに変換するものをいろいろ探したところ、
libreofficeのCUIを使うのが一番崩れないようだ。
早速だが、CUIの環境を構築
#yum install libreoffice libreoffice-langpack-ja
早速コマンドを投げてみる。
libreoffice --nologo --nofirststartwizard --convert-to pdf /var/www/html/pdf/000001.xlsx
エラーが返ってきた。
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/ja
調べてみると、
オプションで --headless を付けないと、ユーザーインタフェースが動いてしまい、NGらしい。
そこで、追加でオプションを実装。
#yum install libreoffice-headless
libreoffice --headless --nologo --nofirststartwizard --convert-to pdf /var/www/html/excel/pdf/00001.xlsx
convert /var/www/html/excel/pdf/00001.xlsx -> /home/<
変換できた。
線種や文字化けはなさそう。
サイズが大きいと、ページを跨いでしまうようなので、余白の設定等で、そこをなんとかできれば、
十分使えそう。
2016/02/04
SSD 換装時のMBR問題 Windows7
HDDドライブが怪しくなってきたので、SSDに換装をしたが、
HDDが1TBに対し、SSDが240GBであったため、
ディスク丸ごとクローンが使えなかった。
元のパーティションを
EaseUE Partition Master で200GB位にまで小さくしてから
EaseUE Todo BackUp Free でパーティションクローンを作った。
EaseUEさんへのリンク
http://jp.easeus.com/partition-manager-software/free.html
EaseUS Todo Backup Freeの日本語公式ページ
http://jp.easeus.com/backup-software/free.html
システムクローンだと、換装後が面倒な予感がしたため、
非推奨のようだが、パーティションのクローンを作った。
free版なので、コピー先のパーティションをActiveに出来なかった。
恐らく駄目であろうと思いつつ、
SSDに付け替えて、BIOSを変更し、起動を掛けると、
bootLoaderが無いので起動できないとエラーが起きる。
しょうがないので、元のHDDに戻し、Windows修復ディスクを作成。
コントロール パネル→システムとセキュリティ→バックアップと復元
→システム修復ディスクの作成 で起動ディスクを作成する。
BIOSで DVD→SSDにして、ディスクから起動。
先ずは、スタートアップ修復を試すが、駄目。
続いて、コマンドプロンプトから
>bootsect /nt60 sys /mbr [ent]
でwindwos7用のブートストラップローダを書き込こもうとするが、
パーティションがアクティブでないので、書けないとエラーが返ってきた。
diskをactiveにしたいので、diskpaetコマンドを使う。
>DISKPART [ent]
・ディスクのリスト表示
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 200 GB 1024 KB
・ディスクを選択する。
DISKPART> select disk 0 [ent]
ディスク 0 が選択されました。
・パーティションのリスト表示
DISKPART> list partition [ent]
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 200GB 31 KB
・パーティションを選択
DISKPART> select partition 1 [ent]
パーティション 1 が選択されました。
・activeにする
DISKPART> active [ent]
DiskPart は現在のパーティションをアクティブとしてマークしました。
DISKPART> exit [ent]
>bootsect /nt60 sys /mbr [ent]
ブートストラップローダを書き込んでくれるので、一旦再起動する。
>exit [ent]
これで再行動掛ける。
SSDからブートすると
BOOTMGR is missing というエラーが吐き出される。
BOOTMGR is missingが出るので、PBR(パーティションの先頭セクタ)は
生き返った。
恐らく、アクティブパーティションの設定がオカシイ。論理フォーマットが駄目なようだ。
再度システム修復ディスクから立ち上げて、
スタートアップ修復で起動可能になった。
>bootrec /fixboot
>bootrec /fixmbr
コマンドだと駄目だった。
HDDが1TBに対し、SSDが240GBであったため、
ディスク丸ごとクローンが使えなかった。
元のパーティションを
EaseUE Partition Master で200GB位にまで小さくしてから
EaseUE Todo BackUp Free でパーティションクローンを作った。
EaseUEさんへのリンク
http://jp.easeus.com/partition-manager-software/free.html
EaseUS Todo Backup Freeの日本語公式ページ
http://jp.easeus.com/backup-software/free.html
システムクローンだと、換装後が面倒な予感がしたため、
非推奨のようだが、パーティションのクローンを作った。
free版なので、コピー先のパーティションをActiveに出来なかった。
恐らく駄目であろうと思いつつ、
SSDに付け替えて、BIOSを変更し、起動を掛けると、
bootLoaderが無いので起動できないとエラーが起きる。
しょうがないので、元のHDDに戻し、Windows修復ディスクを作成。
コントロール パネル→システムとセキュリティ→バックアップと復元
→システム修復ディスクの作成 で起動ディスクを作成する。
BIOSで DVD→SSDにして、ディスクから起動。
先ずは、スタートアップ修復を試すが、駄目。
続いて、コマンドプロンプトから
>bootsect /nt60 sys /mbr [ent]
でwindwos7用のブートストラップローダを書き込こもうとするが、
パーティションがアクティブでないので、書けないとエラーが返ってきた。
diskをactiveにしたいので、diskpaetコマンドを使う。
>DISKPART [ent]
・ディスクのリスト表示
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 200 GB 1024 KB
・ディスクを選択する。
DISKPART> select disk 0 [ent]
ディスク 0 が選択されました。
・パーティションのリスト表示
DISKPART> list partition [ent]
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 200GB 31 KB
・パーティションを選択
DISKPART> select partition 1 [ent]
パーティション 1 が選択されました。
・activeにする
DISKPART> active [ent]
DiskPart は現在のパーティションをアクティブとしてマークしました。
DISKPART> exit [ent]
>bootsect /nt60 sys /mbr [ent]
ブートストラップローダを書き込んでくれるので、一旦再起動する。
>exit [ent]
これで再行動掛ける。
SSDからブートすると
BOOTMGR is missing というエラーが吐き出される。
BOOTMGR is missingが出るので、PBR(パーティションの先頭セクタ)は
生き返った。
恐らく、アクティブパーティションの設定がオカシイ。論理フォーマットが駄目なようだ。
再度システム修復ディスクから立ち上げて、
スタートアップ修復で起動可能になった。
>bootrec /fixboot
>bootrec /fixmbr
コマンドだと駄目だった。
2016/01/05
pdfに日付のフッターを付ける。(Pdftkを使ってなるべく軽くやる。)
以前、pdftkでスタンプを作ったが、
同じ原理で、タイムスタンプを押したいという話になった。
itextを使うといった手法もあるようだが、
費用が掛からず、なるべく動作が軽い方向で検討してみる。
過去の財産を有効活用するため、
フッターに日付を持ったpdfを作成してみる。
いきなりPDFは作成できないので、
psファイルを一旦作成し、それをPDFに変換することにする。
a2psがデフォルトでインストールされていないので、
# yum install a2ps
なるべく重たくしないように、一回だけ改行した text.txtを作成し、footer.psに変換
コマンドは
$ a2ps text.txt -B -R --borders=no --footer=`date +%Y-%m-%d-%H:%M` -o footer.ps
オプションの補足
-B フレームを消す。
-R 用紙を縦にする。
--borders=no 外枠を消す。
--footer=`date +%Y-%m-%d-%H:%M` フッターに2015-01-01-01:01のタイムスタンプ
-o ファイル形式で出力する。
続いて、pdfに変換
$ ps2pdf footer.ps footer.pdf
以上。
これをcron等で、5分おき程度に作成させておけば、良い。
オプションを調べるのに凄く時間を消費したので、メモしておく。
同じ原理で、タイムスタンプを押したいという話になった。
itextを使うといった手法もあるようだが、
費用が掛からず、なるべく動作が軽い方向で検討してみる。
過去の財産を有効活用するため、
フッターに日付を持ったpdfを作成してみる。
いきなりPDFは作成できないので、
psファイルを一旦作成し、それをPDFに変換することにする。
a2psがデフォルトでインストールされていないので、
# yum install a2ps
なるべく重たくしないように、一回だけ改行した text.txtを作成し、footer.psに変換
コマンドは
$ a2ps text.txt -B -R --borders=no --footer=`date +%Y-%m-%d-%H:%M` -o footer.ps
オプションの補足
-B フレームを消す。
-R 用紙を縦にする。
--borders=no 外枠を消す。
--footer=`date +%Y-%m-%d-%H:%M` フッターに2015-01-01-01:01のタイムスタンプ
-o ファイル形式で出力する。
続いて、pdfに変換
$ ps2pdf footer.ps footer.pdf
以上。
これをcron等で、5分おき程度に作成させておけば、良い。
オプションを調べるのに凄く時間を消費したので、メモしておく。
2015/12/25
PHPExcel MSSqlServer PHPの記述
DBから取ってくる際には、shift-jisでページを作成しておかないと文字化けしたので、
やむを得ず、shift-jisで取り扱ったが、PHPExcelでのセルへの書き込みは
UTF-8で行う必要が有るため、MSSqlServerのエンコードCP932をUTF-8にして書き込む。
忘れやすいので、記載例を残す。
<?php
//PHPExcelの読み込み。
require_once("./Classes/PHPExcel.php");
require_once("./Classes/PHPExcel/IOFactory.php");
//タイムゾーン指定
date_default_timezone_set('Asia/Tokyo');
//MSSQLに接続。
$server='192.168.0.XXX:1433';
$username='USR_XXX';
$password='*******';
$con=mssql_connect($server,$username,$password);
//データベースを選択
mssql_select_db('DBの名前');
//クエリ作成。
$query = mssql_query("select~ 適宜作成 ");
//DBからデータ取得。
$col = mssql_fetch_array($query)
//PHPexcel xslx 形式の定義。
$reader = PHPExcel_IOFactory::createReader('Excel2007');
//example.xlsxを下敷きにする。
$excel = $reader->load("./下敷きにするエクセル.xlsx");
// シート設定。
$excel->setActiveSheetIndex(0);//何番目のシートか
$sheet = $excel->getActiveSheet();//有効になっているシートを代入
// セル値指定。
//日本語の指定が面倒。
//書き込みはUTF-8で行う必要が有るため、MSSqlServerのエンコードCP932をUTF-8にして書き込む。
$sheet->setCellValue('A1', mb_convert_encoding($name, 'UTF-8','auto'));//セルに値を入力。
$sheet->setCellValue('A2', mb_convert_encoding($addr, 'UTF-8','auto'));
$sheet->setCellValue('A3', mb_convert_encoding($requester, 'UTF-8','auto'));
$sheet->setCellValue('A4', mb_convert_encoding($TEL, 'UTF-8','auto'));
$sheet->setCellValue('A5', mb_convert_encoding($FAX, 'UTF-8','auto'));
$sheet->setCellValue('A6', $Number);//内部変数で扱うものは、特にエンコード不要。
//Excel2007形式(xlsx)のライターを作成。
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
//ファイル出力。
$writer->save($Number.".".xlsx);
//結果セットを破棄。
mssql_free_result($query);
//SQL Serverとの接続を解除。
mssql_close();
?>
やむを得ず、shift-jisで取り扱ったが、PHPExcelでのセルへの書き込みは
UTF-8で行う必要が有るため、MSSqlServerのエンコードCP932をUTF-8にして書き込む。
忘れやすいので、記載例を残す。
<?php
//PHPExcelの読み込み。
require_once("./Classes/PHPExcel.php");
require_once("./Classes/PHPExcel/IOFactory.php");
//タイムゾーン指定
date_default_timezone_set('Asia/Tokyo');
//MSSQLに接続。
$server='192.168.0.XXX:1433';
$username='USR_XXX';
$password='*******';
$con=mssql_connect($server,$username,$password);
//データベースを選択
mssql_select_db('DBの名前');
//クエリ作成。
$query = mssql_query("select~ 適宜作成 ");
//DBからデータ取得。
$col = mssql_fetch_array($query)
//PHPexcel xslx 形式の定義。
$reader = PHPExcel_IOFactory::createReader('Excel2007');
//example.xlsxを下敷きにする。
$excel = $reader->load("./下敷きにするエクセル.xlsx");
// シート設定。
$excel->setActiveSheetIndex(0);//何番目のシートか
$sheet = $excel->getActiveSheet();//有効になっているシートを代入
// セル値指定。
//日本語の指定が面倒。
//書き込みはUTF-8で行う必要が有るため、MSSqlServerのエンコードCP932をUTF-8にして書き込む。
$sheet->setCellValue('A1', mb_convert_encoding($name, 'UTF-8','auto'));//セルに値を入力。
$sheet->setCellValue('A2', mb_convert_encoding($addr, 'UTF-8','auto'));
$sheet->setCellValue('A3', mb_convert_encoding($requester, 'UTF-8','auto'));
$sheet->setCellValue('A4', mb_convert_encoding($TEL, 'UTF-8','auto'));
$sheet->setCellValue('A5', mb_convert_encoding($FAX, 'UTF-8','auto'));
$sheet->setCellValue('A6', $Number);//内部変数で扱うものは、特にエンコード不要。
//Excel2007形式(xlsx)のライターを作成。
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
//ファイル出力。
$writer->save($Number.".".xlsx);
//結果セットを破棄。
mssql_free_result($query);
//SQL Serverとの接続を解除。
mssql_close();
?>
2015/12/21
PHPExcel MSSQLServerへの接続時エラーのメモ
開発ベンダが、DBの中身をShift-JISで格納してしまっているため、
PHP等をshift-jisで書かないと不具合が出る。
UTF-8の方がいろいろと都合がいいので、
mb_convert_encodingを使ったのだが上手くいかない・・・。
さぁ、動きそうだなというところで、今度は、別のエラーを検出
Warning: strtotime(): It is not safe to rely on the
system's timezone settings. You are *required* to use the date.timezone
setting or the date_default_timezone_set() function. In case you used
any of those methods and you are still getting this warning, you most
likely misspelled the timezone identifier. We selected the timezone
'UTC' for now, but please set date.timezone to select your timezone.
date_default_timezone_getで宣言しろ
ということなので、PHPの頭に
date_default_timezone_set('Asia/Tokyo');
を書いたら動いた。
Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Could not close zip
この辺のエラーはディレクトリに書き込み権限が無い場合によると思う。
パーミッションを 777 とかにして試験してみれば、行けると思う。
2015/12/11
PHPExcel 実装
DBの扱いで最も手間が掛かるのが帳票だと思う。
基幹システムがjavaで書かれているので、
現状DBを舐めてデータを取得し、velocity、xls_foを使ってPDFを作成している。
この際、整形の為 xsl_foを苦労して造るのだが、
この作業が如何せん手間が掛かる。
スタッフからは「ここを直せ」と言われ、
クライアントからは「仕様が変わったから帳票変更」で片づけられる。
クライアントからは、エクセルで帳票のフォーマットが送られてくるので、
何とかvelocityでエクセルを扱おうとしたが、マージするくらいなら、
xsl_foを0から書いた方が楽な場合が多く、困っていた。
色々と探してみると、PHPでいいのがあるではないか!!
早速、ライブラリを使ってみる。
PHPは5.2以上で
php_zip, php_xml, php_gd2が拡張されているのが条件らしい。
php_xml, php_gd2がenableされていなかったので、
/etc/php.ini を編集
php_gd2は
# yum install php-gd でOKだった。
# systemctl restart httpd で設定読み直し
続いて、ライブラリのダウンロード
本家から最新のPHPExcel_1.8.0 をダウンロードする。
使い方は、PHP動かすディレクトリにClassesファイルを置いて、
require_onceでライブラリを読み込ませればOK
色々な参考サイトで、include_onceで書いている人が多かったが、
何故かinclude では上手く動かなかった。
以下PHPの例
マクロやVBAが入っていると上手くないというコメントも見られるが、
エクセルで設定した罫線や、文字サイズなどがキッチリ継承されるので、
すごーく便利。
もっと早く使いたかった・・・。
基幹システムがjavaで書かれているので、
現状DBを舐めてデータを取得し、velocity、xls_foを使ってPDFを作成している。
この際、整形の為 xsl_foを苦労して造るのだが、
この作業が如何せん手間が掛かる。
スタッフからは「ここを直せ」と言われ、
クライアントからは「仕様が変わったから帳票変更」で片づけられる。
クライアントからは、エクセルで帳票のフォーマットが送られてくるので、
何とかvelocityでエクセルを扱おうとしたが、マージするくらいなら、
xsl_foを0から書いた方が楽な場合が多く、困っていた。
色々と探してみると、PHPでいいのがあるではないか!!
早速、ライブラリを使ってみる。
PHPは5.2以上で
php_zip, php_xml, php_gd2が拡張されているのが条件らしい。
php_xml, php_gd2がenableされていなかったので、
/etc/php.ini を編集
php_gd2は
# yum install php-gd でOKだった。
# systemctl restart httpd で設定読み直し
続いて、ライブラリのダウンロード
本家から最新のPHPExcel_1.8.0 をダウンロードする。
使い方は、PHP動かすディレクトリにClassesファイルを置いて、
require_onceでライブラリを読み込ませればOK
色々な参考サイトで、include_onceで書いている人が多かったが、
何故かinclude では上手く動かなかった。
以下PHPの例
<?
//PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
require_once("./Classes/PHPExcel/IOFactory.php");
//PHPexcel xslx 形式の定義
$reader = PHPExcel_IOFactory::createReader('Excel2007');
//base.xlsxを下敷きにする。
$excel = $reader->load("./base.xlsx");
// シート設定
$excel->setActiveSheetIndex(0);//何番目のシートか
$sheet = $excel->getActiveSheet();//有効になっているシートを代入
// セル値指定
$sheet->setCellValue('A10', 'Hello World !');//セルA10に値を入力
//Excel2007形式(xlsx)のライターを作成
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
//ファイル出力
$writer->save("helloworld.xlsx);
?>
マクロやVBAが入っていると上手くないというコメントも見られるが、
エクセルで設定した罫線や、文字サイズなどがキッチリ継承されるので、
すごーく便利。
もっと早く使いたかった・・・。
2015/10/13
非同期処理 HTML 検索窓を追加する
過去に書いた内容のブラッシュアップ
http://t0463.blogspot.jp/2015/06/windowsserver2012sshsqlcsv.html
http://t0463.blogspot.jp/2015/06/windowsserver2012sshsqlcsv.html
jquery.csv2table を使い、csvを表にして表示させているが、
検索して、行を絞り込みたいという要望が出たので、
実装させてみる。
http://jsgt.org/lib/jquery/plugin/csv2table/v002/test.htm
↑このサイトの
setting.where 行の絞込み
をほぼそのまま流用にさせていただいた。ありがとうございます。
中身はこんな感じ
<body> <input type="text" id="word"> <button type="button" id="btn-search">番号で検索</button> <input type="text" id="word2"> <button type="button" id="btn-search2">住所で検索</button> <div id="view1"></div> <script type="text/javascript"> $().ready ( function() { $('#btn-search').click ( function() { $('#view1').csv2table('./listUTF8.csv', { where: [ {'検索させたい列名':'like' + '%' + $('#word').val() + '%'} ] }); }); }); </script> <script type="text/javascript"> $().ready ( function() { $('#btn-search2').click ( function() { $('#view1').csv2table('./listUTF8.csv', { where: [ {'検索させたい列名2':'like' + '%' + $('#word2').val() + '%'} ] }); }); }); </script> <br> <font size ='2'>一覧表示</font> <div id="view0"></div> <script> $(function(){ $('#view0').csv2table('./listUTF8.csv'); }); </script> </body>
2015/09/09
CentOS7.1 PHPでSQLServerにアクセス。
この内容は古いので、MSSQLへPHPで接続(PDO接続)を参照されたい
ODBC-develをyumでインストール。
# yum install unixODBC-devel.x86_64
前回のpdftkもそうだったが、freetds-develもサポート外のようで、
ソースからビルドかと思ったが、epelで取ってこれるらしいのでやってみる。
# yum install epel-release
続いて、freetds-develをyumでインストール
# yum install freetds-devel
読み込んだプラグイン:fastestmirror, langpacks
epel/x86_64/metalink | 5.2 kB 00:00
epel | 4.3 kB 00:00
(1/3): epel/x86_64/group_gz | 169 kB 00:00
epel/x86_64/updateinfo FAILED
http://ftp.kddilabs.jp/Linux/packages/fedora/epel/7/x86_64/repodata/2c17dad24b2f96866b643bc3d4ce432833ca592ecf1af495e2b3a2361cf7ceab-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found
他のミラーを試します。
(2/3): epel/x86_64/updateinfo | 349 kB 00:00
(3/3): epel/x86_64/primary_db | 3.5 MB 00:06
Downloading packages:
警告: /var/cache/yum/x86_64/7/epel/packages/freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 3XXXXXX: NOKEY
freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm の公開鍵がインストールされていません
(1/2): freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm | 48 kB 00:00
(2/2): freetds-0.91-12.git0a42888.el7.x86_64.rpm | 1.1 MB 00:00
--------------------------------------------------------------------------------
合計 2.4 MB/s | 1.2 MB 00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0xXXXXXXX:
Userid : "Fedora EPEL (7)"
Package : epel-release-7-5.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
上記の処理を行います。よろしいでしょうか? [y/N]y
途中上記の警告が出たが、インストールできた模様。
早速、phpで接続試験をすると、SqlServerにアクセスしていないようだ。
なんでだろう?
info.phpを作って調べると、php-mssql.x86_64 がインストールされていない模様。
# yum install php-mssql.x86_64
で
# systemctl restart httpd.service
で動いた。
接続の試験用
$server='192.168.XXX.XXX:1433';
$username='USR_XXX';
$password='*****';
$con=mssql_connect($server,$username,$password);
if($con !=FALSE)
{
echo "Connection to SqlServer successful";
}
else
{
die("Connection to SqlServer failed");
}
mssql_close($con);
?>
ODBC-develをyumでインストール。
# yum install unixODBC-devel.x86_64
前回のpdftkもそうだったが、freetds-develもサポート外のようで、
ソースからビルドかと思ったが、epelで取ってこれるらしいのでやってみる。
# yum install epel-release
続いて、freetds-develをyumでインストール
# yum install freetds-devel
読み込んだプラグイン:fastestmirror, langpacks
epel/x86_64/metalink | 5.2 kB 00:00
epel | 4.3 kB 00:00
(1/3): epel/x86_64/group_gz | 169 kB 00:00
epel/x86_64/updateinfo FAILED
http://ftp.kddilabs.jp/Linux/packages/fedora/epel/7/x86_64/repodata/2c17dad24b2f96866b643bc3d4ce432833ca592ecf1af495e2b3a2361cf7ceab-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found
他のミラーを試します。
(2/3): epel/x86_64/updateinfo | 349 kB 00:00
(3/3): epel/x86_64/primary_db | 3.5 MB 00:06
Downloading packages:
警告: /var/cache/yum/x86_64/7/epel/packages/freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 3XXXXXX: NOKEY
freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm の公開鍵がインストールされていません
(1/2): freetds-devel-0.91-12.git0a42888.el7.x86_64.rpm | 48 kB 00:00
(2/2): freetds-0.91-12.git0a42888.el7.x86_64.rpm | 1.1 MB 00:00
--------------------------------------------------------------------------------
合計 2.4 MB/s | 1.2 MB 00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0xXXXXXXX:
Userid : "Fedora EPEL (7)
Package : epel-release-7-5.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
上記の処理を行います。よろしいでしょうか? [y/N]y
途中上記の警告が出たが、インストールできた模様。
早速、phpで接続試験をすると、SqlServerにアクセスしていないようだ。
なんでだろう?
info.phpを作って調べると、php-mssql.x86_64 がインストールされていない模様。
# yum install php-mssql.x86_64
で
# systemctl restart httpd.service
で動いた。
接続の試験用
$server='192.168.XXX.XXX:1433';
$username='USR_XXX';
$password='*****';
$con=mssql_connect($server,$username,$password);
if($con !=FALSE)
{
echo "Connection to SqlServer successful";
}
else
{
die("Connection to SqlServer failed");
}
mssql_close($con);
?>
2015/09/01
CentOS7.1 Logwatchのメールを送信する。
CentOS5.xはport25を開ければ、そのまんま飛んできたが、
CentOS7.1はどうもデフォルトのままでは、Logwatchが飛ばないらしい。
まずは、メールソフトは何が動いているのか?を調べてみる。
sendmailが入っているか?
# systemctl status sendmail.service sendmail.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
sendmailはサービスとして認識されているが、インストールされていない模様。
yumにメール関連は入っていないのか?と思ったが、
# yum list installed
postfix.x86_64 2:2.10.1-6.el7 @anacondapostfixがインストールされていた。
sendmailが標準ではなくなったようだ。
動いているか確認。
# systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: active (running) since 金 2015-08-28 19:30:38 JST; 3 days ago
自動起動していた・・・。
postfixの設定
#nano /etc/postfix/main.cf
myhostname = mail.何か名前.com 追加
mydomain = 何か名前.com 追加
myorigin = $mydomain コメント解除し、ローカルからの送信時ドメイン名を付与
inet_interfaces = localhost 今の所、受信はしないつもりなので、このまま
inet_protocols = ipv4 IPv6許容して無い時は影響受けるらしいので、記述
#mydestination = $myhostname, localhost.$mydomain, localhost コメント化
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain コメント解除し自己メール許容
home_mailbox = Maildir/ コメント解除
保存して、postfixを再起動。
# systemctl restart postfix.service
# systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: active (running) since 火 2015-09-01 10:36:14 JST; 4s ago
Process: 9847 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 9862 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 9859 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 9857 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
logwatchのメールを送ってみる。
# /etc/cron.daily/0logwatch
指定のアドレスにメールが届けばOK。
ポート25の開放の方法は
# firewall-cmd --add-service=smtp --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (default, active)
interfaces: enp2s0
sources:
services: dhcpv6-client http postgresql samba smtp ssh tomcat
ports: 8080/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
追記
logwatchのメールを複数に送信する場合は、
# nano /usr/share/logwatch/default.conf/logwatch.conf
Detail = Med
MailTo = 任意のアドレス 任意のアドレス2 (半角スペースを挟めば良い模様)
2015/08/28
CentOS7.1 無理やり PDFTkをインストールする。
CentOS7.1にして、ありゃりゃな事に遭遇。
PDFTkがRPMでインストールできなかった・・・。
以前の作業(PDFTkをRPMでインストール)
http://t0463.blogspot.jp/2014/12/pdfpdftk.html
フォーラム等によると、どうも、libgcjとかいうライブラリがCentOS7から入っていない為、駄目らしい
https://github.com/documentcloud/docsplit/issues/123 此処に
building PDFtk on RHEL 7 currently isn't possible due to upstrean (Fedora) dropping support for libgcj
とあるので、サポートして無いのだろう。
だがしかし、こちらに偉大な先人が 数名いらっしゃった。
http://ume.macoron.net/archives/7627
http://blog.cyber-support.info/article/424149031.html
ベクタ画像を描くのに必要となる基本的なライブラリを入れる。
yum install libart_lgpl
つづいて、そのサポートしなくなったlibgcjのパッケージを用意
# wget http://ftp.riken.jp/Linux/centos/6.7/os/x86_64/Packages/libgcj-4.4.7-16.el6.x86_64.rpm
# rpm -iv --force libgcj-4.4.7-16.el6.x86_64.rpm
最後にPDFTkを持ってくる。
# wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm
# rpm -ivh pdftk-2.02-1.el6.x86_64.rpm
動いているようなので、良かった・・・。
OSのアップグレードはこういうのがネックだと感じる。
PDFTkがRPMでインストールできなかった・・・。
以前の作業(PDFTkをRPMでインストール)
http://t0463.blogspot.jp/2014/12/pdfpdftk.html
フォーラム等によると、どうも、libgcjとかいうライブラリがCentOS7から入っていない為、駄目らしい
https://github.com/documentcloud/docsplit/issues/123 此処に
building PDFtk on RHEL 7 currently isn't possible due to upstrean (Fedora) dropping support for libgcj
とあるので、サポートして無いのだろう。
だがしかし、こちらに偉大な先人が 数名いらっしゃった。
http://ume.macoron.net/archives/7627
http://blog.cyber-support.info/article/424149031.html
ベクタ画像を描くのに必要となる基本的なライブラリを入れる。
yum install libart_lgpl
GNUのコンパイラも必要みたいなので、CentOS6.7のものをPRMでインストール
# wget http://ftp.riken.jp/Linux/centos/6.7/os/x86_64/Packages/gmp-4.3.1-7.el6_2.2.x86_64.rpm# rpm -iv --force gmp-4.3.1-7.el6_2.2.x86_64.rpm
つづいて、そのサポートしなくなったlibgcjのパッケージを用意
# wget http://ftp.riken.jp/Linux/centos/6.7/os/x86_64/Packages/libgcj-4.4.7-16.el6.x86_64.rpm
# rpm -iv --force libgcj-4.4.7-16.el6.x86_64.rpm
最後にPDFTkを持ってくる。
# wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm
# rpm -ivh pdftk-2.02-1.el6.x86_64.rpm
動いているようなので、良かった・・・。
OSのアップグレードはこういうのがネックだと感じる。
2015/08/22
CentOS7.1 Logwatch と crontabの設定
# yum install logwatch
# nano /usr/share/logwatch/default.conf/logwatch.conf
Detail = Med
MailTo = 任意のアドレス
以前の記事にあるが、crontabの時間がランダムになってしますので、
レガシーなcrontabにする。
# yum install cronie-noanacron
# rpm -e cronie-anacron
# nano /etc/cron.d/dailyjobs を修正。
2015/08/21
CentOS7.1 sambaインストール
http://desktop-linux.namakemono345.com/samba-centos-7/
これは、特に考えずにyumでインストールする。
# yum install samba
sambaの設定
[global]内に以下を、書き換え、追加する。
workgroup = workgroup
server string = 表示したいことを書いておく
netbios name = 表示したいことを書いておく
#windowsからのアクセスを許容する
map to guest = bad user
末尾に
[共有させる名称] ←この名前で認識される
comment = 名称
; browseable = yes
create mode = 0777
directory mode = 0777
path = /home/任意ディレクトリ
guest ok = yes
only guest = yes
writeable = yes
上記は基本全権限。
ディレクトリを作る。
#mkdir /home/任意ディレクトリ
OS起動時に自動起動にする
自動起動を有効にする。
# systemctl enable smb
これは、特に考えずにyumでインストールする。
# yum install samba
sambaの設定
[global]内に以下を、書き換え、追加する。
workgroup = workgroup
server string = 表示したいことを書いておく
netbios name = 表示したいことを書いておく
#windowsからのアクセスを許容する
map to guest = bad user
末尾に
[共有させる名称] ←この名前で認識される
comment = 名称
; browseable = yes
create mode = 0777
directory mode = 0777
path = /home/任意ディレクトリ
guest ok = yes
only guest = yes
writeable = yes
上記は基本全権限。
ディレクトリを作る。
#mkdir /home/任意ディレクトリ
OS起動時に自動起動にする
自動起動を有効にする。
# systemctl enable smb
# systemctl list-unit-files で確認。
smb.service enabled
起動
# systemctl start smb
ファイアーフォール開ける。
# firewall-cmd --add-service=samba --permanent
# firewall-cmd --reload
Windowsマシンからアクセスすると、
ディレクトリに入って中が見えるのに、書き込もうとすると
アクセス権限が無いといわれる。
そのくせ、デリートは出来たみたいになる。
(Linux上では消えていないので、オカシイ)
SELinuxがわるさしてるっぽいので動いているか調べる
# getenforce
Enforcing
動いておるので、とりあえず止めてみる。
動いておるので、とりあえず止めてみる。
# setenforce 0
これでwindows側から修正できた。
postgresの絡みの部分も再起動する毎、読み込まない症状が出たので、
社内用のサーバなので、セキュリティはそこそこで良いためSElinuxはとりあえず止める。
社内用のサーバなので、セキュリティはそこそこで良いためSElinuxはとりあえず止める。
# nano /etc/selinux/config
SELINUX=disabled
SELinuxの件で2時間程嵌った・・・・。
CentOS7.1 HDDの追加
今回追加するHDDは2Tbi以下で、尚且つインターネットに曝されていないので、
XFSフォーマットで行う(centOS6で云うext4はXFSに変わったので)
HDDを取り付け、はじめにHDDが認識されているか確認
(LVMは手順が多いし、過去にVGの名称が同じなのに誤ってつないでしまい、データを壊した経験があるので喰わず嫌いなのである・・・。)
[ 3.602350] sda: sda1 sda2
[ 3.602758] sd 0:0:0:0: [sda] Attached SCSI disk
[ 3.619862] sdb: unknown partition table
[ 3.620061] sd 1:0:0:0: [sdb] Attached SCSI disk
[ 8.846799] XFS (sda1): Mounting V4 Filesystem
[ 10.971040] XFS (sda1): Ending clean mount
[ 10.971065] SELinux: initialized (dev sda1, type xfs), uses xattr
サイズ等を認識しているかを確認する。
# fdisk -l
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbe76e7c2.
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
コマンド (m でヘルプ):
コマンドの動作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Pを入れて、パーテーションを設定
コマンド (m でヘルプ): p
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0xc7f836c8
デバイス ブート 始点 終点 ブロック Id システム
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-3907029167, 初期値 2048):エンター
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-3907029167, 初期値 3907029167):エンター
初期値 3907029167 を使います
Partition 1 of type Linux and of size 1.8 TiB is set
コマンド (m でヘルプ): p
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0xc7f836c8
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 3907029167 1953513560 83 Linux
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
XFSタイプのファイルシステムを作成する。
# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=122094598 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=488378390, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=238466, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
続いて追加したHDDをstorage2としてマウントさせる
# mkdir /home/storage2
# mount /dev/sdb1 /home/storage2
# chown ユーザ名 /home/storage2/
dfで確認
# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root 52403200 4574420 47828780 9% /
devtmpfs 2920376 0 2920376 0% /dev
tmpfs 2930520 80 2930440 1% /dev/shm
tmpfs 2930520 8964 2921556 1% /run
tmpfs 2930520 0 2930520 0% /sys/fs/cgroup
/dev/mapper/centos-home 1893548692 85400 1893463292 1% /home
/dev/sda1 505580 127680 377900 26% /boot
/dev/sdb1 1952559696 32976 1952526720 1% /home/storage2
常時、マウントするようにfstabを編集する。赤を追記(UUIDは置き換えること)
# blkid /dev/sdb1
/dev/sdb1: UUID="320f300e-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"
# nano /etc/fstab
末尾に追加
#追加HDD
UUID=320f300e-XXXX-XXXX-XXXX-XXXXXXXXXXXX /home/storage2 xfs defaults 0 0
再起動してみて自動的にマウントされていればOK。
CentOS7.1 PHP インストールとhttpdやFirewallの設定
# yum install php php-mbstring php-pdo php-pgsql
5.4.16なので、そのままyumでインストールする。
一気にyum install php* をやったら依存関係で怒られた。
インストール後の設定
# nano /etc/php.ini
short_open_tag = off を on へ
;extension=msql.so の;を外して有効にする。
下に
extension=pgsql.so
extension=mbstring.so
を追加
httpd.confにもphpの内容を追加する。
の項目内に
AddType application/x-httpd-php .php
を追記。
httpdを再起動
# systemctl start httpd.service
続いて
# firewall-cmd --add-service=postgresql --permanent
# firewall-cmd --reload
クライアントからアクセスして、PHPが予定通り動けばOK。
5.4.16なので、そのままyumでインストールする。
一気にyum install php* をやったら依存関係で怒られた。
インストール後の設定
# nano /etc/php.ini
short_open_tag = off を on へ
;extension=msql.so の;を外して有効にする。
下に
extension=pgsql.so
extension=mbstring.so
を追加
httpd.confにもphpの内容を追加する。
AddType application/x-httpd-php .php
を追記。
httpdを再起動
# systemctl start httpd.service
続いて
# firewall-cmd --add-service=postgresql --permanent
# firewall-cmd --reload
クライアントからアクセスして、PHPが予定通り動けばOK。
登録:
投稿 (Atom)