設定方法や手順など」カテゴリーアーカイブ

NginxとgolangでAPIサーバー

golangもNginxも始めたばかりなので、他のブログの記事を参考にしつつ試験中

Nginxのconfにlocation追加

golang

ちょっと違う書き方

VPS(ConoHa)設定

VPS契約したので設定。
Ubuntu入れたと思ったけど、CentOSが入ってる模様。

過去記事参考

VirtualBoxにUbuntu 16.04を入れる(通常のインストール含む)

・vimシンタックス

手元のWSHに入ってたので流用
/usr/share/vim/vim74/syntax/go.vim
同パスにコピー

.vimrcに追加
autocmd BufNewFile,BufRead *.go setfiletype go

・サーバーにSSHで接続する

root@IPアドレス
パスワードは設定済みのrootパスワード

・ユーザー作成

過去記事参考

Ubuntu ユーザーの追加、設定、パーミッション

とりあえずrootで作業中。

・SSHの設定

過去記事参考

Ubuntu セキュリティ関連設定

設定ファイル
/etc/ssh/sshd_config

ポート変える(49152 – 65535辺り)

再起動
systemctl restart sshd

ちなみに

状態
systemctl status

自動起動有効
systemctl enable

自動起動無効
systemctl disable

・独自ドメイン設定

以前、MuuMuuで取得したドメインがあって、
NSをXserverに指定したまま放置していたのでこのドメインを活用する。

メールはそのままXserverで、wwwのみvpsに回す。

xserverのサーバパネルのDNSレコードの設定から編集。

MXはホスト名と内容が同じになっているので、
ホスト名をそのまま独自ドメインで、内容をxserverのドメイン(xxx.xsrv.jp)にする。

Aタイプの3つはIPアドレスをVPSのアドレスに変更する。
(あるいはサブドメインとwww付きを消して1つにしてしまう)

これでしばらく待つと独自ドメインからSSHアクセスできる

・Nginx

今回はphp使わないので、初めてのNginxにて。
yum install nginx

基本のルート
/usr/share/nginx/html

コンフィグ
/etc/nginx/nginx.conf

コンフィグの中にincludeがあり、
conf.d以下を読み込んでいる。

・firewalld

定義されているサービス
firewall-cmd –get-services

許可されているサービス
firewall-cmd –list-service –zone=public
–list-all
–list-services
–list-port

リロード
firewall-cmd –reload

サービスを許可する
firewall-cmd –add-service=http –zone=public –permanent

許可したサービスを削除
firewall-cmd –remove-service=http –zone=public –permanent

許可するポートの追加
firewall-cmd –add-port=22/tcp –zone=public –permanent

許可するポートの削除
firewall-cmd –remove-port=22/tcp –zone=public –permanent

定義済みサービス(編集はしない)
/usr/lib/firewalld/services

定義済みゾーンの確認
firewall-cmd –list-all-zones

アクティブなゾーンの確認
firewall
cmd getactivezones

Nicに対するデフォルトゾーンの確認
firewall-cmd –get-default-zone

NICのゾーンを変える(permanetが不要という記事ある要確認)
firewall-cmd –change-interface=lo –zone=public

NICをゾーンから削除(permanetが不要という記事ある要確認)
firewall-cmd –remove-interface=lo

だいたいの流れ。本来サービス登録なんだろうけど。

登録済みのサービスを消す。
firewall-cmd –remove-service=http –zone=public –permanent
firewall-cmd –remove-service=ssh –zone=public –permanent
firewall-cmd –remove-service=dhcpv6-client –zone=public –permanent

必要なポート追加。
firewall-cmd –add-port=54424/tcp –zone=public –permanent
firewall-cmd –add-port=80/tcp –zone=public –permanent

・MongoDB

とりあえずDBも初めてのMongoで

インストール

/etc/yum.repos.d/mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

を記載し、

yum install -y mongodb-org

起動
systemctl start mongod

停止
systemctl stop mongod

再起動
systemctl restart mongod

自動起動
systemctl enable mongod

シェル起動
mongo

シェル終了
exit

・Mongoシェルコマンド

db作成・切り替え
use DB

db削除
db.dropDatabase()

利用中db
db

db一覧
show dbs

コレクション一覧
show collections

コレクション作成
db.createCollection(コレクション名)

コレクション削除
db.コレクション名.drop()

ユーザー一覧
db.system.users.find()

ユーザ作成

use admin

db.createUser({
user:”owner”,
pwd:”damz7nfb”,
roles:[{ role: “userAdminAnyDatabase”, db: “admin” }]
})

ユーザー削除
db.dropUser(ユーザー名)

認証有効化

/etc/mongod.conf

security:
authorization: enabled

ログイン方法

> mongo
> use admin
> db.auth(“owner”, “damz7nfb”)

golang インストールメモ

最近golangをはじめたので。

WSLインストール

sudo apt-get update
sudo apt-get install golang

バージョン確認
go version

> 1.6.2

環境確認
go env

.bashrcに追加
export GOPATH=”$HOME/go”
export PATH=”$GOPATH/bin:$PATH”

Db(SQLite)を使ってみる

go get github.com/mattn/go-sqlite3

package context: unrecognized import path “context”
というエラーがでる。

1.7ではcontextパッケージとして標準パッケージに仲間入りする。
とのことなのでアップデート

sudo apt-get install golang-1.9
sudo mv /usr/bin/go /usr/bin/go.old
sudo mv /usr/bin/gofmt /usr/bin/gofmt.old
sudo ln -s /usr/lib/go-1.9/bin/go /usr/bin/go
sudo ln -s /usr/lib/go-1.9/bin/gofmt /usr/bin/gofmt

これで入った。

Windows用にクロスコンパイル

WSLからだと通常こうなっているので、
GOOS=linux
以下の用にしてビルド
GOOS=windows go build hello.go

WSLと.NET Coreの環境

WSLのインストール

optionalfeaturesにて、Windows Subsystem for Linuxを有効化。

設定>更新とセキュリティ>開発者向けにて、開発モードを選択。

Microsoft Storeアプリでディストリビューションをインストール。

最初の起動でユーザー名とパスワードを決める。

sudo apt-get update
sudo apt-get install gcc

起動用ショートカット
SET HOME=%~dp0
bash.exe

WSLに.NET Coreをインストール

https://www.microsoft.com/net/learn/get-started/linux/ubuntu16-04
を参考にする。

wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

インストール有無の確認
sudo apt-cache policy apt-transport-https
必要なら、
sudo apt-get install apt-transport-https

sudo apt-get install dotnet-sdk-2.1

通常の使い方

アプリ作成
dotnet new console -o myapp

実行
dotnet run
(myappの中で実行)

Visual Studioでプロジェクト作成

Visual Studioから、
ASP.NET Core Webのプロジェクトを作成する。

プロジェクトの右クリックから発行をして、WSL側のフォルダに保存。

転送フォルダにて、
dotnet WebApplication1.dll
を実行

an assembly specified in the application dependencies manifest…
とエラーがでた。

プロジェクトの右クリックから、
csprojを編集する。

以下の部分のVersionをubuntu側に合わせる。
<PackageReference Include=”Microsoft.AspNetCore.All” Version=”2.1.2″ />

dotnet –info
でバージョン確認できる。

.NET Core runtimes installed
の部分のバージョンを見る。

dotnet WebApplication1.dll
で実行。

自動起動

WSLなので.profileに入れてプロセスと同時に立ち上げる。

/usr/bin/dotnet /mnt/g/Dropbox/Workspace/Bash/html/WebApplication1.dll > /dev/null 2>&1 &

C# エンコードオブジェクト取得

メソッド
System.Text.Encoding.GetEncoding(“utf-8”)

静的プロパティ
System.Text.Encoding.UTF8

コンストラクタ
new System.Text.UTF8Encoding(false)
ASCIIとUnicodeは、Encodingクラスから派生した専用クラスがあり、falseにするとBOM無しにすることができる。

UbuntuをLiveCDから起動

もしsshがなければ、
sudo apt-get install openssh-server

起動する。
/etc/init.d/ssh start

パスワードが空なので、
passwd

パスワードを指定したらTeraTermなどでログインする。
ユーザー名はubuntuとなっている。

Dockerメモ

ちょっとだけ触ってみた。

Registry
↑ Push
↓ Pull
Image  ← Dockerfile
↑ Commit
↓ Run
Container

インストール
apt-get install docker.io
service docker start

起動
sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

利用方法

pull
イメージ取得

docker pull mysql:5.7.22 タグでバージョン指定もできる

images
イメージの一覧

rmi
イメージの削除

rmi {REPOSITORY} latestが消える
rmi {IMAGE_ID}

run {起動したいイメージ}
コンテナ作成

–rm 利用後コンテナ削除
–name 作成するコンテナに名前をつける
-it 中に入れる
-d バックグラウンドで起動
-p ポートマッピング
-v コンテナとホストのディレクトリをつなげる {ホスト側:コンテナ側}

docker run –rm -it –name aaa “mysql:5.7.22” /bin/bash
docker run –rm -v “/home/okamura:/home” –name bbb -it “mysql:5.7.22” /bin/bash
docker run –rm -d –name aaa -e “MYSQL_ROOT_PASSWORD=123” “mysql:5.7.22”
docker run –rm -it –name aaa -e “MYSQL_ROOT_PASSWORD=123” “mysql:5.7.22”
docker run -it -p 81:80 ddd /bin/bash

ちなみにMySQLの場合
Can’t create/write to file ‘/tmp/xxx’で落ちる。要調査。

docker stop
コンテナ停止

入っている場合は
exit
または、
Ctrl+Dでbashプロセスを止めると、コンテナも停止する

docker start -i {NAMES}
コンテナ再実行

docker exec -it {NAMES} bash
起動済みのコンテナに入る

ps
動いているコンテナ

ps -a
停止しているコンテナ

rm {NAMES}
コンテナの削除

 

 

PowerShellリモート接続設定

ホスト側のPC

enable-psremoting
を実行。

ネットワークがPublicだと接続できない。
Win10の設定>ネットワークとインターネット>接続プロパティの変更>プライベート

接続できるユーザを追加。
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
追加するとき、もしMicrosoftアカウントならメールアドレスで検索して追加。

クライアント側のPC

クライアント側から信頼できるホストを追加。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value PC_name

接続は、
Enter-PSSession -ComputerName PC_name -Credential mail@xxx.com
を実行。

切断は、
Exit-PSSession

エイリアス追加

必要なら
Set-ExecutionPolicy Unrestricted

$profile
を実行すると読み込まれているかどうか分かる。

既にファイルが存在すれば、
notepad $profile
存在しなければ、
New-item -type file -force $profile
notepad $profile
を実行し、以下のように記述。

Set-Alias -name c -value cd
Set-Alias -name l -value ls
Set-Alias -name pss -value f
function f()
{
Enter-PSSession -ComputerName PC_name -Credential mail@xxx.com
}

Excel & PowerPoint ショートカット

よく使うものだけ。

Excel

・オートフィルタ
Alt > D > F > F

・並び替え
Alt > D > S

・書式設定
Ctrl + 1

・値の貼り付け
右クリック > S > V

Excel & PowerPoint

・テキストボックス挿入
Alt > N > X > H

・図形挿入
Alt > N > S > H

・スライドの一覧表示(パワーポイントのみ)
Alt > V > D