2018年8月21日火曜日

サイトの引っ越し

サイトと移転に関して



新規で新しいブログを立ち上げたので引っ越しします。
ここの内容は自分用に残しておきますが、更新されることは無いと思う。
たぶん、きっと

なぜ引っ越しをするかというとBloggerを使ってきたけどちょっとね、使いにくいよね。
それと明確にカテゴリ分けをせずにやった仕事のログとして残していたので読みにくいというのもありました。

最初にブログを作った時には自分用にと思っていたのですが何名か記事を見に来てくれていた様なので
少しは人様の為になったのかなと思っています。


引っ越し先で今の記事の焼きなおしをするかもしれませんがそれはいつになるか…





というわけで新しい引っ越し先はこちらです。
主に技術系のことですね。web ionic angularのこと勉強し始めたのでまとめとして使っています。
砂場BOX
その他サーバーのことも書けたらいいな。

今後はこちらに記事を投稿していきます。


間違った知識等を書いていましたらご指摘いただけますと幸いです。

2013年8月5日月曜日

phpとか %d とか %s とかの話

%dとか、なに
何それ

と言うわけで調べました

sprintf


http://c-brains.jp/blog/wsg/09/12/07-172920.php



//sprintf(フォーマットを定義する文字列, [差し込む変数1, [差し込む変数2 ...]]);

$format = "%sだと%sが%sます。";

$aaaa = '毎日(日)曜日';
$bbbb  = '僕';
$cccc = '喜び';

$message = sprintf($format, $aaaa, $bbbb, $cccc);

echo $message;


ちょっと色味が悪いけど
【出力結果】

毎日(日)曜日だとます。

参考URLにもありますが
$message = "{$weekday}は{$author}が{$blog}っす。";

でも良い。
個人的に下の方が書きやすいんだけど
なんか使い道あるのかな?


そして、このフォーマットを定義する文字列に挿入する変換指定子(%で始まる要素。文字列を差し込む場合は %s となります。

えーと文字列を扱う時には%sにしろってこと?

順番を指定(%の次の1、2という数字)することができる点が、この関数の便利なところです。
%d\1とかで$aaa $bbb $cccを指定できるっぽい


$format = "%1\$sが%2\$sで%4\$sが%3\$sです。";

【1 $aaa  = '';
【2 $bbb = '';
【3 $ccc = '';
【4 $ddd = 'あなた';
                                        1     2       3       4
$message = sprintf($format, $aaa, $bbb, $ccc, $ddd);

【出力結果】
1     2     4          3
あなたです。


ちなみに
                                          4      3      2       1
$message2 = sprintf($format, $ddd ,$ccc ,$bbb , $aaa);

【出力結果】
あなたです。

になった

てことは
sprintfの順番と%1が紐付いてるってことっすね

まあ当然なんですが。
忘れやすいのでメモ



ちなみに
さっきのを%dにすると
$format = "%dだと%dが%dます。";

0だと0が0ます。
になる。



【追加】
%d10進数
%u符号無し10進数
%o符号無し8進数
%x符号無し16進数
%X符号無し16進数(大文字表記)
%e指数形式の浮動小数点
%E%eと同じ(大文字表記)
%f固定小数点形式の浮動小数点
%g%eまたは%fと同じ
%G%eまたは%fと同じ(大文字表記)
%b符号無し2進数
%c指定した文字コードに対応した文字
%s文字列
%p値のポインタ
%n文字数を指定した変数に格納
%%%の文字そのもの(\と同様の使い方)
















2013年5月23日木曜日

iptablesの話



centosをインストールし、httpdをyumしてきました。
外部に向けて公開使用と思ったのですがうまくつながらない。
ポートが開いていない様だ。
何故。。。

色々調べた結果
iptablesが原因なのではないかという予想を立てる。
iptablesを止める
/etc/init.d/iptables stop
するとポートが通る

…うん。完全にそれだね。
/etc/init.d/iptables start
で再び起動し、

vim /etc/sysconfig/iptables

開くと
だいたいこんな感じ
↓はネットから持ってきたやつ
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited




これにhttpのポートをあけてやる
ついでだからFTPも?

#■↓ HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#■↓ FTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

一応これで良いらしい!
--dport 80 って書いてあるし!
保存して
【restart】

そしてポート確認君で80番ポートを・・・
開かないって言うね。

その後色々試した。
本当に色々試した。
が、分からず。
iptable壊れてるのかなー、再インストールかなーとか思ってたのですが

ずーーーーっとネットで調べて、遊んで調べて、の結果
1つの記事にたどり着きました。

http://g-taki.com/wordpress/web/5883.html

まるっとコピペ

[root@centos ~]# iptables -L –line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp — anywhere anywhere
3 ACCEPT all — anywhere anywhere
4 ACCEPT tcp — anywhere anywhere state NEW tcp dpt:ssh
5 REJECT all — anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all — anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Chain INPUTがフィルターの流れ。
4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
つまりこの間に、httpやhttpsといった外部からつなげたいポートを許可する設定を書くって訳だ。



4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
ん?

4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
んん?

reject?
ふむふむ

で、rejectってなに?

http://chidipy.jpn.com/server/iptables/iptables.htm

iptables -A FIREWALL1 -j REJECT --reject-with icmp-host-prohibited   ← 先に許可したポート以外全て不許可にする

んーなるほどね。

で、うちのiptablesは?

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d hogehoge -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

えーと、【先に】許可したポート以外すべて不許可にするだから。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

後に書かれてるものは不許可?


…てことはさ

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d hogehoge -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
#↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

こうすれば通るんじゃない?

保存してrestart


確認君で80を確認…通った!!

通った通った!
  ポートが通った!
駄スレも立った!
      \|/
⊂⌒⊃   ― ● ―
  ⊂⊃  /|\
     ⊂⊃  ⊂⊃
/~\へ/~\へヘ/~\
ハ`ハハハハ`ハハ`ハハハハハ`ハハハハ
" """" """ """" """"
∥=∥=∥=∥=∥=∥=∥
" "∧_∧" """ """" "
" (´∀`) "e@@e"""
"⊂  ⊃" (・∀・)_ノ
○(  ノ""とと__つ
"" )_)) "" " "" ""ミ
"" "" ∧∧" """ __
" "" (∀・;) "" | ∥
""" ⊂⊂⌒ヽ"" |_∥
"" プル )) )○∠_/)
"" (( (_(_ノ ))プル◎
||" ""||" ""||" ""||
||二二||二二||二二||



iptables恐るべし

今回参考にしたサイト

http://tech.hitsug.net/?CentOS/iptables

http://g-taki.com/wordpress/web/5883.html

http://chidipy.jpn.com/server/iptables/iptables.htm

http://krakenbeal.blogspot.jp/2012/03/centos62iptables.html

2013年4月22日月曜日

cronのお話


EC2からメールが着たんだけど・・・
You recently reached a limit on the volume of email you were able to send out of SMTP port 25 on your instance:

あなたは最近、あなたのインスタンスでSMTPポート25の外に送信することができましたメールの量の制限に達した:

というメールが来た。

メール出してねえよ!?
とか思って/var/log/maillog   を見たら何かしら送って失敗してる形跡がある
しかもrootに?

色々調べたら、
cronなるものが定期的にメールを送っているらしい
取り急ぎどこぞのサイトを見て

/etc/crontab
を閲覧した結果
#MAILTO=root
というのが記述されていた
とりあえずこいつをコメントアウトしてやることにしる!

http://network.station.ez-net.jp/server/linux/service/crond/mail.asp



上を読んで
ああ、コメントアウトじゃだめなのね

MAILTO=""
コメントアウトじゃだめなんですか。orz

コベンドゥア゛ルドゥジャダベナンディスカ
オンドゥルルラギッタンディスカー!?


…はい、修正した場所です



crontab -u USERNAME -e

crontab -u root -e

/etc/crontab
/etc/anacrontab

以上の3つでMAILTO=""を追加してやった。
次の記事ではcronについて調べたいなー

あ、cron再起動する方法

/etc/init.d/crond stop
/etc/init.d/crond start

これで起動停止できます。


メール、、、来ないといいなぁ。。。

2013年4月5日金曜日

EC2 httdインストール

最初に、
yum list installedで何のパッケージが入っているか調べる。


色々入っているがapache2は無い。

一応、初期状態のyumリストを作成しておく。


yum list installed > yum_list_2013_hogehoge.txt

今回使ったのはリダイレクト >
パイプ処理についてはもっと理解してから書きます。

参考


リダイレクトとは
コマンドの実行結果を次のコマンドに受け渡して実行させる手段。

[tanaka@web1 ~]$ date > home_df.log 
[tanaka@web1 ~]$ df /home >> home_df.log



どちらもやることはhome_df.logに出力すること

>>>の違いは

>
出力先の元の内容を破棄して新しい出力に置き換えるリダイレクト処理によって、前回の出力結果は消去されてしまいます。

>>
「追記のリダイレクト処理」を行うように命令を変更します。
らしい。
1回目以降は>>にすると良いみたいですね。


次、apache インストール



■Apache2.2 yum install
今回は、すべてのパッケージをインストールします
※通常は不必要なパッケージを除いてインストールします。
▼パッケージリストの取得
# yum list | grep httpd
# yum list | grep php
▼Apache2.2のインストール
# yum -y install httpd*
■Apache設定
※念の為、設定ファイルはバックアップをとっておく事
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.def
# vi /etc/httpd/conf/httpd.conf
————————————————–

とりあえずapacheはインストール完了

conffileについては後日



▼起動と停止の方法
/etc/init.d/httpd start

▼自動起動設定
# chkconfig httpd on
# chkconfig –list httpd

debianとの違いは
/etc/init.d/apache2
/etc/init.d/httpd
パッケージ名が違うだけっぽい気がします。
confなどのファイルディレクトリはまだ見てません。



2013年4月4日木曜日

EC2の言語変更


http://blue21.ddo.jp/cloud/aws/aws_ec2/aws_ec2_alinux5.html


本語環境を設定

Amazon Linux の初期状態は、言語環境が "en_US.UTF-8" になっています。



$ cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"

なってます。


$ locale -a | grep ja

grepでjaファイルがあるか確認


ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

ありました。


OSのデフォルトを "ja_JP.utf8" に変更します。編集には root 権限が必要なので sudo を使います。

$ sudo vi /etc/sysconfig/i18n
$ cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"





これでログインし直せば、コマンドのエラーメッセージは日本語表示されます。


日本語のmanページが見たい場合は、以下のように、yum で日本語版をインストールします。


# sudo yum install man-pages-ja

man コマンドはオンラインマニュアルページを表示します.
引数としてコマンド等などの単語を指定することで使い方などの説明が表示されます.


日本語になったのでOK

完了

Amazon EC2

色々あって、centOS環境が欲しくなったのでメモ

最初にうっかりミスってcentOSをマーケットから購入した時にkey pareを設定し忘れてログインできなくなった。
orz

知り合いに聞いたら、Amazon Linux AIMを使えば良い
ベースがcentOSでいらんもの入ってない分色々覚えれるとの事

というわけで早速用意しました。


ええとまずする事
rootのパス


sshでログインすると
login as: root
Authenticating with public key "imported-openssh-key"
Please login as the ec2-user user rather than root user.
と怒られる
rootでログインするなec2-userで入れ、という意味らしい。

早速ec2-userでログインする

sudoがデフォで入っているようなので

$sudo passwd

New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.


一応ユーザーを作っておこう
作業ユーザの作成
rootになって

$adduser hogehoge
$passwd hogehoge
パスワード入力:



公開鍵と秘密鍵の作成

次に公開鍵と秘密鍵を作成します。ホームディレクトリに.sshディレクトを作成して、その中にファイル名 id_rsa として鍵を作成します。

#cd /home/domains #mkdir .ssh #ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /home/domains/.ssh/id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
この二つはただエンターを押してみた



公開鍵が id_rsa.pub、秘密鍵が id_rsa になります。


#chown -R webadmin:webadmin .ssh
#chmod 700 .ssh
#mv .ssh/id_rsa.pub .ssh/authorized_keys
#chmod 600 .ssh/authorized_keys
#mv .ssh/id_rsa /home/ec2-user
#chmod 666 /home/ec2-user/id_rsa

ファイルの所有権、パーミッションを変更して、公開鍵はauthorized_keysに名前を変更します。秘密鍵はクライアントにダウンロードする必要がありますので、ec2-userのホームディレクトに移動させます。

秘密鍵をPuTTYフォーマットに変換


これを行わないとpoderosaで認識してくれなかった。orz
というわけでputtyごった煮をインストール後
Putty鍵作成でkeyをへんかんしてやった
やったった。


して、ssh接続すると・・・成功していたのでありました。


その後、
rootでvisudoして
hoge  ALL=(ALL)       ALL
を追記

次回からhogeでログインすることにする。
完了