Amarronの日記

iOSやMac、Web系の記事を書きます。

.DS_Store とは

背景

以前書いた記事が自分の思わぬところで多くの人に見ていただけたので、もう少し「.DS_Store」について書きたいと思います。

「.DS_Store」ってなんとなく設定ファイルだと思っていたのですが、そもそもなんだっけ・・・
ということで「.DS_Store」について少し調べました。
過不足や誤記があればご連絡いただけると助かります。

  1. .DS_Storeとは
  2. コマンド(defaults write com.apple.desktopservices DSDontWriteNetworkStores true)を利用した場合の影響について
  3. コマンドを利用した場合の個人的な不具合体験談等

1. .DS_Storeとは

概要

 OS Xで作成された独自の形式の隠しファイルです。
アイコンの位置や表示設定などのフォルダ表示オプションに関するメタデータを保持しています。
デフォルトでFinder上でもリモートシステム上でもアクセスするすべてのフォルダに.DS_Storeファイルが作成されます。
 Apple側でも問題意識を持っていて、ネットワーク接続時に .DS_Store ファイルの作成を抑制する方法も紹介しています。(defaults write com.apple.desktopservices DSDontWriteNetworkStores trueコマンドの紹介)

作成されることによる問題点

  • Macユーザー以外から苦情
  • リビジョン管理時のファイル追加による負担
  • アーカイブ構造が重要である場合の余計なファイルによる構造的問題

wiki .DS_Storeより抜粋

2. コマンド(defaults write com.apple.desktopservices DSDontWriteNetworkStores true)を利用した場合の影響について

影響範囲

SMB/CIFS、AFP、NFSWebDAV サーバ
(USB、DropBox等はコマンドを実行しても作成されます。)

影響内容

Finderで予期しない動作が起こることがあります。
一例として、サーバボリューム上の項目の「情報を見る」のコメントを追加したり編集する場合、変更内容は他のクライアントやサーバ自体からは見えません。(ファイル本体ではなくメタデータに影響あり)
Mac OS X: リモートボリュームの「情報を見る」のコメントは表示されないことがあります

削除方法は色々なサイトに乗ってますが、.DS_Storeの説明や影響の記事が少なくて不安になる。。。

3. コマンドを利用した場合の個人的な不具合体験談等

 ファイルサーバ上の大きめのサイズのExcelが開けない場合がありました。
ローカルにコピーして、サーバのファイルに上書きして更新は出来ます。
自分以外の人が更新する場合ファイルがデグレードする場合があるので注意が必要です。
私のファイルサーバ上のExcel更新頻度は、週に2〜3回位なので不具合が余りなかったのかもしれません。

 私は、これからも.DS_Storeを作成しない方を選びます。
理由は、現在Excelを更新する業務は少ないし、会社の方針もGoogleDriveに移行していく予定なので今後も更新頻度は少なくなるからです。Macに変更した当初はExcelのマクロが使えない事に絶望を覚えましたが気にしないことにしました。
それ以上に、私の会社ではMacユーザーが少ない(1〜2人)ので何を見たのかが他の人に筒抜けの生活なんてもう耐えられないのです!
ファイルサーバ上で頻繁にファイルを変更するようなお仕事をされている方や重要なファイルを扱うような方は、事故を起こす可能性があるのでコマンドは利用せずにそのまま利用するのが良いのかもしれません。

Linux 基礎

概要

Linux(CeontOS)について昔まとめた資料です。
基礎なので、入門者や初心者向きです。

目次

  1. Linuxの基礎知識
  2. Linuxの基本操作
  3. ファイルとディレクトリ
  4. シェルとコマンド操作
  5. ネットワーク
  6. ユーザー管理
  7. ソフトウェアのインストール
  8. システム管理
  9. Webサーバー

1.Linuxの基礎知識

Linuxとは

1991年にフィンランドの大学生だったリーナス・トーバルスが作成。 その後開発者が改良を加え実用的なOSへと進化していく。

LinuxとはOSの一種で、厳密にはカーネルのみがLinuxカーネルとは、OSの中核部分の事でカーネルにプログラムの実行ライブラリや、日常的に使うツール、コマンド、グラフィカルなユーザーインターフェースを追加してOSとして使えるようになる。

ディストリビューション

カーネルに様々なソフトウェアをまとめたのがディストリビューション。 (多数のオープンソフトウェアや商用ソフトウェアを組み合わせ、1つのOS製品としてまとめあげたもの)

  • サーバーソフトウェア:webサーバー、メールサーバー、DNSサーバー、ファイルサーバー
  • クライアントソフト:オフィスソフト、ブラウザ
  • GUIX Windows System、ウィンドウマネージャー
  • シェル、コマンド、ライブラリ
  • Linuxカーネル

ディストリビューションの代表的な系統は3つ

系統 ディストリビューション 代表的パッケージ
Red Hat Fedora,Red Hat Enterprise Linux,CentOS RPM
Debian Debian GNU/Linux,Ubuntu,Linux Mint,Edubuntu Debian
その他 Slackware,opemSUSE,SUSE Linux Enterprise,Tiny Core Linux

※パッケージについては、7.ソフトウェアのインストールを参照

2.Linuxの基本操作

ユーザー

大きく分けて3つのユーザーがある

  • 管理ユーザ:システムの変更や実行、再起動など管理権限を持つ(root)(#で表記される)
  • システムユーザー:システムプログラムを実行するための専用アカウント(apache,DB等サービスのアカウント)
  • 一般ユーザー:作業用アカウント、通常は一般ユーザーでログインして他ではログインしない($で表記される)

※詳しくは6.ユーザー管理参照

コマンド

コマンドの正体はプログラム・ファイル。 シェル自身にもコマンドをもいくつかのコマンドをもっている。(内部コマンド、調べるにはtypeコマンドで内部コマンドか判断出来る。)

コマンド [オプション] [引数]

  • ファイル操作系コマンド
概要 コマンド 備考
ファイルの種類確認 file [ファイル名]
最初の1画面だけ表示される less [ファイル名]
所有者変更 chown [-R] [所有者] [ファイル名] ルート権限、Rオプションを変更すると配下のファイルも全て変更される
所有グループ変更 chgrp [-R] [所グループ] [ファイル名] ルート権限、Rオプションを変更すると配下のファイルも全て変更される
所有者所有グループ変更 chown [-R] [所有者:所有グループ] [ファイル名] ルート権限、Rオプションを変更すると配下のファイルも全て変更される
ファイルを探す find [ディレクトリ] [オプション] 例) find ~/ -name "hogehoge.txt"
ファイルの末尾を表示 tail [オプション] 例) tail -n 3 "hogehoge.txt"(下から3行)
tail -f "hogehoge.txt"(監視し常に最新を表示する)
  • その他
概要 コマンド 備考
使用中のシェルの確認 ps
ネットワークの再起動 /etc/init.d/network restart

変数・エイリアス

  • 変数

変数名=値
(変数に値を設定)
echo $変数名
(変数の値を確認)

  • 環境変数(定義したシェル上に加え、子シェルも変数が参照できる)

export 変数名
環境変数に設定)
printenv
環境変数の閲覧)

alias [エイリアス='コマンド [オプション 引数]']
エイリアスの設定)
unalias エイリアス
エイリアスの削除)

chkconfig サービス名 [on|off]

3.ファイルとディレクトリ

ファイルの種類

表記 概要 備考
- 通常ファイル テキストファイルとバイナリファイルがある
d ディレクトリ
l リンクファイル
b 特殊ファイル(ブロックデバイスファイル) 接続されているハードウェアも全てファイルとして抽象化して扱う。例えば、プリンターを表すデバイスファイルに文字列を書き込むとプリンターが印刷されて出力されたり
c 特殊ファイル(キャラクタデバイス) 接続されているハードウェアも全てファイルとして抽象化して扱う。例えば、プリンターを表すデバイスファイルに文字列を書き込むとプリンターが印刷されて出力されたり
lsでの例
-rw-rw-r--  1 vagrant vagrant  151  6月 30 15:26 2013 test.html
  ①   ②   ③    ④   ⑤      ⑥       ⑦
①ファイルモード(一番左はファイルの種類)
②リンク数
③ファイルの所有者
④ファイルの所有グループ
⑤ファイルサイズ
⑥最終更新日
⑦ファイル名

ファイルシステム(ディスクファイルシステム)

ファイルを保存する物理的な装置には、ハードディスク、SSDUSBメモリ、ネットワークドライブ等様々ものがある。 それらに記録されたファイルを管理する仕組みをファイルシステムという。 主なファイルシステムは次の通り。

  • ext4Linuxの標準で使われる
  • XFS:LinuxUNIXで使われる(堅牢性の高い)
  • FAT/VFAT:SDカードで使われる
  • NTFS:Windowsで使われる
  • ISO9600:CD-ROMで使われる
  • UDF:DVDで使われる

ディレクトリ構成

/ 概要
bin 一般ユーザーが実行できる基本的なコマンド
boot システムの起動に必要なファイル
dev デバイスファイル
etc システム設定ファイル
home ユーザーのホームディレクトリ
lib ライブラリ
lost+foumd 破損した
media DVDなどをマウントする場所
proc プロセス情報
root rootユーザー用ホームディレクトリ
sbin rootユーザーが実行できるシステム管理コマンド
tmp 一時的なファイル置き場
usr 各種プログラムやライブラリ、ドキュメント等
var ログファイル等更新されるファイル類

4.シェルとコマンド操作

シェル

コマンドを通してLinuxを利用する際に、ユーザーとLinuxの間を仲介しているプログラムをシェルという。 (ログイン時のデフォルトは/etc/passwdファイルで設定されている)

  • 主なシェル
シェル 概要
sh(Bourne Shell) UNIXの標準シェル。最低限の機能しか持たない
bash(Bourne Again Shell) shを改良して大幅に機能を拡張したシェル
tsh(TENEX C Shell) csh(C言語によく似た文法を使えるシェル)を拡張したシェル
ksh(Korn Shell) shを改良して大幅に機能を拡張したシェル
zsh(Z Shell) ksh,bash,tcshのいいところ取りをしたような高機能シェル
  • bashの主な内部コマンド
コマンド 概要 備考
alias エイリアスの作成
unalias エイリアスの解除
cd カレントディレクトリの変更
pwd カレントディレクトのパスを表示
echo 引数を表示
export 環境変数を設定
history コマンド履歴を表示 「!履歴番号」でその履歴のコマンドが実行される
kill プロセスにシグナルを送る 詳しくは8.システム管理参照
exit シェルの終了
  • bashの主なキー操作
コマンド 概要
[Ctrl]+[A] カーソルを行の先頭へ移動
[Ctrl]+[E] カーソルを行の末尾へ移動
[Ctrl]+[D] カーソル部分を1文字削除
[Ctrl]+[H] カーソルの左側を1文字削除
[Ctrl]+[L] 画面をクリア
[Ctrl]+[S] 画面への出力を停止
[Ctrl]+[Q] 画面への出力を再開
[Ctrl]+[C] 実行中のコマンドを中断

コマンドの入出力

入出力は次の3つ

  • 標準入力(入力元はキーボード)
  • 標準出力(出力先は端末画面)
  • 標準エラー出力(出力先は端末画面)

リダイレクト

「コマンド > ファイル名」 入力元をキーボードからファイルへと切り替えたり、出力を端末画面からファイルに切り替えたりすることが出来る。 リダイレクトを使うと標準出力を任意のファイルに切り替える事ができる。

例) cal > calendar.txt (画面には実行結果が表示されずファイルへ実行結果が出力される) (「コマンド >> ファイル名」だと上書きではなく追記される) (「コマンド 2> ファイル名」だと標準エラーのみファイルに出力される)

myprog < data1
(自作プログラムmyprogに、ファイルdata1からデータを入力する)

パイプ

「コマンド1 | コマンド2」 あるコマンドの実行結果を、別のコマンドで処理出来る。

バックグラウンド実行

「コマンド &」 コマンドを実行しながら端末の操作が出来る

オンラインマニュアル

man [セクション番号] [コマンド名またはファイル名]

ヘルプより詳しい使い方が出力される。 オンラインといってもシステムにインストールされているのでネットワーク経由でどこかに見に行くわけではない。 (一般的に、/usr/share/man配下に格納されている) マニュアルはいくつかのカテゴリーに分類されていて、それをセクション(章)という。

セクション 概要
1 誰でも実行できる一般ユーザーコマンド
2 システムコールカーネルの関数)
3 ライブラリの関数
4 デバイスファイル
5 ファイルの書式
6 ゲーム
7 その他
8 システム管理コマンド
9 Linux独自のカーネルルーチン用ドキュメント

5.ネットワーク

ネットワークコマンド

  • ifconfig

ifconfig

コマンドの主な出力

項目 概要
HWaddr MACアドレス
inet addr IPアドレスIPV4
Bcast ブロードキャストマスク
Mask サブネットマスク
inet6 addr IPアドレス

ping [オプション] ホスト

ICMPパケットを送信し続けその結果を表示する。 反応が返ってくれば少なくともネットワークが繋がっていて接続先ホストも起動しているということが確認出来る。 (ICMP(Internet Control Message Protocol)とは、エラーメッセージや制御メッセージを伝えるためのプロトコル

netstat [オプション]

送信先や送信元のアプリケーションを区別するために使われる番号がポート番号。 開いているポート番号を確認すれば、ローカルホスト上で動作しているサーバーソフトウェアや、通信中のソフトウェアを確認できる。

主なオプション

オプション 概要
-a すべてのソケット情報を表示
-n アドレスやポートを数字で表示
-t TCPポートだけを表示
-u UDPポートだけを表示

主なポート番号

ポート番号 プロトコル 概要
20,21 FTP FTPサーバー(ファイル転送)
22 SSH SSHサーバー(安全なリモート接続)
23 telnet Telnetサーバー(リモート接続)
25 SMTP メールサーバー
53 DNS DNSサーバー
80 HTTP Webサーバー
110 POP3 メールサーバー
443 HTTPS Webサーバー(SSL

ネットワークの設定

  • 設定ファイル

/etc/sysconfig/network

主な設定項目

設定項目 概要
NETWORKING yesならネットワークサービスをシステム起動時に有効にする
HOSTNAME ホスト名
GATEWAY デフォルトゲートウェイ(ルータ)のIPアドレス
  • ネットワークの再起動コマンド

/etc/init.d/network restart

ファイルダウンロード

  • FTPでダウンロード

lftp 接続ホスト
(ホストに接続)
get ファイル名
(ファイルのダウンロード(mgetだと複数取得出来る))
quit
(lftpを終了)

  • HTTP接続でダウンロード

wget [-R] 接続URL
例) wget -r http://example.com/
-rを付与すると配下のファイルもget出来る

リモート接続

主にリモート接続にはSSH(Secure SHell)が使われます。 SSHクライアント⇔SSHサーバー (通信経路が暗号化されます)

  • SSHコマンド(sshでリモート接続)

ssh [ユーザー名@]接続ホスト

  • SCPコマンド(sshでファイルコピー)

scp [-r] コピー元 コピー先
例)scp sample.txt test.host.jp:/tmp
→sample.txtがホスト(test.host.jp)の/tmp直下にコピーされる

6.ユーザー管理

ユーザー情報

  • ユーザー情報

/etc/passwd
(1ユーザーにつき1行で情報が格納される)

  • パスワード情報

/etc/shadow
(暗号化されたパスワード情報が格納される。rootユーザーのみ閲覧可能)

  • ユーザー切替え

su [ユーザー名]

  • UID(ユーザーに割り当てらた固有の数値)

id [ユーザー名]
uid=500(vagrant) gid=500(vagrant) 所属グループ=500(vagrant),10(wheel)

ユーザーとUIDの対応

ユーザー UID 備考
管理ユーザー 0
システムユーザー 1~99
一般ユーザー 100以上 CentOS等多くのディストリビューションでは500以上のUIDが使われている
  • グループ情報

/etc/group
(ユーザーは最低限1つのグループに所属しなけばいけない。
基本グループはプライマリーグループ、それ以外はサブグループと呼ぶ。
一般的なディストリビューションの場合、ユーザー追加時にユーザーと同じ名前のグループでプライマリーグループが設定される)

  • グループ情報確認

groups [ユーザー名]

ユーザー情報変更

  • ユーザー追加

useradd ユーザー名
(root権限が必要)

  • パスワード変更

passwd [ユーザー名]
(ユーザー名を省略すると自分のパスワード変更が出来る)

  • ユーザ削除

userdel [-r] ユーザー名
(-rオプションを指定すとホームディレクトリも一緒に削除される)

グループ情報変更

  • グルプ追加

groupadd グループ名

  • グループにユーザーを追加

usermod -G グループ名 ユーザー名

  • グループ削除

groupdel グループ名

ユーザー環境変更

ユーザーに関わる情報は、Linuxのシェル上では変数に保存される。

ユーザー環境に関わる主な変数

変数 概要
HOME ユーザーのホームディレクトリ
LANG ユーザーの言語環境
PATH コマンドを検索するディレクトリ
UID ユーザーID
USER ユーザー名

シェルは、ユーザーがログイン時にとくてのファイルを読み込むようになっている。 ユーザー環境を設定したい場合、その設定ファイルの定義を追加すればよい。 具体的には、/etc/profileファイルと~/.bash_profileファイルが読み込まれる。 /etc/profileは全ユーザー共通の設定で、~/.bash_profileはユーザー固有の設定。 (変更を出来るのは~/.bash_profileのみ)

7.ソフトウェアのインストール

パッケージ

パッケージとは、インターネットで配布されているソフトウェアを簡単にインストール出来るようにしたのもの。(ソフトウェアには実行ファイルやマニュアル、ドキュメントファイル、設定ファイル、関連ライブラリ等が含まれており、まとめてパッケージと呼ぶ) 大半のLinuxディストリビューションは、ソフトウェアをパッケージ単位で管理する。

  • RPMパッケージのファイルの見方

emacs-23.1-21.el6_2.3.x86_64.rpm

arch
(32ビット=i386,i586,i686、64ビット=x86_64)

  • 高度なパッケージ管理システム

rpmコマンドだけでは、管理者が手動で依存関係を解決しなければならなく管理が大変。 CentOSではYUMを使ってパッケージ管理が出来る。 YUMを使うとパッケージとその情報が蓄積されたインターネット上のリポジトリを利用し、必要なパッケージをインストールでき、依存関係も自動で解決してくれます。

yum [-y] サブコマンド

主なサブコマンド 概要
update システム(または指定したパッケージ)をアップデート
check-update アップデートされるパッケージ一覧表示
install 指定したパッケージのインストール
remove 指定したパッケージのアンインストール
list パッケージ一覧表示
info 指定したパッケージの情報を表示
serch パッケージを検索

8.システム管理

プロセスとデーモン

  • プロセス
    プログラムを実行すると、メモリが割り当てられCPUによって処理される事をプロセスと呼ぶ。 (Linuxは、複数ユーザーが同時操作する事を前提としておりマルチタスクのOSとして設計されている。同時にプログラムが実行されているように見えるのは、CPUの処理を細切れにしてごく短い時間で切り替えながら処理をしている)

ps [オプション]
(オプションを付けずに実行すると、端末上で実行されているプロセス一覧が表示される)
(オプションにa及びxを付けて実行すると、システム上で実行されているプロセス一覧が表示される(uを付けるとユーザーも表示される)

pstree
(プロセスの親子関係が確認できる)

kill [-[SIG]シグナル] PID
(プロセスにシグナルを送る)

psコマンドの例)
[root@localhost ~]## ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  19228  1508 ?        Ss   01:03   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    01:03   0:00 [kthreadd]

psコマンドの主な出力項目

項目 概要
USER 実行ユーザー
PID プロセスID
%CPU CPU利用率
%MEM メモリ利用率
TTY プロセスを実行した端末
STAT プロセスの状態
START プロセスの実行日
TIME 消費したCPU時間
COMMAND コマンドまたはプログラム名
killコマンドの例)
[vagrant@localhost ~]$ kill -TERM 1989

主なシグナル

シグナル シグナル番号 概要
HUP 1 ハングアップ(設定ファイルを再読み込みさせたいとき使う)
KILL 9 強制終了
TERM 15 通常終了
CONT 18 一時停止中のプロセス再開
STOP 19 一時停止
  • デーモン
    メモリに常駐しているプロセスをデーモンと呼ぶ。 一般的なデーモン起動を起動するサービスは/etc/init.d/に格納されている。
    (プロセスには、処理が終了すると消滅するものと、ずっとメモリ上に常駐し要求に応じてサービスを提供するものがあります。殆どのプロセスは前者で、システムサービスやサーバープログラムは後者となる。)

主な起動スクリプト

起動スクリプト 説明
/etc/init.d/network ネットワークサービス
/etc/init.d/crond 定期的な処置をするcronサービス
/etc/init.d/cups 印刷サービス
/etc/init.d/rsyslog シスログサービス
/etc/init.d/sshd SSHサーバー
/etc/init.d/postfix Postfixサーバー
/etc/init.d/httpd Apachサーバー

システム状況監視

topコマンドの例)
[vagrant@localhost ~]$ top

①top - 05:38:52 up  4:34,  1 user,  load average: 0.00, 0.00, 0.00
②Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie
③Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
④Mem:    379532k total,   176224k used,   203308k free,    14520k buffers
⑤Swap:   786424k total,        0k used,   786424k free,    86204k cached

⑥  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
    1 root      20   0 19228 1508 1216 S  0.0  0.4   0:00.89 init  

①top - 05:38:52 up 4:34, 1 user, load average: 0.00, 0.00, 0.00 ロードアベレージは平均的なシステム負荷の値で、一般的にはCPU数(コア数)以下であれば問題なし。(例えば2コアでCPUを2つ搭載しているマシンでは、4.0を下回っていれば、システム負荷は高くない)

② Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie 実行中のプロセス数が表示される

③Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st CPUの負荷状況が表示される

④Mem: 379532k total, 176224k used, 203308k free, 14520k buffers ⑤Swap: 786424k total, 0k used, 786424k free, 86204k cached メモリやスワップについて表示される。(詳しくはfreeコマンド参照)

⑥ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19228 1508 1216 S 0.0 0.4 0:00.89 init
個々のプロセスが表示される。 CPUやメモリを多く消費しているプロセスを確認すると良い。(CPU利用率=%CPU、メモリ占有率=%MEM)

デスク使用量監視

df [オプション]
ファイルシステムごとのディスク使用量や使用割合、空き容量を確認出来る)
(オプションにHを付けると見やすい単位で表示する)

メモリ監視

free [オプション]
(メモリの利用状況を確認できる)
(オプションにmを付けるとMバイト単位で表示する)

freeコマンドの例)
[vagrant@localhost ~]$ free -m
              total       used       free     shared    buffers     cached
①Mem:           370        172        198          0         14         84
②-/+ buffers/cache:         73        297
③Swap:          767          0        767

// トータル370Mバイトのうち、172Mバイトが使われ、空きが198Mバイト
// しかし、一部バッファキャッシュに利用されているため、実際に使われているのは73Mバイト、空きは297Mバイトとなる。
// メモリに余裕があるためスワップは使用されていない

①Mem: 370 172 198 0 14 84 メモリの状況

②-/+ buffers/cache: 73 297 バッファキャッシュを引いた値 (空きメモリがあるとハードディスクへのアクセスを高速化するため、メモリの一部を利用する。これをバッファキャッシュという。 実際に使われているメモリは、バッファキャッシュの値を差をみる。)

③Swap: 767 0 767 スワップ状況 (メモリが不足すると一時的にディスクの一部を仮想メモリとして利用する。これをスワップという。 スワップが日常的に発生しているならメモリの増設が必要。)

freeコマンドの表示項目

項目 概要
Mem total 前メモリの合計
used 使用中のメモリ
free 空きメモリ
shared 未使用
buffers バッファ
cached キャッシュ
-/+ buffers/cache: used バッファキャッシュ以外に使われているメモリ
free バッファキャッシュを含めた空きメモリ
swap total スワップ領域の合計
used 使用中のスワップ領域
free 空きスワップ領域

ログ管理

/var/log
(システムやサービスプログラムの挙動、ユーザーのログイン状況等がログファイルに記録される)

主なログファイル

/var/log/ 概要
messages システム一般記録
scure 認証関連の記録
maillog メール関連の記録
cron cronによる自動処理の記録
rpmpkgs インストール済みRPMパッケージの記録

また、CentOSにはlogwatchというソフトウェアが用意されており、一日に一度重要な項目をメールにまとめてレポートを送ってくれる。

9.Webサーバー

Apache

Apache Projectによって開発されたWebサーバーソフト。

Apache代表的な機能

  • 静的なWebページの配信
    HTMLと画像のみで構成されたwebページ等
  • 動的なWebページの配信
    掲示板やECサイト等、ユーザーのアクションで表示が変わる
  • モジュール構成
    様々な機能がモジュールとして分割され必要に応じて本体に組み込み利用できる
  • SSl(Secure Socket Layer)
    暗号化された安全な通信の提供
  • ユーザ認証
    ユーザー名とパスワードを使って特定のユーザーのみ公開できる
  • ホスト認証
    特定のホスト名やドメインIPアドレスからのアクセスを拒否することができる
  • バーチャルホスト
    一台のWebサーバーで異なるドメインを持つ複数のWebサイトを運用できる

Apacheの設定

/etc/httpd/conf/httpd.conf
Apacheの設定ファイル)

httpd.confの内容

ディレクティブ 概要 詳細
ServerRoot 設定等のトップディレクトリ Apacheの設定ファイルが格納されているディレクトリを指定
Listen サーバーの待ち受けるポート番号 通常は80番ポートで待ち受けるため変更不要
Include 外部の設定ファイル httpd.conf以外の外部ファイルのサブ設定ファイルを指定
User Apacheの実行ユーザー デフォルトはApacheになっており、作成されたファイルもApache権限で読み取りできるようにする必要がある
Group Apacheの実行グループ
Server Admin サーバー管理者 サーバー管理者のメールアドレス
ServerName サーバー名
DocumentRoot ドキュメントルート webサイトのトップディレクトリ
DiretoryIndex インデックスファイルの指定 URLでファイル指定されなかった時に、インデックスファイルとして返すファイル名を指定

Apacheコマンド

httpd -t
httpd.confの構文チェック。「Syntax OK」と表示されたら構文上はミスはない) /etc/init.d/htppd start
(起動) /etc/init.d/htppd status
(確認) /etc/init.d/htppd stop
(停止)

おすすめ書籍

Linuxを全く分からなくても丁寧にわかりやすく解説されてます。
進み方も調度良く、分かりやすく書いてあるのでかなりオススメ!!

サーバー構築 サービスメモ

概要

サーバー構築サービスの備忘録メモです。

  1. サービスの種類
  2. VPS
  3. まとめ

1. サービスの種類

共有レンタル VPS クラウド(IaaS)※2
タイプ※1 共有 仮想 仮想
価格 0〜低
管理者権限
管理者知識 不要 必須 必須
自由度 ☓(webのみ)
構成変更
※1
共有サーバーは、1台のサーバーを複数のユーザーで共有。(他のユーザーの影響を受けるが専門知識が不要)
(専有サーバーは、1台のサーバーを単独のユーザーで占有。(物理的なサーバを専用しているためメンテナンスやハード障害の影響を受ける))
仮想サーバーは、1台のサーバー内に自分だけの専用領域を確保。(システム設定など) 
※2
* IaaS:インフラ(仮想サーバやネットワーク)
  →AmazonEC2等
* PaaS:プラットフォーム(開発環境やアプリケーションの動作環境)
  →GoogleAppEngine、dotCloud等
* SaaS:アプリケーション
  →Gmail等

参考URL

2. VPS

2-1. メモリ2G前後のVPS

さくら DTI KDDI お名前.com KAGOYA
サービス名 さくらのVPS 2G ServersMan@VPS Standard CloudCore VPS VPS(KVM)メモリ2GB タイプA
初期費用 0円 0円 0円 0円 0円
月額 1,480円 980円 2,100円 1,380円 840円
CPU 2.40Ghz 2.13Ghz 2.20GHz 3.06Ghz 2.53Ghz
メモリ 2GB 最大4GB 2GB 2GB 最大2GB
HDD 200GB 100GB 100GB 200GB 200GB
ネットワーク 100Mbps共有 不明 100Mbps共有 100Mbps共有 不明
仮想化プラットフォーム KVM OpenVZ KVM KVM OpenVZ
対応OS CentOS 5(32/64)
CentOS 6(32/64)
Scientfic Linux6(32/64)
Ubuntu 10.04(32/64)
FreeBSD 8.1(32/64)
Debian 6(32/64)
Fedora 16(32/64)
CentOS 5(32/64)
CentOS 6(32/64)
Ubuntu 10.04(32/64)
Debian 5(32/64)
Debian 6(32/64)
CentOS 5
不明
CentOS 6 (64)
Scientfic Linux
Fedora
Debian
Ubuntu
FreeBSD
Arch Linux
CentOS 5(32/64)
Ubuntu 10.04(32/64)
Debian 5(32/64)

SaaSesは2014年4月1日より法人向けクラウドに移行したようです。
参考URL:http://temog.info/archives/vps/vps-comparison-sakura-dti-saases-kddi-gmo-kagoya.html

2-2. 月額500円以下のVPS

DTI ServerQueen ABLENET
初期費用 0円 0円 980円
月額 490円 480円(1年契約) 480円
メモリ 1GB 256MB 1GB
HDD 50GB 10GB 50GB

ServerQueenは、この価格での新規提供終了したようです。
月額500円以下のプランがあるVPSまとめ

2-3. 無料のVPS

VPS.me Host1Free
CPU 0.6G ?
メモリ 384MB 128MB
Disk space 5GB 10GB
備考 空きがない場合があり最後まで登録しないと空き状況がわからない(参考URL:http://yokoswork.blogspot.jp/2014/01/vps-vpsme.html 登録や設定に癖があり、ミスすると消される

3. まとめ

個人的には、DTIの490円がオススメ!
レンタルサーバーだと、管理権限がなくて自由度が低い。クラウドだと遊びや勉強で使うには料金が高い。
無料のVPSだと空き状況や登録が厄介だし、何よりサーバーに詳しくないから英語が厳しい。

CocoaPods インストール 使い方 メモ

cocoapodsのインストールと使い方のメモです。

cocoapods概要:Mac アプリや iOS アプリ開発者向けのライブラリ管理ツール
実行環境   :OS X バージョン10.9
前提条件   :「Ruby」「Command Line Tools」がインストールされていること (MacOSはデフォでRubyが入っていると思います。)
「Command Line Tools」のインストール方法やcocoapodsの詳しい参考URL:http://www.iosjp.com/dev/archives/451

流れ

  1. インストール
  2. 使い方
  3. その他

1. インストール

次のコマンドを実行でOK

$sudo gem install cocoapods

2. 使い方

2-1. Podfileファイルを作成
2-2. ライブラリのインストール
2-3. Xcodeで実行

2-1. Podfileファイルを作成

作成したプロジェクトの「hogehoge.xcodeproj」と同じディレクトリに「Podfile」というファイルを作成します。
「Podfile」ファイルに、プラットフォーム(iOSのバージョン等)と追加したいライブラリ情報を記入します。

「Podfile」ファイルの例↓(1行目:プラットフォームがiOS7.1、2行目:iRateのライブラリ追加)

platform :ios, '7.1'
pod 'iRate'

※ライブラリー名は、CocoaPodsホームページで検索できます。

2-2. ライブラリのインストール

次のコマンドを実行でOK

$ pod install

Xcodeは閉じて実行しましょう。

2-3. Xcodeで実行

「xcodeproj 」ファイルではなく、「xcwordspace」ファイルで開きます。
(クラスをimportして使えるようになっています。)

3. その他

CocoaPodsのバージョンアップ

次のコマンドを実行でOK(コマンドはインストールと同じ)

$ sudo gem install cocoapods

メモ:ライブラリをインストールする時に次のようなエラーになる時に良く使います。

[!] The `master` repo requires CocoaPods 0.32.1 -

参考URL:http://qiita.com/snow_richisland/items/90132544d482a4668b7c

RSS1.0,RSS2.0,ATOM のフォーマット・仕様・構造

調べたので備忘録。

種類

RSS1.0

  • シンプルな記述がウリ。テキスト配信向き?
  • RDFシリーズを元にして制作されている。
  • はてなRSSは1.0を使用。FC2も1.0を使用。

RSS2.0

  • 配信する文章の色を変えたり、リンクを仕込めるなど、グラフィック面でいろいろ出来る。コンテンツ配信向き?
  • RSS1.0の後継シリーズではない。(0.9x系の流れを汲む規格)
  • XMLシリーズを元にして制作されている。

ATOM

  • RSS2.0からいろいろ削って、よりシンプルに。よりスマートに。
  • GoogleGmail(ジーメール) にて、メールの内容を Atom フィードで提供するサービスを行っている。

構造

RSS1.0

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xml:lang="ja">

    <channel rdf:about="サイトのRSSのURL">
        <title>サイトのタイトル</title>
        <link>サイトのURL</link>
        <description>サイトの内容</description>
        <dc:date>RSSの最終更新日時</dc:date>
        <dc:language>ja</dc:language> 
        <items>
        <rdf:Seq>
        <rdf:li rdf:resource="記事1のURL" />
        <rdf:li rdf:resource="記事2のURL" />
        </rdf:Seq>
        </items>
    </channel>

    <item rdf:about="記事1のURL">
        <title>記事1のタイトル</title>
        <link>記事1のURL</link>
        <description><![CDATA[記事1の内容]]></description>
        <dc:creator>記事1の作者名</dc:creator>
        <dc:date>記事1の作成日時</dc:date>
    </item>

    <item rdf:about="記事2のURL">
        <title>記事2のタイトル</title>
        <link>記事2のURL</link>
        <description><![CDATA[記事2の内容]]></description>
        <dc:creator>記事2の作者名</dc:creator>
        <dc:date>記事2の作成日時</dc:date>
    </item>
</rdf:RDF>

RSS2.0

<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
    <channel>
        <title>PHP & JavaScript:更新情報</title>
        <link>http://phpjavascriptroom.com/</link>
        <description>PHP & JavaScript Room:新着3件</description>
        <item>
            <title>記事タイトル3</title>
            <link>http://phpjavascriptroom.com/post3.html</link>
            <description>記事の内容です。</description>
            <pubDate>Wed, 11 Jun 2008 15:30:59 +0900</pubDate>
        </item>
        <item>
            <title>記事タイトル2</title>
            <link>http://phpjavascriptroom.com/post2.html</link>
            <description>記事の内容です。</description>
            <pubDate>Tue, 10 Jun 2008 15:30:59 +0900</pubDate>
        </item>
        <item>
            <title>記事タイトル1</title>
            <link>http://phpjavascriptroom.com/post1.html</link>
            <description>記事の内容です。</description>
            <pubDate>Mon, 9 Jun 2008 20:50:30 +0900</pubDate>
        </item>
    </channel>
</rss>

Atom

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xml:lang='ja'>
    <id>tag:phpjavascriptroom.comfeed/</id>
    <title>PHP & JavaScript Room:更新情報</title>
    <updated>2008-06-11T15:30:59Z</updated>
    <link rel='alternate' type='text/html' href='http://phpjavascriptroom.com/feed/' />
    <link rel='self' type='application/atom+xml' href='http://phpjavascriptroom.com/feed/atom10.xml' />
    <entry>
        <id>http://phpjavascriptroom.com/post3.html#20080611</id>
        <title>記事タイトル3</title>
        <link rel='alternate' type='text/html' href='http://phpjavascriptroom.com/post3.html' />
        <updated>2008-06-11T15:30:59Z</updated>
        <summary>記事の内容です。</summary>
    </entry>
    <entry>
        <id>http://phpjavascriptroom.com/post2.html#200810153059</id>
        <title>記事タイトル2</title>
        <link rel='alternate' type='text/html' href='http://phpjavascriptroom.com/post2.html' />
        <updated>2008-06-10T15:30:59Z</updated>
        <summary>記事の内容です。</summary>
    </entry>
    <entry>
        <id>http://phpjavascriptroom.com/post1.html#20080609205030</id>
        <title>記事タイトル1</title>
        <link rel='alternate' type='text/html' href='http://phpjavascriptroom.com/post1.html' />
        <updated>2008-06-09T20:50:30Z</updated>
        <summary>記事の内容です。</summary>
    </entry>
</feed>

要素

  • channel
    チャンネル情報。 <channel>~</channel>
    • title(必須要素)
      チャンネル名。 <title>PHP & JavaScript Room:更新情報</title>
    • link(必須要素)
      チャンネルのURL。サイトURL。 <link>http://phpjavascriptroom.com/</link>
    • description(必須要素)
      チャンネルの説明。
      <description>PHP & JavaScript Room:新着3件</description>
    • item+
      チャンネルのコンテンツ情報。日付が新しいもの順。1つ以上~いくつでも。
      • title
        コンテンツのタイトル。ページタイトルや記事タイトル。
        <title>【Ajax】Simple JSの使い方</title>
      • link
        コンテンツのURL。
        <link>http://phpjavascriptroom.com/index.php?t=ajax&p=simplejs</link>
      • description
        コンテンツの概要。
        <description>14KBの超軽量JSライブラリ「Simple JS」をサンプル付きで紹介。</description>
      • author
        コンテンツを書いた人のメールアドレス。
        <author>amarron@yahoo.co.jp (PJ)</author>
      • category
        コンテンツのカテゴリ。
        <category>Ajax JavaScript</category>
      • comments
        コンテンツに対するコメントがあるページのURL。
        <comments>http://phpjavascriptroom.com/ajax/simplejs.html#comment</comments>
      • enclosure
        コンテンツに添付されるメディアオブジェクト。
      • guid
        コンテンツのユニークな永続的なURL。
        <guid>http://phpjavascriptroom.com/ajax/simplejs#he20080204</guid>
      • pubDate
        コンテンツの公開日。
        <pubDate>Mon, 4 Feb 2008 15:30:59 +0900</pubDate> <pubDate>Mon, 4 Feb 2008 15:30:59 GMT</pubDate>
      • source
        記事で引用しているRSSのチャンネル。引用元のURLを指定するurl属性は必須属性。
        <source url='http://www.sample.com/rss.xml'>sample.com</source>

参考サイト

[Web]RSSとRSS2とATOMの違いをまとめてみる。
[rss][atom]RSSとATOMの文書構造モデル(メモ書き)
RSS -- サイト情報の要約と公開
RSS 2.0 のフォーマット
Atom 1.0 のフォーマット

おすすめ書籍

もっとrssを知りたい方にオススメです。

App Store に iOSアプリ を 公開する方法

大まかな流れが中心です。画像や詳細なイベントは他の参考サイトで確認して下さい。
証明書関連の作成参考サイト:http://r-dimension.xsrv.jp/classes_j/ios_test/
iTunes Connectデベロッパガイド:https://developer.apple.com/jp/documentation/iTunesConnect_Guide.pdf

前提条件

Apple Developer Programに購入済み。
Apple Developer Program購入方法(法人)はこちら

流れ

  1. 証明書関連の作成(Certificates, Identifiers & Profiles)
    1-1. Certificatesの作成
    1-2. Identifiersの作成
    1-3. Devicesの追加(開発用のみ必要)
    1-4. Provisioning Profilesの作成
  2. Xcodeで証明書を設定
  3. 配布したいアプリの設定
    3-1. iTunesConnectでアプリを追加
    3-2. Xcodeでアーカイブ
    3-3. iTunesConnectでアプリの状態確認

1. 証明書関連の作成(Certificates, Identifiers & Profiles)

申請に必要な証明書関連を作成します。
証明書(CertificatesとProvisioning Profiles)は、ダウンロード後クリックするとMacのキーチェーン保存されます。
キーチェーンに保存後Xcodeでその証明書を選択しアプリの実機確認や配布用のアーカイブに利用します。

「Certificates, Identifiers & Profiles」の項目説明

url:https://developer.apple.com/account/ios/certificate/certificateList.action

  • Certificates
    開発者の証明書
    (開発用と製品用に1つずつ必要となります。(複数アプリで同じ証明書を利用する))
    (プッシュ通知を利用する場合は、さらにアプリごとに開発用と製品用に1つずつ必要となります。)

  • Identifiers
    アプリのID(1アプリに対して1つ必要、Wildcard App IDを選ぶと全アプリで利用可能となります。)

  • Devices
    実機確認用iPhone一覧(アプリに対して利用可能な実機を追加できます。)

  • Provisioning Profiles
    開発者とアプリを紐付けるファイル(1アプリに対して開発用と製品用に1つずつ必要となります。IdentifiersのWildcard App IDで証明書を作成すると全アプリで利用可能となります。)

f:id:Amarron:20140212110453p:plain

1-1. Certificatesの作成

左のメニューのCertificatesをクリックし右上の「+」で新規作成を行います 。

f:id:Amarron:20140212105838p:plain

Development(開発用)かProduct(製品用)かどちらかを選びます。
CSRファイルを作成します。(ここはMacのキーチェーンアクセスで行います)
(ユーザーのメールアドレスはAppIDで登録したメールアドレスを利用し、デスクに保存を設定するをチェックします。)

f:id:Amarron:20140212110007p:plain

作成したCSRファイルをアップロードします。
Certificates(証明書)が作成されるのでダウロードします。

1-2. Identifiersの作成

左のメニューのIdentifiersをクリックし新規作成を行います。

f:id:Amarron:20140212111710p:plain

名前(App ID Description Name)はアプリ名(英数)にすると分かりやすくなると思います。
接頭辞(App ID Prefix)はTeamIDが良さそうです。(複数の App ID Prefixとキーチェーンについて
識別子(App ID Suffix)は逆ドメインが推奨されています。(Wildcard App IDを選択すると全てのアプリ共通で利用出来ます。)
注意:Bundle App IDは、各アプリのBundle App ID(plistの「Bundle identifer」)と一致している必要があります。

f:id:Amarron:20140212120058p:plain

1-3. Devicesの追加(開発用のみ必要)

左のメニューのDevicesをクリックしデバイスを追加します。
メモ:「UDID」は、XcodeのOrganizerで確認出来ます。(Devicesで、対象のiPhoneを選択し「Identifier」がUUIDです)
注意:「Register Device」のNameは半角英数で登録しないと文字化けします。(文字化けした状態で複数登録してると判断出来なくなるので半角英数で登録すると分かりやすいと思います)

f:id:Amarron:20140212112532p:plain

1-4. Provisioning Profilesの作成

左のメニューのProvisioning Profilesをクリックし新規作成を行います。
「1-2. Identifiers」で作成したアプリIDと「1-3. Devices(開発用のみ必要)」を選択します。
「Provisioning Profiles」が作成されるのでダウンロードします。

f:id:Amarron:20140212113158p:plain

2. Xcodeで証明書を設定

Buid SettingのCode Signingで「1-1. iOS Certificates」で作成した証明書を設定します。
(プッシュ通知も必要な場合、「Provisioning Profile」に「1-4. Provisioning Profiles」を設定します)

f:id:Amarron:20140212114924p:plain

3. 配布したいアプリの設定

作成したアプリをApp Storeで配布するためにアプリを追加します。

3-1. iTunesConnectでアプリを追加

iTunesConnectに接続します。
Manage Your AppsをクリックしてAdd New Appを選択するとアプリの追加設定でができます。

f:id:Amarron:20140212133933p:plain

注意:「1-1. Certificates」で製品用の証明書を作成していないと、"You have no eligible Bundle IDs for iOS apps. Register one here."と表示され新しくアプリを追加出来ません。

App Informationでは、アプリ名(App Name)や管理番号(SKU Number)を設定します。
App Nameは、App Storeに表示されるアプリ名で申請の途中で変更可能です。(既に登録されている名前は登録出来ません。日本語入力出来ます。)
SKU Number、管理番号で途中で変更できません!(既に登録されている名前は登録出来ません、プロジェクト名等分かりやすい名前でOK)
Bundle IDは、「1-2. Identifiers」で設定したIDを選びましょう。

f:id:Amarron:20140212134412p:plain

配布希望日(Availability Date)は、未来日を設定します。私は2週間位先を大体設定しています。(AppStoreの新作として表示される日らしいです。)
アプリ料金(Price Tier)はアプリ料金を設定します。
教育機関向けの割引(Discount for Educational Institutions)は無料アプリであればチェックを外します。
法人向けカスタム非公開アプリ(Custom B2B App)もチェックを外します。

f:id:Amarron:20140513123236p:plain

アプリの詳細情報を入力を完了すると、ステータスが「Prepare for Upload」に変わり「Ready to Upload Binary」が選択できるようになります。 f:id:Amarron:20150314203827p:plain

「Ready to Upload Binary」が選択し、法的な質問に答えるとステータスが「Waiting For Upload」に変更されます。
Xcodeでアーカイブを作成しましょう。

3-2. Xcodeでアーカイブ

Buid SettingのCode Signingで「1-1. iOS Certificates」で作成した証明書を設定します。(製品用に変更します)
(プッシュ通知も必要な場合、「Provisioning Profile」に「1-4. Provisioning Profiles」も製品用に変更します)

f:id:Amarron:20140212114924p:plain

ツールバーのProduct->Archiveを選択します。
アーカイブが完了するとOrganizer画面が表示されるので「Validate」を選択しましょう。(Validateでエラーになる場合が多いのでハマるかもしれません。。。)
Validateが成功したらDistributeを選択しましょう。
f:id:Amarron:20150314203850p:plain

3-3. iTunesConnectでアプリの状態確認

ステータスが「Waiting For Upload」から「Upload Received」に変更されていればアプリの追加成功です。
数分後に「Waiting For Review」に変更されます。
後は、App Storeに公開されるのを待つだけです。お疲れ様した。

今後のステータス

Waiting For Review

In Review(Appleレビュー中)

Processing for App StoreApp Storeに公開されるまでのチョットした待ち時間)

Redy for Sale(App Storeに公開されている状態)
(2015/01追記:Redy for Sale(販売準備完了)にステータスが変更されてもすぐにストアに公開されない場合もあるようです。24時間過ぎても公開されないようであればAppleへ問合せしましょう。問合せはiTunesConnectのフッターの「連絡先」リンクより問合せが出来ます。)

「Waiting For Review」と「In Review」はトータルで1〜2週間かかります。(アプリにもよります)
審査NGの場合、「Processing for App Store」へ進まず「Rejected」のステータスになります。(指摘内容を修正して再度、「3-2. Xcodeでアーカイブ」からやり直し)
「Processing for App Store」は、数時間で「Redy for Sale」へ変更されます。

iOSDeveloperProgram 法人契約 流れ

iOSアプリのAppStoreで配布したい場合に「iOS Developer Program」の登録が必要となります。
法人契約時の大まかな流れと注意点等を記載します。
AppStoreにアプリを公開する方法はこちら

契約時の流れ

  1. メールアドレスの取得(Apple ID登録用、今回はgmailアカウント作成)
  2. Apple ID作成
  3. DUNS NUMBERの取得
  4. iOS Developer Program 購入

注意:Apple関連の登録はsafariを利用しましょう。

1. メールアドレスの取得(Apple ID登録用、今回はgmailアカウント作成)

gmail用アカウントを新規作成します。
メモ:アカウント名はAppleで使用する名前と一致していなくても問題ありません。また、既にメールアドレスをお持ちの方はそれを使用しても特に問題ありません。

2. Apple ID作成

Apple IDを新規作成(1で作成したメールアドレスで登録)します。
注意:Apple IDの氏名は半角でローマ字入力をしないと途中でエラーになります。(修正もできなくなり、Appleへ問合せ対応となります)

f:id:Amarron:20140205202026p:plain

3. DUNS NUMBERの取得

iOS Developer Program」でDUNS NUMBERが必要となるため取得します。
東京商工リサーチにてDUNS NUMBERを検索します。
法人契約を結ぶ企業名で検索します。

  • 既に発行されている場合、DUNS NUMBERを控えて「iOS Developer Program 購入」へ進みましょう。
  • 発行されていない場合、発行依頼をしましょう。数時間後、メールにてDUNS NUMBERが届きます。 (私の場合、発行に4〜5時間かかりました。また、休日は発行されませんでした。)

注意:iOS Developer ProgramのDUNS NUMBERは本社ではないと登録できなません。

4. iOS Developer Program 購入

iOS Developer Programの登録を行います。
登録すると途中でステータスが進めなくなります。(法人の確認のため。3営業日ほどで確認電話がかかってきて、ステータスの進め方を説明とわからなくなった時のサポート番号(0120-933-388)を教えてくれます)
法人の確認が終わるとステータスが進められるようになり「iOS Developer Program」の購入が出来るようになります。
注意:iOS Developer Programの購入してすぐにはは利用できません。Welcomeメールが送られるまで待ちましょう。(私の場合、約1日かかりました。購入してもすぐに使えないので間違って2回購入しないようにしましょう。)

AppStoreにアプリを公開する方法はこちら

参考にしたURL