- 投稿日:2020-03-19T23:05:08+09:00
クラウドネイティブでよく聞くサービス概要
CNCFとは
CNCF(Cloud Native Computing Foundation)とはinux Foundationのプロジェクトで、コンテナ技術の発展と、その進化に関連するテクノロジ業界の連携を支援するための団体。
https://labs.mobingi.com/cncf/
✨ Kubernetes
- 公式: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
- ジャンル: オーケストレーションツール
- GitHub: kubernetes/kubernetes
- 実装言語: Go
- 概要: コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステム
- 参考: https://qiita.com/Kta-M/items/ce475c0063d3d3f36d5d
✨ containerd
- 公式:
- ジャンル: Container Runtime
- GitHub: https://github.com/containerd/containerd
- 実装言語: Go
- 概要: OCI Runtime Specificationに基づいて作られたKubernetesやDockerの高レベルなランタイム
- 参考: https://qiita.com/mamomamo/items/ed5db2ab1555078f8a24
✨Envoy
- 公式: https://www.envoyproxy.io/
- ジャンル: Service Proxy
- GitHub: envoyproxy/envoy
- 実装言語: C++
- 概要: Webサービスのためのロードバランサー
- 参考: https://i-beam.org/2019/01/22/hello-envoy/
✨ Prometheus
- 公式: https://prometheus.io/
- ジャンル: Monitoring
- GitHub: prometheus/prometheus
- 実装言語: Go
- 概要: サーバーやインフラなどの監視ツール
- 参考: https://knowledge.sakura.ad.jp/11633/
✨ Grafana
- 公式: https://grafana.com/
- ジャンル: Monitoring
- GitHub: grafana/grafana
- 実装言語: Go
- 概要:
- 参考: https://qiita.com/MahoTakara/items/7b414c2a0d47e75d7234
✨Fluentd
- 公式: https://www.fluentd.org/
- ジャンル: Logging
- GitHub: fluent/fluentd
- 実装言語: Ruby
- 概要:
- 参考: https://qiita.com/ritorut18/items/4230ec6b524be15ede01
- 投稿日:2020-03-19T22:11:04+09:00
さくらVPSでウェブアプリ公開まで
はじめに
ローカル環境で作ったものをサーバー上にアップロードして公開する流れをまとめます。
その中で詰まった部分などを備忘録的にまとめます。ざっと流れ
1 さくらVPSを契約
2 Linux環境の構築
3 ドメイン取得
4 ドキュメントルート変更
5 SSL化1さくらVPS契約
まずはさくらVPSの契約から。
さくらVPS申し込みはこちら
14日間お試し期間があるのでその期間に一通りできれば無料でお勉強が可能。
※プランは1Gを選択契約したVPSを情報が記載されている。
Linux環境構築
Linuxを勉強するにあたって下記のUdemyの講座を購入。
【3日でできる】はじめてのLinuxサーバー構築入門(CentOS 7・PHP 7・Docker対応)VPS上にCentOSをインストールしてLAMP環境を構築するまでの流れがわかりやすく勉強できたので個人的にはおすすめ。
Linux環境構築する上で躓いたポイント
・ファイヤーウォールを設定してSSHでログインする
→ファイヤーウォールを設定したポートを確認
→更新した内容をリロードし反映させる
→SSHのサーバーにも反映させるためにデーモンを再起動する・サーバー上の一般ユーザーと特権(root)ユーザーでできること
一般ユーザー
=自分のディレクトリ以下のファイルの読み書きができる
特権(root)ユーザー
=管理者権限を持つユーザー
※インストールや設定ファイルの変更には管理者権限が必要一般ユーザーに管理者権限を与える
rootユーザーの命令は絶対であり間違えてシステムファイルなども削除してしまう可能性があるため、基本的には一般ユーザーに管理者権限を与えて操作を行うことが好ましい。・サーバーに外部からアクセスできるようにファイヤーウォールの設定変更
→これが設定できないとアクセスできないこれが完了してVPSのIPアドレスに接続するとApacheの標準ページが表示される。
デフォルトのドキュメントルートが
/var/www/html
なので
例えばこの配下にindex.html
を置くとその中身が表示される。
URLはこんな感じ
xx.xx.xx.xx/index.html
ドメイン取得
IPアドレスのままでも表示はできるが、ウェブアプリを公開するにあたってそのサービスを認知いただくためにドメインの取得は必要。
さくらインターネットやお名前.comなどからドメインを取得する。
※今回はさくらインターネットから取得ドメインの設定方法に関しては下記リンクを参照
【ドメイン設定】さくらインターネットで取得・管理中のドメインを利用要するにサーバーのIPアドレスと取得したドメインを紐付けさせる。
設定が完了すると、上記の
xx.xx.xx.xx/index.html
で表示させていたところのIPアドレス部分(xx.xx.xx.xx
)を取得したドメイン書き換えても同じようにアクセスできるようになる。Let's encryptで無料SSL証明書発行してSSL化
無料でSSL証明書を発行するために今回はLets encryptを使用
躓いたポイント
インストールして証明書も発行したのにSSL化されない
→証明書発行してからApacheに設定が必要
/etc/httpd/conf.d/ssl.confにSSLCertificateFile /etc/letsencrypt/live/[サーバーのドメイン]/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/[サーバーのドメイン]/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/[サーバーのドメイン]/chain.pemそれぞれ設定する
参考記事
https://weblabo.oscasierra.net/letsencrypt-2/ドキュメントルート変更
取得したドメインにアクセスした時にサイトが表示されるようにデフォルトのドキュメントルートを変更する。
この変更を行わないと、例えばデフォルトの
/var/www/html
配下にexample
ディレクトリを作り、その配下にindex.html
を置いた場合、URLがドメイン/example/index.html
と少しブサイクになってしまう。ドメインだけを入力した時にトップページが表示されるように下記の設定を行う。
/etc/httpd/conf/httpd.conf
の下の方にある<VirtualHost *:80>
の中にある
DocumentRootを自分が表示させたいディレクトリに変更する。上の例であれば
/var/www/html
になっているドキュメントルートを/var/www/html/example
にすることによってドメインにアクセスした時にindex.html
の内容が表示される。
- 投稿日:2020-03-19T17:58:39+09:00
Linuxのパーティションをいろいろいじってみる
前回の記事でパーティションの分割をしたので、今回は分割したパーティション使えるようにする!
設定項目
①マウント
②ユーザーごとの容量の制限
③権限設定
④マウントポイントにシンボリックリンク設定①マウント
前回分割した拡張領域の/dev/sda5を以下の順番でマウントしていく。
1,/etc/fstabを編集
2, /dev/sda5にmountコマンドを実行[root@localhost ~]# fdisk -l ・・・ ・・・略 ・・・ Device Boot Start End Blocks Id System /dev/sda1 2048 2099199 1048576 83 Linux /dev/sda2 2099200 8390655 3145728 5 Extended /dev/sda5 2101248 4198399 1048576 83 Linux ←これ現在のマウント状態の確認。mountコマンドをそのまま実行する。
[root@localhost ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) ・・・ ・・・略 ・・・ #/dev/sda5が無い /dev/sda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)1,/etc/fstabを編集
先にバックアップをとっておく。
[root@localhost ~]# cp -p /etc/fstab /etc/fstab.bak [root@localhost ~]# vi /etc/fstab行末に
/dev/sda5 /home2 ext4 defaults 1 2
を追加。各項目の意味
/dev/sda5・・・マウントするデバイスファイル名
/home2・・・/dev/sda5と結びつけるディレクトリ(絶対パス)
ext4・・・ファイルシステムの種類(reiserfs、xfsなど他にもいろいろある)
defaults・・・マウントオプションはデフォルト
1・・・バックアップ必要かどうか(1:必要、2:不要)
2・・・fsckコマンドでチェックを行う時の順序/etc/fstab# # /etc/fstab # Created by anaconda on Sat Jun 1 17:13:31 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=8ac075e3-1124-4bb6-bef7-a6811bf8b870 / xfs defaults 0 0 /swapfile none swap defaults 0 0 /dev/sda5 /home2 ext4 defaults 1 2 ←ここに追加マウント先のディレクトリ/home2を作ってなかったので作成して、マウントコマンドを実行。
[root@localhost ~]# mkdir /home2 [root@localhost ~]# mount -a mount: special device /dev/sda5 does not existあれ?無いって言われる。でも
fdisk -l
で出てくるので、デバイスファイルを確認してみる。[root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1デバイスファイルが無い。再起動したら、デバイスファイル作られるんじゃないと思って再起動。
[root@localhost ~]# systemctl reboot grub rescue> え!OSが起動しなくなった・・・
PC起動しようとしたら「unknown filesystem」って出て焦ったを参考に対応したが直らず。
さらに調べたら、自分と同じ状況の記事が見つかった。
どうやら、USBかDVDでOS起動して、OSのインストールをやり直すらしい。
今回は仮想マシンを使ってるので、vagrant upし直すことにした。$ vagrant status Current machine states: これを消す default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up` $ vagrant destroy ← 削除する default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives... 7$ vagrant status Current machine states: 削除された default not created (virtualbox) $vagrant up ← 再度upまたふりだしに戻った・・・。次回こそは①〜④まで完成させたい!!
- 投稿日:2020-03-19T14:29:31+09:00
unameのオプション -表示順別意味-
環境
GNUコマンド: GNU core utilities version 8.26
unameコマンド概要
Linuxサーバにログインした時等に使う uname コマンドについて調べてみました。
unameは、”システムについて情報を表示する。"コマンドでGNU Coreutilsのひとつです。オプションの意味と表示順
複数のオプションや ‘-a’ オプションが指定された場合の表示順別にオプションの意味をまとめました。
表示順 表示情報 option 意味 備考 1 kernel-name -s カーネル名を表示する OSによってOS名とカーネル名が同じものと(FreeBSD, HP-UX など)、 違うものがある (GNU/Linux, Solaris など) 2 nodename -n ネットワークノードのホスト名を表示する。 現場ではhostnameの代替としてよく使われる(hostnameだとホスト名を変更可能なので、ポカ除けの意) 3 kernel-release -r カーネルのリリース名を表示する。 4 kernel-version -v カーネルのバージョンを表示する。 5 machine -r マシンのハードウェア名を表示する。 ハードウェア・クラスとかハードウェア・タイプと呼ばれることもある 6 processor -p プロセッサ・タイプを表示する 情報が取得できない場合は、‘unknown’ と表示する。GNU/Linux ディストリビューション同士の間ですら可搬性がない。 7 hardware-platform -i ハードウェア・プラットホームの名前を表示する 情報が取得できない場合は、‘unknown’ と表示する。GNU/Linux ディストリビューション同士の間ですら可搬性がない。 8 operating-system -p オペレーティング・システムの名前を表示する。 processorやhardware-platformで表示されるものは、アーキテクチャやプロセッサにより異なるようです。unameのソース(Cで書かれている)としては、processorを返してくれと言っていても其々のプロセッサが違うものを返して来たらどうしようもないですね。
補足
ちなみに、公式マニュアルには下記のように書いてあり、どこかでスペースで区切られたものは見づらいよね。的なことを言っています。
複数のオプションや ‘-a’ オプションが指定された場合、選択された情報は次の順番で表示される。
kernel-name nodename kernel-release kernel-version machine processor hardware-platform operating-system参考文献
- 投稿日:2020-03-19T14:19:59+09:00
VisualStudio2017でリモートデバッグ
やること
ubuntu環境をdockerで構築し、VisualStudio2017からリモートデバッグを行います。
リモートデバッグを行うコンテナを用意
dockerfileFROM ubuntu:16.04 # 各種インストール RUN apt-get update RUN apt-get install -y openssh-server sudo bash-completion g++ gdb gdbserver rsync git # SSH用のディレクトリ作成 RUN mkdir /run/sshd # ユーザーを追加 RUN useradd -m -s /bin/bash ubuntu && gpasswd -a ubuntu sudo # パスワードを設定 RUN echo 'ubuntu:ubuntu' | chpasswd # 22番ポートを公開 EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]docker-composeversion: '2.3' services: dev: build: . ports: - "2222:22" volumes: - ../volume:/tmp/dataイメージをビルド/コンテナを起動
$ docker-compose build $ docker-compose up -dSSH
$ docker exec -it docker_dev bashVisualStudio
デバッグを行うプロジェクトを用意
- 新規作成 > Visual C++ > クロスプラットフォーム > Linux
- ない場合はインストーラから「C++によるLinux開発」を選択し、インストール
VisualStudio側の設定
- 接続先の指定
- ツール > オプション > クロスプラットフォーム > 接続マネージャー > 追加
- ホスト名:リモート先のIP(localhost)
- ポート:22番ポートにマッピングされているポート(2222)
- ユーザー名:ゲストOSのユーザー名(ubuntu)
- 認証の種類:パスワード
- パスワード:上記で設定したパスワード(ubuntu)
()は上記で設定した場合の値
デバッグ
- ソリューションのリビルドを実行
- ビルド > ソリューションのリビルド
- Linuxコンソールの表示
- デバッグ > linux コンソール
- 投稿日:2020-03-19T11:55:11+09:00
PostgreSQL 10.0 インストール手順
検証環境として作成した手順
今回は OracleLinux6 + PostgreSQL10.0 をインストールPostgreSQL のソースコード入手
https://www.postgresql.org/ftp/source/出展:マニュアル
https://www.postgresql.org/docs/10/index.htmlpostgres用OSユーザー作成
# useradd postgres # passwd postgres ユーザー postgres のパスワードを変更。インストールディレクトリ作成
# mkdir /usr/local/pgsqlソースファイルを/usr/local/srcへ保存し、解凍しておく
# tar -xvf postgresql-10.0.tar.bz2 # chown -R postgres:postgres postgresql-10.0 # ls -la 合計 19192 drwxr-xr-x. 3 root root 4096 11月 7 15:01 2019 . drwxr-xr-x. 13 root root 4096 11月 7 14:54 2019 .. drwxrwxrwx 6 postgres postgres 4096 10月 3 06:15 2017 postgresql-10.0 -rw-r--r-- 1 root root 19639147 11月 7 14:40 2019 postgresql-10.0.tar.bz2必要パッケージのインストール
# yum -y install readline readline readline-devel # yum -y install gcc # yum -y install flex # yum install zlib-devel # yum install perlmakeコマンド確認
# make --version GNU Make 3.81コンパイル
$ cd ./postgresql-10.0 $ ls COPYRIGHT HISTORY Makefile aclocal.m4 configure contrib src GNUmakefile.in INSTALL README config configure.in doc $ ./configre $ makeインストール前のcheck コマンド
$ make checkインストール
sudoを有効にする#visudo にて以下行を追加する。 postgres ALL=(ALL) ALL$ sudo make install■環境変数設定
$ vi ~/.bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions export PATH="$PATH":/usr/local/pgsql/bin export POSTGRES_HOME=/usr/local/pgsql export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export MANPATH="$MANPATH":$POSTGRES_HOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"/usr/local/pgsql の所有者を変更する
$ sudo chown postgres:postgres /usr/local/pgsqlDB初期化
$ initdbpostgreSQLサーバーの起動
$ postgres -D /usr/local/pgsql/data/ 2019-11-07 16:33:52.702 JST [6119] LOG: listening on IPv6 address "::1", port 5432 2019-11-07 16:33:52.702 JST [6119] LOG: listening on IPv4 address "127.0.0.1", port 5432 2019-11-07 16:33:52.752 JST [6119] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2019-11-07 16:33:52.828 JST [6120] LOG: database system was shut down at 2019-11-07 16:26:45 JST 2019-11-07 16:33:52.861 JST [6119] LOG: database system is ready to accept connections ^C2019-11-07 16:34:02.694 JST [6119] LOG: received fast shutdown request 2019-11-07 16:34:02.827 JST [6119] LOG: aborting any active transactions 2019-11-07 16:34:02.827 JST [6119] LOG: worker process: logical replication launcher (PID 6126) exited with exit code 1 2019-11-07 16:34:02.827 JST [6121] LOG: shutting down 2019-11-07 16:34:03.273 JST [6119] LOG: database system is shut down起動スクリプトの作成
# install -o root -g root -m 755 /usr/local/src/postgresql-10.0/contrib/start-scripts/linux /etc/rc.d/init.d/pgsql # chkconfig --add pgsql # /etc/rc.d/init.d/pgsql start Starting PostgreSQL: okユーザーとDBの作成
$ createuser posuser $ createdb -O posuser testdb $ psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres testdb | posuser | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |リモート接続設定
$ vi /usr/local/pgsql/data/pg_hba.conf 追記 host all all 0.0.0.0/0 md5 $ vi /usr/local/pgsql/data/postgresql.conf 追記 listen_addresses = '*'インストール完了
$ psql psql (10.0) Type "help" for help. postgres=# select version(); version --------------------------------------------------------------------------------------------- ---------------- PostgreSQL 10.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7- 23.0.1), 64-bit (1 row)以上。
- 投稿日:2020-03-19T10:36:47+09:00
メディアからリポジトリを作成する方法
パッケージをインストールする際、インストールメディアからリポジトリを作成する手順です。
メディアをマウントする。
# mount /dev/cdrom /mediaリポジトリファイルの作成・編集
# vi /etc/yum.repos.d/dvd.repo [dvd] name=dvd baseurl=file:///media /gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-releaseリポジトリとして認識されていることを確認する。
# yum repolist 読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. リポジトリー ID リポジトリー名 状態 !dvd dvd 4,986