article-thumbnail

macに初期セットアップされているPHPを8系にアップグレードする

【概要】mac初期設定のPHP7.3からPHP8.0.2へバージョンアップする方法についてまとめます。また、参考としてcomposerインストールとセットアップ方法についてもまとめています。【詳細】[PHP8.0をインストールする]・現在のPHPのバージョンを確認するphp -v出力結果例WARNING: PHP is not recommendedPHP is included in macOS for compatibility with legacy software.Future versions of macOS will not include PHP.PHP 7.3.24-(to be removed in future macOS) (cli) (built: Dec 21 2020 21:33:25) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies筆者が購入したmacに初期セットアップされているのはPHP7.3でした。このバージョンからPHP8.0をインストールします。・PHP8系を検索するbrew search php@8==gt; [email protected]==gt; Caskshomebrew/cask/eclipse-phphomebrew/cask/netbeans-php・[email protected]をインストールするbrew install [email protected]・.zshrcにPATHを通す下記の2つのパスを.zshrcに設定します。/usr/local/opt/[email protected]/bin/usr/local/opt/[email protected]/sbin設定コマンドvi ~/.zshrc設定内容export PATH=$PATH:/usr/local/opt/[email protected]/bin:/usr/local/opt/[email protected]/sbin・PHPバージョン確認php -v出力結果PHP 8.0.2 (cli) (built: Feb4 2021 18:57:55) ( NTS )Copyright (c) The PHP GroupZend Engine v4.0.2, Copyright (c) Zend Technologieswith Zend OPcache v8.0.2, Copyright (c), by Zend Technologies[composerインストールとセットアップ]1. composerインストールcurl -sS https://getcomposer.org/installer | php2. composerのディレクトリ移動とファイル名変更composer.phar を 「/usr/local/bin/」配下に移動します。※ ディレクトリ移動かつファイル名をcomposer.pharからcomposerに変更mv composer.phar /usr/local/bin/composer3. composerのバージョン確認composer -V出力結果例Composer version 2.0.10 2021-02-23 16:11:37

カテゴリ: mac 2021-02-25 00:20:58
article-thumbnail

MacにMongoDBをインストールする

【概要】macにHomebrewを使用してMongoDBをインストールする方法と接続・切断方法についてまとめます。【詳細】0. Homebrewをアップデートしておく最新バージョンのMongoDBをインストールする為に以下のコマンドでHomebrewをアップデートしておきます。brew update1. MongoDBのtapをインストールするMongoDBをインストールする前にtapをインストールしておきます。brew tap mongodb/brew2. MongoDBをインストールするbrew install mongodb-community3. 起動と停止・起動コマンドbrew services start mongodb-community・停止コマンドbrew services stop mongodb-community・再起動コマンドbrew services restart mongodb-community4. MongoDBへの接続と切断方法・接続mongo・切断exitMacの場合は「Control + d」で切断できます。・接続先指定する場合構文mongo IP:Port/Database名例文mongo 192.168.0.2:27017/test上記はIPが「192.168.0.2」のPort「27017」のMongoDBに存在するtestデータベースにアクセスしています。Cf1. インストールしたMongoDBのバージョンを確認するmongo --version出力結果例MongoDB shell version v4.4.3Build Info: {"version": "4.4.3","gitVersion": "913d6b62acfbb344dde1b116f4161360acd8fd13","modules": [],"allocator": "system","environment": {"distarch": "x86_64","target_arch": "x86_64"}}2021/01/27時点で最新バージョンのMongoDBがインストールされました。Cf2. MongoDBのconfを見る以下のパスにMongoDBのconfが存在し、その中に詳細が記載されています。/usr/local/etc/mongod.conf内容例systemLog:destination: filepath: /usr/local/var/log/mongodb/mongo.loglogAppend: truestorage:dbPath: /usr/local/var/mongodbnet:bindIp: 127.0.0.1

カテゴリ: mac 2021-02-05 02:20:53
article-thumbnail

Zabbix ServerでDBを監視する方法

【概要】Zabbix ServerでDBを監視する方法についてまとめます。【詳細】1. Firewall設定10050と10051ポートを解放します。firewall-cmd --zone=public --add-port=10050/tcp --permanentfirewall-cmd --zone=public --add-port=10051/tcp --permanent※ Zabbix Serverからの接続のみ許可する場合firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="ZABBIX SERVERのIP" port protocol="tcp" port="10050" accept"firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="ZABBIX SERVERのIP" port protocol="tcp" port="10051" accept"2. DB監視用ユーザーを作成するここではzabbixユーザーを作成しますが、任意のユーザーで作成して下さい。・zabbix@localhostCREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ユーザーのパスワード';GRANT ALL PRIVILEGES ON *.* TO "zabbix"@"localhost";※ 「'ユーザーのパスワード'」に任意のパスワードを設定して下さい。3. 「/etc/zabbix/zabbix_my.cnf」作成touch /etc/zabbix/zabbix_my.cnfchown zabbix:zabbix /etc/zabbix/zabbix_my.cnfchmod 600 /etc/zabbix/zabbix_my.cnfvi /etc/zabbix/zabbix_my.cnf設定内容[client]user=zabbixpassword="ユーザーのパスワード"4. 「/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf」作成touch /etc/zabbix/zabbix_agentd.d/userparameter_mysql.confvi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf設定内容# Key syntax is mysql.status[variable].UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql --defaults-extra-file=/etc/zabbix/zabbix_my.cnf -N | awk '{print $2}'UserParameter=mysql.ping,mysqladmin --defaults-extra-file=/etc/zabbix/zabbix_my.cnf ping 2gt;amp;1 | grep -c aliveUserParameter=mysql.version,mysql -V5. 「Template DB MySQL」テンプレート設定Zabbix Serverにて「Template DB MySQL」テンプレート等の任意のテンプレートを設定して下さい。これで値が取得できれば成功です。Cf. 監視ができない場合の対応「/etc/zabbix/zabbix_my.cnf」のパスでは読み込めない時があります。その場合は「/etc/zabbix/zabbix_agentd.d/zabbix_my.cnf」に配置し、「/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf」の内容以下に変更して下さい。# Key syntax is mysql.status[variable].UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql --defaults-extra-file=/etc/zabbix/zabbix_agentd.d/zabbix_my.cnf -N | awk '{print $2}'UserParameter=mysql.ping,mysqladmin --defaults-extra-file=/etc/zabbix/zabbix_agentd.d/zabbix_my.cnf ping 2gt;amp;1 | grep -c aliveUserParameter=mysql.version,mysql -V

カテゴリ: ZABBIX 2021-01-07 00:42:42
article-thumbnail

CentOS7にバージョンを指定してMariaDBをインストールする

【概要】CentOS7に指定したバージョンのMariaDBをインストールする方法についてまとめます。ここでは2020/12/22現在、Old Stable版の10.4をインストールする方法を例として記述します。【詳細】1. インストール済みパッケージの確認yum list installed | grep -i mariadb2. 古いバージョンを削除するyum remove mariadb-libs3. MariaDB.repoを作成するインストールしたいバージョンのMariaDB.repoを作成する必要があります。MariaDB FoudationのサイトにてOS、バージョンを指定して設定内容を取得します。自分が実行したバージョンは「CentOS」gt;「CentOS 7 (x86_64)」gt;「10.4 [Old Stable]」を押下後、作成するMariaDB.repoの内容が出力されます。・MariaDB.repo作成touch /etc/yum.repos.d/MariaDB.repo・MariaDB.repoに設定を記述するvi /etc/yum.repos.d/MariaDB.repo設定内容# MariaDB 10.4 CentOS repository list - created 2020-12-16 07:55 UTC# http://downloads.mariadb.org/mariadb/repositories/[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.4/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=14. MariaDBをインストールするyum install MariaDB-server MariaDB-client・インストール実行例下記はインストールコマンド実行時の出力結果例です。以下のように10.4のバージョンがインストールする事が明示されれば成功です。...省略...Dependencies Resolved================================================================================================================================================================================================================================================================================PackageArchVersionRepositorySize================================================================================================================================================================================================================================================================================Installing:MariaDB-clientx86_6410.4.17-1.el7.centosmariadb12 MMariaDB-serverx86_6410.4.17-1.el7.centosmariadb26 M...省略...Cf. MariaDB-develをインストールするyum install MariaDB-devel5. MariaDBバージョン確認mysql -V出力結果例mysqlVer 15.1 Distrib 10.4.17-MariaDB, for Linux (x86_64) using readline 5.1無事MariaDB10.4がインストールされた事が確認できました。

カテゴリ: CentOS 2020-12-22 01:22:02
article-thumbnail

特定のIPアドレスのみ全ポート・プロトコルを許可するFirewall設定

【概要】全ポート・プロトコル開放を特定のIPアドレスのみ許可するFirewall設定についてまとめます。この設定は既にSSHポートやHTTPポートを設定していても併用して設定することができます。【詳細】・構文firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="許可するIPアドレス/cidr" accept"「許可するIPアドレス」部分にIPアドレスを入力して下さい。・設定反映firewall-cmd --reload・反映確認firewall-cmd --list-all --zone=public出力結果例public (active) target: default ...省略... rich rules: rule family="ipv4" source address="許可するIPアドレス/cidr" accept「rich rules」部分に指定したIPアドレスの許可設定が出力されれば成功です。Cf. 設定削除コマンドfirewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="許可するIPアドレス/cidr" accept"設定削除コマンド実行後は設定反映コマンドと反映確認を行って下さい。【tcpプロトコルの全ポート開放する場合】・構文firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="許可するIPアドレス" port protocol="tcp" port="0-65535" accept"・設定反映firewall-cmd --reload・確認これで開放していないポートでも指定したIPアドレスからはアクセスが許可されます。例えば、HTTP(80番)ポートを開放していなくても、設定したIPアドレスからはブラウザにて表示する事ができます。以上のような例で接続確認をしてみてください。・参考ここでは0番から65535番までのポート・プロトコルを開放していますが、特定のポート番号のレンジの指定もできます。例えば1~1000番の場合は下記のようになります。firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="許可するIPアドレス" port protocol="tcp" port="1-1000" accept"特定の番号のみの場合は下記のようにします。ここでは10022番を例とします。firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="許可するIPアドレス" port protocol="tcp" port="10022" accept"

カテゴリ: Linux 2020-12-19 10:58:05
article-thumbnail

Gitリポジトリの複製方法

【概要】既存のGitリポジトリを元に新規リポジトリにコピーする方法についてまとめます。ここではBitbucketを例としています。【詳細】1. リモートリポジトリ(GitHub等)にリポジトリを作成複製先のリモートリポジトリを作成します。2. ローカルに複製元となるリポジトリをmirrorでクローンする下記のコマンドを実行する事で「.git」ディレクトリが実行時のパスに作成されます。git clone --mirror 複製元のリポジトリURL .gitBitbucketの場合、複製元のURL(HTTPS or SSH)はブラウザでアクセス後、pullボタンを押下すれば表示されます。3. .gitに移動し、fetchとpush先のリモートリポジトリを1で作成した新規リポジトリを指定するcd .git下記のHTTPSもしくはSSHの設定をする事でリモートリポジトリの設定を1で作成した新規リポジトリになります。・HTTPSの例git remote set-url origin https://ユーザー名@bitbucket.org/契約名/リポジトリ名・SSHの例git remote set-url origin [email protected]:契約名/リポジトリ名Cf. push先のみ新規リポジトリに指定する場合「--push」オプションを追加する事でpush先のみ変更され、fetch元は既存の設定のままになります。git remote set-url --push origin 複製先のリポジトリURL4. リモート接続先の確認git remote -v出力結果例origin複製先のリポジトリURL (fetch)origin複製先のリポジトリURL (push)5. 新規複製先にプッシュするgit push --mirror6. リモートリポジトリを確認する使用しているGitHubやBitbucket等のサイトに行き、新規リポジトリにソースが入っていれば成功です。

カテゴリ: Git 2020-12-12 03:30:58
article-thumbnail

Node.jsでのディレクトリ・ファイル操作方法まとめ

【概要】Node.jsでのディレクトリとファイルの操作方法についてまとめます。参考としてNuxt.jsでのzipファイルの投稿方法については以下のドキュメントにまとめているので、参考にしてみて下さい。Nuxt.jsでzipファイルをアップロードする方法【初期設定】1. multerとfs-extraとadm-zipをインストールするnpm i multer fs-extra adm-zip2. Node.jsにてmulterとfs-extraとadm-zipを読み込むconst fs = require('fs-extra');const multer= require('multer');const multerStorage = multer.diskStorage({ destination (req, file, cb) { cb(null, '/static'); }, filename (req, file, cb) { cb(null, file.originalname); }});const upload = multer({ storage: multerStorage });const admZip = require('adm-zip');※ 「multer.diskStorage」メソッドのデフォルト設定では投稿されたzipファイル名がランダムな文字列で保存されます。元のファイル名で保存する場合の処理を記述しているので、不要な場合はメソッド内部で設定されている「filename」部分は削除して下さい。【ディレクトリ確認】・構文fs.existsSync(検索対象パス);存在する場合には「true」を返し、存在しない場合は「false」を返します。・例文下記ではstatic/uploadディレクトリが存在確認をしております。if (fs.existsSync('./static/upload')) { console.log('ディレクトリが存在します。');} else { console.log('ディレクトリは存在しません。');}【zipファイル解凍】・構文let zip = new admZip(zipファイルパス);zip.extractAllTo(解凍先のパス, true);先ず、「admZip」メソッドの引数にzipファイルのパスを記述します。「zip.extractAllTo」メソッドで指定したパス先に解凍します。・例文let zip = new admZip('./static/zip/sample.zip');zip.extractAllTo('./static/upload/', true);上記は「/static/zip」配下に存在する「sample.zip」を「/static/tmp/」配下に解凍します。【ディレクトリ作成】・構文fs.mkdir(作成対象のディレクトリパス);・例文fs.mkdir('./static/tmp/');staticディレクトリ配下にtmpディレクトリを作成します。【ディレクトリ同期】・構文fs.copySync(同期元パス, 同期先パス);同期元のファイル・ディレクトリが第2引数に設定したパスに同期されます。・例文fs.copySync('./static/tmp/sample', './static/upload/sample');上記は「/static/tmp/sample」配下のディレクトリ・ファイルを「/static/upload/sample」に同期させます。よって、どちらのsampleディレクトリも同じ内容になります。筆者はzipファイル解凍後に、中身のバリデーション等を行う際に使います。【ディレクトリ削除】・構文fs.removeSync(削除対象ディレクトリのパス);・例文fs.removeSync('./static/tmp/sample');上記は「/static/tmp/sample」ディレクトリを削除します。【ファイル削除】・構文fs.unlink(削除対象のファイルパス, (err) =gt; { if (err) throw err; console.log(削除対象のファイルパス + ' was deleted');});※ 上記はerrのcatchとlog出力を行っており、不要な場合は削除して下さい。・例文fs.unlink('./static/zip/sample.zip', (err) =gt; { if (err) throw err; console.log('./static/zip/sample.zip was deleted');});上記は「/static/zip/sample.zip」を削除しております。

カテゴリ: Node.js 2020-11-25 22:40:50
article-thumbnail

Nuxt.jsでzipファイルをアップロードする方法

【概要】Nuxt.jsでzipファイルをアップロードする方法についてまとめます。ここでの処理は下記の手順になります。1. フォームにzipファイルを設定し、送信する2. Node.jsで設定したAPIにzipファイルデータを送信する3. zipファイルデータを/static/zipに保存する【詳細】1. multerをインストールする。FormDataを処理する為にmulterを、ファイル操作する為にインストールします。npm i multer2. Nuxt.jsのソースi. Form部分lt;b-form @submit.prevent="uploadZip"gt;lt;b-form-group label="upload" label-cols-sm="1" label-for="uploadZip"gt;lt;b-form-file v-model="zipFiles" id="uploadZip" accept=".zip" ref="file-input" browse-text="選択"multiple placeholder="ファイルを選択、もしくはドロップして下さい" size="lg"gt;lt;/b-form-filegt;lt;b-button v-if="zipFiles" @click="uploadZip()" variant="primary" class="mt-3 w-100"gt;アップロードlt;/b-buttongt;lt;b-button v-if="zipFiles != null" @click="clearFiles()" class="mt-3 w-100"gt;Clearlt;/b-buttongt;lt;/b-form-groupgt;lt;/b-formgt;b-form-fileタグの「multiple」を設定する事で複数ファイルをフォームに設定し、アップロードする事ができます。もし、複数アップロードしない場合は「multiple」を設定する必要はありません。ii. export default部分export default {data() {return {zipFiles: null,}},methods: {async uploadZip() {for (let zipFile of this.zipFiles) {let formData = new FormData();formData.append('application/zip', zipFile);let config = { headers: { 'content-type': 'multipart/form-data' } };await axios.post(process.env.BASE_URL + '/api/zip', formData, config).then(function(response) { console.log('response', response); }).catch(function(error) { console.log('error', error); })}},clearFiles() {this.zipFiles = null;this.$refs['file-input'].reset();}},}3. Node.js(Express)のmulter部分ここでは/static/zipディレクトリに格納します。i. ランダムなファイル名の場合プログラムが作成するランダムな文字列のファイル名で保存されます。const multer = require('multer');const upload = multer({ dest: './static/zip/' });ii. ファイル名を指定する場合投稿したzipのファイル名で保存します。const multer = require('multer');const multerStorage = multer.diskStorage({destination (req, file, cb) {cb(null, './static/zip/');},filename (req, file, cb) {cb(null, file.originalname);}});const upload = multer({ storage: multerStorage });4. Node.js(Express)のAPI部分APIに送信した際に保存されます。下記では送信されたfileの情報とformのbodyに格納値をlog出力しています。log出力が不要な場合は削除して下さい。router.post('/zip', upload.single('application/zip'), function(req, res) {console.log('req.file',req.file);console.log('req.body',req.body);res.send('upload success');});

カテゴリ: Nuxt.js 2020-11-23 22:19:20
article-thumbnail

CentOS7にDockerをインストールする

【概要】CentOS7にDockerをインストールする方法についてまとめます。【詳細】0. Dockerがインストールされている場合、削除するyum remove docker docker-common docker-selinux docker-engine1. Dockerに必要なパッケージをインストールするyum install -y yum-utils device-mapper-persistent-data lvm22. Dockerのレポジトリ追加yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3. yumのパッケージインデックスを更新する推奨されている項目なので、念の為実行しております。yum makecache fast4. Dockerインストールi. インストール可能なバージョンを確認するyum list docker-ce.x86_64 --showduplicates | sort -r出力結果例docker-ce.x86_643:19.03.9-3.el7docker-ce-stable...省略...docker-ce.x86_643:18.09.9-3.el7docker-ce-stable...省略...docker-ce.x86_6418.06.3.ce-3.el7docker-ce-stable...省略...docker-ce.x86_6417.12.1.ce-1.el7.centosdocker-ce-stable...省略...ii. インストールyum install docker-ceiii. Dockerバージョン確認docker -v出力結果例Docker version 19.03.13, build 4484c46d9d5. 起動と自動起動設定systemctl start dockersystemctl enable docker6. Docker確認・前提これまではrootユーザーでの実行を想定しております。この6の項目はDocker環境を構築する任意のユーザーになって実行して下さい。i. hello-worldを起動してみるsudo docker run hello-worldii. hello-worldイメージがpullされたか確認するsudo docker images出力結果例REPOSITORYTAGIMAGE IDCREATEDSIZEhello-worldlatestbf756fb1ae6510 months ago13.3kBiii. hello-worldコンテナを確認するsudo docker ps -a出力結果例CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMEScfd0f4d2637ahello-world"/hello"18 seconds agoExited (0) 17 seconds agojovial_bhaskaraiv. hello-worldイメージを削除するsudo docker rmi bf756fb1ae65「bf756fb1ae65」はイメージIDなので、環境に合わせて変更して下さい。v. hello-worldコンテナを削除するsudo docker rm cfd0f4d2637a「cfd0f4d2637a」はコンテナIDなので、環境に合わせて変更して下さい。

カテゴリ: CentOS 2020-11-05 03:45:45
article-thumbnail

Node.jsでMySQLへのINSERT文を実行する(単数と複数行対応)

【概要】Node.jsで実行するMySQLへのINSERT文についてまとめます。1レコードでも複数レコードでも対応可能になっています。【詳細】[概要]usersテーブルに複数のuserを登録する方法についてまとめます。この後ループ文で使用されるusersObjには下記のような連想配列でnameとmail情報が入っているとします。let usersObj = [ {name:'hoge', mail: '[email protected]'}, {name:'fuga', mail: '[email protected]'}, ...省略...];[詳細]1. 定型となるインサート文を定義するlet insertIntoUsersQuery = "INSERT INTO users (name, mail) VALUES ?;";2. クエリに必要な値を持つ配列を作成する・必要な配列の型let arr = [['name情報', 'mail情報'], ['name情報', 'mail情報'], ...省略...];配列は上記のような形になります。1レコードのみをINSERTしたい場合も配列内に配列を作成する方法は変わりません。例として連想配列のusersObjからnameとmailの値を取得し、配列を作成しています。let usersArr = [];for (let user of usersObj) { usersArr.push([user.name, user.mail]);}3. クエリ実行const connection = require('./mysql');connection.query(insertIntoUsersQuery, [usersArr], (err, result) =gt; {if (err) {console.log(" Error query =======", err);return next(err);}res.json(result);})気を付ける部分は2の項目で作成した配列を配列として囲うことです。上記例のusersArrは既に配列ですが、引数として渡す際に更に配列として囲うことで実行可能です。※ 定数のconnectionには同階層のmysqlディレクトリのindex.jsにMySQL情報が記載されています。

カテゴリ: Node.js 2020-10-30 01:30:13
article-thumbnail

CentOS7にnvmを使用してNode.jsとnpmをインストールする

【概要】CentOS7にnvmを使用してNode.jsとnpmをインストールする方法をまとめます。ここでは最新バージョンや特定のバージョンのインストール等をまとめているのでCentOS7にNode.jsとnpmの環境構築したい方は参考にしてみて下さい。[注意点]下記はrootユーザーでの設定を記載しております。ec2-user等の一般ユーザーにも設定したい場合は同じ事を対象のユーザーで実行して下さい。【詳細】1. rootユーザーになるrootユーザーでインストールを実行したい為、下記のコマンドを実行します。sudo su -2. nvmをインストールするcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash3. nvmを有効化する・有効化. ~/.nvm/nvm.sh・.zshrcにパスを通すexport NVM_DIR="/root/.nvm"[ -s "$NVM_DIR/nvm.sh" ] amp;amp; . "$NVM_DIR/nvm.sh"※ 「NVM_DIR="/root/.nvm"」はrootユーザー用の設定になっているので、rootユーザー以外で設定する場合は適切なPATHに変えて下さい。4. nvmでNode.jsをインストールするi. Node.jsのインストール可能なバージョンを確認するnvm ls-remoteii. Node.jsをインストールする・最新版のNode.jsをインストールnvm install --lts・バージョン指定してインストールするnvm install v15.0.15. Node.jsとnpmのインストール確認node -vnpm -vこれでNode.jsとnpmのバージョンが出力されれば、インストール成功です。6. nvmでalias設定を行うaliasを状況に合わせて設定すると使用するNode.jsとnpmのバージョンを定義できます。下記ではdefaultのaliasを設定している為、通常時に使用するバージョンはv14.14.0となります。・構文nvm alias default バージョン・例文nvm alias default v15.0.1Cf. インストールしたNode.jsのバージョンをアンインストールする・構文nvm uninstall バージョン・例文nvm uninstall v15.0.1

カテゴリ: CentOS 2020-10-29 00:54:12
article-thumbnail

CentOS6にMySQL8系のインストールと初期設定方法まとめ

【概要】CentOS6系のサーバーにMySQL8系をインストールする方法をまとめます。【詳細】1. レポジトリ関係i. レポジトリインストールyum install yum-utilsyum install https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpmii. レポジトリ有効化yum-config-manager --enable mysql80-community2. MySQLインストールyum install mysql-server3. MySQLインストールとバージョン確認i. インストール確認which mysql出力結果/usr/bin/mysqlii. MySQLバージョン確認mysql -V出力結果例mysqlVer 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)4. MySQL起動と自動起動設定i. 起動service mysqld startii. 自動起動設定chkconfig mysqld on【初期設定】1. MySQLのroot@localhostの一時パスワードを調べるgrep 'temporary password' /var/log/mysqld.log・出力結果例2019-09-10T06:31:50.438223Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fmWwkEMeq9.N上記の最後に出力された「fmWwkEMeq9.N」がroot@localhostの一時パスワードです。2. MySQLの初期設定下記のコマンドはMySQLの最低限のセキュリティ設定を行うコマンドです。コマンドを実行するとパスワードの再設定等の各種設定に行います。mysql_secure_installation・rootのパスワードを変更Change the password for root ? ((Press y|Y for Yes, any other key for No) : yここで新規設定したパスワードがMySQLのroot権限を使用する場合に必要なるのでメモを取っておいて下さい。・変更したパスワードで設定を進めますか?Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y変更したパスワードで進めるので「y」。・anonymous ユーザーの削除しますか?Remove anonymous users? (Press y|Y for Yes, any other key for No) : yanonymous ユーザーの削除なので「y」。・リモートからrootユーザーでアクセス拒否しますか?Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yこの質問は要注意です。セキュリティを高めるのであればリモートからのrootログインを拒否した方が良いので「y」を選択します。しかし、リモートからrootログインを許可したいシステムの場合は「n」を選択して下さい。・testデータベースの削除しますか?Remove test database and access to it? (Press y|Y for Yes, any other key for No) : ytestデータベースの削除 (存在する場合)するので「y」。・設定の即時反映しますか?Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y反映させる為、「y」。3. MySQLログインとユーザー確認i. MySQLログインmysql -u root -pパスワード「hogehoge1234」ii. ユーザー確認SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user| host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | caching_sha2_password |+------------------+-----------+-----------------------+4. MySQLのログイン認証を変更[概要]MySQL8系から「caching_sha2_password」認証がデフォルトになりました。MySQL8以前のバージョンの認証は「mysql_native_password」です。また、LaravelでmigrateしようとしたりDB接続しようとする時にエラーが起きる原因となります。よって、以前の「mysql_native_password」認証に変更することをお勧めします。もし、「caching_sha2_password」認証で問題ない場合はこの項目は飛ばして下さい。[手順]i. rootユーザーの認証変更ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hogehoge1234';ii. 変更確認SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user| host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | mysql_native_password |+------------------+-----------+-----------------------+5. MySQLの文字コード確認※ MySQLにログインした状態で下記コマンドを実行します。status出力結果--------------......Server characterset:utf8mb4Dbcharacterset:utf8mb4Client characterset:utf8mb4Conn.characterset:utf8mb4......--------------6. ユーザー作成rootユーザー以外を作成したい場合はこの項目を実行して下さい。ここでは例としてdevelop@localhostユーザーを作成します。・developユーザー作成CREATE USER 'develop'@'localhost' IDENTIFIED BY 'develop用パスワード';・developユーザーに権限付与GRANT ALL ON *.* TO 'develop'@'localhost' WITH GRANT OPTION;・developユーザーの認証をmysql_native_password認証に変更するALTER USER 'develop'@'localhost' IDENTIFIED WITH mysql_native_password BY 'develop用パスワード';

カテゴリ: CentOS 2020-10-28 00:18:51
article-thumbnail

Nuxt.jsでvue-selectを使用する

【概要】Nuxt.jsにvue-selectをインストールし、フォームのサジェスト機能を作成します。このvue-selectを使用する事でサジェストに存在する値のみ入力可能にする事も可能です。【詳細】1. vue-selectをインストールするnpm install vue-select2. Vueファイルに設定をするNuxt.jsのVueファイルに設定をします。・設定例lt;templategt; lt;divgt; lt;h1gt;パン選択lt;/h1gt; lt;b-container fluidgt; lt;b-form @submit="onSubmit"gt; lt;b-form-group label="パン:" label-for="bread" class="text-left"gt; lt;v-select id="bread" v-model="form.bread" :options="breadList" placeholder="パン" required /gt; lt;/b-formgt; lt;/b-containergt; lt;/divgt;lt;/templategt;lt;scriptgt;import vSelect from 'vue-select';import 'vue-select/dist/vue-select.css';export default { components: { vSelect }, data() { form: {bread: ''}, breadList: ['アンパン', 'カレーパン', 'メロンパン'], }},lt;/scriptgt;・表示サンプルCf. タグ設定公式:Vue Select API gt; Props以下のようなタグを設定したとします。lt;v-select id="bread" v-model="form.bread" :options="breadList" @input="changeBread" :clearable="false" required /gt;上記のサンプルとは違う点は2つです。1. フォームの値が変更された時に実行するメソッド定義2. フォームの値を削除不可にする(常時いずれかの値が設定されている事)1は「@input」によって設定できます。2は「clearable="false"」によって設定できます。その他の設定に関しては下記の公式ページを参考にしてみて下さい。

カテゴリ: Nuxt.js 2020-10-24 00:37:31
article-thumbnail

JavaScriptでタイムスタンプから日付フォーマットを出力する

【概要】JSでタイムスタンプを元に日付フォーマットを出力する方法についてまとめます。ここでは下記を例にしてその設定から出力までをまとめます。「1602832648283」のタイムスタンプがあった場合に、出力される結果は「10/16 16:17」になります。【詳細】・タイムスタンプの作成タイムスタンプは以下のように作成可能です。let date = new Date();let timestamp = date.getTime();※ 上記で作成されるタイムスタンプは実行した時間になります。・タイムスタンプから日付を出力するタイムスタンプを元にDateオブジェクトを作成します。これによって、タイムスタンプが指している時刻の取得は完了です。あとは下記のように月日時間を取得します。const date= new Date(1602832648283);const month = date.getMonth() + 1;const day= date.getDate();const hour = date.getHours();const minutes = date.getMinutes();console.log(month + '/' + day + ' ' + hour + ':' + minutes);出力結果10/16 16:17※ 月に1を足している理由「date.getMonth() + 1;」で1を足している理由は、getMonthメソッドが「0-11」を範囲として出力します。つまり、1月を出力しようとした場合、そのまま出力すると0になります。よって、1を足す事で指定した月が出力されます。

カテゴリ: JS 2020-10-21 00:29:50
article-thumbnail

検索した結果をテーブルにINSERTする方法

【概要】MySQLで検索した結果を別テーブルにINSERTする方法についてまとめます。このドキュメントをまとめるきっかけは、1対多のテーブル構成から多対多のテーブルに変更する必要があり、かつそのデータを多対多のテーブルにコピーする必要があった事です。【詳細】[概要]ここでは例としてhogesテーブルとfugasテーブルが存在し、新規で多対多用のhoges_fugasテーブルを作成します。fugaテーブルにはfugasテーブルの情報とhoge_idを保有しています。よって、fugasテーブルに存在する「id」と「hoge_id」を検索し、その結果をhoges_fugasテーブルに挿入します。[クエリ]INSERT INTO hoges_fugas (hoge_id, fuga_id, created, updated)SELECT id, hoge_id, created, updated FROM fugas;これでhogeとfugaの紐づきを持った中間テーブルに全ての値が入ります。※ タイムスタンプの考慮createdやupdatedといったタイムスタンプが必須のテーブルの場合を考慮して、ここではfugasテーブルのcreatedとupdatedの値をそのままhoges_fugasテーブルに格納しています。不要な場合は外して下さい。もしくは現在時刻を入れたい方は下記のクエリを実行して下さい。INSERT INTO hoges_fugas (hoge_id, fuga_id, created, updated)SELECT id, product_id, NOW() AS created, NOW() AS updated FROM comics;

カテゴリ: MySQL 2020-10-17 01:50:19
article-thumbnail

Nuxt.jsでvue-cool-selectを使用してフォームのサジェスト機能を作成する

【概要】Nuxt.jsにvue-cool-selectをインストールし、フォームのサジェスト機能を作成します。【詳細】1. vue-cool-selectをインストールするnpm install --save vue-cool-select2. Vueファイルに設定をするNuxt.jsのVueファイルに設定をします。・設定例lt;templategt; lt;divgt; lt;h1gt;パン選択lt;/h1gt; lt;b-container fluidgt; lt;b-form @submit="onSubmit"gt; lt;b-form-group label="パン:" label-for="bread" class="text-left"gt; lt;cool-select id="bread" v-model="form.bread" :items="bread" :placeholder="form.bread" required /gt; lt;/b-form-groupgt; lt;b-button type="submit" variant="primary" class="mt-2"gt;Submitlt;/b-buttongt; lt;/b-formgt; lt;/b-containergt; lt;/divgt;lt;/templategt;lt;scriptgt;import { CoolSelect } from "vue-cool-select";import("vue-cool-select/dist/themes/bootstrap.css");export default { components: { CoolSelect }, data() { form: {bread: ''}, bread: ['アンパン', 'カレーパン', 'メロンパン'], }},lt;/scriptgt;・表示サンプル[設定概要]・サジェストリストdata部分で定義しているbreadの配列をcool-selectタグのitemsに渡す事でサジェストにパンのリストが表示されます。・vue-cool-selectをインポートimport { CoolSelect } from "vue-cool-select";import("vue-cool-select/dist/themes/bootstrap.css");ここではBootstrap Vueを使用している事を想定していますが、その他のCSSを使用している場合は下記をインポートする事でCSSが反映されます。import("vue-cool-select/dist/themes/material-design.css");・vue-cool-selectのComponentを設定するcomponents: { CoolSelect},

カテゴリ: Nuxt.js 2020-10-14 01:48:33
article-thumbnail

CentOS6系にnvm・Node.js・npmをインストールする

【概要】CentOS6系統のサーバーにnmvインストールし、Node.jsとnpmをインストールする方法をまとめます。この項目はGitのバージョンが2以上必要です。もしCentOS6にGitのバージョンが1.7等の1系がインストールされている場合は下記のリンクを元にGitのバージョンをアップデートして下さい。CentOS6にGit2系をインストール・アップデートする【nvm・Node.js・npmインストール】1. nvmインストールcurl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash2. nvmインストール確認nvm --version出力結果例0.33.83. インストール可能なNode.jsのバージョン確認nvm ls-remote4. Node.jsをインストールする下記にバージョンを指定したインストール方法を記載しています。環境に合わせてインストールして下さい。i. 最新のstable版をインストールする場合nvm install stableii. 最新版のNode.jsをインストールするnvm install --ltsiii. バージョン指定する場合nvm install v11.15.0上記は「v14.14.0」をインストールする場合のコマンドです。Cf. インストール済みNode.jsのリストを見るnvm ls5. 使用するNode.jsのバージョンを指定するnvm use v11.15.06. nvmでalias設定を行う・構文nvm alias default バージョン・例文nvm alias default v11.15.0Cf. インストールしたNode.jsのバージョンをアンインストールする・構文nvm uninstall バージョン・例文nvm uninstall v6.8.0

カテゴリ: CentOS 2020-10-12 23:59:19
article-thumbnail

macのMySQLでGROUP BYを使用できるように設定変更する

【概要】macにインストールされているMySQL8系にてGROUP BY句を使用した時に下記のエラーが出力され、実行できない事があります。Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'カラム名' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byこのドキュメントではその対処方法についてまとめています。ちなみに筆者のMySQLのバージョンは下記になります。mac OS CatalinaMySQL 8.0.19【詳細】1. my.cnfのコピーを作成するMySQLの設定を変更する為に、my.cnfを編集します。設定変更に伴い、不具合が起きたい際の対処としてコピーを作成します。cp /usr/local/etc/my.cnf /usr/local/etc/my.cnf.org2. my.cnfを編集するGROUP BYが使用できる設定を追記します。vi /usr/local/etc/my.cnf追記内容[mysqld]...デフォルト設定部分省略...sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION3. MySQLを再起動する設定を反映させる為に再起動します。mysql.server restart【参考:クエリで設定変更する場合対応】下記のクエリを流すとGROUP BYが使用できるようになります。しかし、MySQLを再起動すると再度下記のクエリを流さないとGROUP BY句が使用できないので注意です。SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

カテゴリ: mac 2020-10-11 02:22:24
article-thumbnail

CentOSでのcron設定まとめ

【概要】CentOSでcron設定をする方法についてまとめています。【初期設定】[cron起動]1. crondの状態確認systemctl status crondcrondが存在するか、また起動しているかを確認します。2. crond起動と自動起動設定crondが起動していない場合、下記のコマンドで起動、自動起動設定を行います。systemctl start crondsystemctl enable crond[cron設定]・cron設定コマンドcrontab -e・cron設定の構文分 時 日 月 曜日 コマンド・例文Node.jsのファイルを毎分実行し、そのログを残しておきたいとします。その場合下記のような記述になります。* * * * * node /home/develop/app/index.js gt;gt; /home/develop/app/logs/cron.logCf. cron設定確認コマンドcrontab -l【cron設定例】1. 複数実行時間指定「0,10,20,30」の設定を分の部分に設定したとします。(それ以外の設定は*とします)その場合、実行時刻は0分、10分、20分、30分に実行されます。0,10,20,30 * * * *つまり、カンマで区切ると複数の実行対象が設定されます。2. 範囲指定「10-19」の設定を時間部分に設定したとします。その場合、10時から〜19時の間は毎分cronを実行する事になります。* 10-19 * * *3. 間隔設定「*/10」の設定を分設定部分に記述したとします。その場合、10分おきにcronが実行されます。*/10****

カテゴリ: CentOS 2020-10-10 01:05:57
article-thumbnail

Nuxt.jsでenv機能を設定する

【概要】 Nuxt.jsでenv機能を設定する方法についてまとめます。【詳細】1. dotenvモジュールをインストールするnpm i @nuxtjs/dotenv2. .envファイルを作成するプロジェクトのディレクトリ直下に.envファイルを作成します。例として下記を設定内容とします。API_KEY = 'This is API_KEY'TEST = 'テスト項目です。'※ 基本的にenvファイルに記述されている内容は外部に漏れてはいけない内容です。デフォルトで.gitignoreに.envが記述されている事が多いですが、必ず確認するようにしましょう。3. nuxt.config.jsに設定を行うここではAPI_KEYとTESTという定数名に対してenv設定を行います。export defaultの記述前にenvを読み込む設定を記述します。export defaultの内部にenv部分を作成し、読み込む定数名を記述します。env内容を追加する場合は定数部分(const)とexport defaultのenv部分にカンマ区切りで定数名を追加して下さい。require('dotenv').config();const { API_KEY, TEST } = process.env;export default { ...省略... env: { API_KEY, TEST, }}4. vueファイルにて読み込み設定「process.env.定数名」でenvの設定を読み込めます。Nuxt.jsにAPIサーバーを構築した場合でも上記の記法で設定を読み込む事が可能です。試しにindex.vueにて読み込んでみます。・/pages/index.vuelt;scriptgt;export default { mounted() { console.log(process.env.API_KEY); console.log(process.env.TEST); }}lt;/scriptgt;5. Nuxt.jsを起動して確認下記のコマンドでNuxt.jsを起動し、ブラウザのConsoleに.envに記述した内容が出力されれば成功です。・出力結果例This is API_KEYテスト項目です。

カテゴリ: Nuxt.js 2020-10-06 03:09:12
article-thumbnail

NginxでBasic認証を行う時のまとめ

【概要】NginxでBasic認証を行う時のまとめです。プロジェクト全体にBasic認証を行う方法や指定した対象にかける方法など、様々な方法についてまとめているので参考にしてみて下さい。【詳細】0. 前提前提として「/etc/nginx/conf.d/domain名.conf」ファイルを編集する事を想定します。1. プロジェクト全体にBasic認証をかけるlocation / {auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd;......}2. 指定したディレクトリ配下にBasic認証をかける※ 下記はroot直下にある、jsonディレクトリに対してBasic認証をかける事を想定していますlocation /json/ {auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd;......}3. 完全一致のパスに対してBasic認証をかける※ 下記は「/json/index.json」のファイルに対してBasic認証をかける事を想定していますlocation = /json/index.json {auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd;......}4. 正規表現を使用した方法まとめi. = 完全一致ii. ^~ 前方一致iii. ~ 正規表現(大文字と小文字が区別されます)iv. ~* 正規表現2(大文字と小文字が区別されません。修飾子「i」をつけたときの状態)5. 指定の優先順位Basic認証で指定した際の優先順位は下記になる。完全一致(=) > 前方一致(^~) > 正規表現(~) > 正規表現2(~*) > 指定なしよって、下記のように指定が重複した際には、前方一致の方が優先され、指定なし(location /json)の方は反映されない。location /json {# 指定なしでの特定の処理}# jsonディレクトリを指定した場合は下記が優先される。location ^~ /json {# 前方一致した際の特定の処理}

カテゴリ: NGINX 2020-09-29 02:04:59
article-thumbnail

macの秘密鍵をWindowsに渡し、WindowsからLinuxサーバーにSSHログインする

【概要】macで所持している秘密鍵をWindowsに渡し、Tera TermでLinuxサーバーにSSH接続する方法についてまとめます。Windowsにid_rsaファイルを作成してmacの秘密鍵の内容を記述するだけではTera Termでは以下のエラーが出力され、使用できません。SSH2秘密鍵の読み込みに失敗しました 0909006C: PEM routines get_name no start lineよって、秘密鍵の作成手順からSSH接続するまでの流れを記述します。※ 前提としてmacの秘密鍵とマッチする公開鍵はLinuxサーバーに登録されている事とします。【詳細】1. PuTTYgenをインストールするi. PuTTYgenをダウンロードする下記のURLからPuTTYgenをダウンロードします。Download the PuTTY installationii. PuTTYgenをインストールするiの手順でダウンロードしたPuTTYgenからインストールします。インストールする上で設定の変更は不要です。2. PuTTYgenでRSA鍵を作成する下記の項目を選択して「Generate」ボタンを押下し、鍵を作成します。・RSA・Number of bits in a gerated keyは「2048」・その他の項目設定しない3. 秘密鍵を保存する作成されたら「Save private key」ボタンを押下して秘密鍵を保存します。今回必要なのは秘密鍵のみなので、この手順しか行いませんが、この公開鍵と秘密鍵を組み合わせてSSH接続もできるので、必要な方は両方保存して下さい。4. 秘密鍵にmacの秘密鍵の内容を上書きするメモ帳等のエディタで保存した秘密鍵を開きます。既存の内容は削除してmacの秘密鍵の内容を記述します。5. Tera TermでSSH接続するi. サーバー情報を設定して「OK」ボタンを押下するIPアドレスとポート番号等のサーバー情報を設定し、SSHを選択し「OK」ボタンを押下します。ii. ユーザーと秘密鍵の設定を行うSSH接続するユーザー名と上記で作成した秘密鍵の設定をします。秘密鍵でSSH接続する場合は基本的にユーザーのパスフレーズは不要です。設定したら「OK」ボタンを押下します。 サーバーにアクセスできれば成功です。

カテゴリ: Windows 2020-09-27 00:43:18
article-thumbnail

macにてPHP7.3から7.4にアップデートし、xdebugとmailparseをPHP7.4に適応させる

【概要】macに入っているPHPのバージョンをアップデートする方法についてまとめます。また、ここではPHP7.3にインストール済みのxdebugとmailparseをバージョンアップしたPHP7.4に適応させる方法についてもまとめています。PHPをアップデートのみを行いたい方は下記のコマンドを実行して頂ければ完了です。brew updatebrew upgrade phpただ、既存のバージョンにモジュールを入れてカスタマイズされている方の場合、エラーが起きる事があります。エラーが起きた場合、参考になるかと思います。Cf1. xdebugとはPHPのデバッグ用の拡張モジュールです。Cf2. MailparseとはMailparseは電子メールのメッセージをパースして処理するための拡張モジュールです。【PHPアップデート】0. HomeBrewをアップデートしておくbrew update1. PHP7.4にアップデートするbrew upgrade php※ ~/.zshrcへのPATH通し等は不要です。Cf1. 現在インストールできるPHP7系のバージョンを確認するbrew search php@7Cf2. /usr/local/opt/[email protected]/ディレクトリを作成し、mailparse.soをセットしている場合、PHP7.4へのupgradeにエラーが起きる問題対応以下エラー文言Directory not empty @ dir_s_rmdir - /usr/local/opt/[email protected]を一時的にホームディレクトリに避難させます。mv /usr/local/opt/[email protected]/mailparse.so ~/【PHP7.3に適応させていたモジュールを戻す】[概要]PHP7.4にmailparseとxdebugを適応させます。上記以外の拡張モジュールを使用していた場合でも参考になると思います。[手順]1. xdebug既にxdebugはインストールされているので、アンインストールします。アンインストール後、再インストールします。1. アンインストールpecl uninstall xdebug2. インストールpecl install xdebug結果、下記に再インストールされました。/usr/local/Cellar/php/7.4.2/pecl/20190902/xdebug.so2. mailparsei. インストール準備mkdir /Users/macのユーザー名/Documents/php-mailparser/cd /Users/macのユーザー名/Documents/php-mailparser/pecl download mailparsetar xvfz mailparse-3.0.4.tgzcd mailparse-3.0.4phpize./configuresed -i 's/^(#error .* the mbstring extension!)///1/' mailparse.cmakeii. インストール準備確認下記で全項目をpassしている事を確認します。make testiii. mailparseをインストールsudo make install下記のように出力され、mailparse.soファイルも存在すれば完了です。Installing shared extensions:/usr/local/Cellar/php/7.4.2/pecl/20190902/3. インストール確認xdebug、mailparse共に期待通り出力されれば、PHP7.4側でも反映されている事が確認できます。php -i | grep xdebugphp -i | grep mailparse

カテゴリ: mac 2020-09-22 05:41:36
article-thumbnail

コピー元の権限を保持したままファイル・ディレクトリをコピーする

【概要】コピー元の権限を保持したままファイル・ディレクトリをコピーする方法についてまとめます。【詳細】[概要]オプションpを使用する事で以下の情報を保持します。・所有者・グループ・アクセス権・更新時刻・アクセス時刻[構文]cp -rp コピー元 コピー先上記では「rオプション」をつけていますが、コピー対象がファイルの場合は不要です。[コマンド例]・ファイルをコピーするcp -p hoge.txt ~/hoge.txt・ディレクトリをコピーするディレクトリを対象とする場合はオプションにrを追加します。下記は「/var/www/html/hoge.com」ディレクトリをコピーする方法例です。cp -rp /var/www/html/hoge.com ~/hoge.com[ディレクトリとファイルのコピー実行例と権限確認]ec2-userのホームディレクトリにhogeディレクトリを作成し、ディレクトリ配下にtest.txtを作成します。mkdir ~/hogetouch ~/hoge/test.txthogeディレクトリとtest.txtの権限を確認します。ls -al ~/hoge出力結果合計 0drwxrwxr-x 2 ec2-user ec2-user229月 19 00:58 .drwx------ 9 ec2-user ec2-user 2669月 19 01:03 ..-rw-rw-r-- 1 ec2-user ec2-user09月 19 00:58 test.txtrootユーザーのホームディレクトリに上記で作成したhogeディレクトリをコピーします。sudo su -cp -rp /home/ec2-user/hoge ~/hogeコピーしたhogeディレクトリの権限を確認します。ls -al hoge出力結果total 4.0Kdrwxrwxr-x2 ec2-user ec2-user22 Sep 19 00:58 .dr-xr-x--- 10 rootroot4.0K Sep 19 00:59 ..-rw-rw-r--1 ec2-user ec2-user0 Sep 19 00:58 test.txt

カテゴリ: Linux 2020-09-19 01:17:10
article-thumbnail

Redisデータの格納場所を変更する

【概要】redis-serverを起動して運用した場合、起動コマンドを打ったディレクトリにredisデータが保存されます。任意の場所にデータを保存する為にはredis.confに設定をする必要があります。このドキュメントの設定をする事で、どのパスでRedisサーバーを起動させても定めた格納場所に保存されるようになります。【詳細】1. redis.confのバックアップを作成cp /usr/local/etc/redis.conf /usr/local/etc/redis.conf.org2. redis.conf編集vi /usr/local/etc/redis.conf・変更内容ここでは保存先をデフォルトからDocuments配下に存在するredis-localディレクトリ(Documents/workspace/redis-local)に設定します。それぞれの環境に合わせた保存先のパスを指定して下さい。# dir /usr/local/var/db/redis/dir /Users/hoge/Documents/workspace/redis-local※ 「# dir /usr/local/var/db/redis/」はデフォルトの為、コメントアウトしています。ただ、バックアップを取っている為、デフォルトの設定行は削除してしまっても問題ありません。3. alias設定vi ~/.zshrc設定内容# Setting for redis serveralias redis-server-local="redis-server /usr/local/etc/redis.conf"ここではエイリアスで「redis-server-local」としていますが任意のコマンド名にして下さい。4. Redisサーバー起動redis-server-local上記のコマンドを打つことでaliasが設定されている為、redis.confファイルを読み込みます。その結果、どの場所で上記コマンドを実行しても保存先のディレクトリ指定をした「/Users/hoge/Documents/workspace/redis-local」に保存されます。通常の起動コマンドである「redis-server」を実行するとコマンド実行時のディレクトリにdump.rdbファイルが作成されます。

カテゴリ: Redis 2020-09-11 00:16:25
article-thumbnail

CentOS7の初期環境構築

【概要】CentOS7を初期環境構築する時のドキュメントです。ここではSELINUXの停止、ZSH、peco、ユーザー作成と設定、SSHポートの変更、タイムゾーンの設定等を行います。サーバー構築に慣れていない場合はpecoを入れてコマンド実行履歴を確認できるのでお勧めです。[目次]・SSH接続・初期設定・zsh・シェル・peco・vim設定・ユーザー・グループ作成と設定・セキュリティとユーザー設定・サーバーのタイムゾーンを日本時間に合わせる【SSH接続】1. 作成したCentOS7インスタンスにSSH接続する・公開鍵を登録した場合インスタンス作成時に公開鍵を登録している場合、インスタンス情報を「.ssh/config」に設定します。Host インスタンス名HostName インスタンスのグローバルIPUser rootHostはわかりやすいようにインスタンス名にしています。HostNameはインスタンスのグローバルIPを設定します。クラウドの場合、コンソール画面に表示されています。GCPでは下記のサンプル画面からわかります。下記のコマンドでSSH接続します。ssh インスタンス名・公開鍵の登録をしていない場合i. SSH接続をする基本的にインスタンス構築時には「root」ユーザーで接続します。ssh root@グローバルIPこの場合、上記のコマンドを打った後にインスタンス構築時に設定したパスワードを入力します。ii. インスタンスに「~/.ssh」ディレクトリを作成するcd ~/mkdir .sshchmod 700 .sshiii. authorized_keysを作成するcd .sshtouch authorized_keyschmod 600 authorized_keysvi authorized_keysインスタンスに自身の公開鍵(id_rsa.pub)を登録します。注意点としてはパーミッションを変更しないと機能しません。「公開鍵を登録した場合」の項目のように.ssh/configを設定するとSSH接続が楽になります。上記のどちらかの方法でインスタンスにSSH接続します。Cf. グローバルIPをSSH接続先で調べる方法グローバルIPがコンソール画面からわからない場合、コンソール画面からSSH接続する方法GCPやさくらのクラウド等ではあります。よって、コンソール画面からSSH接続し、下記のコマンドを入力すればグローバルIPがわかります。curl inet-ip.info【初期設定】1. 各グループパッケージの確認とアップデートを行うyum groups list2. yumをアップデートするyum update「y」で全てのパッケージをアップデートします。RPM-GPG-KEY-CentOS-7も「y」で進めます。パスは「/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7」です。3. SELinuxの設定SELinuxとはセキュリティ関連のLinuxカーネル制御機能です。ただ、制御は難しい為、ここではSELinuxを無効化します。さくらクラウド等では最初からdisabledになっている事が多いです。しかし、物理サーバーでCentOS7をインストールする所から始めると最初はenforcingになっています。vi /etc/sysconfig/selinux変更内容SELINUX=disabled「SELINUX=enforcing」を「SELINUX=disabled」にします。4. rebootするyumのアップデートとSELinux設定を反映する為にrebootします。reboot・SELinuxの設定確認getenforce下記のように出力されれば無効化されています。Disabled【zsh・シェル・peco・vim設定】[zshの設定]1. zshをインストールyum install -y zshインストールされたzshのパスを確認するwhich zsh出力結果/usr/bin/zsh2. SHELLをzshに変更chsh -s /usr/bin/zshCf. Amazon Linux 2でのSHELL変更※ Amazon Linux 2では chshコマンドがない為、下記のコマンドでインストールする必要があります。yum install util-linux-user「util-linux-user」をインストールした後、「chsh -s /usr/bin/zsh」コマンドを実行します。[oh-my-zshの設定]1. oh-my-zshのインストールする為にwget、git等をインストールするyum install -y wget git curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker2. oh-my-zshをインストールwget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh[vimの設定]・vimをインストールするyum -y install vim-enhanced[pecoの設定]1. pecoをインストールするcd ~/wget https://github.com/peco/peco/releases/download/v0.5.3/peco_linux_amd64.tar.gz2. pecoの圧縮ファイルを解凍tar xvfz peco_linux_amd64.tar.gz3. 解凍したディレクトリに移動cd peco_linux_amd644. pecoを「/usr/local/bin/.」に移動mv peco /usr/local/bin/.5. pecoをrootのグループとユーザーに変更cd /usr/local/binchown root.root peco6. pecoのPATH確認which peco[pecoの設定]1. .zshrcの設定下記のコマンドで.zshrcを編集します。vi ~/.zshrci. pecoをzshにて使用できるようにする下記を追記します。function peco-select-history() {local tacif which tac gt; /dev/null; thentac="tac"elsetac="tail -r"fiBUFFER=$(history -n 1 | eval $tac | peco --query "$LBUFFER")CURSOR=$#BUFFERzle clear-screen}zle -N peco-select-historybindkey '^r' peco-select-historysetopt nonomatchii. oh-my-zshのテーマを変更する「ZSH_THEME」の項目を変更する事でoh-my-zshのテーマを変更します。ZSH_THEME="dallas"ここでは「dallas」を設定していますが、その他にもテーマがあるので気になる方は調べてみて下さい。iii. vimコマンドのalias設定「vi」コマンドで「vim」を使用するようにしたい為、aliasを設定しています。しかし、「vi」と「vim」を別々に使用したい、またはaliasが不要な場合はここの設定は不要です。下記を追記します。alias vi="vim"2. 「~/.zshrc」の変更を反映する・コマンドで反映する方法source ~/.zshrc・一度ログアウトし、再ログインする事で反映する再ログインすると最初にshellを読み込みに行く為、設定が反映されます。上記どちらの方法でも、確認が取れれば成功です。【ユーザー・グループ作成と設定】[概要]ここではサンプルとして「ec2-user」ユーザーを作成します。「ec2-user」ユーザーに権限を持たせて最低限の環境構築が行えるようにします。[詳細]1. ec2-userを作成するパスワードを使用せずに「root」ユーザーになる為に、セカンダリグループに「wheel」グループを追加します。・ec2-userグループを作成groupadd -g 500 ec2-user・ec2-userを作成useradd -G wheel -u 500 -g 500 ec2-user・ec2-userのパスワード設定passwd ec2-userこのドキュメントでは最終的にパスワード認証でのSSH接続を拒否する設定にします。しかし、パスワードは極力強い設定にしておきましょう。2. oh-my-zshを使用するzsh SHELLはrootユーザーで済んでいます。よって、oh-my-zshのインストールを行います。・ec2-userになるsu - ec2-user・oh-my-zshを取得wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh・一度ログアウトしてoh-my-zshが適応されたか確認する「control + d」でec2-userをログアウトします。3. SHELLをzshに変更するi. zshのパス確認which zsh出力結果例/bin/zshii. SHELLをzshに変更chsh -s /bin/zshiii. zshを反映する一度「ec2-user」ユーザーをログアウトしてzshを反映させます。4. pecoとSHELLを設定する・.zshrcの設定を変更vi ~/.zshrc・変更内容i. ZSHのテーマをfishyに変更ZSH_THEME="fishy"rootユーザーでは「dallas」テーマにしました。ec2-userでは「fishy」にします。理由はrootユーザーとec2-userで見た目が違うと、自身が今どのユーザーであるかを直感的にわかるからです。気に入っているテーマがあればどちらのユーザーも同じでも良いと思います。ii. pecoをzshにて使用できるようにする下記を追記します。function peco-select-history() {local tacif which tac gt; /dev/null; thentac="tac"elsetac="tail -r"fiBUFFER=$(history -n 1 | eval $tac | peco --query "$LBUFFER")CURSOR=$#BUFFERzle clear-screen}zle -N peco-select-historybindkey '^r' peco-select-historysetopt nonomatchiii. vimコマンドのalias設定「vi」コマンドで「vim」を使用するようにしたい為、aliasを設定しています。しかし、「vi」と「vim」を別々に使用したい、またはaliasが不要な場合はここの設定は不要です。下記を追記します。alias vi="vim"5. ec2-userに公開鍵の設定i. 「~/.ssh」ディレクトリを作成するcd ~/mkdir .sshchmod 700 .sshii. authorized_keysを作成するcd ~/.sshtouch authorized_keyschmod 600 authorized_keysvi authorized_keys自身の公開鍵(id_rsa.pub)を登録します。【セキュリティとユーザー設定】0. 前提この設定はrootユーザーで行います。よって、「sudo su -」等のコマンドでrootユーザーになっておいて下さい。1. sudoをパスワードなしで使用できるようにするec2-userにてsudoの実行をパスワードなしで許可する設定にします。下記のどちらかのコマンドを実行します。どちらのコマンドを実行しても実行対象のファイルは同じファイルになります。・パターン1visudo・パターン2vi /etc/sudoers変更内容# Same thing without a password%wheelALL=(ALL)NOPASSWD: ALL最初は「%wheelALL=(ALL)NOPASSWD: ALL」の文頭に「#」のコメントアウトが記述されているので「#」を削除します。・ec2-userがrootユーザーにパスワードなしでなれるかを確認するi. ec2-userになるsu - ec2-userii. ec2-userからrootユーザーになるsudo su -これでパスワードなしでrootユーザーになれれば成功です。2. rootユーザーでのログイン関係を変更する変更点は下記の2点です。・rootユーザーでのSSH接続ができないようにする・全ユーザーのSSH接続におけるパスワード認証を拒否するvi /etc/ssh/sshd_config変更内容PermitRootLogin noPasswordAuthentication no上記は変更前から設定されている場合もあります。「PermitRootLogin」と「PasswordAuthentication」の項目はあるので探して変更して下さい。3. SSH接続の設定変更を適応するsystemctl restart sshd.service・注意点これでルートユーザーでのSSH接続とパスワード認証によるSSH接続ができなくなりました。このあと確認を行うのですが、現在接続しているSSH接続は切らないようにして下さい。理由は、もし作成したユーザー(ここではec2-user)の設定が間違っていた場合、ローカルでの接続が困難になります。クラウドの場合は、コンソール画面からSSH接続できますが、物理サーバーの場合はCentOS7の再インストールから始めなければなりません。よって、現在の接続は切らないようにして下さい。4. ローカルからCentOS7にec2-userで接続できるか確認する・.ssh/config設定vi ~/.ssh/configmacに下記のように.ssh/configを設定します。Host インスタンス名 HostName インスタンスのグローバルIP User ec2-user・ターミナルの新規タブでローカルからサーバーに接続するssh インスタンス名これで接続できれば成功です。5. ポート変更SSH接続のデフォルトのポートは22番です。つまり、22番ポートは誰もが知っているSSHポートとなります。22番を使い続けるのはハッキングされる可能性が高まります。デフォルトのSSHポート番号を変更する事で多くの方が使用している番号から変わる為、対策となります。i. rootユーザーになるsudo su -ii. SSH接続ポートの変更vi /etc/ssh/sshd_config変更内容# Port 22Port 10022ここでは10022ポートを使用しますが、他の番号でも大丈夫です。ただし、今後インストールするアプリケーションにもデフォルトのポートがあります。例えば、Nginxでは80番ポート、MySQLでは3306ポート。下記のウィキペディアにポート番号の一覧が記載されているので、参考にし、競合しないようにして下さい。TCPやUDPにおけるポート番号の一覧iii. 変更を反映systemctl restart sshd.service6. Firewallを設定している場合のポート開放SSH接続で10022番ポートを使用する場合、Firewallに10022ポートを開ける設定をします。ただ、GCPやAWSといったクラウドの場合はパケットフィルタで設定します。パケットフィルタを使用しない場合の対応としてまとめているのでパケットフィルタで対応する場合はこちらの項目は飛ばして下さい。・ポート解放設定firewall-cmd --zone=public --add-port=10022/tcp --permanent・設定反映firewall-cmd --reload※ 標準のSSH(22)を開放する場合のコマンドfirewall-cmd --add-service=ssh --permanent7. ポート変更に伴い、macの.ssh/configを再設定するCentOS7のSSHポートを10022に変更した為、macの.ssh/configも変更する必要があります。vi ~/.ssh/config下記のように.ssh/configの対象サーバー設定に「Port10022」の設定を追加します。Host インスタンス名 HostName インスタンスのグローバルIP User ec2-user Port 100228. 再度SSH接続できるか確認するssh インスタンス名これで接続できれば設定完了です。【サーバーのタイムゾーンを日本時間に合わせる】下記はサーバーの時刻を東京のに合わせるコマンドです。timedatectl set-timezone Asia/Tokyoアプリケーションやcron等にも時刻は影響します。ここでは時刻を東京にしていますが、使用するアプリケーションに合わせて時刻を設定して下さい。【まとめ】これで最低限の設定は完了です。この後にPHPやNGINX等の設定を行います。この設定をしておくと今後のサーバー構築もしやすいと思います。サーバー構築初心者の方に特にお勧めなので、是非試してみて下さい。

カテゴリ: CentOS 2020-09-09 01:14:22
article-thumbnail

NGINXでIPアドレスによるアクセスを拒否する設定

【概要】NGINXの設定でIPアドレスでのWebサイトの表示を拒否する設定についてまとめます。ここではステータスコード403のforbiddenを返す設定にしているが、ステータスコード444にするとサーバーが何の返答もない状態を返すことになります。ステータスコードは各サービスに適したものを設定して下さい。※ ロードバランサー等でIPアドレスでの接続を行うシステムの場合、その接続を拒否してしまうので注意して下さい!AWSのロードバランサーを使用している場合にIPアドレスでのアクセス拒否を行う方法は下記の記事にまとめているので参考にしてみて下さい。EC2のWebサーバーにIPアドレス直打ちでのアクセスを拒否する方法【詳細】[概要]特定のサーバー設定(/etc/nginx/conf.d/****.conf)に下記の設定を行います。server_nameにサーバーのIPアドレス(ここでは192.168.0.10)を指定し、403を返却する事でアクセスの拒否をします。[/etc/nginx/conf.d/****.conf への設定内容]下記は80番ポートと443番ポートを拒否していますが、必要なポートのみの設定でも良いです。また、444を返却したい場合は「return 403;」を「return 444;」に変更して下さい。server {listen 80;server_name 192.168.0.10;return 403;}server {listen 443;server_name 192.168.0.10;return 403;}

カテゴリ: NGINX 2020-09-08 02:18:31
article-thumbnail

EC2のWebサーバーにIPアドレス直打ちでのアクセスを拒否する方法

【概要】AWSのEC2でWebサーバーを立てた際に、IPアドレスでのアクセスを拒否しないとIPアドレスでブラウザ表示されます。このドキュメントではロードバランサー経由でWebサーバーを表示する事を想定します。よって、IP直打ちで表示させません。【詳細】1. 前提EC2のWebサーバーとロードバランサーを立てている事とします。また、ロードバランサーにはセキュリティグループを作成し、設定していることとします。2. EC2(Webサーバー)にセキュリティグループを作成・設定するブラウザの接続(基本80番ポート)をロードバランサーのみアクセス許可する事でIPアドレス直打ちでのブラウザ表示の拒否とロードバランサー経由での接続を許可する事ができます。この設定をする為にはロードバランサーのセキュリティグループを選択します。Cf. 設定例このドキュメントではカスタムTCPでポートを80で指定します。ソースをカスタムに変更し、セキュリティグループの配下にロードバランサーで設定しているセキュリティグループ名を選択します。説明が必要な方は記入し、ルールを保存します。これでロードバランサーからの接続を許可し、それ以外のアクセスを拒否します。

カテゴリ: AWS 2020-08-26 01:32:21
article-thumbnail

CentOS7にsarコマンドのインストールと使用例について

【概要】sarコマンドでインストールと設定方法、使用例についてまとめています。使用例に関してはメモリ、CPU、ネットワーク使用状況を確認する方法について記述しています。【インストールと設定変更方法】1. sarコマンドインストールyum install sysstat※ インストールしてから過去のメモリ使用ログが閲覧可能になります。2. /etc/cron.d/sysstatを編集して設定を変えるvi /etc/cron.d/sysstat下記のデフォルト設定では10分おきにログが出力される事が指定されています。*/10 * * * * root /usr/lib64/sa/sa1 1 15分毎のログを出力する場合、「*/10」の部分を「*/5」に変更します。ただ、ここでは設定変更方法をまとめているだけで、帰る必要がなければこの項目はスキップして下さい。【メモリ使用状況確認】・メモリログを確認sar -r10分置きのメモリ使用状況等が見れます。・saログから確認する下記に日別ログが格納されています。/var/log/sa/sar****は日付です。よって目的の日にちのsar**ログを見れば日毎のログが確認可能です。「sa10」のファイルのログを見る場合の例文は下記になります。sar -r -f /var/log/sa/sa10【CPU使用量調査】・CPU使用率を確認するsar -u【ネットワーク使用量調査】[概要]ネットワーク使用量と使用量の計算方法や単位についても例と共に記述しています。[詳細]・sarコマンドでNIC全体の状況確認コマンドsar -n DEV出力結果14時05分52秒LINUX RESTART14時10分01秒IFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s14時20分01秒eth010.364.130.680.290.000.000.0014時20分01秒eth11717.662766.11283.042928.720.000.000.0014時20分01秒lo0.010.010.000.000.000.000.00......・特定のNICのみ出力したい場合Eth1のみを出力する。sar -n DEV | grep 'eth1'出力結果例13時40分01秒IFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s13時40分01秒eth1332.31506.85106.87556.600.000.000.00・sar -n DEVコマンドの項目について* rxpck/s: 受信パケット数/秒* txpck/s: 送信パケット数/秒* rxkB/s: 受信パケット(kB)/秒* txkB/s: 送信パケット(kB)/秒・パケットとbyte計算1 パケット = 128 byte・13時40分01秒の受信パケットとbyte上記を踏まえて、10で割って、1分当たりのbyte数とkb数を計算しています。・1分当たりのパケット19938.6パケット/分・1分当たりのbyte数2552140.8byte・1分当たりのkb数2492.3kb

カテゴリ: CentOS 2020-08-16 00:38:20
article-thumbnail

コマンドを繋げて実行する方法まとめ

【概要】コマンドを繋げて実行する方法についてまとめます。1. 最初のコマンドが終了してから次のコマンドを実行する2. コマンドを並列処理する3. 最初のコマンドが正常終了したら次のコマンドを実行する4. 最初のコマンド結果を次のコマンドに渡して実行する5. 最初のコマンドでエラーが起きた際に次のコマンドを実行する【詳細】1. 最初のコマンドが終了してから次のコマンドを実行する正常終了、異常終了に関わらず次のコマンドを実行します。・構文最初のコマンド ; 次のコマンド・使用例./bin/cake hoge1 ; ./bin/cake hoge22. コマンドを並列処理する最初のコマンドと次のコマンドを同時に実行します。・構文最初のコマンド 次のコマンド・使用例touch aaa/abc.txt touch aaa/def.txt3. 最初のコマンドが正常終了したら次のコマンドを実行する最初のコマンドが異常終了した場合は次のコマンドは実行されません。・構文最初のコマンド amp;amp; 次のコマンド・使用例make amp;amp; make install4. 最初のコマンド結果を次のコマンドに渡して実行する最初のコマンドで返された値を次のコマンドに渡します。使用例ではphp -iで出力された情報の中から「php.ini」の文言が入っている行のみ出力されます。・構文最初のコマンド | 次のコマンド・使用例php -i | grep php.ini5. 最初のコマンドでエラーが起きた際に次のコマンドを実行する最初のコマンドが実行できなかった際に次のコマンドが実行されます。・構文最初のコマンド || 次のコマンド・使用例cd /var/www/html || pwd

カテゴリ: Linux 2020-08-09 19:32:11
article-thumbnail

macにgcloudコマンドをインストールする

【概要】macにgcloudコマンドをインストールする方法をまとめます。【インストール】0. pythonのバージョン確認Cloud SDKにはPythonが必要です。サポートされているPythonのバージョンは 3.5~3.7、2.7.9 以降です。(2020/07/31現在)python -V出力結果例Python 2.7.161. 公式からインストール用ファイルをダウンロードする下記のURLから各環境に合わせてインストール用ファイルをダウンロードします。macOS 用のクイックスタート2. google-cloud-sdkを解凍※ ファイル名は都度変わるので注意です。cd ~/Downloads/tar xvzf google-cloud-sdk-301.0.0-darwin-x86_64.tar.gz -C ~3. インストール~/google-cloud-sdk/install.sh4. インストール確認一旦ターミナルからログアウトし、再ログインしてから下記のコマンドを実行して下さい。which gcloud出力結果例/Users/hoge/google-cloud-sdk/bin/gcloud【gcloudの設定】1. gcloudの初期設定gcloud init・初期設定の流れi. GoogleアカウントにログインするTo continue, you must log in. Would you like to log in (Y/n)? Yii. コマンド プロンプトで、オーナー、編集者、閲覧者権限のリストから Cloud Platform プロジェクトを選択する下記の画像を元に参考にして下さい。・紐付けるプロジェクトIDを設定・プロジェクトIDの確認【gcloudコマンド使用例】・設定済みのプロジェクトについてgcloud config configurations list出力結果例NAMEIS_ACTIVEACCOUNTPROJECTCOMPUTE_DEFAULT_ZONECOMPUTE_DEFAULT_REGIONdefaultFalsehuga@[email protected]・プロジェクトの有効化「****」を有効化したいプロジェクト名にして下さい。gcloud config configurations activate ****・認証済みのアカウント一覧gcloud auth list

カテゴリ: GCP 2020-07-31 01:27:09
article-thumbnail

JavaScriptによるCookie登録、取得、削除方法と検索履歴をCookie、ローカルストレージに保存する方法

【概要】JavaScriptでのCookieの操作についてまとめます。また、サイト内検索の検索履歴をCookieとローカルストレージに登録する方法もまとめています。Cookieの使用例としても参考になると思うので、良かったら参考にしてみて下さい。【基本操作】・Cookieに値を保存するdocument.cookie = "Key=Value";・Cookieの特定の値を削除するdocument.cookie = "Key=; max-age=0";・Cookieの全値を取得するdocument.cookie取得したCookie例"hoge=1234; huga=9876"・Cookieを配列で分ける上記のようにCookieの値を取得する場合、全ての値を取得します。Key毎に分けて配列に格納するには下記のようにsplitメソッドを使用します。let cookiesArray = document.cookie.split("; ");【検索履歴をCookie、ローカルストレージに保存する方法】[概要]検索実行前にJavaScriptでCookieに検索ワードを登録し、画面遷移します。即時関数でCookieに登録されている検索履歴をローカルストレージに格納します。ローカルストレージに格納した値はCookieから削除します。[ソース]・検索formlt;form action="/search" method="post" onsubmit="return registerSearchWord()"gt;lt;input type="search" name="search-word" value="" placeholder="キーワードを入力" class="search_box" requiredgt;lt;button type="submit" value="検索"gt;lt;/buttongt;lt;/formgt;・検索実行前に検索ワードを登録するJSfunction registerSearchWord () {let date = new Date();cookieKey = 'search-' + date.getTime();searchWordElms = document.getElementsByClassName('search_box');cookieValue = searchWordElms[0].value;document.cookie = cookieKey + "=" + cookieValue;}・即時関数でCookieに登録されている検索履歴をローカルストレージに保存し、Cookieから検索履歴を削除するJSlt;scriptgt;$(document).ready(function () {// ・Cookieを配列化して取得するlet cookiesArray = document.cookie.split("; ");// ・ローカルストレージに登録する為のオブジェクト定義let searchHistory = {word: '',createdAt: ''};// ・ローカルストレージに検索結果を登録し、登録したCookieを削除する// フローチャート// 1. CookieのKeyの文頭に「search-」があるCookieを使用する// 2. 検索ワードと検索時のタイムスタンプをオブジェクトに代入する// 3. ローカルストレージに検索履歴を保存する// 4. 登録したCookieを削除するfor (let cookie of cookiesArray) {if (cookie.indexOf('search-') === 0) {let cookieStr = cookie.replace('search-', '');let cookieArray = cookieStr.split('=');searchHistory.createdAt = cookieArray[0];searchHistory.word = cookieArray[1];localStorage.setItem(cookieArray[0], JSON.stringify(searchHistory));document.cookie = 'search-' + cookieArray[0] + "=; max-age=0"}}});lt;/scriptgt;

カテゴリ: JS 2020-07-26 00:33:51
article-thumbnail

JavaScriptでHTMLタグ操作方法まとめ

【概要】JavaScriptでHTMLタグの操作方法についてまとめます。ここでまとめている内容は下記になります。・クラスの追加と削除・style操作・テキスト操作・複数要素へのstyle適用する場合【詳細】[前提]下記のように対象タグの情報をelm変数に格納している事とします。let elm = document.getElementById('id01');[クラス操作]・クラスの追加elm.classList.add('w-100');実行例lt;h1 id="id01" class="w-100"gt;例lt;/h1gt;・クラス削除elm.classList.remove('w-100');実行例lt;h1 id="id01"gt;例lt;/h1gt;[style操作]・スタイルに代入する方法elm.style = 'background-color: #FFF';・プロパティを指定して代入する方法例下記の例は文字色と横幅の指定を行っています。elm.style.color = '#FFF';elm.style.width = '100%';・style全削除elm.style = '';・特定プロパティの削除elm.style.color = '';[テキスト操作]・innerHTMLinnerHTMLでは内部にHTMLタグが入っている場合、そのまま代入すると削除してしまいます。その場合はreplaceメソッドで変更して代入する事をお勧めします。elm.innerHTML = elm.innerHTML.replace('タイトル1', 'タイトル2');・innerTextelm.innerHTML = 'タイトル3';[複数要素へのstyle適用する場合]document.getElementsByClassName等のメソッドで対象の要素群を取得し、for文で回して適応します。let elms = document.getElementsByClassName('hoge');for (let elm of elms) {elm.style.color = '#FFF';}

カテゴリ: JS 2020-07-21 03:11:54
article-thumbnail

macにphpredisをインストールする

【概要】macにphpredisをインストールする方法をまとめます。【詳細】1. phpredisをインストールする為のディレクトリを作成する下記はmacにphpredisをインストールする為にGitからphpredisインストール用ファイルをダウンロードします。よって、作業スペースを作成していますが、必要なければこの項目は不要です。mkdir ~/tmpcd ~/tmp2. Gitからphpredisをダウンロードするgit clone git://github.com/nicolasff/phpredis.git3. macにphpredisをインストールするcd ~/tmp/phpredisphpize./configuremake amp;amp; make install4. php.iniにphpredisを設定するvi /usr/local/etc/php/7.4/php.ini・追記内容どの行に追記しても反映されますが、「extension=...」と複数記述された箇所があるので、その下に記述するとphp.iniを再確認する際に判断しやすいです。extension=redis.soCf1. php.iniのパスを検索するphp -i | grep php.ini出力結果例Configuration File (php.ini) Path =gt; /usr/local/etc/php/7.4Loaded Configuration File =gt; /usr/local/etc/php/7.4/php.iniCf2. php.iniのコピーを作成するphp.iniのバックアップを作成したい場合は下記のコマンドを実行して下さい。ただし、下記のコマンド例はPHP7.4を対象にしているパスです。よって、違うバージョンの場合は上記のphp.iniのパスを確認するコマンドを実行し、パスを合わせてから変更して下さい。cp /usr/local/etc/php/7.4/php.ini /usr/local/etc/php/7.4/php.ini.org

カテゴリ: mac 2020-06-28 01:54:33
article-thumbnail

CentOS6にGit2系をインストール・アップデートする

【概要】CentOS6系統のサーバーにGit2系をインストール、アップデートする方法をまとめます。既にGitをインストールしているサーバーにも対応する方法をまとめているので参考にしてみて下さい。使用例としては、Node.jsのバージョン12以降をCentOS6で使用するにはgmp-devel等をインストールする必要があります。gmp-devel等のパッケージをインストールするにはGitのバージョンを2系にする必要があります。Node.jsのバージョンを12以降にアップデートする必要がある方にも必要な項目なので、参考にしてみて下さい。【詳細】0. rootユーザーになるsudo su -1. 既存のGitをアンインストールするyum remove git※ Gitをまだインストールしていない場合はこの項目は不要です。2. Git2系をインストールするi. Gitをインストールする為に必要なパケージをインストールするyum install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMakerii. Git2.9.5をダウンロードするwget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gziii. ダウンロードしたGitをCentOS6に適応するtar -zxf git-2.9.5.tar.gzcd git-2.9.5make prefix=/usr/local allmake prefix=/usr/local install上記はGit2.9.5をインストールする手順です。その他のバージョンをインストールしたい場合は下記のサイトのバージョンを参考にwgetしてみて下さい。https://mirrors.edge.kernel.org/pub/software/scm/git/3. Gitインストールとバージョン確認git --version

カテゴリ: CentOS 2020-06-22 00:55:39
article-thumbnail

CentOS7で特定のIPからの接続を許可するFirewall設定

【概要】CentOS7にて特定のIPからの接続と開放するPort指定をFirewallに設定する方法をまとめます。接続元が限定されている場合はFirewallに開放の制限をしておくとよりセキュリティが担保されます。しかし、運用として制限するのが難しい場合はこの設定は向いていません。【詳細】・前提Firewallを起動していない場合は下記のコマンドでFirewallを起動して下さい。systemctl start firewalld・192.168.0.2のIPからの接続許可設定1. MySQL(3306)の場合firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.2" port protocol="tcp" port="3306" accept"2. Redis(6379)firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.2" port protocol="tcp" port="6379" accept"・設定反映firewall-cmd --reloadCf1. 特定のIP接続許可設定一覧を確認するfirewall-cmd --list-rich-rulesCf2. 上記の特定IPの接続許可設定を削除する場合のコマンド・MySQL(3306)firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.2" port protocol="tcp" port="3306" accept"・Redis(6379)firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.2" port protocol="tcp" port="6379" accept"Cf3. 特定のIP帯の接続を許可する設定下記では「192.168.0.0/24」のIP帯の3306のポートを開放する設定です。firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="3306" accept"

カテゴリ: CentOS 2020-06-21 02:41:28
article-thumbnail

rsyncコマンドを利用したサーバー内・サーバー間の同期方法まとめ

【概要】このドキュメントでは、rsyncコマンドを使用してサーバー内もしくはサーバー間のファイル同期やディレクトリ同期方法をまとめています。下記のようなパターンで特に有用です。1. ファイルやディレクトリの権限を同期元と変えずに同期したい2. 一括で同期をしたい3. 特定のディレクトリのどのファイルが同期元と同期先で差異があるかわからないので、チェックして同期する【rsyncコマンドの基本構文】・基本構文rsync -av 同期元 同期先・オプション説明1. -aオプションディレクトリを同期したい場合、再帰処理を行います。つまり、指定したディレクトリ内部に存在するサブディレクトリに対しても同期対象として実行します。2. -vオプション実行中の同期処理を表示します。よって、今どのファイルやディレクトリを同期しているのかがわかります。・その他よく使うオプション説明1. --checksumオプション更新日とサイズではなく、チェックサムで変更の有無をチェックします。よって、もし更新日とサイズが同じでもファイル内容が違う場合は同期先の対象ファイルを更新してくれます。2. --inplaceオプション同期先にファイルがある場合は上書きします。3. --deleteオプション同期元にないファイルを同期先から削除します。【例文】1. サーバー内のディレクトリ同期rsync --checksum -av--delete /home/develop/Nuxt-APP/ /var/www/html/Nuxt-APP/「/home/develop/Nuxt-APP/」配下のファイルやディレクトリの内容を「/var/www/html/Nuxt-APP/」配下に同期します。2. サーバー内のファイル同期rsync --checksum --inplace /home/develop/index.html /home/develop/rsync_test/index.html「/home/develop/index.html」の内容を「/home/develop/rsync_test/index.html」に同期します。3. サーバー間のファイル同期rsync --checksum --inplace /var/www/html/index.html web-server:/var/www/html/index.html上記は実行元サーバーの「/var/www/html/index.html」ファイルをweb-serverの「/var/www/html/index.html」に同期します。※1 サーバー間でrsyncを行う為には同期元のサーバーから同期先のサーバーに接続できる必要があります。同期先にSSHの鍵を登録し、同期元で「~/.ssh/config」の設定をしておくとHost名で接続先を記載できるので便利です。※2 SSH設定をしていない場合、「Host名」を「ユーザー名@IP」で設定する必要があります。4. サーバー間のディレクトリ同期サーバー間のディレクトリを同期します。ここでは例として「/var/www/html/stg-WP/wp-content/themes」と「/var/www/html/prd-WP/wp-content/themes」を同期します。ディレクトリ同期をする場合の方法は2つあります。・パターン1rsync -av --checksum --delete --inplace /var/www/html/stg-WP/wp-content/themes wp-web-server:/var/www/html/prd-WP/wp-content・パターン2rsync -av --checksum --delete --inplace /var/www/html/stg-WP/wp-content/themes/ wp-web-server:/var/www/html/prd-WP/wp-content/themes※1 パターン1は、もし「/var/www/html/WP/wp-content/themes」ディレクトリが存在しなければ同期元のディレクトリが同期先に作成されます。※2 パターン2は 両サーバーに「/var/www/html/WP/wp-content/themes」がある事を前提としています。・--deleteオプションの吹き飛ばし注意点下記のようにしたら「prd-WP」ディレクトリの内容は「stg-WP/libs」以下のファイルとディレクトリのみになります。rsync -av --checksum --delete --inplace /var/www/html/stg-WP/libs/ wp-web-server:/home/develop/prd-WPもし、バックアップがない場合は取り返しがつきません。また、WPが動かないというエラーが起きるのでrsyncで--deleteオプションを使う場合は要注意です。よって、同期元で最後の「.../libs/」にスラッシュを付ける場合は同期先に「/libs」まで付ける必要があります。同期元と同期先のパスと文末にスラッシュを付けているかどうかは要注意です!同期元と同期先の「libs」ディレクトリの内容を同期したい場合のコマンド例は下記になります。rsync -av --checksum --delete --inplace /var/www/html/stg-WP/libs/ wp-web-server:/home/develop/prd-WP/libs

カテゴリ: Linux 2020-06-04 02:15:55
article-thumbnail

CentOS7で任意のログとデフォルトのログに対してログローテーション設定をする

【概要】CentOS7でログローテーションを設定し、有効化します。ログローテーションを有効化する事で、肥大化していくログファイルを日べつに区切る事ができます。また、一定期間でログを削除するのでログファイルによるサーバーのストレージ圧迫を回避します。ログを残しておきたい理由がなければログローテーションを設定する事をお勧めします。【Webアプリ用のlogrotateの設定】1. Webアプリ用のログローテーション設定ファイル作成touch /etc/logrotate.d/nginx-virtual-host2. ログローテーション設定ファイルの設定を記述vi /etc/logrotate.d/nginx-virtual-host設定内容/var/log/nginx/*/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript}上記の「/var/log/nginx/*/*.log」部分がNginxのログディレクトリ配下にあるログファイルを全て対象する事になります。もし違う場所にNginxのログを出力している場合は、そのパスを指定して下さい。Cf. /etc/logrotate.d/nginx-virtual-hostの設定内容i. missingokログファイルが見つからなくてもエラーにしない。ii. rotate nn世代までログをローテート。それ以上は削除iii. compressローテートしてログを圧縮iv. delaycompress1つ前のファイルはまだ圧縮しない。それ以外を圧縮v. notifemptyログファイルが空ならローテーションしないvi. createローテーション後、新たにログファイルを作成する。権限、ユーザ、グループを指定。vii. sharedscriptsスクリプト宣言文。以降に記述された処理をワイルドカードの指定に関わらず、1度だけ実行するviii. postrotateログローテーション実施後に実行される部分【ログローテーションを実行する】・Nginxのログをログローテーションを行う※ 下記はデフォルト存在するログローテーション設定ファイルです。logrotate -f /etc/logrotate.d/nginx・作成した設定ファイルを指定しログローテーションを行うlogrotate -f /etc/logrotate.d/nginx-virtual-host【logrotateの設定反映をした時にエラーが出た際の対応方法】[概要]下記のコマンドを実行した際にエラーが発生したので、その対応方法をまとめています。logrotate -f /etc/logrotate.d/nginx-virtual-host・エラー内容error: skipping "/var/log/nginx/d-smart.jp/access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.error: skipping "/var/log/nginx/d-smart.jp/error.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.上記のエラーは、ログローテーションを行う対象に対して必要な権限がない事が理由です。よって、ログローテーションの設定ファイルに権限の設定を記述します。[対応]1. ファイルの内容変更今回作成した設定ファイル「/etc/logrotate.d/nginx-virtual-host」に下記の権限設定を追加します。/var/log/nginx/*/*.log {...省略...su nginx adm...省略...}2. 設定反映logrotate -f /etc/logrotate.d/nginx-virtual-host3. 確認「/var/log/nginx/」配下にある、access.logとerror.logがログローテーションされていれば成功です。

カテゴリ: CentOS 2020-05-30 18:04:05
article-thumbnail

pm2でNuxt.jsをデプロイする

【概要】pm2を使用してNuxt.jsプロジェクトをデプロイする方法についてまとめます。また、Nuxt.jsを更新した時のデプロイする方法もまとめいるので参考にしてみて下さい。【詳細】1. pm2インストールnpm install pm2 -gnpmとNode.jsをインストールしていない場合は下記のドキュメントを参考にして下さい。Amazon Linux 2にNode.jsとnpmをインストールする2. プロジェクトに移動し、npm install と build する先ず、Nuxt.jsのプロジェクトに移動します。cd Nuxt-APPNuxt.jsのプロジェクト直下で npm install と build します。npm installnpm run build3. pm2でプロジェクトをデプロイして、プロセスを保存する pm2 start npm -- startpm2 saveこれでデプロイし、かつサーバーを再起動した時にも自動でNuxt.jsが起動するようになります。ブラウザでNuxt.jsのプロジェクトが表示されたらデプロイ完了です。【参考:Nuxt.jsを更新した時の対応】1. Nuxt.jsのソースを最新状態にし、ビルド可能な状態にするGitからプロジェクトをpullします。cd Nuxt-APPgit pullnpm installnpm run build新規プラグイン等がなければ「npm install」は不要です。2. 現在実行中のpm2を停止するi. 対象のidを調査する現在実行中かつ、停止したいidをpm2のリストから調べます。pm2 list基本的には1つのプロジェクトが動いているかと思います。その場合のidは0になります。ii. 対象の実行しているpm2を停止するpm2 stop 0ここではidを「0」として記述していますが、対象のidが違う場合は置換して実行して下さい。3. pm2を再起動し、保存するpm2 start npm -- startpm2 saveブラウザでNuxt.jsのプロジェクトが表示されるか確認できれば完了です。

カテゴリ: Nuxt.js 2020-05-29 04:04:27
article-thumbnail

CentOS7のPHPのバージョンアップする

【概要】CentOS7のPHPのバージョンアップする方法まとめです。このドキュメントではPHP5.6からPHP7.4にします。参考として、PHP自体をまだインストールしていない時の対応も記載しておきます。【現状のPHPを削除する】1. php.iniのバックアップを取っておく現状のphp.iniに設定している内容が必要な方はバックアップを取っておいて下さい。cp /etc/php.ini /etc/php.ini.oldVer2. 既存のPHPを削除するyum remove php-*【PHP7.4をインストールする】[概要]既存のPHPは削除した為、新規でPHP7.4をインストールします。[手順]・PHP7.4をインストールyum install --enablerepo=epel,remi,remi-safe,remi-php74 php※ 上記のコマンドでインストールできない場合レポジトリを指定してもbaseレポジトリが邪魔してインストールできない場合は下記のコマンドでインストールを実行してみて下さい。yum install --disablerepo=base --enablerepo=epel,remi,remi-safe,remi-php74 phpCf. よく使うパッケージもインストールする場合PHP7.4のインストールと一緒にphp-fpmやphp-pecl-redis等をインストールする方法です。不要なパッケージは消して実行して下さい。yum install --enablerepo=epel,remi,remi-safe,remi-php74 php php-devel php-mbstring php-mysqlnd php-pdo php-xml php-gd php-fpm php-mcrypt php-pecl-xdebug php-opcache php-pecl-apcu php-phpunit-PHPUnit php-pecl-redis【参考:PHPを初回インストールする場合の対応】[概要]この項目はPHP自体をまだインストールしていない場合の対応になります。その場合はレポジトリをインストールする所から始めます。ただ、MySQL等のサービスを既にインストールし、レポジトリもインストール済みの方は不要な項目です。その場合は【PHP7.4をインストールする】の項目から始めて下さい。[手順]1. epelレポジトリをインストールするyum install epel-release2. remiレポジトリをインストールするrpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm上記2つのレポジトリをインストールしたら、【PHP7.4をインストールする】の項目を行なって下さい。

カテゴリ: CentOS 2020-05-28 01:07:18
article-thumbnail

Nuxt.jsにGoogle Analyticsを設定する

【概要】Nuxt.jsにGoogle Analyticsを設定する方法をまとめます。【Google Analyticsの設定】下記のソースをpluginsディレクトリの中に作成して下さい。・Nuxt-APP/plugins/ga.js/* eslint-disable */export default ({ app }) =gt; {/*** クライアントサイドかつプロダクションモードでのみ実行*/if (process.env.NODE_ENV !== 'production') return/*** Google アナリティクスのスクリプトをインクルード*/(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');/*** 現在のページをセット*/ga('create', 'lt;トラッキング IDgt;', 'auto')/*** ルートが変更されるたびに毎回実行(初期化も実行される)*/app.router.afterEach((to, from) =gt; {/*** Google アナリティクスにページビューが追加されたことを伝える*/ga('set', 'page', to.fullPath)ga('send', 'pageview') })}※ 「lt;トラッキング IDgt;」について下記の「lt;トラッキング IDgt;」の文言はGoogle Analyticsの管理ページにあるプロパティ設定にあります。その値を代入して下さい。・Google Analyticsの「lt;トラッキング IDgt;」表示画面個人情報は隠させてもらっていますが、赤枠を参考に遷移すればトラッキング ID があるページまで行けます。【nuxt.config.jsの設定】Nuxt-APP/nuxt.config.js のpluginsに下記の設定をして上記のga.jsを読み込みます。・Nuxt-APP/nuxt.config.js......plugins: [ { src: '~plugins/ga.js', mode: 'client' }],......これでサーバーにデプロイしたNuxt.jsにGoogle Analyticsを設定できます。

カテゴリ: Nuxt.js 2020-05-27 03:20:14
article-thumbnail

Node.jsとnpmとyarnをmacにインストールする

【概要】macにNode.js・npm・yarnをインストールします。また、Node.jsのバージョンを指定してインストールする方法とインストールした複数のバージョンを切り替える方法もまとめています。インストールにはbrewコマンドを使用します。まだbrewコマンドをインストールしていない場合は下記のドキュメントを参考にbrewコマンドをインストールして下さい。macにHomebrewをインストールするCf. npm・yarnとはnpmとyarnは両方ともパッケージ管理システムの1つです。npmはNode Package Managerの略称からきています。【nodeとnpmのインストール手順】1. 最新版のnodebrewをインストールするbrew install nodebrew・インストール可能なバージョンの確認nodebrew ls-remote※ もし上記コマンドやインストールコマンドでエラーが出力されたら、下記のコマンドを実行する。mkdir -p ~/.nodebrew/src・最新版のNode.jsのバージョンをインストールするnodebrew install-binary latest・安定版のNode.jsのバージョンをインストールするnodebrew install-binary stable・バージョンを指定してインストールnodebrew install-binary v11.15.0Cf1. インストールされたNode.jsのバージョンのリストを取得するnodebrew list出力結果v13.13.0current: noneCf2. nodebrewコマンドでNode.jsとnpmのバージョンを切り替えるnodebrewコマンドで使用するNode.jsのバージョンを指定するとそのバージョンに合わせてnpmのバージョンも切り替わります。よって、使用したいNode.jsのバージョンを指定してプロジェクト毎に切り替えられます。2. インストールしたNode.jsのバージョンを反映し、確認する・インストールされているNode.jsのバージョンのリストを出力するnodebrew list出力結果例v11.15.0v13.13.0current: v13.13.0ここでインストールされているNode.jsのバージョンは「11.15.0」と「13.13.0」です。適応しているバージョンは「13.13.0」です。・使用するNode.jsのバージョンを指定する構文nodebrew use バージョン「13.13.0」のバージョンを使用する場合nodebrew use v13.13.0・nodebrewコマンドのバージョン確認nodebrew -vnodebrew 1.0.13. パスを通すここでは「~/.zshrc」に追記しますが、使用しているシェルがbashの場合は「~/.bash_profile」に追記して下さい。vi ~/.zshrc追記内容下記のPATH変数に追記という形で入力する。export PATH=$PATH:......:/Users/user-name/.nodebrew/current/bin「export PATH=$PATH:......」と各種コマンドのパスが記述されているので「:/Users/user-name/.nodebrew/current/bin」で追記して下さい。また、「user-name」部分は個人のmacのユーザー名に合わせて変更して下さい。4. Node.jsとnpmの確認設定を反映する為に一度ターミナルをログアウトします。再度ターミナルを開き、npmとnodeのバージョンを確認します。・Node.jsのインストール確認とバージョン確認which nodenode -v・npmのインストール確認とバージョン確認which npmnpm -v【yarnインストール手順】・yarnをインストールするbrew install yarn

カテゴリ: mac 2020-05-24 22:54:22
article-thumbnail

マウスオーバーした時に対象の要素の色を不透明にする

【概要】特定の要素をマウスオーバーした時に色を不透明にする方法をまとめたドキュメントです。マウスオーバーした対象の要素のみが霞んだように反応する為、リンクだと直感的にわかりやすいと思います。画像イメージとソースを記載しているので参考にしてみて下さい。【詳細】[opacityの説明]0.0 〜 1.0 までの設定値で不透明にします。0.0が完全に不透明になり、何も表示されていないようになります。1.0が完全に透明で、何も変化がありません。自分としてはリンクとして反応しているとわかるレベルは0.7だと考えているので、ここで記述する例では0.7を設定します。[opacityのイメージ]先ずopacityの設定が1のイメージ画像です。つまり、完全に透明な場合の表示です。上記の完全に透明にopacity1に対して下記のイメージ画像はopacityの設定を上から0.7, 0.5, 0.3, 0.1, 0と設定しています。徐々に不透明となり、0は何も表示されていないように見えます。[opacityの設定方法]・全リンク(aタグ)に対して、マウスオーバーした際に反映させるa:hover { opacity: 0.7;}「a:hover」の全リンク設定ではなく、クラスを指定して設定や直接HTMLタグに書くなど、適宜合わせて使用してみて下さい。

カテゴリ: CSS 2020-05-24 19:18:07
article-thumbnail

CentOS7に最新バージョンのRedisをインストールする

【概要】CentOS7にremiレポジトリを使用してRedisの最新版をインストールする方法についてまとめたドキュメントです。【インストール】1. remiレポジトリをインストールするRedis最新バージョンをインストールする為にremiレポジトリをインストールします。rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm2. remiレポジトリを適応させてインストールするyum --enablerepo=remi install redisドキュメント作成時の2020/05/21では6.0.1がインストールされました。Cf. remiレポジトリを使用せずにインストールコマンドを実行する場合yum install redisこの場合、Redisの3系が入ります。3系をインストールされる理由がなければ、remiレポジトリを使用して最新版をインストールする事をお勧めします。【Redis起動と自動起動設定】・Redisを起動するsystemctl start redis・Redis自動起動設定systemctl enable redis【参考:htopインストール】htopをインストールする事で各ストレージの使用状況を見る事ができます。Redisはkeyとvalueをオンメモリに保存する事ができます。よって、サーバーの使用状況を確認する為にもhtopとRedisはセットで入れておくことをお勧めします。・htopインストールyum install htop・htop画面表示コマンドhtop・htop画面イメージ上記画像では992MBのメモリの内147MB使用している事がわかります。

カテゴリ: CentOS 2020-05-24 15:58:18
article-thumbnail

Linuxサーバーのユーザーとグループ作成と設定方法

【概要】Linuxサーバーのユーザーとグループ作成、設定方法をまとめたドキュメントです。【ユーザーとグループ一覧表示】・ユーザー一覧表示cat /etc/passwd出力結果例root:x:0:0:root:/root:/usr/bin/zshbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin......・グループ一覧cat /etc/group出力結果例root:x:0:bin:x:1:daemon:x:2:......【ユーザーとグループ作成】・ユーザー作成構文useradd ユーザー名例文useradd ec2-user・グループ作成構文groupadd グループ名例文groupadd ec2-user・IDを指定する場合のコマンドユーザー・グループ共にIDを指定しなかった場合、他の重複しない値を自動で設定されます。特定のIDを指定したい場合に使用します。ユーザー作成の構文useradd -u 501 ユーザー名グループ作成の構文groupadd -g 501 グループ名【ユーザーのパスワード設定】[概要]ユーザーにパスワードを設定します。作成したユーザーでSSH接続や、rootユーザーになる時などに使用します。[詳細]・構文passwd ユーザー名【グループを設定し、ユーザーを作成する】[概要]ユーザーにグループを設定する事で権限を持たせる事ができます。例えば、ec2-userを作成し、セカンダリグループにwheelグループを設定します。「/etc/sudoers」を編集し、wheelグループはパスワードなしでrootユーザーを使用する設定があります。このように、ユーザーに特定の権限を持たせたい時に使用します。[詳細]・構文 - プライマリグループとセカンダリグループを設定しユーザーを作成するuseradd -G グループ名 -g グループ名 ユーザー名「-Gオプション」はセカンダリグループを指定します。「-gオプション」はプライマリグループを指定します。・ec2-userのプライマリグループに「ec2-user」グループを設定し、セカンダリグループに「wheel」グループを設定するuseradd -G wheel -g ec2-user ec2-user【作成したユーザーの所属グループとidを調べる】[概要]作成したユーザーと設定したグループが反映されたかを確認します。[詳細]・構文id ユーザー名・例文id ec2-user出力結果例uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)上記の例では「ec2-user」ユーザーの情報は下記になります。ユーザーID:1000プライマリグループID:1000プライマリグループ:ec2-userセカンダリグループ:ec2-user・adm・wheel・systemd-journal【作成したユーザーにセカンダリグループを追加する】[概要]作成したユーザーが既にセカンダリグループを設定されている場合、-aオプションを付けないと上書きされてしまいます。その手順をまとめます。[前提]下記の設定がされているec2-userを想定します。uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),190(systemd-journal)ここにwheelグループを追加します。[詳細]・セカンダリグループ追加usermod -aG nginx ec2-userこれでnginxグループがec2-userのセカンダリグループに追加されました。・追加確認id ec2-user出力結果uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),190(systemd-journal),10(wheel)【ユーザーに設定されているセカンダリグループを削除する】[前提]ec2-userに下記の設定がされているとします。uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),190(systemd-journal),10(wheel)このwheelグループを削除します。[例文]・ec2-userユーザーをwheelグループのメンバーから外すgpasswd -d ec2-user wheel・確認id ec2-user出力結果uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),190(systemd-journal)文末にあった「wheel」グループは削除されました。【ユーザーを削除する】[概要]指定したユーザーの削除を行います。[詳細]・構文userdel -r ユーザー名・例文ここでは「ec2-user」を削除します。userdel -r ec2-user確認id ec2-user出力結果id: ec2-user: no such user上記のように出力されれば削除成功です。【参考: wheelグループに所属するユーザーをパスワードなしでrootユーザーにする設定】[概要]上記にも例を出しましたが、ユーザーのセカンダリグループにwheelグループを追加し、「/etc/sudoers」の設定を変更する事でパスワードなしでrootユーザーになる事ができます。その設定方法についてまとめています。[手順]vi /etc/sudoers変更内容# Same thing without a password#%wheelALL=(ALL)NOPASSWD: ALL上記の「#%wheel」部分で「#」がコメントアウトを意味します。よって、「#」を削除し「:wq」で保存して下さい。これでwheelグループを設定したユーザーは下記のコマンドでrootユーザーになれます。sudo su -

カテゴリ: Linux 2020-05-23 03:22:38
article-thumbnail

macにSSH鍵作成、設定とSSH接続方法

【概要】macにSSH鍵を作成し、設定と接続する為のドキュメントです。【SSH鍵作成】1. SSH鍵作成macのTerminalで下記のコマンドを実行します。mkdir ~/.sshchmod 700 ~/.sshcd ~/.sshssh-keygen -t rsa「ssh-keygen -t rsa」コマンド実行後に聞かれる質問は全てenterで進めます。Cf1. SSHのconfigを設定する場合touch ~/.ssh/configvi config設定内容例Host hoge_serverHostName 172.16.0.10User rootCf2. 秘密鍵と公開鍵を作成するコマンドのオプションについて下記の2つのコマンドはどちらも同じ内容を実行しています。ssh-keygen -t rsassh-keygen「ssh-keygen」コマンドで選択できる鍵の種類は次の3種類です。また、「-t rsa」オプションがデフォルトになっている為、実行内容は同じです。ちなみにMacのデフォルトOpenSSHではECDSAやED25519鍵は作成できません。Cf3.鍵の種類について「-t」オプションについて・SSHプロトコルバージョン1-RSA-t rsa1・SSHプロトコルバージョン2-RSA(デフォルト)-t rsa・SSHプロトコルバージョン2-DSA-t dsaSSHプロトコルバージョン1を使う人はあまりいないと想定されます。また、デフォルトの状態を多くの方は使用されると思います。よって、特に指定がない場合はオプションは省略しても良いです。【サーバーに公開鍵登録と鍵を使用したSSH接続】1. サーバーにSSH鍵を登録するSSH鍵を登録する為のディレクトリとファイルを作成します。先ず、サーバーにパスワード認証のSSH接続もしくはクラウドの場合、コンソール画面からSSH接続をします。cd ~/mkdir .sshchmod 700 .sshcd .sshtouch .ssh/authorized_keyschmod 600.ssh/authorized_keys2. macに作成した鍵をサーバーに登録するi. macに作成した鍵の内容を取得するcat ~/.ssh/id_rsa_pubmacのTerminalで上記のコマンドを実行後、出力された内容をコピーします。ii. サーバーにmacの公開鍵を登録しますvi.ssh/authorized_keysサーバー内で上記コマンドを実行後、コピーしたmacの公開鍵を入力します。3. サーバーにSSH接続する・SSH Configを使用してSSH接続するmacにSSHのconfig設定をしている場合、下記のコマンドで接続できます。ssh hoge_server「hoge_server」はSSH confingの「Host」部分です。・ユーザー名とIPアドレスでSSH接続する構文ssh ユーザー名@IPアドレス例文ssh [email protected]

カテゴリ: mac 2020-05-21 02:16:55
article-thumbnail

Redisのダンプ・リストア方法

【概要】このドキュメントではLinuxサーバーにおけるRedisサーバーのデータをダンプし、リストアする方法をまとめています。リストアは手順を間違えるとデータが消える可能性があります。別サーバーへのRedisデータ移行等を行う際に参考にしてみて下さい。参考としてダンプファイルの出力先とファイル名の変更についてもまとめています。【ダンプ】0. ダンプファイルの確認下記のファイルが存在すれば既にダンプファイルは存在します。よって、その場合は下記にある1の手順を行う必要はありません。ls -al /var/lib/redis/dump.rdb1. ダンプダンプファイルが存在しなかった場合、下記のコマンドでダンプファイルを作成して下さい。redis-cli bgsave上記のコマンドで「/var/lib/redis/dump.rdb」が作成されます。出力先は「/var/lib/redis/dump.rdb」がデフォルトですが、redis.confの設定を変えれば出力先とファイル名を変更できます。【リストア】1. Redisサーバーを停止するdumpファイルを格納し、Redisを再起動すると格納したデータが消える為、先ずRedisを停止します。systemctl stop redis2. ダンプファイルを移設別サーバーにリストアする場合、scpコマンド等でdumpファイルを移設しておいて下さい。sudo mv dump.rdb /var/lib/redis/※1 「/var/lib/redis/dump.rdb」ファイルの所有グループ、ユーザーがredisの為、sudoで実行している。よって、rootユーザー場合はsudoは不要。※2 ファイル転送の際にdumpファイルの所有者、所有グループが変わってしまった場合、下記のコマンドでredisユーザーかつredisグループに変更して下さい。sudo chown redis. dump.rdb権限変更は下記のコマンドで確認できます。ls -al /var/lib/redistotal 108Kdrwxr-x---2 redis redis22 May 18 21:47 .drwxr-xr-x. 31 rootroot4.0K May 14 12:04 ..-rw-r--r--1 redis redis 102K May 18 21:47 dump.rdb3. Redisサーバー起動systemctl start redisこれでリストアした状態のRedisが起動されます。【参考:ダンプファイルの出力先とファイル名を変更する】/etc/redis.conf に出力先とダンプファイル名を設定しています。デフォルトの設定では、出力先パスは「/var/lib/redis」で、ファイル名は「dump.rdb」になります。・/etc/redis.conf のデフォルトの設定箇所dbfilename dump.rdbdir /var/lib/redis・出力先を変更するvi /etc/redis.conf変更例dir /data/backup/これで「/data/backup/」にdump.rdbファイルが作成されます。・出力ファイル名を変更するvi /etc/redis.conf変更例dbfilename dump20200518.rdbこれで作成されるファイル名が「dump20200518.rdb」に変更されました。・設定反映Redisの設定を反映する為にRedisを再起動します。systemctl restart redis

カテゴリ: Redis 2020-05-18 22:19:50
article-thumbnail

サーバーに存在するディレクトリをtar.gz化して、ローカルや別サーバーにコピーする

【概要】CentOSサーバーに存在するディレクトリをtar.gzのファイル化します。1つのファイルになった為、scpコマンドでコピーが簡単になります。ここではローカルもしくは別サーバーにtar.gzファイルをコピーし、解凍する方法をまとめます。私はこの処理をWPを新規サーバーに移設する時に使用しました。サーバー移設に限らず、サーバーに存在するファイル群を取得する時に使えるので参考にしてみて下さい。【ディレクトリをtar.gz化する】0. 事前準備(tar.gzファイルを格納する為のディレクトリを作成する)ここではec2-userにtmpディレクトリを作成し、このtmpディレクトリにtar.gzファイルを格納する事を想定します。格納先が必要ない場合は、この項目の実行は不要です。cd ~/mkdir tmp1. ディレクトリをtar.gzファイルにするec2-userのルートディレクトリ直下に存在するtmpディレクトリにtar.gzファイルを作成します。対象ディレクトリは「/var/www/html/sampleApp」とします。tar cvfz /home/ec2-user/tmp/sampleApp.gz/var/www/html/sampleAppこれで対象のディレクトリをtar.gz化できました。【ローカルにtar.gzファイルをコピーする】0. 事前準備(ローカルの格納したいディレクトリまで移動する)ここではmacのDocumentsディレクトリに格納する事にします。cd /Users/user-name/Documents1. ローカル(mac)にtar.gzファイルをコピーするscp web-server1:/home/ec2-user/tmp/sampleApp.gz ./「web-server1」の部分をローカルの「~/.ssh/config」に登録しているHost名にします。【別サーバーにtar.gzファイルをコピーする】0. 前提ここではtar.gzファイルを作成したサーバー(web-server1)から別サーバー(web-server2)へのコピーを想定します。コピー先の別サーバーにSSH接続できる状態にしておきます。また、「~/.ssh/config」にコピー先のサーバー情報を設定しておきます。1. sample.server1からsample.server2へtar.gzファイルをコピーscp /home/ec2-user/tmp/sampleApp.gz web-server2:/home/ec2-user/これで「sample.server2」のルートディレクトリに「sampleApp.gz」ファイルがコピーされます。【tar.gzファイルを解凍する】・解凍するコマンドコマンドはローカル(mac)もCentOSサーバーも同じです。tar xzf sampleApp.gzこれでコマンドを実行した場所にsampleAppディレクトリが展開されます。

カテゴリ: CentOS 2020-05-18 01:48:13
article-thumbnail

MySQLサーバーのデータ使用量を確認する

【概要】MySQLサーバーのデータ使用量を確認する方法をまとめたドキュメントです。ここではSQL文での調査方法をまとめていますが、コマンドラインで調査する方法は下記のドキュメントを参考にして下さい。CentOSサーバーのディレクトリ毎のストレージ使用量を調べる【詳細】1. 全DBの使用状況を確認するi. MB単位での出力SELECTtable_schema, sum(data_length+index_length) /1024 /1024 AS MBFROMinformation_schema.tablesGROUP BYtable_schemaORDER BYsum(data_length+index_length) DESC;出力結果例+--------------------+-------------+| table_schema| MB|+--------------------+-------------+| hoge | 33.50000000 || huga | 29.45312500 |+--------------------+-------------+2 rows in set (0.05 sec) ii. GB出力SELECTtable_schema, sum(data_length+index_length) /1024 /1024/1024 as GBFROMinformation_schema.tablesGROUP BYtable_schemaORDER BYsum(data_length+index_length) DESC;出力結果例+--------------------+----------------+| table_schema| GB|+--------------------+----------------+| hoge | 33.50000000 || huga | 29.45312500 || mysql | 0.007468875498 || information_schema | 0.000152587891 || sys | 0.000015258789 || performance_schema | 0.000000000000 |+--------------------+----------------+2. DB指定指定したDBのサイズを確認する方法です。下記の「sample_database1」を確認したいDB名に変更し、実行して下さい。SELECTtable_schema, sum(data_length+index_length) /1024 /1024 AS MBFROMinformation_schema.tablesWHEREtable_schema = 'sample_database1';

カテゴリ: MySQL 2020-05-16 23:25:17
article-thumbnail

サーバー内にあるファイル名とファイル内容を検索する方法

【概要】このドキュメントでは下記のパターンを検索する方法についてまとめています。1. ファイル名2. ディレクトリ名3. 特定の所有ユーザー4. 特定の所属グループ5. ファイル内に存在する特定の文字列【ファイルに存在する特定ワードの検索】・概要ファイル内に存在する特定のワードを検索する方法です。・構文grep -rni "検索したいワード" 場所下記のコマンド例は「.」なので、コマンド実行時のディレクトリ配下を意味する。・grepコマンドのオプション内容1. -rオプションディレクトリを再帰的にたどって検索します。2. -nオプション検索結果の出力に行番号を付けます。3. -iオプション大文字小文字を区別せずにマッチングをさせます。・コマンド使用例1. 現在いるパスから下の階層全てに「ZSH_THEME」の文字列を含むファイルの行検索grep -rni "ZSH_THEME" .出力結果例./.zshrc:11:ZSH_THEME="fishy"./.zshrc:14:# Setting this variable when ZSH_THEME=random will cause zsh to load./.zshrc:17:# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )2. /etc/nginxの階層以下の全てに「server_name」を含むファイルの行検索grep -rni "server_name" /etc/nginx3. 所有ユーザーと所属グループとファイル名検索ls -la | grep ec2 上記のコマンドは現在居るディレクトリ内に存在するec2を含むディレクトリ名・ファイル名・所有ユーザー・所属グループを表示します。【ファイル名検索】・概要検索ワードにマッチするファイル名を検索します。・構文find 検索したい場所 -name ファイル名・コマンド使用例ここで紹介している使用例は検索したい場所からその配下に存在するディレクトリ内部まで検索します。1. 特定のファイルを検索する現在のディレクトリ配下にある.DS_Storeファイルを探すfind . -name .DS_Store出力結果例./.DS_Store./hogeDir/.DS_Store 2. 特定の文字列を含むファイル名を検索するfind / -name *.params上記は「/」以下で拡張子が「.params」であるファイルを検索します。「*」とはワイルドカードに当たります。 3. 現在のディレクトリ配下にある.DS_Storeファイルを探すfind . -name .DS_Store 出力結果例./.DS_Store./hogeDir/.DS_Store

カテゴリ: Linux 2020-05-16 04:05:48
article-thumbnail

CentOS7にMySQL8系を構築する

【概要】 CentOS7にMySQL8系をインストールし、初期設定します。【MySQL8系をインストール】1. MariaDBをインストールしない設定をするCentOS7ではデフォルトのDBインストールはMariaDBをインストールするようになっています。今回はMySQL8系をインストールしたい為、MariaDBをインストールする設定を外します。yum remove mariadb-libsrm -rf /var/lib/mysql/2. MySQL8のレポジトリをインストール先ず、rpmコマンドでMySQL8用のレポジトリをインストールします。その後にyumコマンドでMySQLサーバーをインストールします。rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpmyum install mysql-community-server ※ MySQL Clientのみをインストールしたい場合は下記のコマンドを実行して下さい。yum install mysql-community-client3. インストールしたMySQLのバージョンを確認mysql -VmysqlVer 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)4. MySQL起動と自動起動設定systemctl start mysqldsystemctl enable mysqld【MySQLの初期設定】1. root@localhost のパスワードを調べる先ず、 root@localhost でMySQLにログインする為にパスワードを調べます。grep 'temporary password' /var/log/mysqld.log出力結果例2019-09-10T06:31:50.438223Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: spRiez%lt;T8ecここでインストールしたMySQL8のrootパスワードは右端に表示されている「spRiez%lt;T8ec」がrootユーザーのパスワードになります。2. MySQLにログインmysql -u root -p上記のコマンドでMySQLにログインできれば正常にインストールされており、かつパスワードを正しく取得できた事がわかります。3. MySQLの初期設定下記のコマンドはMySQLの最低限のセキュリティ設定を行うコマンドです。コマンドを実行するとパスワードの再設定等の各種設定に行います。2でMySQLにログインしましたが、「Control+d」を押下し、一度ログアウトしてから下記のコマンドを実行して下さい。mysql_secure_installationi. rootのパスワードを変更Change the password for root ? ((Press y|Y for Yes, any other key for No) : yrootのパスワードは変更する必要がある為、「y」にします。この後に新規パスワードの入力を2度求められるので、入力して下さい。パスワード作成は下記のサイトで簡単に作成できます。LUFTTOOLSii. 変更したパスワードで設定を進めますか?Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y変更したパスワードで進めるので「y」にします。iii. anonymous ユーザーの削除しますか?Remove anonymous users? (Press y|Y for Yes, any other key for No) : yanonymous ユーザーの削除なので「y」にします。iv. リモートからrootユーザーでアクセス拒否しますか?Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yこの質問は要注意です。セキュリティを高めるのであればリモートからのrootログインを拒否した方が良いので「y」を選択します。また、Sequel等のDB Clientを使用し、SSH接続後にlocalhostで接続する事もできるので基本的にはリモート接続できないようにする事をお勧めします。しかし、リモートからrootログインを許可した方が良いプロジェクトの場合はrootユーザーでリモートアクセスを拒否しないので「n」を選択します。ここではrootでリモートアクセスさせたくないので「y」にします。v. testデータベースの削除しますか?Remove test database and access to it? (Press y|Y for Yes, any other key for No) : ytestデータベースを削除 (存在する場合)するので「y」にします。vi. 設定の即時反映しますか?Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y即時反映させる為、「y」にします。Cf. MySQLの文字コード確認下記のSQL文でDBの文字コード等の設定が見れます。MySQLにログイン後、下記のSQL文を実行して下さい。status出力結果--------------......Server characterset:utf8mb4Dbcharacterset:utf8mb4Client characterset:utf8mb4Conn.characterset:utf8mb4......--------------【DBユーザーの設定】1. MySQLログインとユーザー確認mysql -u root -p【MySQLの初期設定】で新規設定したパスワードを入力して下さい。2. ユーザーの状態を確認する下記のSQL文でユーザーの状態を取得できます。SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user | host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | caching_sha2_password |+------------------+-----------+-----------------------+MySQL8系から「caching_sha2_password」認証がデフォルトになりました。MySQL8系よりも前のバージョンでは「mysql_native_password」認証です。また、LaravelでmigrateしようとしたりDB接続しようとする時にエラーが起きる原因となります。よって、Laravel等のプログラムを使用する場合、「mysql_native_password」認証に変更した方が良いです。3. rootユーザーの認証変更ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'lt;パスワードgt;';※ lt;パスワードgt; は【MySQLの初期設定】で新規設定したパスワードに置換して下さい。4. 認証変更確認再度ユーザーの状態を確認するSQL文を実行します。SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user| host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | mysql_native_password |+------------------+-----------+-----------------------+rootユーザーが「mysql_native_password」認証に変更されました。

カテゴリ: CentOS 2020-05-15 02:24:36
article-thumbnail

CentOSサーバーのディレクトリ毎のストレージ使用量を調べる

【概要】CentOSサーバーのストレージ使用量をディレクトリ毎に調査する方法のまとめです。【詳細】1. /(ルート直下)の使用量を見るsudo su -cd ~/du -sh /*出力結果例0/bin144M/boot0/dev37M/etc393M/home0/lib0/lib640/media0/mnt239M/opt......0/proc37M/root361M/run0/sbin0/srv0/sys4.0K/tmp4.8G/usr9.4G/var上記の出力例では /var と /usr が主に使用されていることがわかりました。2. /var を調査cd /vardu -sh ./*出力結果例124K./tmp6.4G./lib276M./log0./adm240M./cache8.0K./db0./empty0./games0./gopher0./local0./nis0./opt0./preserve12K./spool0./yp0./kerberos448M./www7.4G./var/lib が6.4GB使用している事がわかりました。3. /var/lib 配下のストレージ使用量を確認するcd /var/libdu -sh ./*出力結果例11M./yum104M./rpm0./games0./misc0./rpm-state20K./alternatives4.0K./logrotate0./initramfs64K./systemd0./machines0./dbus0./polkit-10./os-prober0./stateless4.0K./plymouth32K./NetworkManager0./tuned0./ntp8.0K./dhclient0./authconfig4.0K./postfix4.0K./rsyslog4.0K./chrony0./selinux4.0K./google6.3G./mysql0./mysql-files0./mysql-keyring0./php0./dav72K./redis872K./pear0./letsencrypt6.4G./var/lib/mysql が6.3GB使用している事がわかりました。この結果からストレージ容量に余裕を持たせたい場合、不要なレコードを削除する対応やストレージを追加する等の対応について判断できます。また、上記のような流れでどの部分でストレージを主に使用しているのかを調査できます。【参考: サーバー全体のストレージ使用率を調べる】・ストレージ使用量確認コマンドdf -H出力結果例FilesystemSizeUsed Avail Use% Mounted ondevtmpfs3.7G03.7G0% /devtmpfs3.7G03.7G0% /dev/shmtmpfs3.7G102M3.6G3% /runtmpfs3.7G03.7G0% /sys/fs/cgroup/dev/sda122G14G8.0G64% /tmpfs736M0736M0% /run/user/501上記の出力結果例ではメインの /(ルートディレクトリ以下)は64%使用しており、残りの使用可能容量は8GBです。全体のストレージサイズやその使用量の調査、また新規ストレージをマウントした際にマウントが反映しているかを確認する際にも使用できます。

カテゴリ: CentOS 2020-05-14 03:49:06
article-thumbnail

CentOS7のFirewallの設定

【概要】CentOS7におけるFIrewall設定のまとめです。【詳細】1. Firewalldの起動・停止・起動systemctl start firewalld・停止systemctl stop firewalld2. Firewalldの自動有効化・無効化サーバーを再起動した時に自動有効化を設定していない場合、Firewallが停止した状態になります。自動有効化をする事でサーバー再起動時にFirewallが有効状態になります。設定している自動有効化を停止したい場合に無効化を実行して下さい。・自動有効化systemctl enable firewalld・無効化systemctl disable firewalld3. サービス名でポートを開く特定のサービスのポートを開きたい時に使用します。下記の例ではhttp(80番ポート)を開放する時に使用します。firewall-cmd --add-service=http --zone=public --permanent4. 特定のポートを開く3とは違い、指定したポートを開放する場合に使用します。下記の例ではVue.jsやNuxt.jsで使われる3000ポートを解放しています。firewall-cmd --add-port=3000/tcp --zone=public --permanent5. ポートを閉じる開放しているポートを閉じたい時に使用します。・サービスの削除firewall-cmd --remove-service=https --zone=public・ポートの削除firewall-cmd --remove-port=4440/tcp --zone=public --permanent・恒久設定firewall-cmd --remove-service=https --zone=public --permanent6. ポート解放設定後、設定を反映させる3, 4, 5で設定したポート開閉設定を反映させます。firewall-cmd --reload7. 現在登録しているサービス一覧firewall-cmd --list-services --zone=public 出力例dhcpv6-client http sshつまり、「dhcpv6-client http ssh」の3つのポートのみ解放されている状態です。

カテゴリ: CentOS 2020-05-13 03:10:24
article-thumbnail

macにZSH、oh-my-zsh、pecoをインストールする

【概要】このドキュメントではmacにシェルのZSH、oh-my-zsh、pecoをインストールする方法をまとめています。oh-my-zshはTerminalのビジュアルをわかりやすくし、かつaliasが複数設定されている為、使用しやすいです。pecoは過去に実行したコマンドの履歴をCtrl+rを押下する事で表示する事が可能です。【ZSHインストール】1. Homebrewアップデートbrew update2. zshインストールbrew install zsh3. /etc/shellsにbrewでインストールしたzshのパスを登録するsudo vi/etc/shells下記を追記する。/usr/local/bin/zsh4. zshを適応させるchsh -s /usr/local/bin/zsh【 oh-my-zshインストール】1. oh-my-zshインストールsh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"2. プラグインを追加vi ~/.zshrc追記内容if [ -e /usr/local/share/zsh-completions ]; thenfpath=(/usr/local/share/zsh-completions $fpath)fi3. 2の内容を反映i. 設定反映コマンドrm -f ~/.zcompdump; compinitautoload -Uz compinitcompinit -uii. 反映のエラーが起きる場合一旦「n」で止めます。zsh compinit: insecure directories, run compaudit for list.Ignore insecure directories and continue [y] or abort compinit [n]? ncompinit: initialization abortediii. エラーがどこで起きているのか調査するcompaudit出力結果There are insecure directories:/usr/local/share/zsh/site-functions/usr/local/share/zshiv. エラー出力箇所の権限を変更するcd /usr/local/share/sudo chmod -R 755 zshもし、上記のコマンドでエラーが出力される場合、ユーザー所有権を変更します。sudo chown -R root:staff zsh【pecoインストールと設定方法】1. pecoインストールbrew install peco2. pecoの設定を.zshrcに追記するfunction peco-select-history() {local tacif which tac gt; /dev/null; thentac="tac"elsetac="tail -r"fiBUFFER=$(history -n 1 | eval $tac | peco --query "$LBUFFER")CURSOR=$#BUFFERzle clear-screen}zle -N peco-select-historybindkey '^r' peco-select-historyCf. 使用例Terminalで controlボタン+r を押下します。すると下記のように履歴が出力されます。QUERYgt; IgnoreCase [582 (1/10)]brew listbrew search redisbrew doctornpm run devnodebrew use v13.13.0

カテゴリ: mac 2020-05-12 03:43:33
article-thumbnail

macにHomebrewをインストールする

【概要】このドキュメントではmacにHomebrewをインストールする方法とHomebrewについてまとめます。【Homebrewとは】Homebrewとはmacで使用するパッケージ管理システムの一つです。Homebrewを使用する事でPHP、Node.js、MySQL等をインストールする事ができます。macの環境構築を行う上でHomebrewをインストールしておくと便利なのでおすすめです。【Homebrewインストール】1. Homebrewインストール/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"2. Homebrewインストール確認下記のコマンドを実行します。brew doctor下記の文言が出力されればインストール成功です。Your system is ready to brew.[参考サイト]Homebrew公式サイト【Homebrew使用例】1. パッケージ確認brew search パッケージ名・使用例brew search redis出力結果==gt; Formulaehiredis redis redis-leveldb [email protected] [email protected]==gt; Caskshomebrew/cask/another-redis-desktop-manager homebrew/cask/redis2. パッケージのインストールとアンインストールi. インストールbrew install パッケージ名使用例brew install nodebrewii. アンインストールbrew remove パッケージ名使用例上記でインストールしたnodebrewをアンインストールしたい場合に実行します。brew remove nodebrew3. インストールしたパッケージのリスト確認brew list4. Homebrewをアップデートするbrew update

カテゴリ: mac 2020-05-12 03:19:38
article-thumbnail

PHPでメールアドレスの型を正規表現で判断する

【概要】PHPで特定の文字列がメールアドレスの形になっているかを判断する。【詳細】・前提// メールアドレスを$mail変数に格納している$mail = "[email protected]";1. 簡易的判断下記は「@」以外の文字列が前後に有り、文字列の内部に「@」が存在する時に正しいとする。if(preg_match('/^[^@]+@[^@]+$/', $mail)) {echo "正しいメールアドレス";} else {echo "不正なメールアドレス";}2. 1より詳細な判断※ この記述でかなり正確にメールアドレスの形が正しいかを判断できるが、100%正しい形かを保証するものではないので注意。if(preg_match('/^(?!(?:(?:x22?x5C[x00-x7E]x22?)|(?:x22?[^x5Cx22]x22?)){255,})(?!(?:(?:x22?x5C[x00-x7E]x22?)|(?:x22?[^x5Cx22]x22?)){65,}@)(?:(?:[x21x23-x27x2Ax2Bx2Dx2F-x39x3Dx3Fx5E-x7E]+)|(?:x22(?:[x01-x08x0Bx0Cx0E-x1Fx21x23-x5Bx5D-x7F]|(?:x5C[x00-x7F]))*x22))(?:.(?:(?:[x21x23-x27x2Ax2Bx2Dx2F-x39x3Dx3Fx5E-x7E]+)|(?:x22(?:[x01-x08x0Bx0Cx0E-x1Fx21x23-x5Bx5D-x7F]|(?:x5C[x00-x7F]))*x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))]))$/iD', $mail)){list($username,$domain) = explode('@',$mail);if(!checkdnsrr($domain,'MX')){echo "不正なメールアドレス";} else{echo "正しいメールアドレス";}else{echo "不正なメールアドレス";}

カテゴリ: PHP 2020-05-10 11:21:57
article-thumbnail

CentOS6で443ポートを開放する

【概要】CentOS6で指定のポートを開放する。443ポートはLet's Encrypt等でSSL通信する際に使用するポートである。【詳細】1./etc/sysconfig/iptablesに443ポート開放を記述する・commandvi/etc/sysconfig/iptables ・追記内容下記の「-A...」から始まる1文を追記する。# Generated by iptables-save v1.4.7 on Tue Sep 17 16:59:47 2019 ...... -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 2. iptablesを再起動する「/etc/sysconfig/iptables」に記述した設定を反映させる為に iptables を再起動する必要がある。service iptables restart 3. ポート開放確認※ この状態で443ポートは開放されているが、443ポートを使用していないとopenにならないので注意。・別サーバーやローカル(mac)等からnmapコマンドを実行するnmap 対象サーバーIPもしくはドメイン名 -p 443 ・出力結果例PORT STATE SERVICE 443/tcp open https 参考. yahoo.co.jpの443ポート開放確認・commandnmap yahoo.co.jp -p 443 ・出力結果Starting Nmap 7.70 ( https://nmap.org ) at 2020-03-23 01:30 JST Nmap scan report for yahoo.co.jp (182.22.59.229) Host is up (0.027s latency). Other addresses for yahoo.co.jp (not scanned): 183.79.135.206 rDNS record for 182.22.59.229: f1.top.vip.ssk.yahoo.co.jp PORT STATE SERVICE 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds 上記のようにドメインでも確認することができます。まだ、ドメイン設定をしていない場合はドメインではなく、IPアドレスを対象に調査して下さい。

カテゴリ: CentOS 2020-04-15 04:34:30