- 投稿日:2020-01-07T22:58:21+09:00
Pleasanter .NetCore版 インストール(CentOS7 .NetCore2.2 SQL Server 2019 )
この記事に書いてある事
出来るだけ新しい環境で Plesanterを動かしたい。
で、
2020/1/5 時点では Pleasanter は .NetCore 3.1 未対応 .NetCore2.2 で我慢
.NetCore3.1/SQL Server 2019 は CentOS8 未対応 CentOS7で我慢
CentOS7 ならSQL Server 2019が動きそうPleasanter公式が配布している .NetCore版を利用した導入手順です。(Buildしません)
Pleasanter公式のインストール手順をLinux向けに少し整理してインストール + 以下手順を追加した作業ログです。
- systemctl で起動を制御する為の設定ファイル例
システム起動と一緒に Pleasanterを起動する設定の例- NginX を使ったリバースプロキシ設定
Port 80 で外部公開する為の設定例- Firewalld でのアクセス許可設定
外部からPleasanterへのアクセスを許可する為の設定動作環境
必要なパッケージ 動作環境 延長サポート終了日 .NetCORE 2.2 RHEL 6 x64
RHEL/CentOS/Oracle 7 x64
Fedora28,29
Debian9
Ubuntu 16.04,18.04,18.10
Linux Mint 17,18
OpenSUSE 15+
SLES 12 SP2+
Alpine Linux 3.7+
MacOS 10.12+2019年12月23日でサポート切れ SQL Server 2019 RHEL 7.3,7.4,7.5,7.6
SUSE Linux Enterprise Server v12 SP2,SP3,SP4
Ubuntu16.04
Dockerリリース後6~10年が適用されるはず
2025年~2029年Microsoft ODBC Driver 17 for SQL Server Debian 8,9,10
RHEL 6,7,8
SUSE Linux Enterprise Server 11 SP4,12,15
Ubuntu 14.04,16.04,18,04,18,10,19.04
MacOS不明 Pleasanter - Ubuntuを利用する場合、全ての条件を満たすには Ubuntu16.04 を選択するのが良さそうです。(工夫すれば18.04でも動くみたいです)
RedHatEnterpriseLinux(RHEL)であれば妥当ないろいろなバージョンを選べそうですが、RHEL8にはまだ対応していません。
また、CentOSはSQLServerの動作環境に含まれていませんが FAQ で動作するだろう。とコメントされています。で、実際動作してます。
妥当なバージョンのOSと導入ハードルの低さから CentOS7 を利用する事にしました。導入の流れ
- OS導入:今回はCentOS7系がインストールされている物として進めます
- .NetCORE 2.2 導入
- SQL Server 2019 導入
- MS SQL Server Command Line Tools の導入
- Microsoft ODBC Driver 17 for SQL Server 導入
- GDI+ 導入
- SQL Server 2019の構成
- Pleasanter の実行
- 動作確認
- リバースプロキシの設定
- Firewalld の設定
- 送信用メールサーバ設定
- 追加設定(Reminder機能/Backupスクリプト)
.NetCORE 2.2 の導入
$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm $ sudo yum -y update $ sudo yum -y install dotnet-sdk-2.2SQL Server 2019 の導入
MS SQL Server 導入
$ sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo $ sudo yum -y install mssql-serverMS SQL初期セットアップ
$ sudo /opt/mssql/bin/mssql-conf setup usermod: 変更はありません SQL Server のエディションを選択します: 1) Evaluation (無料、製品使用権なし、期限 180 日間) 2) Developer (無料、製品使用権なし) 3) Express (無料) 4) Web (有料) 5) Standard (有料) 6) Enterprise (有料) - CPU Core utilization restricted to 20 physical/40 hyperthreaded 7) Enterprise Core (有料) - CPU Core utilization up to Operating System Maximum 8) 小売販売チャネルを介してライセンスを購入し、入力するプロダクト キーを持っています。 エディションの詳細については、以下を参照してください https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x411 このソフトウェアの有料エディションを使用するには、個別のライセンスを以下から取得する必要があります Microsoft ボリューム ライセンス プログラム。 有料エディションを選択することは、 このソフトウェアをインストールおよび実行するための適切な数のライセンスがあることを確認していることになります。 エディションを入力してください(1-8): 3 この製品のライセンス条項は /usr/share/doc/mssql-server で参照できるほか、次の場所からダウンロードすることもできます: https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x411 プライバシーに関する声明は、次の場所で確認できます: https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x411 SQL Server の言語の選択: (1) English (2) Deutsch (3) Espanol (4) Francais (5) Italiano (6) 日本語 (7) ??? (8) Portugues (9) Русский (10) 中文 ? ?体 (11) 中文 (繁体) オプション 1-11 を入力: 6 SQL Server システム管理者パスワードを入力してください: <管理者パスワードを設定> SQL Server システム管理者パスワードを確認入力してください: SQL Server を構成しています... ForceFlush is enabled for this instance. ForceFlush feature is enabled for log durability. セットアップは正常に完了しました。SQL Server を起動しています。 $ $ systemctl status mssql-serverシステム管理者パスワード(SAパスワード)には強力な文字列を指定しましょう。
MS SQL Server Command Line Tools の導入
unixODBCの更新とmssql-tools の導入
17.3以降で SQL Server 2019をサポートしています。導入されているバージョンに注意しましょう。$ sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo $ sudo yum remove unixODBC-utf16 unixODBC-utf16-devel 削除対象が存在しない場合もあります。気にせず次に進んでください。 $ sudo yum install -y mssql-tools unixODBC-devel 以下の質問が 2回あります "YES" を応答してください Do you accept the license terms? (Enter YES or NO) YESMicrosoft ODBC Driver 17 for SQL Server 導入
MS SQL Server Command Line Tools と同時に msodbcsql も導入済みなので省略
GDIのインストール
GDI+互換のAPI をインストールします
$ sudo yum install -y epel-release $ sudo yum install -y libgdiplusPleasanter導入
実行ファイルの配置
公式のダウンロードサイトから入手してください。
簡単なアンケートがあるので記入しましょう。
入手したファイルを適当な位置に展開後、Rds.json の SaConnectionString 行内にある SetSaPWD を SQL Server の管理者パスワードに置き換えてください。$ sudo mkdir /Pleasanter $ unzip -q Pleasanter.NetCore.1.0.0.0.zip $ sudo mv Pleasanter/* /Pleasanter/ $ sudo vi /Pleasanter/Pleasanter.NetCore/Implem.Pleasanter/App_Data/Parameters/Rds.json { "Provider": "Local", "TimeZoneInfo": "Tokyo Standard Time", "SaConnectionString": "Server=(local);Database=master;UID=sa;PWD=SetSaPWD;Connection Timeout=30;", "OwnerConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD;Connection Timeout=30;", "UserConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD;Connection Timeout=30;", "SqlCommandTimeOut": 600, "MinimumTime": 3, "DeadlockRetryCount": 4, "DeadlockRetryInterval": 1000 } $Pleasanter用DBの構成
$ cd /Pleasanter/Pleasanter.NetCore/Implem.CodeDefiner/ $ dotnet Implem.CodeDefiner.NetCore.dll _rdsPleasanter 起動確認
起動が確認出来たら Ctrl + C で終了してください。
$ cd ../Implem.Pleasanter/ $ dotnet Implem.Pleasanter.NetCore.dll warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35] No XML encryptor configured. Key {a11dba1c-f2da-4782-ae6d-ace09095eeac} may be persisted to storage in unencrypted form. Hosting environment: Production Content root path: /Pleasanter/Pleasanter.NetCore/Implem.Pleasanter Now listening on: http://localhost:5000 Now listening on: https://localhost:5001 Application started. Press Ctrl+C to shut down.Pleasanter用サービススクリプト作成
OS起動時に Pleasanter を自動起動させるためサービススクリプトを作成します。
$ sudo vi /etc/systemd/system/pleasanter.service [Unit] Description = Pleasanter Documentation = Wants=network.target After=network.target [Service] ExecStart = /usr/bin/dotnet Implem.Pleasanter.NetCore.dll --urls=http://localhost:5000 WorkingDirectory = /Pleasanter/Pleasanter.NetCore/Implem.Pleasanter Restart = always RestartSec = 10 User = root Group = root Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy = multi-user.target $ sudo systemctl daemon-reload $ sudo systemctl start pleasanter $ sudo systemctl enable pleasanterリバースプロキシ(NginX)の設定
通常のwebサーバを同じ Port80 でアクセス出来るようにリバースプロキシの設定を行います。
ここでは紹介しませんが、https化する場合もリバースプロキシを使うと簡単だと思います。
- 設定例の server_name 行には 実際アクセスする時のホスト名を指定してください。
$ sudo vi /etc/nginx/conf.d/pleasanter.conf server { listen 80; server_name pleasanter.example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } $ sudo sysetmctl restart nginxFirewalld の設定
クライアントからWebサービスへのアクセスさせるため 80/tcp(http) へのアクセス許可設定を追加します。
有効なzoneを確認 $ sudo firewall-cmd --get-active-zone public interfaces: enp1s0 Firewallのルールを確認 $ sudo firewall-cmd --list-all Port 80/tcpの保護を解除します $ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp success $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all送信用メールサーバ設定
- SmtpHost に 送信に利用するメールサーバを指定します。
その他の項目は必要に応じて設定してください。
なお、設定変更後はPleasanterの再起動が必要です。$ sudo vi /Pleasanter/publish/Implem.Pleasanter/App_Data/Parameters/Mail.json { "SmtpHost": "localhost", "SmtpPort": 25, "SmtpUserName": null, "SmtpPassword": null, "SmtpEnableSsl": false, "FixedFrom": null, "AllowedFrom": null, "SupportFrom": "\"Pleasanter.org\" <support@pleasanter.org>", "InternalDomains": "", "AddressValidation": "\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]+\\b" }Reminder設定
Python36,pyodbc の導入/Reminderの設定
- EPEL リポジトリを登録しているのでyumで導入出来ます。
python36はReminder、pyodbcはbackupで使用します。$ sudo yum -y install python36 $ sudo mkdir /Pleasanter/tools $ sudo cp -P /Pleasanter/Implem.Pleasanter.NetCore/Tools/Reminder.py /Pleasanter/tools/ $ sudo vi /Pleasanter/tools/Reminder.py localhost 部分をクライアントからアクセス出来るホスト名に変更する urllib.request.Request("http://localhost/pleasanter/reminderschedules/remind?NoLog=1") cron 設定 $ sudo crontab -e @reboot python3 /opt/pleasanter-tools/Reminder.py $ python3 /opt/pleasanter-tools/Reminder.pyMS SQLのバックアップスクリプト設置
python3 で実行すると pyodbcが無いと怒られる。
python で実行すると、epelから導入したpyodbcが利用出来るのか正常に動作しました。$ sudo yum -y install pyodbc $ sudo vi /Pleasanter/Implem.Pleasanter.NetCore/Tools/DbBackup.py 以下の行に sa パスワードを設定してください pwd = "SetSaPWD" $ python /Pleasanter/Implem.Pleasanter.NetCore/Tools/DbBackup.py Backedup: /var/opt/mssql/data/backup/Implem.Pleasanter/20190815_121020.bak Shrinked: Implem.Pleasanter $初期アカウント情報
設定項目 初期値 備考 管理アカウント administrator 初期パスワード pleasanter 初回ログイン時に変更を求められます メモ
saパスワードのリセット方法
作業中に困ったのでメモ
$ sudo systemctl stop mssql-server $ sudo /opt/mssql/bin/mssql-conf set-sa-password SQL Server システム管理者パスワードを入力してください: <新しい管理者パスワード> SQL Server システム管理者パスワードを確認入力してください: SQL Server を構成しています... ForceFlush is enabled for this instance. ForceFlush feature is enabled for log durability. システム管理者パスワードが変更されました。 'sudo systemctl start mssql-server' を実行して SQL Server を起動してください。 $
- 投稿日:2020-01-07T20:54:50+09:00
AWSでのデプロイ手順①ネットワーク環境設定
初心者には難関である、AWSを使用したデプロイ手順を書いてみます
AWSはUIもよく変化するので、
現在のもの(2019/10)で書いています※アカウントがない人はまず新規で申し込みしておいてください
今回内容
STEP1 ネットワーク環境設定
1.VPCの作成
2.サブネットの作成
3.インターネットゲートウェイの作成
4.ルートテーブルの作成
5.サブネットとの紐付け
6.セキュリティグループの作成STEP2 EC2の設定
1.EC2にてインスタンスの作成
2.Elastic IPの割り当て
3.インスタンスにSSHでログイン次回内容
STEP3以降
AWSでデプロイするまでの手順②サーバー(EC2インスタンス)環境設定※ここでいうサーバーとはAWS EC2インスタンス (Amazon Linux) のこととする
STEP1 ネットワーク環境設定
1.VPCの作成
https://aws.amazon.com/
Amazon Web Servicesでサインインしますヘッダーにあるリージョンを東京に設定し、
「VPC」を検索し「VPC」にいきます作成画面になるので
今回は下のように設定し、[作成]を押下します・ネームタグ :testVPC ・IPv4 CIDRブロック:10.0.0.0/16 ・IPv4 CIDRブロック:ブロックなし ・テナンシー :デフォルト2.サブネットの作成
今回のサブネットは[RDS]を配置するためのサブネットを2つを作成する構成です。
サイドメニューのサブネットより[サブネットの作成]を押下します
作成画面になるので
下のように設定し、[作成]を押下します・ネームタグ:testSubnet ・VPC:先ほど作成したものを選択 ・アベイラビリティゾーン:ap-northeast-1a ・CIDRブロック:10.0.0.0/24同様にもう一つ作成します
・ネームタグ:testSubnet2 ・VPC:先ほど作成したものを選択 ・アベイラビリティゾーン:ap-northeast-1c ・CIDRブロック:10.0.1.0/243.インターネットゲートウェイの作成
サイドメニューのインターネットゲートウェイより
[インターネットゲートウェイの作成]を押下します作成画面になるので
下のように設定し、[作成]を押下します名前タグ:testGateway下のように設定し、[アタッチ]を押下する
VPC:先ほど作成したものを選択4.ルートテーブルの作成
サイドメニューのルートテーブルより[ルートテーブルの作成]を押下
作成画面になるので
下のように設定し、[作成]を押下します名前タグ:testTable VPC:先ほど作成したものを選択作成したルートテーブルを選択した状態で、
下のタブ「ルート」>「ルートの編集」を押下、[ルートの追加]を押下下のように設定し[ルールの保存]を押下します
送信先:0.0.0.0/0 ターゲット:Internet Gatewayを選択し、先ほど作成したゲートウェイIDを選択5.サブネットとの紐付け
→左側の「サブネット」を選択します →関連付けを変更するサブネットを選択します →画面下のルートテーブルを選択します →[ルートテーブルの関連付けの編集]を押下します→先ほど作成したルートテーブルIDを選択します →[保存]を押下します6.セキュリティグループの作成
サイドメニューの
セキュリティ>セキュリティグループより>[セキュリティグループの作成]を押下します
下のように設定し、[作成]を押下する
セキュリティグループ名:testSecurityGroup 説明:そのセキュリティグループの説明 VPC:先ほど作成したものを選択画面下のインバウンドのルールの[ルールの編集]を押下し、[ルールの追加]を押下、
下のように設定し、[ルールの保存]を押下するタイプ:SSH ソース:マイIPSTEP2 EC2の設定
AWSでDBを利用したい場合、
・EC2にてインスタンスの作成 ・RDSを利用する ※ ただRDSを使用すると料金が掛かるので、 使用しない場合はサーバーに直接データベースを作成してください。この2種類の方法があります。
今回は
EC2にてインスタンスの作成(サーバーに直接データベースを作成)
をメインに行なっていきます1.EC2にてインスタンスの作成
インスタンスは起動のままだと
課金請求されるので、使わない場合は
停止状態にすることをお勧めしますAWS マネジメントコンソールにて"EC2"を検索しアクセスする
サイドメニューのインスタンスより[インスタンスの作成]を押下する
[次の手順: インスタンスの詳細の設定]をクリックする
下を設定し,[次の手順: ストレージの追加]を押下する
ネットワーク:先ほど作成したVPCを選択 サブネット:先ほど作成したサブネットを選択 自動割り当てパブリック IP:有効 他はデフォルトのままデフォルトのままで,[次の手順: タグの追加]を押下する
タグを追加する
キー:Name 値:testInstanceで[次の手順: セキュリティグループの設定]を押下する
セキュリティグループの設定する
セキュリティグループの割り当て:既存を
選択し、先ほど作成したセキュリティグループを選択し、
[確認と作成]を押下する
一覧画面にて、
最後に[起動]を押下します下ような表示になり、
新しいキーペアを作成を選択、
キーペア名を入力し、
[キーペアのダウンロード]を押下します
(一度作成されたファイルは再度ダウンロードができなくなるので注意)
ダウンロードしたら[インスタンスの作成]を押下します
しばらくするとインスタンスが作成されます!!
2.Elastic IPの割り当て
サイドメニューの
ネットワーク&セキュリティ>
Elastic IP[新しいアドレスの割り当て]を押下する[閉じる]で戻り
インスタンスを先ほど作成したものを選択し、[関連付け]を押下する
※停止していたインスタンスにElastic IPを関連付けたままにしていると小額の料金が発生してしまうので、
インスタンスを停止している場合は解放することをお勧めしますElastic IPをアタッチ(関連付け)しているインスタンスが起動している状態であれば、料金は発生しません。しかし、インスタンスが「停止」している状態や、Elastic IPを使っていない場合、料金が発生します。そのため、使わないElastic IPは削除しなければいけません。
Elastic IPがまだインスタンスにアタッチしている場合は、Elastic IPから該当のIPを選択し、「アクション」→「アドレスの関連付けの解除」をクリックします。確認画面が表示されますので、間違いなければ、「アドレスの関連付けの解除」をクリックし、EIPをデタッチします。
その後、再度該当のIPを選択し、「アクション」→「アドレスの解放」をクリックし、EIPを削除します。これで、料金が発生しなくなります。
3.インスタンスにSSHでログイン
各種インストール
python
$ brew install pythonpip(pythonのパッケージ管理システム)
$ easy_install pipawscli(awsをPCのコンソール上から扱うためのもの)
$ pip install awscliできない場合はこちら
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-macos.htmlec2-userでインスタンスにログインする
AWSでは、
EC2インスタンスにログインできるユーザーとして、
デフォルトでec2-userという名のユーザーが用意されています
こちらではまずec2-userでログインしますターミナルで以下を入れていきます
(※testKey.pemは、先ほどSTEP2でダウンロードしたキーです)$ mv Downloads/testKey.pem .ssh/ (#作成した公開鍵をsshフォルダに移動) $ cd .ssh/ (#ディレクトリをsshに移動) $ chmod 600 testKey.pem (#公開鍵に600番で定義されたアクセス権を付与する) $ ssh -i testKey.pem ec2-user@(@以降のURLは、作成したEC2インスタンスと紐付けたElastic IPを使用してください。) (#公開鍵を利用してec2-userとしてログイン) 例: ($ ssh -i testKey.pem ec2-user@13.112.140.56)yes/noを聞かれるので
無事にログインできました!!!
※
ssh port 22 Operation timed out
エラーになる場合はこちら
https://qiita.com/yokoto/items/338bd80262d9eefb152ehttps://qiita.com/minicoopers0716/items/cac50f29ef79a03f1d8d
ユーザー作成(EC2上での操作)
上記方法でインスタンスにログインしている状態で
[ec2-user|~]$ sudo adduser testuser (#新規ユーザー名の登録) [ec2-user|~]$ sudo passwd testuser (#新規ユーザー名のパスワード登録) パスワードを登録します
vimでユーザーに権限を追加する記述する$ sudo visudovimモードになります
## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now検索モードにし下の
"wheel"を探します
(キーボードで"/wheel"を入力し押下、"N"を押下すると次にいけます)## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALLキーボードの「i」を押下し、編集モードで
# %wheel ALL=(ALL) NOPASSWD: ALL
のコメントアウトを外します## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALLさらに
その下に、作成したユーザーに権限を追加する記述 testuser ALL=(ALL) ALL を追加する## Allow root to run any commands anywhere root ALL=(ALL) ALL testuser ALL=(ALL) ALLキーボードの「esc」を押下します
「:wq」を入力しEnterで保存しますこちらでユーザーの切り替えを行ってください。
[ec2-user|~]$ sudo su - testuser (#ユーザー名の切り替え) [testuser@ ~]無事に[ec2-user|がtestuser(作成したユーザー名)と切り替わればOKです。
exitを二回いれて
で一度ログアウトする追加ユーザ用キーペアを作成
こちらはローカルでの作業です
$ cd .ssh [.ssh]$ ssh-keygen -t rsa (#公開鍵を作成) ----------------------------- Enter file in which to save the key (): (#ここでファイルの名前を記述して、エンターを押す) test_key_rsa Enter passphrase (empty for no passphrase): (#何もせずそのままエンター) Enter same passphrase again: (#何もせずそのままエンター) ----------------------------- [.ssh]$ ls #「test_key_rsa」と「test_key_rsa.pub」が生成されたことを確認 [.ssh]$ vi config (#VIMを起動し、設定ファイルを編集する) ----------------------------- キーボードの「i」を押下し、編集モードで # 以下を追記 Host test_key_rsa Hostname 前出のElastic IP (#自分の設定に合わせて) Port 22 User testuser (#先ほどのユーザー名) IdentityFile ~/.ssh/test_key_rsa (#秘密鍵の設定) * ()部分は削除する。 ----------------------------- キーボードの「esc」を押下します 「:wq」で保存します [.ssh]$ cat test_key_rsa.pub (#鍵の中身をターミナル上に出力) ★ ssh-rsa~~~~localまでをコピーしておくサーバー側作業
続いてサーバーでの作業です
ec2-userでログインします$ cd .ssh $ ssh -i testKey.pem ec2-user@(@以降のURLは、作成したEC2インスタンスと紐付けたElastic IPを使用してください。) [ec2-user|~]$ sudo su - testuser [testuser@ ~]$ mkdir .ssh [testuser@ ~]$ chmod 700 .ssh [testuser@ ~]$ cd .ssh [testuser@ |.ssh~]$ vi authorized_keys (vimがオープンするので、「i」を押し、 先ほど ★ で、コピーしたssh-rsaをペーストする) キーボードの「esc」を押下します 「:wq」で保存します [testuser@ |.ssh~]$ chmod 600 authorized_keys $ exit もう一度 $ exit ログアウト[~]$ ssh test_key_rsaログインできれば、無事ユーザー設定は終了です。
なお、時間が経つとローカルからログインできなくなることがあるので、その場合は、 セキュリティグループ>インバウンド>編集で SSHのソースで マイIPを選択し[保存]すると繋がるようになります
- 投稿日:2020-01-07T16:05:24+09:00
OMC Log Analyticsの設定方法と使い方 - Linux編 -
Oracle Management CloudのLog Analyticsは、OSやMiddleware,Databaseなどの様々なログを集約して横断的に分析することができるサービスです。
ここでは、実際にLinuxの代表的なログの取得するための設定手順、基本的な分析手法について紹介します。
Cloud Agentをインストールしたopcユーザは/var/logディレクトリのログファイルへのアクセス権限がないので、以下コマンドで参照権限を付与する
[opc@demovm1 cloudagent_linux]$ sudo setfacl -m u:opc:r /var/log/messages* [opc@demovm1 cloudagent_linux]$ sudo setfacl -m u:opc:r /var/log/secure*
使用例
Lableのフィールドをグループ化基準にドラッグ&ドロップ。右側の円グラフがラベリングされたログのタイプでグループ化される
ビジュアライゼーションからクラスタを選択するとログがクラスタリング(分類化)される。
潜在的に問題のあるレコードやまれにしか発生しないレコードなど対象レコードの特定が簡単になる。
Cloud Agentは定期的に更新分のログレコードをOMCに送信し、ログデータは常に最新に近しい状態になります。今回はLinuxの基本的なログを取り込む設定をしましたが、これ以外にもLog Analyticsには予め用意されたログ・パーサーが準備されています。
対応可能なログパーサーの一覧は以下のとおり
https://docs.oracle.com/cd/E83857_01/paas/management-cloud/logcs/box-log-sources.htmlここにない独自のログフォーマットの場合は、カスタムパーサーを自分で作成することで同様にログを取り込んで分析可能です。次は、手動でのログ取り込みの方法やカスタムパーサーについて紹介します。
- 投稿日:2020-01-07T14:15:38+09:00
[RHEL7/CentOS7] ログ監視ツール swatch を入れてメール通知してみた
インストール
EPELリポジトリ追加
# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmswatch インストール
# yum install swatch --enablerepo=epel設定ファイル
ログファイルに「action="auth-logon"」という文字列を検出したときに
- 画面表示する
- メール通知する
# vi swatch_fwlog.conf watchfor /action=\"auth-logon\"/ echo mail=fukuchan_senpai@sample.org,subject="[sslvpn] logon success"手動起動
# /usr/bin/perl /bin/swatch -c /root/swatch_fwlog.conf -t /var/log/fwlog &手動停止
# kill プロセス番号Systemdへの登録
ユニットファイルの作成
# vi /lib/systemd/system/swatch_fwlog.service [Unit] Description=swatch for firewall log After=syslog.target network.target postfix.service [Service] ExecStart=/usr/bin/swatch -c /root/swatch_fwlog.conf -t /var/log/fwlog --pid-file /var/run/swatch_fwlog.pid --daemon > /dev/null 2>&1 Type=forking PIDFile=/var/run/swatch_fwlog.pid [Install] WantedBy=multi-user.target反映
# systemctl daemon-reload自動起動化
# systemctl enable swatch_fwlog起動
# systemctl start swatch_fwlogステータス確認
# systemctl status swatch_fwlog停止
# systemctl stop swatch_fwlog考察
- ログファイル毎に設定ファイルを作成し個別にswatchを実行する必要がある
- メール通知の本文はログの該当行が挿入される
- 投稿日:2020-01-07T13:47:33+09:00
OMC Cloud Agentのインストール - Linux編 -
Oracle Management CloudのCloud Agentのインストール方法を紹介します。
Cloud Agentは、Oracle Management Cloudサービスに対してサーバーの情報を送信するソフトウェアです。ここでは、予め用意しておいたOracle CloudのAlways FreeのLinux VMインスタンスに対して、Cloud Agentをインストールしていく手順を説明します。
Oracle Cloudでなくても、AWSやAzureのVMインスタンス、On-Premiseの環境でもインターネットへアクセス可能であれば同様の手順でCloud Agentをインストール可能です。OMCのアーキテクチャはここが参考になります。
https://docs.oracle.com/cd/E83857_01/paas/management-cloud/emaig/you-begin.html#GUID-5EC2A413-E393-42A9-9A86-7F2E9B2BDFD9Always FreeのVMインスタンスを用意
- VMインスタンスはインターネットへHTTPSアクセスができることが必須
- アクセスはアウトバンドのみ(Cloud Agent --> OMC) インバウンドは発生しない
Cloud Agent Linux(64bit)をクリックしてダウンロードする。
※赤枠のTENANT_NAMEとOMC_URLをメモしておくダウンロードしたCloud AgentをVMインスタンスにコピーしてログイン
cloudagent用のディレクトリ作成 [opc@demovm1 ~]$ mkdir cloud_agent コピーしたcloudagentを解凍 [opc@demovm1 ~]$ unzip cloudagent_linux.x64_1.46.0.zip -d cloudagent_linux [opc@demovm1 ~]$ ls cloudagent_linux agentcoreimage.zip agentimage.properties agent.rsp unzip AgentDeployment.sh AgentInstall.sh agent_software_build.xml [opc@demovm1 ~]$ cd cloudagent_linux/ agent.rspファイルの中にある4つのパラメータに先ほどメモした値を追記 [opc@demovm1 cloudagent_linux]$ vi agent.rsp TENANT_NAME= 1282ec749826bb AGENT_REGISTRATION_KEY= RRDpSff0o-S5sUDgnFgywG0XBt AGENT_BASE_DIRECTORY= /home/opc/cloud_agent OMC_URL= https://omc-1282ec749826bb.api.omc.ocp.oraclecloud.com/ ※Proxy経由の場合は、OMC_PROXYHOST,OMC_PROXYPORTの値も追記 エージェントのインストールの実行 [opc@demovm1 cloudagent_linux]$ ./AgentInstall.sh Unzipping agent software, this may take some time... Installing Cloud Agent... Cloud Agent parameter validation started... Cloud Agent pre-requisite checks started... Cloud Agent base directory creation started... Security artifacts download started... Cloud Agent setup started... Registering Cloud Agent... Starting Cloud Agent... Cloud Agent started. Cloud Agent installation completed. Cloud Agent post installation checks started. Cloud Agent is up and running. Cloud Agent is communicating to Oracle Management Cloud. Cloud Agent is monitored in Oracle Management Cloud. Cloud Agent post installation checks completed. To start Cloud Agent upon Operating System restart include '/home/opc/cloud_agent/agent_inst/bin/omcli start agent' in the start-up scripts. For further details please refer http://www.oracle.com/pls/topic/lookup?ctx=en/cloud/paas/management-cloud&id=deploy_agent. 上記メッセージでインストール完了 Always FreeのVMインスタンスだとインストール時にMax Processのエラーが発生したので、20-nproc.confのファイルに以下を追記して編集し再ログイン&再実行 [opc@demovm1 cloudagent_linux]$ sudo vi /etc/security/limits.d/20-nproc.conf opc - nproc unlimited
ライセンスをクリックし、ライセンスなしになっている1/1をクリック、ライセンス・エディションをStandardに選択する。これでCloud Agentが対象のVMインスタンスの監視を開始することになり、課金も開始されます。開始する場合は、右の保存ボタンをクリックします。
Cloud Agentの起動/停止コマンド
cd /home/opc/cloud_agent/agent_inst/bin ./omcli stop agent ./omcli start agent以上の手順で、Cloud AgentのインストールとInfrastructure Monitoringの機能を使用することができるようになりました。Infrastructure Monitoringでは、オンプレミスやクラウド上のリソースを統合的に監視するフレームワークです。指定したメトリック値によるアラートや機械学習による異常値検知などの機能なども使うことができます。
また、LinuxやWindows, Middleware, Database, Network機器など様々なエンティティがサポートされています。
https://docs.oracle.com/cd/E83857_01/paas/management-cloud/monmr/list-supported-entities.htmlこの次は、Linux内のログを収集・分析するLog Analyticsの機能の設定をしていきます。
https://qiita.com/western24/items/715f221c4ebd5bebad12
- 投稿日:2020-01-07T13:20:57+09:00
パッケージ依存関係が修復できない時の対処法
まずは dpkg --audit で問題を確認する。
その後、それらのパッケージを強制的にアンインストールした後で再インストールするsudo dpkg -P --force-depends パッケージ名
(ただ、パッケージや依存関係が壊れてたりすると、消えてくれないことがあるっぽい。–force-remove-reinstreq オプションをつけると消えてくれた。)
と実行してアンインストールした後、
sudo apt-get install パッケージ名
で再インストール
sudo dpkg --audit
と実行して何も表示されなくなれば問題は解決のはずです。
- 投稿日:2020-01-07T10:31:08+09:00
viコマンド入門(覚書き)
はじめに
ターミナルなどで作業をすることが増えてきたため、個人的なメモとして(最小限の)操作用コマンドをまとめてみた。
調べてみると大量のコマンドがあるが、入門編としてこのあたりからマスターしていきたい。
※随時、追記修正する可能性あり。viモードの終了・ファイルの保存
- 「ZZ」「:wq」保存して終了
- 「:q!」保存せずに終了
- 「:q」終了
カーソルの移動
上下左右
- 「k」上に移動(↑)
- 「j」下に移動(↓)
- 「h」左に移動(←)
- 「l」右に移動(→)
単語
- 「w」単語の先頭へ移動
- 「b」前の単語の先頭へ移動
行
- 「^」行頭へ移動
- 「$」行末へ移動
段落
- 「{」段落の先頭へ移動
- 「}」段落の末尾へ移動
その他
- 「gg」先頭行へ移動
- 「G」最終行へ移動
- 「:行番号」指定した行にカーソルが移動
- 「Ctrl + F」下スクロール
- 「Ctrl + B」上スクロール
検索
- 「/文字列」+(n/N)文字列検索(次/前)
編集
コピー&ペースト
- 「yy」「Y」行のコピー(Yank)
- 「p」次の行にペースト(Put)
削除
- 「x」一文字削除
- 「dd」行の削除
その他
- 「u」直前の操作を取り消し
- 投稿日:2020-01-07T03:02:46+09:00
LinuxでLiveUSBを作る手間を減らすために作成したシェルスクリプトを公開します
ソースコードは記事下段に記載していますのでファイルに保存してお使い下さい。
実行方法
下記コマンドを実行します。
sudo sh "createLiveMedia.shのパス" "isoファイルのパス"isoファイルとしていますが、ファイルであればそれ以外でも可能です。
操作方法
(1)下記のように接続しているデバイスの一覧が表示されるので、書き込むデバイスのインデックスを入力します(表示されるデバイスはお使いの環境で変わります)。
INDEX TRAN SIZE MODEL NAME 1 sata 465.8G HGST HTS545050A7 /dev/sda 2 sata 119.2G SSM128GPTC0-S91 /dev/sdb 3 usb 2.7T HDCZ-UT /dev/sdc 4 usb 60.4G Multi-Card /dev/sdd 5 usb 3.8G Cruzer Colors+ /dev/sde 6 sata 1024M DVD-RAM UJ8E2 /dev/sr0 書き込みを行うデバイスのインデックスを指定して下さい:(2)下記のようにマウントしているパーティションの一覧と、アンマウントして良いかの確認メッセージが表示されます(マウントしているパーティションが存在しない場合はスキップされます)。
/dev/sde1 マウントされているパーティションが存在します。アンマウントしてよろしいですか?[y/n]:(3)書き込んで良いか確認メッセージが表示されます。
指定されたデバイスのデータは全て削除されます。よろしいですか?[y/n]:(4)書込みが完了すると「書き込みが完了しました。」と表示されます。
適用ライセンス
本シェルスクリプトは教科書ライセンス(独自ライセンス)で公開します。
本製品の利用をもって教科書ライセンス(詳細は下記条文を参照)を了承したものと見做します。 (利用条件)本製品を利用するにあたり従わなければならない条件はありません。 (免責1)本製品を利用した事で生じた如何なる損害に対して、本製品の権利者にその責は及ばないものとします。 (免責2)本製品がどのような場合でも使用できる事を保証しません。 (想定問答) Q:どのような行為が「本製品を利用する」に該当するか。 A:本製品が関係する全ての行為が該当します。ソースコード
createLiveMedia.sh#!/bin/sh #このシェルスクリプトは管理者権限が必要な操作(umountコマンド及びデバイスファイルへの書き込み)を含むため、実行時に管理者権限を要求する。 #umountコマンドは必須ではないが、アンマウントしない場合は処理完了後のLinuxの該当デバイスの認識がおかしくなる(存在しないパーティションをマウントしている扱いになる)。 #syncコマンドは必須ではないが、遅延書き込みが行われていた場合に書き込み途中にも関わらず完了したと表示する可能性がある。 #光学メディアへの書き込みも可能だが限定的(正常に書き込めるのはDVD+RW, DVD-RAM, BD-REの3種類のみ。但しいずれも未フォーマットの状態では書き込み不可)である。 println(){ printf "%s" "$1" echo "" } throwException(){ printf "%s" "$1" echo "" exit 1 } [ "$(uname)" != "Linux" ] && throwException "このシェルスクリプトはLinuxでしか使えないコマンドを含むため、お使いのOSでは実行できません。" [ -z "$(type lsblk 2> /dev/null)" ] && throwException "お使いの環境にはlsblkコマンドがインストールされていません。" [ -z "$(type umount 2> /dev/null)" ] && throwException "お使いの環境にはumountコマンドがインストールされていません。" [ -z "$(type sync 2> /dev/null)" ] && throwException "お使いの環境にはsyncコマンドがインストールされていません。" [ $# -ne 1 ] && throwException "引数の数が不正です。引数の数は常に1でなければなりません。" isoFile=$1 [ ! -e "${isoFile}" ] && throwException "指定されたファイルは見つかりませんでした。" [ "$(id -u)" -ne 0 ] && throwException "このシェルスクリプトには管理者権限が必要な操作が含まれる為、一般ユーザーでは実行できません。" view="$(lsblk -d -l -p -o TRAN,SIZE,MODEL,NAME)" view="$(println "${view}" | nl -v 0 -w 5 -s " " | sed -e "1 s/^ *0/INDEX/")" deviceList="$(println "${view}" | sed -e "1d" | sed -e "s/^.* \{1,\}//")" [ -z "${deviceList}" ] && throwException "選択可能なデバイスがありませんでした。" println "${view}" printf "%s" "書き込みを行うデバイスのインデックスを指定して下さい:" read -r index index="$(println "${index}" | grep "^[1-9][0-9]*$")" [ -z "${index}" ] && throwException "INDEX列に表示されている数字を入力して下さい。" [ "${index}" -gt "$(println "${deviceList}" | wc -l)" ] && throwException "INDEX列に表示されている数字を入力して下さい。" deviceFile="$(println "${deviceList}" | sed -n "${index}p")" partitionList="$(lsblk "${deviceFile}" -l -n -p -o NAME)" partitionCount="$(println "${partitionList}" | wc -l)" while [ "${partitionCount}" -ge 1 ]; do partitionFile="$(println "${partitionList}" | sed -n "${partitionCount}p")" mountDir="$(lsblk "${partitionFile}" -d -l -n -o MOUNTPOINT 2> /dev/null)" if [ -z "${mountDir}" ]; then partitionList="$(println "${partitionList}" | sed -e "${partitionCount}d")" fi partitionCount="$((partitionCount - 1))" done if [ -n "${partitionList}" ]; then println "${partitionList}" printf "%s" "マウントされているパーティションが存在します。アンマウントしてよろしいですか?[y/n]:" read -r canUnmount canUnmount="$(println "${canUnmount}" | grep "^[Yy]$")" [ -z "${canUnmount}" ] && throwException "y以外が入力された為、処理を中止しました。" partitionCount="$(println "${partitionList}" | wc -l)" while [ "${partitionCount}" -ge 1 ]; do partitionFile="$(println "${partitionList}" | sed -n "${partitionCount}p")" [ -n "$(umount "${partitionFile}" 2>&1)" ] && throwException "アンマウント中にエラーが発生した為、処理を中止しました。" partitionCount="$((partitionCount - 1))" done fi printf "%s" "指定されたデバイスのデータは全て削除されます。よろしいですか?[y/n]:" read -r canExecute canExecute="$(println "${canExecute}" | grep "^[Yy]$")" [ -z "${canExecute}" ] && throwException "y以外が入力された為、処理を中止しました。" dd bs=64k if="${isoFile}" of="${deviceFile}" && sync && println "書き込みが完了しました。"後記
- コマンドのオプションや正規表現の書き方に違和感を覚えた方もいるかと思いますが、これは本シェルスクリプトを作成するにあたり可能な限りPOSIXに準拠したためです。具体的には以下の通りです。
- 本シェルスクリプトで使われている構文はPOSIXに準拠しています。
- 本シェルスクリプトで使われているコマンドおよびそのオプションについて、POSIXに規定されているコマンドについてはオプションも含めてPOSIXに準拠しています。
- 本シェルスクリプトで使われている正規表現はPOSIXのBRE(Basic Regular Expression)に準拠しています。
- 本記事および本シェルスクリプトへの指摘・疑問はいつでも歓迎します。ただし、必ず返信するとは限りません。
























































