Category "Backend"を表示しています。
2017.12.25 月
Gitでリモートリポジトリにプッシュしたときにリモートリポジトリの内容を開発環境に反映させるというやつを作ります。 正確にいうと開発者がpushしたタイミングで開発環境(として設定しているホスト)が自分でpullをするという仕組みです。 hook (post-receive) リモートリポジトリの中にhooksというディレクトリがあって、その中にフックのサンプルが幾つか入っています。pushしたときに発動してくれるのが REMOTE_REPOSITORY/hooks/post-receive というやつになります。post-receive.sampleとなっているので、post-receiveにリネームして使います。中身見てみるとわかるのですが、ただのbashの実行ファイルです。pushした...
2017.12.13 水
CentOs7で新しくZONEを作って恒久的に設定させます。 http、https、mysqlを使えるようにします。 さっくり版です。 firewalldの起動 systemctl start firewalld firewalldの自動起動設定 systemctl enable firewalld まずはデフォルトゾーンの確認。 firewall-cmd --get-default-zone public ZONEの作成 firewall-cmd --permanent --new-zone=newzone success 設定変更したのでリロード firewall-cmd --reload success 作成したzoneの確認 firewall-cmd --zone=newzone -...
2017.12.13 水
最近はhttpプロトコルでのアクセスが異様に多くて何でもかんでもhttp/httpsになってきているので接続の確認方法いろいろ紹介します。 やたらとプロキシ・サーバーがあったり妙なアクセス制限があったりFWの設定情報を開示してくれなかったり世の中いったいどうなってんでだというところではありますが、順を追えばわかったりしますので根気強くハックしましょう。 特定ホストに接続できない(返り値を得ることができない) 例えば以下のようなURLにアクセスできないとします。ステータスが403になってしまったなどです。 host.example.com digでIPを探す どういう理由かはわからないので、取り急ぎdigでIPアドレスを求めます。 $ dig host.example.com xxxxx.co...
2017.12.7 木
そのまま使えるRewite ホスト名を条件にするやつ ホスト名がexample.comの場合は、httpsにしてアクセスさせる RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2017.12.6 水
LocalhostでSMTPサーバーというのはごく頻繁。今回は外から使えるSMTPサーバーの構築手順です。 例えばLaravel5だったら.envで以下のような感じで使えるようにします。開発とかでちょこちょこ使う感じの想定なので、sslとかtlsとか設定してません。通常のいわゆる本物のメールは最近うるさいので、こういう送信メールサーバー使わない方がいいです。 開発とかで簡易的に使うのでsslとかtlsとかはなし。 postfixを使う。 普通のパスワード認証 ポートは587 (25は使わない) Laravelとかの設定ではこんな感じになる。 MAIL_DRIVER=smtp MAIL_HOST=smtp.example.com MAIL_PORT=587 MAIL_USERNAME=smtp...
2017.12.5 火
インストール 改ざん検知の有名なソフトclamAVをインストールします。 yum -y install --enablerepo=epel clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd デフォルトでこのまま使えるかと思うのでまずはウィルススキャンを手動で実行してみましょう。 テスト ダミーのテスト用ウィルスファイルを準備します。Nortonとかが敏感に反応するのでPC上でやる場合はウィルス検知系のソフトをいったん切ります。 cd /root w...
2017.12.5 火
NFSサーバの設定 nfsのインストール nfs-utilsをインストールします。 # yum -y install nfs-utils サービスを起動 # systemctl start rpcbind # systemctl start nfs-server 自動起動を有効にする # systemctl enable rpcbind # systemctl enable nfs-server マウントする領域を作成 # mkdir /home/user/nfsserver テストファイル作成 # vi /var/www/nfs/test.txt 共有設定 # vi /etc/exports /home/user 192.168.2.0/24(rw) または、 /home/user 192...
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.11.22 水
特に問題なければせっかくのWEBという公開情報なので、クロールさせるが基本ですが、テストコードやそんなものがたまたまインデックスされて自分のサイト情報として上位に上がってきちゃったら格好悪いとか、あるいはそもそもクローズドなWEBサイトである場合はクロールそのものを禁止します。 とはいってもこの設定はお互いのモラルに基いてというところが基本路線なので、この設定をしたからといって公開されていないというわけではありません。 robot.txt robot.txtをドキュメントルートに作成して、 User-agent: * Disallow: / とやると、すべてのコンテンツがクロールされません。GoogleやYahooなどの大手はこれを読んで守ってくれているようです。Disallow:の後にパス...
2017.10.26 木
WEBやシステムの開発で複数のユーザーが同じコンテンツを制作する場合があります。そのような場合はユーザーにグループを紐付けて権限の調整を行います。(ってそんな必要あるんですかね。仕事ではやたらにやりますが。) user01は/home/user01/のファイルの読み書き実行のパーミッションがあります。その中の/home/user01/foo/だけuser02が読み書き実行の権限があり、その他のディレクトリは読みのみというような設定をしてみます。 user: user01 (/home/user01/*の読み書き実行権限(デフォルト)) user: user02 (/home/user01/foo/*のみ読み書き実行権限) group: group01 (共有箇所の権限を設定するグループ) ユ...
2017.9.29 金
AIDEをインストールする yum install -y aide 設定 設定ファイル確認 vi /etc/aide.conf ## 改ざん検知の対象から外すもの !/tmp !/proc aideのスキャニング自体は典型的なLinuxサーバーでは(サイズによりますが)10分から60分ぐらいはかかりました。少なくともサーバー立ち上げ時でも10分弱かかりました。なので、テスト中は殆どのディレクトリを対象外にして開発した方がよいです。 また修正した後はこの後の初期化コマンド(aide –init)でDB作成をしないとダメです。 初期化(というかDBの生成) ものすごい時間がかかるので、topコマンドで見守る。 aide --init AIDE, version 0.15.1 ### ...
2017.9.27 水
.bashrcに以下追加 export PS1="[\u@HOSTNAME]\\$ " 保存したら source .bashrc
2017.9.27 水
URL/URIの正規化というと「正規化」というエンジニア用語みたいのが絡んでいて意味がわからないので、URL/URIの統一化の方がいいんじゃないかということで、正規化=統一化という話でここでは進めたいと思います。 URL/URIっていうのは、いろんな方法で1つのデータに割り当てられるというのがそもそもの問題であり、またその複数のURL/URIというのを別々のデータであると判断する検索エンジン…というのが第二の問題であります。これは機能上仕方ないことといえば仕方ないことなので、サイトを運用する側が何とかしないといけないというところです。 http://www.example.com/ http://example.com/ という2つのURL/URIがあったとして、この2つをバラバラに利用して...
2017.9.25 月
Postfixの設定 インストール yum -y install postfix 2017-09-25時点では最新のpostfix-2.10.1-6.el7.x86_64がイントールされると思う。(あるいは最近のサービスだったらすでにされているかも) /etc/postfix/main.cfを設定します。 cd /etc/postfix/ cp -p main.cf main.cf.org vi main.cf 実際ここでmain.cfに何も設定しなくてもlocalhostであれば、メールが送信できるようになっている筈です。テストサーバーとか開発サーバーとかでPHPのmb_sendmail()あたりをつかうのであれば充分かと思います。 systemctl start postfix.serv...
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.9.12 火
最近のクラウドサーバーはSSHのコンソールが管理画面にあったりするのでよいですね。SSH接続できなくなったからといってデータセンターに行くことももうないです。 設定の前にサーバーの通信を遮断しているものを全部フリーにしておく。 SSHの設定の切り分けのためにサーバーにデフォルトで設定してあるファイヤーウォールなどは予めすべて切りにしておきましょう。セキュリティ・ポリシーはその後丁寧に設定しましょう。 で、最初にこれらは全部切りにしておく。 SULinux iptables Firewall (CentOS7からの新種) hosts.allow/hosts.deny SULinux vi /etc/selinux/config SELINUX=disabled (*1)サーバー再起動必要 ip...
2017.9.12 火
端末によってまちまちですが一部のAndroide端末ではBasic認証をかけたディレクトリ以下の動画が再生できないというのがあります。また再生はできてもいちいちBasic認証が2回走るということになります。 通常Basic認証は全てのファイルに引き継がれるんですが動画ファイルだけ(たぶんvideoタグだけなのかも。)認証情報が引き継がれないみたいです。 しかたがないので動画ファイルだけ認証解除してしまうしかないです。 AuthUserFile /home/USER/.htpasswd AuthGroupFile /dev/null AuthName StaffOnly AuthType Basic require valid-user <Files ~ "\.(mov|mp4|m4v|...
2017.9.7 木
すごく簡単なバックアップシェルです。DBとファイルを保存して、別筐体にもコピーします。コピーはrsyncの方が速いのでscpとか使うのやめました。 あと30日前のものはバックアップのタイミングで削除されます。cronで実行する前提で作っているので基本フルパスになっています。手動でも動きますよ。 ちなみにログとかそういう機能はありません。 #!/usr/bin/bash #----------- # backup.sh #----------- # file record time record_time=`date "+%Y%m%d_%H%M"` # file backup setting backupdir="/home/user/backup" # backup file store d...
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.7.16 日
rsyncsync サーバー間でアプリケーションの同期をします。rsyncの同期なのでアプリケーションの種類は問いませんが、多少そのアプリの内容に精通していないと使いづらいと思います。 設定内容は以下になります。 同期元と同期先のSSH接続情報(SSHkey設定推奨) 同期元のDatabase接続情報、同期先のDatabase接続情報 アプリケーションファイルの置換文字列設定 Databaseの置換文字列設定 ロールバックの設定 環境 openssl-devel libssh2 ssh2 インストールと設定 転送元の任意のディレクトリにアップロードしてください。PHP7.0以上推奨ですが、たぶんそれ以下のバージョンでも動きます。
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.6.5 月
インストール リポジトリの調整しなくても2.4が入ってくれるっぽいです。 yum -y install httpd これで完了。 httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Apr 12 2017 21:03:28 なるほど。 Firewallやiptablesを無効にしていればこの時点で80がListenされます。 IPなどでアクセスするとApacheのWelcomeページが表示される筈です。 httpd.confの設定 以下を例に設定します。基本的には/var/www/htmlは使いません。すべてバーチャルホストで設定します。 Domain port host1.example.com virtualhost ...
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.29 月
CentOS6のOpenSSHが古い問題でいろいろ大変です。 CentOSのデフォOpenSSH(5.3p1)はちょっとアレなんで最新版(7.1p1)をコンパイルしてみたでかなり詳しく正確に書いてくれているのでなになんですが、ちょっとリマインドで書いておきます。 今回既存のSSHが5.3で7.5にバージョンアップしたという感じです。CentOS6やRedhad系だったらそこそここのやり方でOKな筈。 OpenSSH_5.3p1 ↓ OpenSSH_7.5p1 しかし結果からいうとtelnetや最近のクラウドサービスのコンソール的なものでSSH以外で接続しておかないとちょっと怖い感じがあります。 とはいえきちんと設定しればSSHの再起動で接続は切断されますが、すぐにSSHログインができるように...
2017.5.29 月
まずはリポジトリ関連 yum -y install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm PHPをインストール yum -y install --enablerepo=remi-php72 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc php-bcmath php-mcrypt php-imap php-intl php-pgsql これでいつも使うやつ...
2017.5.29 月
Firewallというのが追加されました。 CentOS6まではLinuxサーバ上でファイアウォールを稼働さす場合、iptablesを使ったフィルタを実装するのが一般的でした。これをこのままCentOS7で利用することも可能なのですが、新たなファイアウォールとしてfirewalldというのが実装されました。 CentOS7からFirewallとiptablesがどっちでも使えるようになっているという謎。正直Firewall要らないです。どちらも内部的には同じようなものらしいですが、設定方法が少々異なるので面倒くさいです。 Firewallはゾーンという概念で設定するようです。(これはまた今度) iptablesを使う方の設定 systemctl status firewalld デフォルトで...
2017.4.23 日
Windows MINGW64でphpを使うの続きです。 Localのコンソールが何であるかによってちょっと変わりますが基本は同じです。私はMINGW64使っておりますのでここでもその想定で。 xamppのphpパス xamppをインストールしたばかりだとデフォルトでcliはフルパスじゃないと使えません。 /c/xampp/php/php.exe -v PHP 5.6.19 (cli) (built: Mar 2 2016 20:08:35) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies こんな感じでCLIとして使えます。しかしこれではかな...
2017.4.21 金
LolipopにSSHログインしたらコンソールから cd /usr/local ls -al とやると一応使える言語がいろいろと出てくるので確認してみてください。 rootなのでlsしかできないですのが、ここらに使えるものが揃っています。 php5.3 php5.4 php5.5 php5.6 php7.1 php7を使いたい場合は、 /usr/local/php7.1/bin/php -v こんな感じでフルパスで指定してやると使えます。
2017.4.16 日
githubはとても便利なんですが、最初に使おうと思うと結構面倒なので備忘録。 githubは基本すべてオープンになるので、ソースを晒す前提で書いてゆくとよいかと思います。無料で使えるリモートリポジトリなので大変ありがたいです。 SSHでGithubに接続する githubへの接続はSSHの鍵認証みなので、最初にSSHキーを作成します。 SSHの鍵を作成する 何も設定しない場合は、以下の2つのファイルが作成されます。秘密鍵(id_rsa)と公開鍵(id_rsa.pub)です。 id_rsa id_rsa.pub 通常SSHで接続する際には公開鍵をAuthGithubに接続する際にはauthorized_keysファイルに登録(追記)します。GithubにSSHで接続する場合は、 Github...