1. 2019-10-05
  2. 2019-09-17
  3. 2019-08-29
  4. 2019-08-27
  5. 2019-08-21
  6. 2019-08-02
  7. 2019-07-31
  8. 2019-07-30
  9. 2019-07-25

2019-10-05

ソフトバンクのルーターの初期ユーザーとパスワード

ユーザー名「user」パスワード「user」

Ubuntu16.04 IPアドレス固定

/etc/network/interfaces
source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens33
#iface ens33 inet dhcp
iface ens33 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

2019-09-17

普通にbabel7

インストール
npm install --save-dev @babel/core @babel/preset-env @babel/cli
.babelrc
{
    "presets": [
        "@babel/preset-env"
    ]
}
起動方法
npx babel src -d lib

2019-08-29

ランレングス圧縮

やっつけ

function runlength(text) {
	let compressed = '';
	let n = 0;
	let pc = null;
	for (let i = 0, len = text.length; i < len; ++i) {
		const c = text.charAt(i);
		if (pc !== null && c !== pc) {
			compressed += n + pc;
			n = 0;
		}
		pc = c;
		++n;
	}
	if (n > 0) {
		compressed += n + pc;
	}
	return compressed;
}

console.assert( runlength('') === '' );
console.assert( runlength('a') === '1a' );
console.assert( runlength('aaabbbb') === '3a4b' );
console.assert( runlength('aaabbbbcccccabbaaaacc') === '3a4b5c1a2b4a2c' );

2019-08-27

webpackでbabel7

インストール
npm install --save-dev webpack webpack-cli
npm install --save-dev @babel/core @babel/preset-env babel-loader
.babelrc
{
    "presets": [
        "@babel/preset-env"
    ]
}
webpack.config.js
const path = require('path');

module.exports = {
  mode: 'development',  // productionにすると難読化&minifyされる
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'public/js'),  // ここはフルパスで指定
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: ['babel-loader']
      }
    ],
  }
};
起動方法
npx webpack

gulp4でlessを自動コンパイル

インストール
npm install --save-dev less gulp gulp-less
gulpfile.js
const gulp = require('gulp');
const less = require('gulp-less');

// lessをコンパイルするタスク
gulp.task('less', function(done) {
  gulp.src('./src/less/*.less').pipe(less()).pipe(gulp.dest('./public/css'));
  done();  // done()しないと終わらない
});

// ファイルの変更を監視してlessタスクを起動するタスク
gulp.task('watch', function() {
  gulp.watch('./src/less/*.less', gulp.series('less'));
});

// デフォルトのタスク (lessタスクとwatchタスクを両方やる)
gulp.task('default', gulp.series('less', 'watch'));  // gulp.series()に渡したタスクは左から順に流れる
起動方法
# lessタスクだけ実行
npx gulp less

# watchタスクだけ実行
npx gulp watch

# defaultタスクだけ実行
npx gulp

2019-08-21

AMIから復元したEC2インスタンスに踏み台から接続しようとしたら Permission denied(publickey)

AMIから作成したインスタンスは勝手にパスワードログインが無効化されるらしい

/etc/ssh/sshd_configPasswordAuthentication yes にしてSSH再起動 sudo service sshd restart

2019-08-02

upstart 登録

/ect/init 以下に {ジョブ名}.conf ファイルを作る

piyopiyo.conf
# 説明
description "hello"

# ランレベル3,4,5かつnetworkが開始したら動き出す
start on (runlevel [345] and started network)

# ランレベル3,4,5以外またはnetworkが停止したら止まる
stop on (runlevel [!345] or stopping network)

# プロセスが死んだら自動で復活する
respawn

# やること (例: ユーザー kiriukun で /my/terrible/program.sh を叩く)
exec sudo -u kiriukun /my/terrible/program.sh

upstart 設定をリロード

ジョブ追加したらやる

sudo initctl reload-configuration

upstart 起動、停止、再起動

piyopiyo はジョブ名。Amazon Linuxではログは /var/log/messages に出てたから、動かなかったら見る。

sudo initctl start piyopiyo
sudo initctl restart piyopiyo
sudo initctl stop piyopiyo

2019-07-31

ApacheのMPMを確認する方法

httpd -l コマンドで『Server MPM』を見る (※Windowsでしか確認してない)

WinNTはスレッド増える系だから、PHP乗せるならスレッドセーフ版にする

Server version: Apache/2.4.39 (Win64)
Apache Lounge VS16 Server built:   May 28 2019 17:12:51
Server's Module Magic Number: 20120211:84
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     WinNT
  threaded:     yes (fixed thread count)
    forked:     no
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/apache"
 -D SUEXEC_BIN="/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error.log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

2019-07-30

Amazon Linux 秘密鍵じゃなくてパスワードでログインできるようにする

/etc/ssh/sshd_config を編集して PasswordAuthentication yes に変更する

変更したら /etc/rc.d/init.d/sshd restart で反映する

しくじると鍵でも入れなくなるから、他から入れることを確認するまで今のSSHを切ってはいけない

2019-07-25

Amazon Aurora (PostgreSQL互換) Serverless

  • PostgreSQLのバージョンは必ず最新のものになる。
  • パブリックアクセスは不可。踏み台EC2だの作って、そこからアクセスする。
  • 作成時にデータベース名を決められないっぽいので、デフォルトの postgres データベースでログインして作業する。
  • サブネットグループはRDSの画面の左メニュー『サブネットグループ』から作れる。
AmazonLinuxにpsqlインストール
yum install postgresql96.x86_64
psqlでRDSに接続
psql -h ${RDSのエンドポイント} -U ${データベース作成時に設定したユーザー名} -d postgres

Amazon Linux 踏み台サーバーの作り方

以下サイト様を参照

Amazon Linux sudoできるユーザーの作り方

sudo useradd kiriukun
sudo passwd kiriukun
sudo visudo

visudo すると /etc/sudoers を書き込み可能状態で開ける。開いたら以下を追記する。root ユーザーで似たような記述があるはずだから、そこらへんに書けばいい。

kiriukun    ALL=(ALL)       ALL

これで作ったユーザーは、sudo するときに自分自身のパスワードを求められる。rootユーザーのパスワードを入力させたいとか、パスワード入力しなくていいようにするには、以下サイト様を参照。

Amazon Linux ログインできないユーザーの作り方

sudo useradd -s /sbin/nologin kiriukun

もしこれで追加したユーザーで作業したいことがあったら、他のユーザーでログインしてから root に昇格 → su -s /bin/bash - kiriukun で入れる

プライベートVPC内のEC2でyumできるようにする

プライベートなVPCはプライベートだから当然 yum も無理。でもAmazon Linuxの yum リポジトリがS3にあるらしいので、VPCにS3へのエンドポイントを追加してやれば yum できるようになる。

ただVPCのエンドポイントは存在するだけで有料なことは留意。