PostgreSQL
PostgreSQL
2019.10.20 日
Cloud SQLはVMインスタンスなどとちょっと勝手が違うので備忘録的なメモ。 TerraformのAPIのDocumentはこちら。 google_sql_database_instance 正しい書き方にも関わらず以下のようなエラーが出るときがあります。 Error: Error, failed to create instance master-instance: googleapi: Error 403: Cloud SQL Admin API has not been used in project xxxxxxxxxxxx before or it is disabled. Enable it by visiting https://console.developers.goo...
2019.10.20 日
GCPのVMインスタンスはIAMで登録したユーザーが自動的にVMインスタンスのユーザーとして登録されるようになっているのだけど、デフォルトでは誰でもsodo suできるようになっている。sudo suできるユーザーを限定するには、/etc/sudoers.d/google_sudoersを修正します。修正間違えるとログインできなくなるので注意。 #%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL username ALL=(ALL) NOPASSWD: ALL 既存のgoogle-sudoersの行をコメントアウトして、許可するユーザーを個別に書いてあげればOKです。これでsudo suとsudo自体が使えなくなります。
2019.10.19 土
Ansibleをまだ使ったことがない人が基本的な使い方ができるようになるまで解説します。 SSHでホストに接続できるようにしておく Ansibleの実行ユーザーとSSHの実行ユーザーを同じにしておくことを前提に、対象hostにSSHで接続できるようにしておきます。いつものように.ssh/configに接続情報を書いておきます。その接続情報をAnsibleで使うことになります。 接続先のホスト情報はインベントリ(在庫リスト)と呼ばれていますが、これは、Ansibleが複数のhostに対して実行できるため、こういった呼び名になっています。Ansibleが各hostへ接続するためには常にこのインベントリを使います。 対象ホストが複数台あるときは複数のHost情報をconfigに設定しておいてくださ...
2019.10.19 土
AnsibleでSSHの基本的な設定をします。ホストに接続できるようになっていることを前提としています。接続シていない場合は、対象のマシンに接続しておいてください。 Ansibleのインストールと基本的な使い方 SSHの設定 SSHの設定は、 チェック (ドライラン) $ ansible-playbook --check -i inventory/hosts sshd.yml 実行 ansible-playbook -i inventory/hosts sshd.yml Ansible でSSHのセキュリティ設定
2019.10.17 木
やり方がものすごいたくさんあるので、あれなんですが、典型的な使い方のみここで紹介します。ここでは設定方法にGCP Consoleを利用します。Terraformやgcloudコマンドなどの設定方法はまた今度。 GCPの対象のプロジェクトにログインし[Strage]→[ブラウザ]とすすみます。 ACLを変更する対象のオブジェクトに移動します。公開アクセスの部分が非公開になっている場合は第三者から見ることができません。 第三者から見た場合は、401のエラーを返します。 (ただし、閲覧権限のあるオーナーなどでGoogleにログイン中は、URLにアクセスすると閲覧が可能になっています。一度ログアウトしてからURLアクセスしてみてください。) error errors 0 ...
2019.10.17 木
Terraformでインフラを管理する場合、いわゆる冪等性を担保するためにステータスを共有する必要があります。このステータスを管理するためにTerraformのBackend機能というものがあります。Backend機能を使ってステータス情報を共有のストレージに格納し共有します。terraform applyを実行する際にはこの共有ステータスを見に行くことになるので、複数のリモート環境から実行するこが可能です。 今回はGCPのCloud storageを使ってみます。 仕組み 正直terraformのbackanedなるものがどこまでを指しているんだかわからないのですが、おそらくterraform.tfstateを指しているんだということでよいかと思います。このステータス管理しているterra...
2019.10.13 日
ひょんなことでpg_ctlが使えないことあります。 $ pg_ctl reload -bash: pg_ctl: コマンドが見つかりません 殆どの場合パスが通っていないだけ。 $ echo $PATH /usr/pgsql-12/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/var/lib/pgsql/bin:/usr/local/bin:/var/lib/pgsql/bin:/usr/local/bin ん?なんか通ってるくさい? # find / -name "pgsql" /etc/sysconfig/pgsql /var/lib/pgsql いや、全然違う。postgresのホームを指しているっぽい。なんか問題...
2019.10.11 金
インストール 2019-10-11現在の最新のPostgresは11系になるのかなと思っていたら、もう12が出てますね。 E.1. Release 12 ここでは最新入れると何かといろいろあるので11の方をインストールします。 古いバージョンの確認、アンインストール 現行でインストールされているものを確認します。 # yum list installed | grep postgresql 9系がインストールされているので、アンインストールします。 postgresql.x86_64 9.2.24-1.el7_5 @base postgresql-libs.x86_64 9.2.24-1.el7_5 @base postgresql-server.x86_64 9.2.24-1.el7_5 ...
2019.10.10 木
TODO: あとで追加 FIXME: 既知の不具合があるコード HACK: あまりきれいじゃないコード XXX: 危険!動くけどなぜうごくかわからない。 REVIEW: 意図した通りに動くか見直す必要がある OPTIMIZE: 無駄が多い。 CHANGED: コードをどのように変更したか。 NOTE: 告知 WARNING: 注意
2019.10.8 火
Projectの進め方ということで、マネージメント側のお話なんですが、システム制作においてはシステムのことを知っている誰かが指揮をとらないといけないというのがあって、プログラマーにとっては非常に頭の痛い話です。 テストと調査がすなわち制作物になっちゃうことがある。→ 予定が立たない。 テストと調査がすなわち制作物になっちゃうことがある。→ 予定が立たない。 既存のシステムの中身を全部知っている人はたぶんいないです。知っている人がいるなんていう期待をしない方がいい。「仕様 as Code」といわれるように、すべての事実はCodeに書かれているという悲劇。書かれていることは確かではあるが、
2019.10.8 火
今どきこんな作業することになるとは。 # yum list | grep cvs cvs.x86_64 1.11.23-35.el7 @base なんかあるっぽい。安定版の最新が1.11.23。 # yum -y install cvs バージョン確認 # cvs --version Concurrent Versions System (CVS) 1.11.23 (client/server) 場所 # which cvs /usr/bin/cvs なるほど。 /home/cvsrootを使いたいので、対象ディレクトリで初期化。 私の場合は既存のcvsのファイルを別サーバーから移動してきて行いました。とくに問題なくinitできたようです。 # cvs -d /home/cvsroot in...
2019.10.4 金
テキストで図を管理できるので、仕様変更をGit管理できるというのがとてもよいです。 主にvs code上で使うことが多いですが、簡易的な場合はtyporaで使うのがいちばんいいです。vs codeはプラグイン的な扱いでmarmaidを導入しますが、typoraはそのままで使えます。 sequenceDiagramでこんなような書き方ができます。 sequenceDiagram foo->>bar: 数を増やしたいときは、それに連なるものをつなげてゆきます。 sequenceDiagram foo->>bar: bar->>baz: いくらでもつなげます。 sequenceDiagram foo->>bar: bar->>baz: b...
2019.10.4 金
Python3でAnsibleが使えるようにします。以下、参考。 MacにPythonの開発環境を作る Ansileのインストールと設定 Pythonをバージョンによって使い分ける ここでやること Macへansibleをインストール リモートホストへの接続 userでのHello world. root(sudo)でのHello world. Install Macにインストールするには、brew使うのがいちばんいいと思います。brewを更新、またはアップデートしておきます。Doctorもやっておいてエラーなどを解消しておいた方がいいです。 $ brew update $ brew doctor $ brew upgrade 現行でインストールできるansibleを確認します。 $ bre...
2019.10.3 木
$ killall Dock killだけど自動的に再起動かかります。 または、アクティビティーマネージャーから強制的に停止します。(自動的に起動するので再起動ってことになります。) × Close
2019.10.2 水
Xcodeのインストール Xcode Mac App Storeでダウンロードします。(無料) かなりの容量のソフトなのでダウンロードには結構時間がかかります。 Command line toolをhttps://developer.apple.com/download/more/ダウンロード。アップルIDが必要です。dmgファイルでインストール。インストーラがあるので楽。 インストールができたら、以下でライセンス確認します。 $ sudo xcodebuild -license パスを確認 $ xcode-select --print-path これでインストールは完了。 pyenvのインストール pythonはバージョン管理したいのでpyenvを入れて、python3とpython2を切...
2019.10.2 水
CentOS7にAnsibleをインストールする例です。 # yum install epel-release # cd ~ # yum -y install ansible バージョン確認。ansible 2.8.5が入りました。 # ansible --version ansible 2.8.5 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/s...
2019.10.2 水
python2とpythin3の過渡期と言われて、まだまだ過渡期が続いていったい何年続くんや?ということで、結局2も3も使わないといけないわけなので、結局エブリデー過渡期のPythonです。 特に私の場合はAnsibleをどっちのバージョンでやるべきかという検討でかなり迷ったので、結局Pythonはバージョンを複数使わないとダメだなという結論でした。その他のアプリでも言語のバージョンを複数使いこなさないといけない場合があると思います。 Python 3サポート AnsibleはPythonバージョン3.5以降のみをサポートします。なのでCentOS7などではデフォルトでPython 2.7.5がインストールされているので、Python3をインストールする必要があります。 Ansibleの環境...
2019.10.1 火
GCPはやれること多すぎて知見がないと、すべてただのトラブルです。 SSHが接続できない チェック項目 メタデータにそもそも公開鍵を登録していない。またそのユーザー名も確認しましょう。 「プロジェクト全体の SSH 認証鍵をブロック」という項目にチェックが入っている。(チェックを外して保存しても、また元に戻ってしまって外せないことがある)
2019.9.30 月
Compute EngineのメタデータからSSHKeyを登録する。 VMインスタンスを作成する。 FWの設定をする。
2019.9.30 月
既存のVMインスタンスの設定をterraform側に還元できるというやつです。ぶっちゃけimportの意味がよくわからなくなります。 公式ドキュメントはこちら Import Usage v0.7.0以降のterraformで可能な機能で、ここではGCPでもってTerraform v0.12.3で説明します。 公式では構成ファイルを作成するには至っておらず、状態のパラメータのみをjsonで吐き出すとのこと。手動でtfファイルを作らないといけない作業は残りますが、これはそうとう便利になったということができます。https://www.terraform.io/docs/import/index.html インポート Terraformは、既存のインフラストラクチャをインポートできます。これにより...
2019.9.29 日
GmailのSMTPサーバーの使い方が変更になったこととG-Suiteなどの有料サービスがだんだん浸透してきたのもあって情報がかなり錯綜している感じ。GmailのSMTPサーバー使えますが、2段階認証が設けられてSMTPサーバーはGoogleのアプリの一部として認証するという仕組みになった模様です。 2段階認証の設定 ランディングページからの設定はこちらからできるようです。Google アカウントの セキュリティを強化 アカウントから設定する場合は、該当のアカウントでGmailにログインします。 右上の自分のアイコンをクリックするとGoogleアカウントという青いボタンが現れるので、それを押下。 ようこそ画面に遷移します。 左メニューの...
2019.9.29 日
巷でいうところの修正をしてもダメでした。 プラグインの問題。Wordpressのプラグインを全部止めるとアップロードできるので、ちょっとずつプラグインを起動して確認する。 php.iniの「max_execution_time」を30(秒)から60(秒)に変更。単に設定変える。 niginxの方でアップロードサイズを拡張する。 niginxのアップロードサイズ変更 niginxとapacheでリバースプロキシしているので、Wordpressのエラーに対してApacheの方のエラーログはなし。ってことはnginxの問題でレスポンスが返っているってことです。client_max_body_size 2g;を追加 location / { proxy_pass http://localhost:8...
2019.9.28 土
Dockerの基本的な使い方 Dockerにはいろんな使い方があるのですが、その中でも最も基本的な使い方を説明します。すでにDockerがインストールされている状態を想定しているので、インストールと初期設定が終わっていることが前提になります。 ここではdocker pullでDockerhubからイメージを引っ張り出して構築します。Dockerhub 現時点ではversion 19.03.2を前提に話をすすめます。(2019-09-28時点) $ docker --version Docker version 19.03.2, build 6a30dfc Dockerを運用するディレクトリを作成します。 $ mkdir -m 755 ~/mydocker $ cd mydocker Dock...
2019.9.26 木
1つのアカウントにつき6台の複数端末での共有が可能。 端末で共有する 1つのアカウントで6台の複数端末での共有が可能です。メインのPCで購入することを仮定すると、自分のiPhoneとiPad、自分の会社のPCと奥さんのPCとiPhoneといった感じで、これで6台です。 Amazonにログインしてください。画面右上にある「アカウント&サービス」を選択するとメニューが出てきます。そこをクリックして進みます。(場合によってはもう一度パスワードを求められるときがあります。) 現在自分がもっているコンテンツの一覧が出るので、共有したい書籍をリスト中の先頭のチェックボックスで選択します。選択すると上部の「配信」ボタンがアクティブになるので、配信ボタンを押します。 &t...
2019.9.24 火
Terraform for GCPの目次 Terraformを使ってみていろいろな側面が見えてきたので、Terraformとはを含めて諸々書いてゆきたいと思います。 Terrafromはクラウドサーバー構築のAPIで、いわゆる設定ファイルを読み込んで実行するだけで今までポチポチと管理コンソールで行っていた設定を一気に実行できるという利点がまずあります。とはいえインフラストラクチャーをコマンド上で実行するのは非常に抵抗があるという方は冪等性という概念を一度理解してあげるとそこそこ安心するのではないかと思います。またこの「設定ファイルを読み込んで実行する」というのは、設定ファイルをgitなどで管理できて、その変更履歴を常に保存できるという利点もあります。そしてこれはインフラ構築のパラメータ管理を...
2019.9.22 日
Laravelのプロジェクトを立ち上げるときはLaradockが便利です。Laravel5で使うその他のツールやDBも一通り揃っているので大変便利です。結構頻繁に更新も行われているものなのでちゃんとしているという印象。 Laradockのclone 入手の方法はこれで終わり。適当なディレクトリを作ってcloneするだけです。 $ git clone git@github.com:laradock/laradock.git Laradockの設定 基本的にはenvファイルを作成するだけです。env-exampleを.envにコピーしてから設定をします。これで各アプリケーションやミドルウェアにでデフォルトの設定が完了しました。 $ cd laradock $ cp env-example .e...
2019.9.22 日
#----- # mac #----- .DS_Store .AppleDouble .LSOverride # Icon must end with two Icon # Thumbnails ._* # Files that might appear on external disk .Spotlight-V100 .Trashes # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk #--------- # windows #--------- Thumbs.db ehthumbs.db # Fo...
2019.9.21 土
source .bash_profileの実行し忘れというのではなく、起動するたびに設定が反映されていないときがありました。なんで? そもそもパスが通っていないのかもしれない。echo $HOMEとかで確認。 そもそもログインシェルが違うのかもしれない。 一度ログアウトしてからログインするとまた元に戻っていて設定が反映されていないという始末。再起動時も同じ。毎回source .bash_profileやsource .bashrcを実行するのは何か変。そもそもデーモン化したアプリとかはどうすんのよ。 ってのは、.bash_profileや.bashrcはログインシェルがbashのときに起動するということなので、ログインシェルとしてbashが起動していないという可能性が大きい。ログインシェルの...
2019.9.16 月
php artisan tinkerを実行すると以下のようなエラーで実行できないことがあります。 In Configuration.php line 363: [ErrorException] mkdir(): Permission denied -vvvvをつけて、デバックモードでコマンドを実行してみます。 $ php artisan tinker -vvvv In Configuration.php line 363: [ErrorException] mkdir(): Permission denied Exception trace: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n...
2019.9.16 月
CentOS7でapacheを動かしている環境です。PHPは7.2.17で動いています。 laravel5でtinkerを実行すると以下のようなエラー(Warning) $ php artisan tinker PHP Warning: Module 'ssh2' already loaded in Unknown on line 0 ssh2が二重に読み込まれているっぽいので、エクステンションの部分を検索してみる。/etcあたりを検索。 $ find ./etc -type f | xargs grep "ssh2.so" ./php.d/ssh2.ini:extension=ssh2.so ./php.d/20-ssh2.ini:extension=ssh2.so どっちかが無駄っぽい気...