投稿

2018の投稿を表示しています

concrete5のインストール

前回 はベース用のAMIを作成したのでそこからサクッと別イメージを作成して CMSなぞ構築してみようかと思ってWordPressという選択肢もあるんですが、今回は concrete5 を入れてみます。 Moveble-Type もあるけど、お金いるんで今回はパスで 1.参考情報 ◆構築参照サイト http://isboj.wp.xdomain.jp/2017/09/01/concrete5/ https://qiita.com/renny1398/items/a6aa309d05245f0aae60 https://websiteforstudents.com/install-concrete5-on-ubuntu-16-04-lts-with-nginx-mariadb-and-php-7-1-support/ https://qiita.com/sapi_kawahara/items/bbfbc57fd12ff348f216 https://tecadmin.net/install-php5-on-ubuntu/ ◆使い方 https://www.slideshare.net/HishikawaTakuro/concrete5-41538126 https://concrete5-japan.org/help/5-6/editing/add-a-page/ ◆テーマ作成方法 https://www.wplng.com/column/20160806/ http://www.webdesignleaves.com/wp/concrete5/358/ http://onocom.net/blog/%E3%80%90c5%E3%80%91concrete5-ver5-7%E4%BB%A5%E9%99%8D%E3%81%A7%E6%9C%80%E9%80%9F%E3%81%A7%E3%83%86%E3%83%BC%E3%83%9E%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95/ ◆カスタマイズ等 https://www.onside.com/web_design/6884.html http://www.totec-bs.co.jp/blog/concrete5_c

EC2でUbuntu用のBaseOSイメージを作ってみた

ローカルの仮想基盤(Hyper-V)よりEC2でサーバ構築することが増えてきました。 何といっても環境がすぐに準備できていらなくなったら捨てられるというのもいいですし、公私ともAWSでサーバ構築というパターンが増えてきています。 特にプライベートではHyper-V使ってるんですが仮想ディスクのHDDイメージが わさわさできてきてディスク容量がいっぱいになってイメージ消したりしないと いけなかったりと色々と面倒が出てきてます。 特にプライベートではAWSをそのまま使うと費用が掛かるので GMOの株主優待 使って Conoha でWebサーバを立てた方が割安なのでそっちを使っています。 仕事ではがんがんEC2を使っています。今まで t2.micro を使っていたんですが、ここにきて無料利用枠がそろそろ切れそうなので次のサーバは t3.micro で構築した方がコスパが イイかなぁと思いまして、でEC2のBaseのUbuntuイメージをAMI化したのでその時の 手順をまとめておこうかと思ってメモする次第です。 clamavはsmallレベルじゃないとバッチがまともに動かないので要注意です。 Fail2Banとかrootkitも同じく それでは以下に手順です。 1.BaseOS インスタンス作成 ・種別   t3micro Ubuntu18.04LTS ・ElasticIPの割当  停止している状態でインスタンスにElasticIPを割当する。 2.設定コマンド類 ## ホスト名設定 $ sudo hostnamectl set-hostname basesrv ## アップデート $ sudo apt-get -y update $ sudo apt-get -y upgrade ## sshセキュア強化 $ sudo vi /etc/ssh/sshd_config + PermitRootLogin no $ sudo service ssh restart ## 日本語化 $ sudo apt-get -y install language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8 $ sudo apt-get -y install binutils $ str

DynamoDBへのJSON投入用のLambda

前回 にJSON作成用のEXCEL作成して DataPipeLineでのデータ投入 を試したけれど 全然うまくいかないのでムキーという状態になったのですが、発想を変えてLambdaで S3に保存されたファイルをトリガーに自動実行 させて SNS で メールすれば いいじゃん。 と考えて、試してみました。 S3に保存されたファイルをDynamoDBに取込むところまでは何とか準備できた。 んでこれをどう加工するかですな。SNS側も何とかできました。 が、S3保存トリガーだとなぜかメールが2通飛ぶんだよなぁ。LambdaのWebエディタからだと1回なのに、、S3トリガーだと2通飛ぶ、これ何でだろうなぁ。 誰か親切な方、教えていただけると幸いです、 そして相変わらずコードベタ貼り、SAMとか使っていないからGit管理できていないのが その理由です。(苦笑 import logging import datetime import logging import json import os import urllib import boto3 LOGGER = logging.getLogger() LOGGER.setLevel(logging.INFO) dynamodb = boto3.resource('dynamodb') s3_res = boto3.resource('s3') s3_cl = boto3.client('s3') client = boto3.client('lambda') # DynamoDBに書込み def put_item(writeitems,writetable): try: table = dynamodb.Table(writetable) with table.batch_writer() as batch: for i in range(len(writeitems)): batch.put_item( Item=writeitems[i] ) LOG

DynamoDB初期データ投入用JSON作成用マクロ作成

DynamoDB 用のJSONを作成して DataPipeline に流すのに JSONがいるので色々と調べながら作成してみた。 EXCEL VBAなのは編集するときに色々と融通を利かせたいからです。 本当はかっちょよいWebのやつとかで作れればいいんですけど そこまでのスキルがないのですよ。それはご愛敬だww そして Git やってみました。色々と分からないことだらけですが とりあえず、上げてみた。 https://github.com/Otazoman/excel_tool.git        処理の流れとしては 1.EXCELのシートで元シートを作成 2.元シートにデータを投入 3.EXCELでJSONデータを生成し WinSCP で S3 にアップロード エラーハンドリングはほとんど考慮できていないし しょぼいコードなので何とも言えない。 ちなみにIDとPW設定はWinSCPのものに依存するので S3側にアクセスできるユーザをあらかじめ IAM で作成しておく必要が あります。 ◆投入用JSONデータフォーマット参考 https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SampleData.LoadData.html まだDynamoにデータ投入していないので、きちんと動くかは これから検証してみる必要ありなんですが。 検証してみて不具合出てきたら更新はしていく予定です。 フォーマット変わらない限りは使えるかなぁと思っていますが、どうだろうか。

EXCELでJSON形式の中の要素数を数える

とりあえず、JSON形式なデータがEXCELに格納されているので JSONの中に何個要素があるかをカウントするマクロです。 カウントしたいデータのデータ形式 {"key1":"value1","key2":"value2","key3":"value3","key4":"value4"} まぁ参考にすらならないかもですが、、、 DynamoDBのファイル作るときに役に立つかも Function operationCheck() Dim ts As Worksheet Dim i As Long Dim j As Long Dim fRow As Long Dim wStr As String Dim wArray() As String Dim wVal As String Set ts = ThisWorkbook.Worksheets("Sheet1") fRow = ts.Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 2 To fRow - 1 wStr = Replace(ts.Range("B" & i).Value, "{", "") wStr = Replace(wStr, "}", "") 'カンマ区切りの文字を1個ずつ配列に格納 wArray = Split(wStr, ",") For j = 0 To UBound(wArray) Select Case j Case Is = 0 wVal = "0" Case Is = 1

AWS Lambdaのpythonで複数テーブル引いてきて検索するやつ作った

ちょっと融通の利く検索システムがほしかったので作成、 無謀にもpython3.6で挑戦、 ここ を参考にスタートしたのはいいものの 初心者の上あほなので調べながらやってたのでここまでで1週間位かかっている。 DynamoDBのテーブル構造は以下の通りです。 テーブル1のKEYで検索した結果を使ってテーブル2のPKを特定し そして検索結果をJSONで返すというやつです。 テーブル1でカテゴリから商品コードを引いてきて、その商品コードと Webから受け取ったパラメータで検索を行って検索結果を一覧で 表示するとかいう内容を想定しています。こうしておけば VALUEの部分が可変でも対応できるので柔軟かなぁと考えてのことです。 テーブル1: ---------------------------------- KEY,VALUE ---------------------------------- テーブル2: ---------------------------------- VALUE[n],SEARCHKEY,VALUE ---------------------------------- ※VALUE[n]はテーブル1のVALUEです。 イメージとしては[KEY]→テーブル1からVALUE取得 [VALUE[n]]+[SEARCHKEY]→テーブル2からVALUE取得 LambdaはWebのエディタで作るという無謀感が半端ない。メンテナンス性とか全く考慮なし。本当は こういうの でやるべきですが、使い方が分かりません。 どなたか親切な方、教えてください。 でお約束のソース共有 import logging import json import os import re import boto3 from boto3.dynamodb.conditions import Key class InternalFunctionError(Exception): def __init__(self, code, messages): self.code = code self.messages = messages def __str__(self): exob

Dockerハンズオン用環境準備【EC2】

イメージ
Dockerのハンズオン に参加するので準備と思ったけど、、、 持出用のWinノートもMacBookも持っていない僕はUbuntu入りの Chromebookしかないので、、、 デスクトップ機は Docker for Windows が入っているものの、それ 持ってけません。しょうがないので EC2 で CentOS環境を準備し、そこにChromebookのUbuntuからssh -i で 接続する方法で対応することにした。 AWSのハンズオン(EC2にssh接続必要な場合)もこの方法でしのいだ(笑) んで、EC2上にDocker環境を構築した際の備忘録 最近はUbuntuインストールが多くCentOS7は久々だ。 ※というよりAMI準備しておいてそこからDockerだけインストールとか  すれば楽なんだけどEBSのお金をけちってAMI保存していない。  数円レベルなんですけどね。 Gitはいらないかもしれないけどなんかあったときにツール落とすのとかで あると重宝するので入れておくにこしたことなし。 ●参照サイト https://qiita.com/uhooi/items/f8c67a9e716a226e28cd https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html AMIは以下を使用してt2microで構築します。 CentOS 7 (x86_64) - with Updates HVM  (58) | 1805_01  以前のバージョン  | By  Centos.org $0.00/hr  for software  + AWS usage fees Linux/Unix, CentOS 7 | 64 ビット Amazon マシンイメージ (AMI) | 更新済み: 2018/06/13 (1)ホスト名設定 (2)アップデート、ツールインストール (3)SELinux無効化等 (4)sshセキュア強化 (5)日本語化 (6)ntp設定 (7)git インストール (8)Dockerインストール ●以下コマンド (0)バージョン確認 $ su

EC2でRedmine構築

急遽EC2でRedmineを構築するということになって検証で立ち上げ作業をしていて というよりDockerFile使うとかBitnami使えばもっと早くできるじゃないかという ツッコミはあるかもしれませんが、取りあえず一から構築してみようということで 万が一同じ作業をするときになったら困るので備忘録としてメモ Ubuntu+Nginx+Unicorn構成で動かしています。 日次バックアップはAMIでイメージを取る方法で設定(今検証中ですが、、、) 課題としてはデータベース部分、EC2のストレージ8GBなので少し心配 まぁ一杯になりそうならRDSに移そう。でその時にログ類も考えよう ◆大枠の手順は以下の通り Ubuntu初期設定 nginx、データベース設定 Redmineインストール Ruby関連インストール プラグイン類導入 EC2日次バックアップ設定(日次でAMIイメージをバックアップする) 事後作業 ◆参考にしたサイト(ほぼコピペ(笑)、先人の皆様ありがとうございます。) 1.OS設定参照 https://qiita.com/kotarella1110/items/f638822d64a43824dfa4 https://www.server-world.info/query?os=Ubuntu_16.04&p=ntp https://www.server-world.info/query?os=Ubuntu_18.04&p=initial_conf&f=4 https://plumpliver.com/post-5403/ 2.Redmine設定関連参照 https://qiita.com/bikun_bikun/items/30951573fc900d78d0c9 https://qiita.com/suesan/items/3baeb26e09c379a9bb2b https://qiita.com/godai0505/items/44d12ef0d52b2dc9d560 https://symfoware.blog.fc2.com/blog-entry-2074.html http://zaka-think.com/lin

S3+CloudFront+Lambda@EdgeでBasic認証

S3で試験用Webサイトを作るときにBasic認証しておかないとなぁと思って、 少し検証してみることにしました。 検証用なので別にドメインは取得しなくてもいいので今回はサクッと先人の 事例をまんま参照してやりました。 手順はこんな感じ 1.S3サイト作成  Webhostingの設定、パブリックでの公開はしない 2.CloudFront準備  CloudFront経由の時のみS3アクセス許可  キャッシュは無効    3.IAMの設定(Lambda@Edge用) ・ポリシーのパラメータ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:GetFunction", "lambda:EnableReplication*", "iam:CreateServiceLinkedRole", "cloudfront:CreateDistribution",

AWS-SAM-CLIのDockerFile作ってみた(その1)

諸般の事情でLambdaの開発環境が必要になり。 色々と練習するならローカルでやりたいなぁと考えて 実力もないのにAWSのサーバレスのローカル開発環境を作ろうと したわけです。 環境はWindows10ですが、家族の共用PCなので開発環境をぶち込むと マニアックなことになりそうなのでなるべく環境をきれいにと考えて Dockerです。DockerにAWSのローカル開発環境を作ることにしました。 1.基本の流れ  さくらのナレッジ参考   https://knowledge.sakura.ad.jp/13265/  (1)pullしてイメージをダウンロードしてくる。  (2)イメージに必要になる環境を構築していく  (3)作成したイメージのコマンドをdockerfileに記述しテストする  (4)DockerFileをベースにインフラを自動構築させる。  こんなイメージみたいです。  どうせだったら、自動で環境構築までできるとかっこいいじゃん。と  今更時代遅れですがDockerです。 2.Dockerインストール  (1)DockerHubに登録する    https://hub.docker.com/  (2)インストール   インストーラをダウンロード、Hyper-Vが必要   Windows10Proなら何もしなくても簡単にインストールできる   幸いProなのでそのまま    http://www.atmarkit.co.jp/ait/articles/1609/01/news053.html    https://qiita.com/Ogaaaan/items/99fe54f052ca450889f7 3.開発環境の雛形作成  で、ひとまずサーバレス開発環境用の仮想コンテナを準備する。  DockerFile作るので、試行錯誤する。   https://qiita.com/voluntas/items/68c1fd04dd3d507d4083   http://www.ajisaba.net/develop/docker/docker_attach.html   powershell使えと言われそう

Ubuntu18.0.4LTSアップグレード

とりあえずUbuntuの最新版LTSが出たとのことで そろそろこなれてるかなと思いアップデート テスト用のサーバがないのでいきなりConohaの本番機で作業 いい加減何とかしたいです。が、お金がないので仕方なし ひとまずこの辺を参考に http://gihyo.jp/admin/serial/01/ubuntu-recipe/0517 https://qiita.com/TsutomuNakamura/items/bbd712e3afe5f4bacfac https://ameblo.jp/yoshihirow/entry-12384337578.html でお約束のバージョンアップコマンド $ sudo apt-get install update-manager-core $ sudo do-release-upgrade -d $ sudo cat /etc/lsb-release 再起動してバージョンを確認 無事に18.0.4LTSに上がってます。うんうんと思って動作確認 したところ。 トラブルその1 SSHの設定がすべて吹っ飛んでるじゃないですか。 旧を残すとしたのに、、、ということで再設定してsshdを再起動 $ sudo /etc/init.d/ssh restart でSSHは接続できたもののrootログイン禁止や接続ユーザ限定が すべてやり直しになった。以下、参照にしました。 https://qiita.com/0x50/items/05c89333ae046dc6fa0f https://qiita.com/v97ug/items/eca44cf160b65570e423 http://linux.just4fun.biz/?Linux%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/%E7%89%B9%E5%AE%9A%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E3%81%BFSSH%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E5%8F%AF%E8%83%BD%E3%81%AB%E3%81%99%E3%82%8B トラブルその2

StaticPress-S3でWordPressをS3に連携

最近はサーバレスがトレンドなのでトレンド乗ってみたいのと 某社の方々がWordPressを信奉していて、数百万PV目指してるくせに WordPressとは片腹いたいわと思いながら、少し実験してみました。 はっきり言って某社の方々を笑う資格があるほど僕はスキルありませんが まぁ、これができればかなり運用コスト低減につながりますな。 とりあえず先人の方々の苦労の上に作業したので備忘録がてら残します。 あまり参考にはならないかも、、、、、 ここ で全体の流れはまとまっています。 構成としては以下の通り ●コンテンツアップ  LightSailのWordPressサーバ→S3 ●外部からの接続  CloudFront→S3 httpsを使いたいのでCloudFront使っています。 前回の作業 で既にCloudFrontとS3の構築完了済みの前提です。 1.VPC構築   https://qiita.com/shizuma/items/396ad15ff574717dfa1d https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Appendix_NACLs.html  (1)VPCのデフォルトセキュリティグループの設定変更   [セキュリティ]→[セキュリティグループ]   インバウンド http、https、DNS、SSHを許可  ※上記作業は不要だったかも、、、 2. LightSail でWordPressを構築する  固定IPで構築しましたがStaticPressで再構築する際に  対応してくれるみたいなので固定IPのままで問題なし   https://qiita.com/taru2/items/ecd3fc4ee567dee937f1   https://qiita.com/foursue/items/8e685b52cfddf05875ee   https://qiita.com/na0AaooQ/items/781b3823b79fd3b747a3   (1)SSHキーのダウンロード   ・ホスト名のリンクをクリックするとキーをダウンロードできる    http://ryoichi0102.hatenablog.

S3+CloudFlont+ACMで静的サイト立ててみた

サーバレス構成できないかなぁと思って色々と触っています。 んで、一番簡単な S3 + CloudFront + ACM でhttps静的サイトを 立ててみた。あくまでも実験の一環ですが思ったより簡単だった。 調べながらだいたい1.5日位かかった。技術力低いですから SES はトラブったんで今回はパス。ほとんど抜粋記事です(笑) 大枠の参照 https://qiita.com/jasbulilit/items/73d70a01a5d3b520450f 1.S3で非公開にて静的サイト作成  これはバケットを非公開で作成してそこにHTMLファイルを  ぶち込む。ここは詰まりません。 2.CloudFlont設定   https://dev.classmethod.jp/cloud/aws/cdn-with-cloudfront-and-s3/   https://www.aws-book.com/getting-started/cloudfront/s3.html  S3をオリジンとしてCloudFront経由にて公開  このタイミングでhttp→httpsリダイレクトにする。 3.Route53にてAレコード設定   https://qiita.com/buta/items/06a7e147d865fb862783   https://tomokazu-kozuma.com/how-to-set-the-domain-acquired-by-route53-to-aws-cloudfront/   http://koboldtodragon.hatenablog.com/entry/2017/10/11/080000  CreateRecordSetにてAレコード追加、Aliasに*****.cloudfront.net登録  http://*****.cloudfront.netで接続を確認  ひとまずはhttpsでS3のサイトにアクセスできるようになる。 4.SES設定(なし)  ここは結局、S3にテストメールがうまく届かなかったので断念   https://dev.classmethod.jp/cloud/aws/acm-verify

ChromeBookでUbuntuとデュアルブートして開発環境作るぜ(その2)

前回 の投稿で日本語開発環境までは整えたけど ここから開発環境の構築が必要になってくるんですねぇ。 で、どういう環境が必要かというと今のところは 以下のとおりです。 ・GitHub ・Node.js ・HerokuCLI では始めます。 1.エディタの準備  vimをインストールします。  VSCodeを使えればいいんでしょうけど。重そうなのでvimです。 $ sudo apt-get install vim $ sudo update-alternatives --config editor 2.Gitインストール   お約束です。これがないと始まりません。が公式は脆弱性があるバージョンですと!?    ここ の手順に沿って非公式リポジトリからインストールします。 $ sudo apt-get install apt-file $ sudo apt-file update $ sudo apt-file search add-apt-repository $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install git 3.Node.jsインストール   これも ここ のサイトのまんまインストール $ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh $ nvm install 8.11.1 4.HerokuCLIインストール  今回の開発で必要なので入れます。 $ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh $ heroku --version 環境構築までは手間取ったもののあとはUbuntuなので かなり先人の知恵の蓄積があるのでそこまでトラブらなかった。 PythonもあるしAWSのCLIとか入れたら

ChromeBookでUbuntuとデュアルブートして開発環境作るぜ(その1)

勉強会でPCがいるのでLinuxの開発環境が動くようにと思い、 以前に買ってネット専用マシンとなっている ASUS Chromebook C300MA にUbuntuを入れてみました ※最初は こちら の様にChromevrewを入れようとしたけどwget動かなかった それが結局解決できなかったので断念 すでに先人たちが色々とやってくださっていますが、取りあえず 自分の備忘録としてセットアップした手順は残しておきます。 1.Chromebookを開発者モードにする ここ の手順をベースに開発者モードにします。 リカバリメディア作り忘れた(泣)。かなり待たないといけないので時間が あるときにしましょう。   2.Chromebookを開発者モードで起動して色々設定 Wi-Fi接続とかCtrl+Alt+tでターミナルが立ち上がってShellが動くかとかを 確認してきちんと動いているのを見て安心する(笑) 入力ミスると音がします。消せる方法あるんでしょうが、 取りあえずそのまま行きます。 3.SDカードのフォーマット EXT4でフォーマットします。16GBのやつ慌てて購入してきました。 850円、Transcendの奴で フォーマットは こいつ で実施 4.SDカードをChromeBook本体に挿す 挿し込みは慎重にしたほうがいいです。どっちが表か注意がいります。 5.ChromeBookを開発者モードで起動しターミナル立ち上げ Ctrl+Dで起動してログイン後にCtrl+alt+tにてコンソールを立ち上げます。 shellにてコマンド操作ができる状態にしておく、下記のサイトをパクりながら作業   https://shimota.site/thinkIT/chromebook%E3%81%ABubuntulinux%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/ https://chromesoku.com/linux-on-chromebook-sdcard/   http://yanagisawa.hatenablog.com/entry/2017/01/22/crouton%E