Tag linuxを表示しています。
2018.9.5 水
ちょっと数年前はものすごく使いづらいところあったAWSですが最近はドチャクソ使いやすい。 Amazon Linux 2 AMIはとてもCentOSっぽいというだけで特に選択した理由はないです。 EC2インスタンスの作成 Elastic IPの設定 EC2インスタンスにログイン rootになる 基本設定 Tools類(絶対使うやつ) EC2インスタンスの作成 AWSのコンソールにログインしてEC2に移動。左メニューのインスタンスを選択すると次のページの上部に青いボタンで「インスタンスの作成」というボタンがあるので、そこから新しいインスタンスを作成します。 AMIの選択で「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択。 無料枠のt2.microを(と...
2018.8.29 水
サーバーが死にそうになっているときのマニュアルです。 サーバークラスタリングとかスケールアウトとかスケールアップとか考えた方がいい。クラウドフロント辺りのキャッシュサーバでもいいかも。 原因は?と聞かれますがたいていは「サーバースペックがショボいから」というのが大半。 急いでやるやつ rootでログイン 簡易的に状態をみる load average 目でだいたいの状態を把握する top HDDの容量 df ブラウザーアクセスやSSHでログインして明らかに操作が遅延したり見た目で動きがもっさりしていたりする、あるいは監視のアラートメールが来たりしているピーク時に目視するのが目的のコマンドになります。 落ち着いてやるやつ procs memory swap io system cpu プロセスを...
2018.8.22 水
各ユーザーのデフォルトの挙動を追加したりするにはLinuxのprofileの仕組みを使います。この機能についてはなんか全般的に名前ってないんですかね。 各設定は継承されるようになっていて/etc/profileが最優先で読み込まれ設定されます。これは全ユーザーに反映されます。~/から各ユーザーに個別に設定することが可能になっています。 設定される優先順位 /etc/profile /etc/profile/profile.d/* ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc /etc/bashrc となっています。 設定 PATH 環境変数の設定 (例) export PATH=$PATH:/usr/local/mysql/bin PS...
2018.7.27 金
AWSとかSaas系のサービスではプロンプトがローカルIPアドレスになったりするのだけどかなり見づらいので変更します。 この方法はホスト名に影響を与えないで変更するので、各ユーザーでやらないといけない設定なので、/etc/skelに設定しておく方がいいと思います。 HOSTNAME@USERNAME 00:00: という風にします。 .bashrcを開いて以下を追加します。 # シンプルなところで。 PS1="[\u@hostname \W]#" # いろいろカスタマイズしたい人は。。 PS1='\[\e[33m\]bluma@\u \[\e[34m\]\t \[\e[37m:' 使える変数がいっぱいあるのでお好みで。 反映するときは、 $ source .bashrc これでOKです。 L...
2018.5.9 水
できるだけプロダクト環境というか実践に耐えうるnodeサーバーの構築方法です。バージョンアップと開発がやたらにスピーディーなのでプロダクトって何のことやらという話でもあるのですが。ちなみに2018-05-09現在のものになります。 version Node.js 8.11.1を選びます。 リリース一覧ではLTSの最新になっているからです。どこからダウンロードすればいいのか探してみたら、 http://nodejs.org/dist/ ここらでダウンロードできそうです。 ソースの入手とインストール (最新版をバイナリからインストール) もう、どれとってくればいいんだかわからんです。 https://nodejs.org/download/release/v8.11.1/ よくわからんので、 n...
2017.12.5 火
セキュリティー的にもまたはサーバー設定時にもポートスキャンは何だかんだで使うのでコマンドラインで確認しましょう! (全然他人のIPを無限にポートスキャンするとあまり気持ちよくないのでやめましょう!) nmap 普通はデフォルトでインストールされているものではないのでyumからインストール yum -y install nmap これで使えるようになります。 普通に使う nmap localhost UDPで利用しているポート nmap -sUV localhost TCPで利用しているポート確認 nmap -sTV localhost netstat nmapが使えない場合はnetstatでやるといいかも。 UDPで利用しているポート netstat -lp --udp TCPで利用している...
2017.10.26 木
WEBやシステムの開発で複数のユーザーが同じコンテンツを制作する場合があります。そのような場合はユーザーにグループを紐付けて権限の調整を行います。(ってそんな必要あるんですかね。仕事ではやたらにやりますが。) user01は/home/user01/のファイルの読み書き実行のパーミッションがあります。その中の/home/user01/foo/だけuser02が読み書き実行の権限があり、その他のディレクトリは読みのみというような設定をしてみます。 user: user01 (/home/user01/*の読み書き実行権限(デフォルト)) user: user02 (/home/user01/foo/*のみ読み書き実行権限) group: group01 (共有箇所の権限を設定するグループ) ユ...
2017.9.19 火
自動起動サービスのリスト表示 長年親しんできたchkconfigがいなくなってsystemctl list-unit-files -t serviceという長ったらしいコマンドになりました。 [CentOS6] chkconfig --list [CentOS7] systemctl list-unit-files -t service systemctl使うと長ったらしいので、 ls -al /usr/lib/systemd/system/ で一覧見た方が見やすいです。 表示の形式も変わっていわゆるランレベル的なものではなくて純粋に自動起動に関して「enabled | disabled | static」というふうにステータスを表示するようになってます。 .... httpd.servic...
2017.8.31 木
/tmp/ディレクトリ下は、テンポラリ領域としてファイルの解凍や一時的に利用するファイルが書き出されています。常時稼働させている状態でしばらくの日数を経て/tmp/下を見ると、以前あったファイルが無くなっている場合がありますが、これはどのようなタイミングで削除されたのだろうかというと、1日1回実行されるcronスケジュールで実行されるスクリプト「tmpwatch」から実行されるコマンド「tmpwatch」によって判断されているっぽいです。 # file /usr/sbin/tmpwatch /usr/sbin/tmpwatch: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses...
2017.6.26 月
シンボリックリンク ln -s ./top/index.html ./index.html ln -s <実体ファイルパス> <シンボリックリンクのファイルパス>という風になっています。-sオプションを忘れずに。 毎回忘れるんだけど、手前が実体ファイル、後ろがリンク。 ハードリンク ln ./top/index.html ./index.html iノードの説明とかしません。 hard link not allowed for directoryというのが出るときがあるんですが、「ディレクトリ」「異なるファイルシステム間」「異なるパーティション間」ではリンクを作成することができません。
2017.5.30 火
SSHの設定はポリシー的なところ大きいので設定の仕方というご案内はできないんですが、だいたいこんなルールでやってます。 Rootのログインは基本禁止。*但し鍵認証+IP制限が可能であればOK。問題は鍵の管理になります。 パスワード認証は基本禁止。鍵認証推奨。*とはいえ「なんでパスワードでログインできないの?」って言われます。 ポートは22じゃない方がいい。4桁ぐらいの使っていないポート。 SSH1とかは使わない。 あとはデフォルトのままでいいと思う。 インストールと設定 CentOS7のデフォルトかどうかわからないけど、クラウドサーバとかVPNとかだと、OpenSSH_6.6.1p1がインストールされているっぽい。これちょっと古いです。 最新にしたい方はOpenSSHを最新にバージョンアップ...
2017.5.30 火
centos7.example.com = 123.456.789.xxxとして設定してゆきます。 アップデート インストール完了したら、とりあえずやっておく。 yum -y update 長い。 私的に必ず使うツール系をインストールしておく。 yum -y groupinstall "Base" yum -y groupinstall "Development tools" yum -y groupinstall "Japanese Support" yum -y install nkf yum -y install nmap yum -y install tree コンパル関連とかで使う。 yum -y install gcc libgcc yum -y install zlib-dev...
2017.5.27 土
保守もしてない中に入ったこともないサーバーの作業って嫌です。正直こういう仕事しちゃいけないと思いますよ。ほんと。これどういうことかというと地図なしで戦地に赴くようなものです。 謎のプロセスで5672ポートを使っているので閉じてくれというだけの話なんですが、気味悪いですね。 lsofのインストール 便利なツールが何もないな。 yum -y install lsof ポート確認 # lsof -i:5672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME qpidd 1259 qpidd 10u IPv4 8816 0t0 TCP *:amqp (LISTEN) 正直仕事であんま使わないです。 qpidd: 異なるプラットフォーム間、異なるア...
2017.4.5 水
サーバーのCPU情報は、/proc/cpuinfoで確認できます。だいたいの目安で数値自体はかなりいい加減らしいです。その上、何を書いているのかよくわかりません。見るところ3箇所程度。 #cat /proc/cpuinfoとか#vi /proc/cpuinfoとかで見ます。 項目 内容 processor 0 vendor_id GenuineIntel cpu family 6 model 44 model name Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping 2 cpu MHz 2666.848 cache size 12288 KB physical id 1 siblings 12 core id 0 cpu cores 6 apici...
2017.3.31 金
/etc/profileにショートカットを追加しておく llでリスト表示させるようにしておきます。 vi /etc/profile .... # some more ls aliases alias ll='ls -al' alias la='ls -A' alias l='ls -CF' 追記が気持ち悪い人は、/etc/profile.dでもいい。 cd /etc/profile.d touch bash_alias.sh vi # some more ls aliases alias ll='ls -al' alias la='ls -A' alias l='ls -CF' :wq
2017.3.26 日
Linuxは進化しすぎていろいろな設定方法がありすぎて気持ちが悪いのでここではシンプルな方法のみ。 コマンドプロンプトのホスト名を変更 hostnameファイルで変更 コマンドプロンプトのホスト名を変更 vi /etc/sysconfig/network .... HOSTNAME=centos7.example.com .... たぶん再起動しないとダメ。 hostnameファイルで変更 vi /etc/hostname .... 127.0.0.1 centos7.example.com .... .bashrcで変更 サーバー全体に反映させるんだったら、/etc/profileを変更した方がいいかもです。個別に設定するのだったら.bashrcか.bash_profileに設定するのがよ...
2017.3.26 日
CentOS7 インストール後の初期設定 CentOS7の便利な設定をしておく CentOS7 ホスト名の設定(変更)方法 SSHの設定 無料SSLを取得する Let’s Encrypt
2016.11.7 月
php.iniで設定する PHPのアップロードサイズは、php.iniの設定を見るとデフォルトでは、 ; Maximum allowed size for uploaded files. ; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize upload_max_filesize = 2M となっていて2Mなんですね。php.iniの877行目辺りです。 普通に画像とかファイルとかをあげるにはまあまあなサイズですが、用途によっては全然足りないです。なので、ここでアップロードサイズを大きくしてあげます。 Ubunutuとかだと、/etc/php5/apache2/php.iniで、CentOSとかだと/etc/p...
2016.11.7 月
php.iniが訳あって直接書き込むことができない場合は、.htaccessに書く方法があります。しかし大元の本物php.ini内で、 php_value = On php_flag = On という風に設定する必要があります。これができないと.htaccessに設定しても無効になってしまいます。phpinfo()でも確認できるので、大元のphp.iniの設定を確認してみてください。レンタルサーバーによってはこの機能が使えるようになっているところもあります。ロリポだと大元のphp.iniもある程度GUIで設定可能です。 しかしこの設定で可能な範囲はlocal valueだけでMaster valueは大元のphp.iniの設定が必須になります。アプリの開発によってはMaster valueの...
2016.10.31 月
Linux CPU情報確認 /proc/cpuinfo サーバーのCPU情報は、/proc/cpuinfoで確認できます。だいたいの目安で数値自体はかなりいい加減らしいです。その上、何を書いているのかよくわかりません。見るところ3箇所程度。 cat /proc/cpuinfo とか vi /proc/cpuinfo とかで見ます。 processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 44 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping : 2 cpu MHz : 2666.848 cache size : 12288 KB physical id : ...
2016.10.24 月
思わず溜めすぎてしまったログがgzで80MB近い容量になっていて展開したら2GBあった。のだけど、このファイルをいろいろ加工しないといけなくて、いろいろ触る度にコマンドラインでさえ5分ぐらい返ってこないということになってしまったので、その時の作業のメモです。 # split -l 10000 sample.log とやったら、676ファイルに分割されてさらに出力できないというエラーが出た。いったい何行あるんだということで、仕方なく1GBで分割してみた。 # split -b 1000m sample.log -rw-r--r-- 1 root root 1048576000 Oct 31 18:59 xaa -rw-r--r-- 1 root root 1048576000 Oct 31 1...
2016.10.12 水
ひっさびさに同期の設定したら全然できなくてかなり参ったので、もう基本からやり直しみたいな感じでの備忘録です。なんだかんだでCentOS7にする人もいないし専用サーバーもCentOS6だし今回もCentOS6でやりました。 これ初心者がやろうとしたら意味わからないんじゃないかなと思いつつも、自分でも相当に忘れてしまっていたのでざっと基本的な流れをおさらいします。 特に説明も何もないとは思いつつも複数のWEBサーバー何かの同期を取る際には結局リアルタイムでミラーリングすることになります。ロードバランサーによる振り分けなどでWEBサーバーの冗長化を伴うとずべてのWEBサーバーの内容は全く同じでなければなりません。やり方としてはすべてのWEBサーバーにNASなんかをマウントしちゃって…というの1番楽...
2016.10.4 火
cronが設定されているかどうか確認する $ crontab -l で現在のcron設定が表示されます。cronはユーザー単位で設定されるので、スーパーユーザーの場合はrootがcronを設定することになりますので注意。設定が初めての場合、または何もない場合は、「no crontab for <ユーザー名>」と言われます。 $ crontab -l SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/gems/1.8/bin RAILS_ENV=production # m h dom mon dow command */30 * * * * perl /h...
2016.9.6 火
ネットワーク負荷・サーバー負荷に関してはかなり専門的分野だったり、エンジニアさん専門のコテコテ技術だったりするのでありまして、Web制作をしているクリエイターといえどもレンタルサーバーなんかの場合だと負荷分散っていってもゴリゴリと専門的な技術でもってカスタマイズする機会は殆どできないわけで、結局これらの技術は一般的に必要に迫られることは殆どないわけですが、ここではレンタルサーバーでも何とか負荷分散できる技術を二つ紹介します。前提としては.htaccessファイルが使えることと、独自ドメインの設定をしていて、DNSサーバーでゾーンファイルなどの設定変更が行えるというのが前提になります。ゾーンファイルを直接編集できなくても一部だけWEBページ上から編集可能であったりすることでもできたり、条件はい...
2016.8.4 木
findでファイル名を検索 findはファイル名を検索します。ほんとにごく頻繁に使う便利なコマンドです。ディレクトリとファイル名を指定して検索しますが、例によってfind / -name “*”こういうコマンドはナンセンスです。検索したいディレクトリに移動してその下位ディレクトリを再帰的に検索するのかベターかと思います。 $ find . -name "*.html" ファイル数を数える ファイル数を数えるコマンドとかあったかもわからないけど、面倒なので書きだして行数数える。diffとる時なんかはこうやって書き出して比べてみるといいです。余分なファイルとか足りないファイルがあったりなかったり。 $ find . -name "*.html" &gt; html...
2016.7.2 土
/proc/meminfoで確認します。ただのファイルなので、catとかviとかで開いて見ます。 $ cat /proc/meminfo というような感じです。 MemTotal: 2097152 kB MemFree: 1903832 kB Buffers: 0 kB Cached: 0 kB SwapCached: 0 kB Active: 0 kB Inactive: 0 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 2097152 kB LowFree: 1903832 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 260 kB Writeback: 0 kB AnonPages: 0 kB Mapped:...
2016.6.9 木
OSの確認(Linuxディストリビューション) CPUスペックの確認 メモリ容量の確認 HDD容量確認 Apacheの設定確認(設定情報、文字コード、モジュール) SSHの確認 MTAの確認 MySQLの確認 Perlのバージョン確認(Perlモジュールの確認(インクルードパスを調べる)) PHPのバージョン確認 ログインシェルの確認 OS確認 Debian GNU/Linux $ cat /etc/debian_version 4.0 Ubuntu あるいは、 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=8.04 DISTRIB_CODENAME=hardy DISTRIB_DESCRIPTION="Ubuntu 8.0...
2016.6.8 水
Linux系のマシンではrootとそのほかのユーザーに分かれていてroot以下はそれぞれの権限内での操作しかできないようになっています。それぞれいろいろ設定しておく必要があります。 ユーザーの作成 基本的なコマンドは以下の通りです。usermodとかほとんど使わないです。 command useradd ユーザー作成 usermod 更新 userdel ユーザー削除 passwd パスワード作成・変更 新規ユーザー作成 新規でユーザーを作成すると/home以下に作成したユーザーの専用ディレクトリが自動的に作成されます。 # useradd test /home/testが作成されているはずです。 # ls /home ec2-user test ←作成されている また、passwdファイル...
2016.6.8 水
CentOS6でのApache2の設定ですが、基本httpd.confがあるApacheだったらだいたい同じ設定でいけるかと思います。Debian/Ubuntuだけちょっと違う感じになりますが、考え方は同じです。 AWSの「Amazon Linux AMI」でもだいたい同じような設定でなんとかなります。(ちなみにAWSのLinuxは、ec2-userでログインします。) Apacheのインストール httpdのインストールとかapacheのインストールとかいろいろ言い方がありますが、httpdはサーバー内のサービス名もしくはデーモン名ということになっていて、Apacheはミドルウェアそのものの名前ということになります。 前提としてセキュリティーグループやFWでポートの80はあけておきましょう...
2016.6.3 金
すべてのPCはLinuxになってほしいです。 なんか変なソフトいっぱいインストールするよりコマンドでやったほうがいいです。 ファイルをzipにする $ zip test.zip test.txt ディレクトリをzipにする $ zip -r test.zip ./test パスワード付きのzipにする $ zip -e -r test.zip ./test