20210612のLinuxに関する記事は17件です。

Oracle実験室 / Oracle Restart環境構築 (19.3)

私が勉強中のOracle DatabaseについてVirtualBox環境でのセットアップ・各種操作等を行った際のメモです。 Oracle実験室 Oracle実験室 / CentOS7.xインストール Oracle実験室 / CentOS7.x 初期設定 Oracle実験室 / Oracle Database 19c Grid Infrastructure (19.3) インストール Oracle実験室 / Oracle Database 19c (19.3) インストール
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Oracle実験室 / Oracle Database 19c (19.3) インストール

前書き 前の記事 https://qiita.com/Que-sera-sera/items/c23143f9cb62bb360aa9 でセットアップしたGrid Infrastructure 19cの環境にOracle Database 19cインストールします。 準備 作業用ディレクトリ作成 ダウンロードファイル用の一時用作業ディレクトリを作成します。 # mkdir -p /tmp/work # chmod -R 777 /tmp/work # cd /tmp/work ダウンロード ダウンロードしたファイルは"/tmp/work"に配置します。 今回はOUI版を使用します。 Oracle Database 19c (19.3) for Linux x86-64 https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html OS設定変更 パッケージインストール、ユーザー作成、カーネルパラメータ等の設定は、前記事に記載してますので、そちらを参照ください。 https://qiita.com/Que-sera-sera/items/c23143f9cb62bb360aa9 Oracle Databaseインストールメディアの展開 $ su - oracle $ mkdir -p $ORACLE_HOME $ cd $ORACLE_HOME $ pwd /u01/app/oracle/product/19.3.0/dbhome_1 $ unzip -q /tmp/work/LINUX.X64_193000_db_home.zip Oracle Database インストール oracleユーザーでGUIログインします。 インストール $ mkdir -p $ORACLE_HOME $ cd $ORACLE_HOME $ ./runInstaller OUI起動 データベース作成は別途DBCAコマンドで作成しますので今回"ソフトウェアのみの設定"を選択します。 [次へ]をクリックします。 今回は単一インスタンスのOracle Restart環境構築が目的ですので「単一インスタンス・データベースのインストール」を選択します。 [次へ]をクリックします。 「Enterprise Edition」を選択します。 [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。(環境変数で設定済) [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。 [次へ]をクリックします。 インストール中に必要なrootパスワードを設定します。 [次へ]をクリックします。 インストールに必要なリソース、パッケージのチェックが実行されます。 問題があれば都度対象する必要があります。 問題がなければインストールの準備画面が表示されます。 [インストール]をクリックします。 しばらくお待ちください・・・。 インストールが完了したら[閉じる]をクリックします。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

cent os 7.6 に postgreSQL 9.2 が入っている状態で postgreSQL 13.3 をインストールする

postgreSQL9.2 が入っている状態で postgre13.3をインストールします。 1.postgreSQL 9.2 の状態確認 postgre9.2はデフォルトインストール状態として以下のようになっています。 設定項目 設定値(デフォルト) TCP使用ポート 5432 データディレクトリ /var/lib/pgsql/data postgre9.2_dir&port [root@cent76-d1 ~]# cat /usr/lib/systemd/system/postgresql.service 《中略》 # Port number for server to listen on Environment=PGPORT=5432 # Location of database directory Environment=PGDATA=/var/lib/pgsql/data 《中略》 [root@cent76-d1 ~]# 2.postgreSQL 13.3 のインストール インターネット接続環境下で、リポジトリをダウンロードしたりしながらインストールをします。 (以下の「1.postgreSQLのインストール」に同じ) repo_install [root@cent76-d1 ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum_install [root@cent76-d1 ~]# yum install -y postgresql13-server 《中略》 ================================================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================ インストール中: postgresql13-server x86_64 13.3-1PGDG.rhel7 pgdg13 5.4 M 依存性関連でのインストールをします: postgresql13 x86_64 13.3-1PGDG.rhel7 pgdg13 1.4 M postgresql13-libs x86_64 13.3-1PGDG.rhel7 pgdg13 380 k トランザクションの要約 ================================================================================================================ インストール 1 パッケージ (+2 個の依存関係のパッケージ) 総ダウンロード容量: 7.2 M インストール容量: 30 M 《中略》 インストール: postgresql13-server.x86_64 0:13.3-1PGDG.rhel7 依存性関連をインストールしました: postgresql13.x86_64 0:13.3-1PGDG.rhel7 postgresql13-libs.x86_64 0:13.3-1PGDG.rhel7 完了しました! [root@cent76-d1 ~]# 3.postgreSQL 13.3 起動前config変更と起動 postgreSQL 13.3 をプレーンなまま起動すると以下の表のとおりになります。 ただ、TCP使用ポートがpostgreSQL 9.2 と重複する場合は、13.3が起動しないので変更します。 (データディレクトリはpostgreSQL 9.2 と被らないため問題ありません) 設定項目 設定値(デフォルト) TCP使用ポート 5432 データディレクトリ /var/lib/pgsql/13/data/  ↓変更 設定項目 設定値 TCP使用ポート 5330 データディレクトリ /pgdata/13/data ※ポート番号5330は 5 + 13.30。 ※変更先データディレクトリについてはpostgreユーザかつ権限700で事前に作成。 まずはサービス設定ファイルを変更します。 /usr/lib/systemd/system/postgresql-13.service ※なお、元設定をコメントアウトするだけだとうまく動かないので、設定は上書きします。 change_postgresql-13.service # Location of database directory Environment=PGDATA=/var/lib/pgsql/13/data/  ↓変更 # Location of database directory Environment=PGDATA=/pgdata/13/data/ initdbを行い、データディレクトリに初期DBおよび設定ファイル群を展開します。 initdb [root@cent76-d1 ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb Initializing database ... OK [root@cent76-d1 ~]# この状態でpostgreSQL 13.3 を起動しようとすると、TCPポート重複により起動しません。 postgresql13.3_start_error [root@cent76-d1 ~]# systemctl start postgresql-13 Job for postgresql-13.service failed because the control process exited with error code. See "systemctl status postgresql-13.service" and "journalctl -xe" for details. [root@cent76-d1 ~]# 続いてはpostgresql.confを変更します。 なお、当該の設定ファイルは変更先のデータディレクトリに作成されているので注意。 /pgdata/13/data/postgresql.conf change_postgresql.conf #port = 5432 # (change requires restart)  ↓変更 port = 5330 ### CUSTOM ADD ### #port = 5432 # (change requires restart) ポート変更後、postgreSQL 13.3 を起動すると正常に実行されます。 postgresql13.3_start_success [root@cent76-d1 ~]# systemctl start postgresql-13 [root@cent76-d1 ~]# [root@cent76-d1 ~]# systemctl status postgresql-13 ● postgresql-13.service - PostgreSQL 13 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled) Active: active (running) since 土 2021-06-12 13:24:50 JST; 20s ago Docs: https://www.postgresql.org/docs/13/static/ Process: 28689 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 28694 (postmaster) CGroup: /system.slice/postgresql-13.service tq28694 /usr/pgsql-13/bin/postmaster -D /pgdata/13/data tq28696 postgres: logger tq28698 postgres: checkpointer tq28699 postgres: background writer tq28700 postgres: walwriter tq28701 postgres: autovacuum launcher tq28702 postgres: stats collector mq28703 postgres: logical replication launcher 6月 12 13:24:50 cent76-d1 systemd[1]: Starting PostgreSQL 13 database server... 6月 12 13:24:50 cent76-d1 postmaster[28694]: 2021-06-12 13:24:50.644 JST [28694] LOG: ログ出力をログ収集プロセスにリダイレクトしています 6月 12 13:24:50 cent76-d1 postmaster[28694]: 2021-06-12 13:24:50.644 JST [28694] ヒント: ここからのログ出力はディレクトリ"log"に現れます。 6月 12 13:24:50 cent76-d1 systemd[1]: Started PostgreSQL 13 database server. [root@cent76-d1 ~]# 異なるバージョンのpostgreSQLを併存させることに成功しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux: 大量の日付付きダミーログファイルを作成する方法

シェルスクリプトの単体試験で時々使用するのでメモしておきます。 実施環境: Linux [testuser@testhost ~]$ uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [testuser@testhost ~]$ echo $SHELL /bin/bash 日付付きのダミーログファイルを作成する場合、1つ2つであればtouchコマンドを使用して次のように簡単に作成できます。 Linux [testuser@testhost ~]$ touch -t 202106010900 test.log.20210601 [testuser@testhost ~]$ ls -l -rw-r--r-- 1 testuser testgrp 0 Jun 1 09:00 test.log.20210601 上記は日付をピンポイントで指定していますが、「今日から3日前」のように日付を相対的に指定する場合、dateコマンドを利用して次のように書けます。 Linux [testuser@testhost ~]$ date Sun Jun 6 13:41:14 JST 2021 [testuser@testhost ~]$ touch -t `date -d "3 days ago" +%Y%m%d0900` test.log.`date -d "3 days ago" +%Y%m%d` [testuser@testhost ~]$ ls -l -rw-r--r-- 1 testuser testgrp 0 Jun 3 09:00 test.log.20210603 ただ、大量のダミーログファイルを作成する場合、これらのコマンドを単に1つずつ入力していくのは非常に大変です。 ではどうするかというと、for文を利用します。 以下の例では昨日から1週間前までの分のダミーログファイルを作成しています。 Linux [testuser@testhost ~]$ date Sun Jun 6 13:48:30 JST 2021 [testuser@testhost ~]$ for ((i=1;i<=7;++i)); do touch -t `date -d "$i days ago" +%Y%m%d0900` test.log.`date -d "$i days ago" +%Y%m%d`; done [testuser@testhost ~]$ ls -l -rw-r--r-- 1 testuser testgrp 0 May 30 09:00 test.log.20210530 -rw-r--r-- 1 testuser testgrp 0 May 31 09:00 test.log.20210531 -rw-r--r-- 1 testuser testgrp 0 Jun 1 09:00 test.log.20210601 -rw-r--r-- 1 testuser testgrp 0 Jun 2 09:00 test.log.20210602 -rw-r--r-- 1 testuser testgrp 0 Jun 3 09:00 test.log.20210603 -rw-r--r-- 1 testuser testgrp 0 Jun 4 09:00 test.log.20210604 -rw-r--r-- 1 testuser testgrp 0 Jun 5 09:00 test.log.20210605 少々長いコマンドですが、1つ1つ手入力するよりは圧倒的に楽になります。 数値やオプションを変更すれば、より長い期間のダミーログファイルを作成することや、日付付きでなく連番のファイルを作成することも可能です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Oracle実験室 / Oracle Grid Infrastructure インストール

私が勉強中のOracle DatabaseについてVirtualBox環境でセットアップ・各種操作等を行った際のメモです。 準備 作業用ディレクトリ作成 ダウンロードファイル用の一時用作業ディレクトリを作成します。 # mkdir -p /tmp/work # chmod -R 777 /tmp/work # cd /tmp/work ダウンロード ダウンロードしたファイルは"/tmp/work"に配置します。 Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64 https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html OS設定変更 oracle-database-preinstallパッケージインストール 設定変更を容易にするため今回は「oracle-database-preinstall」を使用します。 必要に応じてプロキシサーバーを設定してください。 # cd /tmp/work # curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm # yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm パッケージインストール # yum -y install gcc # yum -y install gcc-c++ カーネル設定 新規ファイル作成 # cd /etc/sysctl.d; touch 97-oracle-database-sysctl.conf # vi 97-oracle-database-sysctl.conf 編集内容 # Oracle 19c net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 kernel.sem = 250 32000 100 128 kernel.shmmax = 4294967295 #Half the size of physical memory in bytes #kernel.shmall = 2097152 #Greater than or equal to the value of shmmax, in pages. kernel.shmmni = 4096 fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.panic_on_oops = 1 設定反映 # sysctl -p グループ作成 oracle-database-preinstallのインストールで作成されないASMのグループを追加します。 # groupadd -g 54327 asmdba # groupadd -g 54328 asmoper # groupadd -g 54329 asmadmin ユーザー作成 gridユーザー作成 # /usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid # passwd grid gridユーザーの.bash_profileへの追加環境設定 /home/grid/.bash_profileに追加します。 umask 022 export LANG=ja_JP.utf8 export NLS_LANG=Japanese_Japan.AL32UTF8 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/19.3.0/grid export ORACLE_SID=+ASM1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH oracleユーザー変更 # /usr/sbin/usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle # passwd oracle oracleユーザーの.bash_profileへの追加環境設定 /home/oracle/.bash_profileに追加します。 umask 022 export LANG=ja_JP.utf8 export NLS_LANG=Japanese_Japan.AL32UTF8 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=ORCLCDB export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ulimit設定 バックアップ # cd /etc/security; cp -p limits.conf limits.conf.BAK # vi limits.conf 編集 # End of file ↓ # Oracle 19c oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 12040 oracle hard stack 32768 oracle soft memlock 3145728 oracle hard memlock 3145728 grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 12040 grid hard stack 32768 grid soft memlock 3145728 grid hard memlock 3145728 # End of file hosts設定 バックアップ # cd /etc/; cp -p hosts hosts.BAK # vi hosts 編集 下記設定を追加する。 192.168.56.101 unryu ASM用仮想HDDの追加・設定 仮想マシンをシャットダウンした状態で仮想HDDを作成します。 作成した仮想HDDを仮想マシンに割り当てた後に、仮想マシンを起動します。 仮想HDD作成 VirtualBoxでディスクを追加する。 Devise File ASM Disk 概要 サイズ /dev/sdb CRS CRS記憶域 2GB /dev/sdc DATA データ記憶域 60GB /dev/sdd RECO 高速巣フラッシュバック領域 20GB VirtualBoxでのディスク追加 以下の手順で、3つの仮想HDDを作成します。 ASMデバイス設定 追加した仮想HDDの状態確認 # export LANG=C; fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cc0a8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-root: 56.9 GB, 56904122368 bytes, 111140864 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-swap: 6442 MB, 6442450944 bytes, 12582912 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes パーティション作成 /dev/sdb, /dev/sdc, /dev/sddについて同じ操作を行います。 # export LANG=C; fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x7bface37. Command (m for help): n <-- 'n'を入力 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p <-- 'p'を入力 Partition number (1-4, default 1): 1 <- '1'を入力 First sector (2048-4194303, default 2048): <-- '<ENTER>'を入力 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <-- '<ENTER>'を入力 Using default value 4194303 Partition 1 of type Linux and of size 2 GiB is set Command (m for help): p <-- 'p'を入力 Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7bface37 Device Boot Start End Blocks Id System /dev/sdb1 2048 4194303 2096128 83 Linux Command (m for help): w <-- 'w'を入力 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 追加した仮想HDDの状態確認 # export LANG=C; fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cc0a8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7bface37 Device Boot Start End Blocks Id System /dev/sdb1 2048 4194303 2096128 83 Linux Disk /dev/sdc: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7e486c74 Device Boot Start End Blocks Id System /dev/sdc1 2048 125829119 62913536 83 Linux Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x30be78da Device Boot Start End Blocks Id System /dev/sdd1 2048 41943039 20970496 83 Linux Disk /dev/mapper/centos_unryu-root: 56.9 GB, 56904122368 bytes, 111140864 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-swap: 6442 MB, 6442450944 bytes, 12582912 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ASM設定 ASMデバイス設定 udevルールの作成 新規ファイル作成 # cd /etc/udev/rules.d; touch 99-oracle.rules # vi 99-oracle.rules ファイル編集 KERNEL=="sdb1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdc1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdd1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" 設定テスト udevadm info -q path /dev/sdb1 udevadm test /block/sdb/sdb1 udevadm info -q path /dev/sdc1 udevadm test /block/sdc/sdc1 udevadm info -q path /dev/sdd1 udevadm test /block/sdd/sdd1 udevルール適用 # udevadm control --reload-rules パーミッション確認 # ls -la /dev | grep asm brw-rw----. 1 grid asmadmin 8, 17 mm DD HH:MM sdb1 brw-rw----. 1 grid asmadmin 8, 33 mm DD HH:MM sdc1 brw-rw----. 1 grid asmadmin 8, 49 mm DD HH:MM sdd1 ASMデバイス設定 パッケージインストール oracleasm # yum install -y oracleasm oracleasmlib # cd /tmp/work # wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm # yum -y localinstall oracleasmlib-2.0.12-1.el7.x86_64.rpm oracleasm-support # cd /tmp/work # wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm # yum -y localinstall oracleasm-support-2.1.11-2.el7.x86_64.rpm ASMlib構成 # /usr/sbin/oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid <-- 'grid'を入力 Default group to own the driver interface []: asmadmin <-- 'asmadmin'を入力 Start Oracle ASM library driver on boot (y/n) [n]: y <-- 'y'を入力 Scan for Oracle ASM disks on boot (y/n) [y]: y <-- 'y'を入力 Writing Oracle ASM library driver configuration: done Oracleasmカーネルモジュールの読み込み # /usr/sbin/oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device physical block size Mounting ASMlib driver filesystem: /dev/oracleasm 確認 # oracleasm status Checking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes ASM Disk 設定 sdb # oracleasm createdisk CRS /dev/sdb1 Writing disk header: done Instantiating disk: done sdc # oracleasm createdisk DATA /dev/sdc1 Writing disk header: done Instantiating disk: done sdd # oracleasm createdisk RECO /dev/sdd1 Writing disk header: done Instantiating disk: done ASM設定反映 # oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "DATA" Instantiating disk "CRS" Instantiating disk "RECO" ASM設定確認 (1) # oracleasm listdisks CRS DATA RECO ASM設定確認 (2) # ls -l /dev/oracleasm/disks total 0 brw-rw----. 1 grid asmadmin 8, 17 mm DD HH:MM CRS brw-rw----. 1 grid asmadmin 8, 33 mm DD HH:MM DATA brw-rw----. 1 grid asmadmin 8, 49 mm DD HH:MM RECO Grid Infrastructureインストールディレクトリ作成 # mkdir -p /u01/app/19.3.0/grid # mkdir -p /u01/app/grid # mkdir -p /u01/app/oracle # chown -R grid:oinstall /u01 # chown oracle:oinstall /u01/app/oracle # chmod -R 775 /u01/ Grid Infrastructureインストールメディアの展開 # su - grid $ cd $ORACLE_HOME $ pwd /u01/app/19.3.0/grid $ unzip -q /tmp/work/LINUX.X64_193000_grid_home.zip cvuqdiskインストール $ cd $ORACLE_HOME/cv/rpm $ su # rpm -ivh cvuqdisk-1.0.10-1.rpm Oracle Grid Infrastructure インストール gridユーザーでGUIでログインします。 インストール $ cd $ORACLE_HOME $ ./gridSetup.sh OUI起動 今回はOracle Restart環境構築を行いますので"スタンドアロンサーバー用の..."を選択します。 [次へ]をクリックします。 ”外部"を選択します。 ディスクグループをすべて選択します。 [次へ]をクリックします。 画面に表示されているユーザーのパスワードを設定します。 [次へ]をクリックします。 今回はEMCCへの登録は行いませんのでデフォルトのままにしておきます。 [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。 [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。(環境変数で設定済) [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。 [次へ]をクリックします。 インストール中に必要なrootパスワードを設定します。 [次へ]をクリックします。 インストールに必要なリソース、パッケージのチェックが実行されます。 問題があれば都度対象する必要があります。 問題がなければインストールの準備画面が表示されます。 [インストール]をクリックします。 インストールが完了したら[閉じる]をクリックします。 確認 ASMインスタンスが認識されていれば成功です。 $ lsnrctl status LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-6月 -2021 20:38:58 Copyright (c) 1991, 2019, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=unryu)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production 開始日 DD-mm月 -yyyy HH:MM:SS 稼働時間 0 日 0 時間 0 分 01 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル /u01/app/19.3.0/grid/network/admin/listener.ora ログ・ファイル /u01/app/grid/diag/tnslsnr/unryu/listener/alert/log.xml リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=unryu)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) サービスのサマリー... サービス"+ASM"には、1件のインスタンスがあります。 インスタンス"+ASM"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"+ASM_DATA"には、1件のインスタンスがあります。 インスタンス"+ASM"、状態READYには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Oracle実験室 / Oracle Database 19c Grid Infrastructure (19.3) インストール

私が勉強中のOracle DatabaseについてVirtualBox環境でセットアップ・各種操作等を行った際のメモです。 前書き 前の記事 https://qiita.com/Que-sera-sera/items/aaafef29ba9c620f5431 でセットアップしたCentOS 7.xにインストールしたGrid Infrastructure 19cをインストールします。 準備 作業用ディレクトリ作成 ダウンロードファイル用の一時用作業ディレクトリを作成します。 # mkdir -p /tmp/work # chmod -R 777 /tmp/work # cd /tmp/work ダウンロード ダウンロードしたファイルは"/tmp/work"に配置します。 Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64 https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html OS設定変更 oracle-database-preinstallパッケージインストール 設定変更を容易にするため今回は「oracle-database-preinstall」を使用します。 必要に応じてプロキシサーバーを設定してください。 # cd /tmp/work # curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm # yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm パッケージインストール # yum -y install gcc # yum -y install gcc-c++ カーネル設定 新規ファイル作成 # cd /etc/sysctl.d; touch 97-oracle-database-sysctl.conf # vi 97-oracle-database-sysctl.conf 編集内容 # Oracle 19c net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 kernel.sem = 250 32000 100 128 kernel.shmmax = 4294967295 #Half the size of physical memory in bytes #kernel.shmall = 2097152 #Greater than or equal to the value of shmmax, in pages. kernel.shmmni = 4096 fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.panic_on_oops = 1 設定反映 # sysctl -p グループ作成 oracle-database-preinstallのインストールで作成されないASMのグループを追加します。 # groupadd -g 54327 asmdba # groupadd -g 54328 asmoper # groupadd -g 54329 asmadmin ユーザー作成 gridユーザー作成 # /usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid # passwd grid gridユーザーの.bash_profileへの追加環境設定 /home/grid/.bash_profileに追加します。 umask 022 export LANG=ja_JP.utf8 export NLS_LANG=Japanese_Japan.AL32UTF8 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/19.3.0/grid export ORACLE_SID=+ASM1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH oracleユーザー変更 # /usr/sbin/usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle # passwd oracle oracleユーザーの.bash_profileへの追加環境設定 /home/oracle/.bash_profileに追加します。 umask 022 export LANG=ja_JP.utf8 export NLS_LANG=Japanese_Japan.AL32UTF8 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=ORCLCDB export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH ulimit設定 バックアップ # cd /etc/security; cp -p limits.conf limits.conf.BAK # vi limits.conf 編集 # End of file ↓ # Oracle 19c oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 12040 oracle hard stack 32768 oracle soft memlock 3145728 oracle hard memlock 3145728 grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 12040 grid hard stack 32768 grid soft memlock 3145728 grid hard memlock 3145728 # End of file hosts設定 バックアップ # cd /etc/; cp -p hosts hosts.BAK # vi hosts 編集 下記設定を追加する。 192.168.56.101 unryu ASM用仮想HDDの追加・設定 仮想マシンをシャットダウンした状態で仮想HDDを作成します。 作成した仮想HDDを仮想マシンに割り当てた後に、仮想マシンを起動します。 仮想HDD作成 VirtualBoxでディスクを追加する。 Devise File ASM Disk 概要 サイズ /dev/sdb CRS CRS記憶域 2GB /dev/sdc DATA データ記憶域 60GB /dev/sdd RECO 高速巣フラッシュバック領域 20GB VirtualBoxでのディスク追加 以下の手順で、3つの仮想HDDを作成します。 ASMデバイス設定 追加した仮想HDDの状態確認 # export LANG=C; fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cc0a8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-root: 56.9 GB, 56904122368 bytes, 111140864 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-swap: 6442 MB, 6442450944 bytes, 12582912 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes パーティション作成 /dev/sdb, /dev/sdc, /dev/sddについて同じ操作を行います。 # export LANG=C; fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x7bface37. Command (m for help): n <-- 'n'を入力 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p <-- 'p'を入力 Partition number (1-4, default 1): 1 <- '1'を入力 First sector (2048-4194303, default 2048): <-- '<ENTER>'を入力 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): <-- '<ENTER>'を入力 Using default value 4194303 Partition 1 of type Linux and of size 2 GiB is set Command (m for help): p <-- 'p'を入力 Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7bface37 Device Boot Start End Blocks Id System /dev/sdb1 2048 4194303 2096128 83 Linux Command (m for help): w <-- 'w'を入力 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 追加した仮想HDDの状態確認 # export LANG=C; fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cc0a8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7bface37 Device Boot Start End Blocks Id System /dev/sdb1 2048 4194303 2096128 83 Linux Disk /dev/sdc: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7e486c74 Device Boot Start End Blocks Id System /dev/sdc1 2048 125829119 62913536 83 Linux Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x30be78da Device Boot Start End Blocks Id System /dev/sdd1 2048 41943039 20970496 83 Linux Disk /dev/mapper/centos_unryu-root: 56.9 GB, 56904122368 bytes, 111140864 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos_unryu-swap: 6442 MB, 6442450944 bytes, 12582912 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ASM設定 ASMデバイス設定 udevルールの作成 新規ファイル作成 # cd /etc/udev/rules.d; touch 99-oracle.rules # vi 99-oracle.rules ファイル編集 KERNEL=="sdb1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdc1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdd1", ACTION=="add|change",OWNER="grid", GROUP="asmadmin", MODE="0660" 設定テスト udevadm info -q path /dev/sdb1 udevadm test /block/sdb/sdb1 udevadm info -q path /dev/sdc1 udevadm test /block/sdc/sdc1 udevadm info -q path /dev/sdd1 udevadm test /block/sdd/sdd1 udevルール適用 # udevadm control --reload-rules パーミッション確認 # ls -la /dev | grep asm brw-rw----. 1 grid asmadmin 8, 17 mm DD HH:MM sdb1 brw-rw----. 1 grid asmadmin 8, 33 mm DD HH:MM sdc1 brw-rw----. 1 grid asmadmin 8, 49 mm DD HH:MM sdd1 ASMデバイス設定 パッケージインストール oracleasm # yum install -y oracleasm oracleasmlib # cd /tmp/work # wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm # yum -y localinstall oracleasmlib-2.0.12-1.el7.x86_64.rpm oracleasm-support # cd /tmp/work # wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm # yum -y localinstall oracleasm-support-2.1.11-2.el7.x86_64.rpm ASMlib構成 # /usr/sbin/oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid <-- 'grid'を入力 Default group to own the driver interface []: asmadmin <-- 'asmadmin'を入力 Start Oracle ASM library driver on boot (y/n) [n]: y <-- 'y'を入力 Scan for Oracle ASM disks on boot (y/n) [y]: y <-- 'y'を入力 Writing Oracle ASM library driver configuration: done Oracleasmカーネルモジュールの読み込み # /usr/sbin/oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device physical block size Mounting ASMlib driver filesystem: /dev/oracleasm 確認 # oracleasm status Checking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes ASM Disk 設定 sdb # oracleasm createdisk CRS /dev/sdb1 Writing disk header: done Instantiating disk: done sdc # oracleasm createdisk DATA /dev/sdc1 Writing disk header: done Instantiating disk: done sdd # oracleasm createdisk RECO /dev/sdd1 Writing disk header: done Instantiating disk: done ASM設定反映 # oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "DATA" Instantiating disk "CRS" Instantiating disk "RECO" ASM設定確認 (1) # oracleasm listdisks CRS DATA RECO ASM設定確認 (2) # ls -l /dev/oracleasm/disks total 0 brw-rw----. 1 grid asmadmin 8, 17 mm DD HH:MM CRS brw-rw----. 1 grid asmadmin 8, 33 mm DD HH:MM DATA brw-rw----. 1 grid asmadmin 8, 49 mm DD HH:MM RECO Grid Infrastructureインストールディレクトリ作成 # mkdir -p /u01/app/19.3.0/grid # mkdir -p /u01/app/grid # mkdir -p /u01/app/oracle # chown -R grid:oinstall /u01 # chown oracle:oinstall /u01/app/oracle # chmod -R 775 /u01/ Grid Infrastructureインストールメディアの展開 # su - grid $ cd $ORACLE_HOME $ pwd /u01/app/19.3.0/grid $ unzip -q /tmp/work/LINUX.X64_193000_grid_home.zip cvuqdiskインストール $ cd $ORACLE_HOME/cv/rpm $ su # rpm -ivh cvuqdisk-1.0.10-1.rpm Oracle Grid Infrastructure インストール gridユーザーでGUIでログインします。 インストール $ cd $ORACLE_HOME $ ./gridSetup.sh OUI起動 今回はOracle Restart環境構築を行いますので"スタンドアロンサーバー用の..."を選択します。 [次へ]をクリックします。 ”外部"を選択します。 ディスクグループをすべて選択します。 [次へ]をクリックします。 画面に表示されているユーザーのパスワードを設定します。 [次へ]をクリックします。 今回はEMCCへの登録は行いませんのでデフォルトのままにしておきます。 [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。 [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。(環境変数で設定済) [次へ]をクリックします。 特に変更する必要はないのでデフォルトのままにしておきます。 [次へ]をクリックします。 インストール中に必要なrootパスワードを設定します。 [次へ]をクリックします。 インストールに必要なリソース、パッケージのチェックが実行されます。 問題があれば都度対象する必要があります。 問題がなければインストールの準備画面が表示されます。 [インストール]をクリックします。 インストールが完了したら[閉じる]をクリックします。 確認 ASMインスタンスが認識されていれば成功です。 $ lsnrctl status LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-6月 -2021 20:38:58 Copyright (c) 1991, 2019, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=unryu)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production 開始日 DD-mm月 -yyyy HH:MM:SS 稼働時間 0 日 0 時間 0 分 01 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル /u01/app/19.3.0/grid/network/admin/listener.ora ログ・ファイル /u01/app/grid/diag/tnslsnr/unryu/listener/alert/log.xml リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=unryu)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) サービスのサマリー... サービス"+ASM"には、1件のインスタンスがあります。 インスタンス"+ASM"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"+ASM_DATA"には、1件のインスタンスがあります。 インスタンス"+ASM"、状態READYには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

cent os 7.6 に postgreSQL 13.3 をインストールする

postgreSQLの新規インストールからpgAdminでの接続までの記録になります。 DBサーバ CentOS 7.6 postgreSQL 13.3 ※Internet接続環境(インストール時のみ) ※selinux,firewalldは停止 管理サーバ Windows Server 2019 pgAdmin 4 v5.2 1.postgreSQLのインストール centOS7のデフォルトパッケージはpostgreSQL9.2系なので、postgreSQL公式サイトに従ってインストールを進めていきます。 Downloadをクリックします。 OSおよびディストリビューションを選択します。 インストールしたいpostgreSQLのバージョンおよびOSバージョンとアーキテクチャを選択すると、セットアップ用のコマンドが表示されるのでこちらを控えます。 setup_command # Install the repository RPM: sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # Install PostgreSQL: sudo yum install -y postgresql13-server # Optionally initialize the database and enable automatic start: sudo /usr/pgsql-13/bin/postgresql-13-setup initdb sudo systemctl enable postgresql-13 sudo systemctl start postgresql-13 Linux側でpostgreSQLのリポジトリをインストールします。 repo_install [root@cent76-d2 ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm これでインストール対象のpostgreSQL13が表示されるようになりました。 update_yum_list(一部省略) [root@cent76-d2 ~]# yum list postgresql13* 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ty1.mirror.newmediaexpress.com * extras: ty1.mirror.newmediaexpress.com * updates: ty1.mirror.newmediaexpress.com 利用可能なパッケージ postgresql13.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-contrib.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-devel.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-docs.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-libs.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-llvmjit.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-odbc.x86_64 13.00.0000-1PGDG.rhel7 pgdg13 postgresql13-plperl.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-plpython3.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-pltcl.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-server.x86_64 13.3-1PGDG.rhel7 pgdg13 postgresql13-test.x86_64 13.3-1PGDG.rhel7 pgdg13 [root@cent76-d2 ~]# 今回利用したいpostgreSQL13をインストールします。 yum_install [root@cent76-d2 ~]# yum install -y postgresql13-server 《中略》 ================================================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================ インストール中: postgresql13-server x86_64 13.3-1PGDG.rhel7 pgdg13 5.4 M 依存性関連でのインストールをします: postgresql13 x86_64 13.3-1PGDG.rhel7 pgdg13 1.4 M postgresql13-libs x86_64 13.3-1PGDG.rhel7 pgdg13 380 k トランザクションの要約 ================================================================================================================ インストール 1 パッケージ (+2 個の依存関係のパッケージ) 総ダウンロード容量: 7.2 M インストール容量: 30 M 《中略》 インストール: postgresql13-server.x86_64 0:13.3-1PGDG.rhel7 依存性関連をインストールしました: postgresql13.x86_64 0:13.3-1PGDG.rhel7 postgresql13-libs.x86_64 0:13.3-1PGDG.rhel7 完了しました! [root@cent76-d2 ~]# なお、以下のようにpostgresql13関連全てをインストールしようとするとエラーが出力されて完了できません。 その場合、追加のリポジトリをインストールすることで解決できます。 postgresql13_all_install [root@cent76-d2 ~]# yum install -y postgresql13* 《中略》 エラー: パッケージ: postgresql13-devel-13.3-1PGDG.rhel7.x86_64 (pgdg13) 要求: llvm5.0-devel >= 5.0 エラー: パッケージ: postgresql13-llvmjit-13.3-1PGDG.rhel7.x86_64 (pgdg13) 要求: llvm5.0 >= 5.0 エラー: パッケージ: postgresql13-devel-13.3-1PGDG.rhel7.x86_64 (pgdg13) 要求: llvm-toolset-7-clang >= 4.0.1 エラー: パッケージ: postgresql13-llvmjit-13.3-1PGDG.rhel7.x86_64 (pgdg13) 要求: libLLVM-5.0.so()(64bit) 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest [root@cent76-d2 ~]# add_epel_repo [root@cent76-d2 ~]# yum -y install epel-release centos-release-scl 《中略》 インストール: centos-release-scl.noarch 0:2-3.el7.centos epel-release.noarch 0:7-11 依存性関連をインストールしました: centos-release-scl-rh.noarch 0:2-3.el7.centos 完了しました! [root@cent76-d2 ~]# 2.postgreSQLの自動起動と実行 プロセスの自動起動を有効化します。 process_enable [root@cent76-d2 ~]# systemctl enable postgresql-13 Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-13.service to /usr/lib/systemd/system/postgresql-13.service. [root@cent76-d2 ~]# systemctl is-enabled postgresql-13 enabled [root@cent76-d2 ~]# プロセスの起動をしますが、エラーが表示されます。 process_start_error [root@cent76-d2 ~]# systemctl start postgresql-13 Job for postgresql-13.service failed because the control process exited with error code. See "systemctl status postgresql-13.service" and "journalctl -xe" for details. [root@cent76-d2 ~]# エラーの原因はinitdb処理がされていないためなので、initdbを実行します。 initdb root@cent76-d2 ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb Initializing database ... OK [root@cent76-d2 ~]# これでプロセスが正常に起動します。 process_start [root@cent76-d2 ~]# systemctl start postgresql-13 [root@cent76-d2 ~]# 3.ローカル接続確認 まずはローカルで接続確認を行います。 local_login [root@cent76-d2 ~]# sudo -u postgres psql -U postgres could not change directory to "/root": 許可がありません psql (13.3) Type "help" for help. postgres=# postgres=# \q [root@cent76-d2 ~]# 4.リモート接続設定(postgresql.conf) リモート接続を受け付ける自セグメントを定義するため、以下コンフィグファイルに追記をします。最上1行が追記部分です。 ファイル:/var/lib/pgsql/13/data/postgresql.conf pg_hba.conf listen_addresses = '*' ### CUSTOM ADD ### #listen_addresses = 'localhost' # what IP address(es) to listen on; 5.リモート接続設定(pg_hba.conf) リモート接続してくるセグメントについての接続許可設定をするため、以下コンフィグファイルに追記をします。最下2行が追記部分です。 ファイル:/var/lib/pgsql/13/data/pg_hba.conf pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident ### CUSTOM ADD ### host all postgres 10.0.1.0/24 trust 項目 内容 説明 TYPE host 認証対象。'host'は任意の対象。 DATABASE all 対象DB。'all'は全てのDBを対象。 USER postgres 対象ユーザ。'postgres'でスーパーユーザのみの指定 ADDRESS 10.0.1.0/24 接続元。指定のセグメントをCIDR表記で記載。 METHOD trust 認証方式。trustは認証無しでログイン可能。 ※認証METHODをtrustとした場合、ユーザ名のみで接続可能なため、適切な構築タイミングでmd5認証やpeer認証に変更することを推奨します。 5.pgAdminから接続 管理サーバ(Windows)にてpgAdminを起動します。 オブジェクト - 作成 - サーバ を選択します。 一般タブ、接続タブにて各種設定を記載します。 なお、接続タブのパスワードについてはtrust認証のため無入力としています。 接続ができました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

cent os 7.6 に postgreSQL 9.2 をインストールする

postgreSQLの新規インストールからpgAdminでの接続までの記録になります。 DBサーバ CentOS 7.6 postgreSQL 9.2 ※selinux,firewalldは停止 管理サーバ Windows Server 2019 pgAdmin 4 v5.2 1.postgreSQLのインストール centOS7のデフォルトパッケージはpostgreSQL9.2系なので、インストールメディアからダウンロードします。 インストールメディアのマウント方法は以下を参考。 default_yum_list [root@cent76-d1 ~]# yum --disablerepo=\* --enablerepo=local_dvd list postgre* 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile 利用可能なパッケージ postgresql.x86_64 9.2.24-1.el7_5 local_dvd postgresql-contrib.x86_64 9.2.24-1.el7_5 local_dvd postgresql-devel.x86_64 9.2.24-1.el7_5 local_dvd postgresql-docs.x86_64 9.2.24-1.el7_5 local_dvd postgresql-jdbc.noarch 9.2.1002-6.el7_5 local_dvd postgresql-libs.x86_64 9.2.24-1.el7_5 local_dvd postgresql-odbc.x86_64 09.03.0100-2.el7 local_dvd postgresql-plperl.x86_64 9.2.24-1.el7_5 local_dvd postgresql-plpython.x86_64 9.2.24-1.el7_5 local_dvd postgresql-pltcl.x86_64 9.2.24-1.el7_5 local_dvd postgresql-server.x86_64 9.2.24-1.el7_5 local_dvd postgresql-test.x86_64 9.2.24-1.el7_5 local_dvd [root@cent76-d1 ~]# インストールをします。 yum_install [root@cent76-d1 ~]# yum --disablerepo=\* --enablerepo=local_dvd install -y postgresql* 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile 依存性の解決をしています 《中略》 ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== インストール中: postgresql x86_64 9.2.24-1.el7_5 local_dvd 3.0 M postgresql-contrib x86_64 9.2.24-1.el7_5 local_dvd 553 k postgresql-devel x86_64 9.2.24-1.el7_5 local_dvd 952 k postgresql-docs x86_64 9.2.24-1.el7_5 local_dvd 6.9 M postgresql-jdbc noarch 9.2.1002-6.el7_5 local_dvd 448 k postgresql-libs x86_64 9.2.24-1.el7_5 local_dvd 234 k postgresql-odbc x86_64 09.03.0100-2.el7 local_dvd 273 k postgresql-plperl x86_64 9.2.24-1.el7_5 local_dvd 83 k postgresql-plpython x86_64 9.2.24-1.el7_5 local_dvd 96 k postgresql-pltcl x86_64 9.2.24-1.el7_5 local_dvd 60 k postgresql-server x86_64 9.2.24-1.el7_5 local_dvd 3.8 M postgresql-test x86_64 9.2.24-1.el7_5 local_dvd 1.8 M 依存性関連でのインストールをします: copy-jdk-configs noarch 3.3-10.el7_5 local_dvd 21 k java-11-openjdk-headless x86_64 1:11.0.ea.28-7.el7 local_dvd 38 M javapackages-tools noarch 3.4.1-11.el7 local_dvd 73 k libjpeg-turbo x86_64 1.2.90-6.el7 local_dvd 134 k lksctp-tools x86_64 1.0.17-2.el7 local_dvd 88 k perl x86_64 4:5.16.3-293.el7 local_dvd 8.0 M perl-Carp noarch 1.26-244.el7 local_dvd 19 k perl-Encode x86_64 2.51-7.el7 local_dvd 1.5 M perl-Exporter noarch 5.68-3.el7 local_dvd 28 k perl-File-Path noarch 2.09-2.el7 local_dvd 26 k perl-File-Temp noarch 0.23.01-3.el7 local_dvd 56 k perl-Filter x86_64 1.49-3.el7 local_dvd 76 k perl-Getopt-Long noarch 2.40-3.el7 local_dvd 56 k perl-HTTP-Tiny noarch 0.033-3.el7 local_dvd 38 k perl-PathTools x86_64 3.40-5.el7 local_dvd 82 k perl-Pod-Escapes noarch 1:1.04-293.el7 local_dvd 51 k perl-Pod-Perldoc noarch 3.20-4.el7 local_dvd 87 k perl-Pod-Simple noarch 1:3.28-4.el7 local_dvd 216 k perl-Pod-Usage noarch 1.63-3.el7 local_dvd 27 k perl-Scalar-List-Utils x86_64 1.27-248.el7 local_dvd 36 k perl-Socket x86_64 2.010-4.el7 local_dvd 49 k perl-Storable x86_64 2.45-3.el7 local_dvd 77 k perl-Text-ParseWords noarch 3.29-4.el7 local_dvd 14 k perl-Time-HiRes x86_64 4:1.9725-3.el7 local_dvd 45 k perl-Time-Local noarch 1.2300-2.el7 local_dvd 24 k perl-constant noarch 1.27-2.el7 local_dvd 19 k perl-libs x86_64 4:5.16.3-293.el7 local_dvd 688 k perl-macros x86_64 4:5.16.3-293.el7 local_dvd 44 k perl-parent noarch 1:0.225-244.el7 local_dvd 12 k perl-podlators noarch 2.5.1-3.el7 local_dvd 112 k perl-threads x86_64 1.87-4.el7 local_dvd 49 k perl-threads-shared x86_64 1.43-6.el7 local_dvd 39 k python-javapackages noarch 3.4.1-11.el7 local_dvd 31 k python-lxml x86_64 3.2.1-4.el7 local_dvd 758 k tcl x86_64 1:8.5.13-8.el7 local_dvd 1.9 M tzdata-java noarch 2018e-3.el7 local_dvd 185 k unixODBC x86_64 2.3.1-11.el7 local_dvd 413 k uuid x86_64 1.6.2-26.el7 local_dvd 55 k トランザクションの要約 ======================================================================================================================== インストール 12 パッケージ (+38 個の依存関係のパッケージ) 総ダウンロード容量: 71 M インストール容量: 265 M 《中略》 インストール: postgresql.x86_64 0:9.2.24-1.el7_5 postgresql-contrib.x86_64 0:9.2.24-1.el7_5 postgresql-devel.x86_64 0:9.2.24-1.el7_5 postgresql-docs.x86_64 0:9.2.24-1.el7_5 postgresql-jdbc.noarch 0:9.2.1002-6.el7_5 postgresql-libs.x86_64 0:9.2.24-1.el7_5 postgresql-odbc.x86_64 0:09.03.0100-2.el7 postgresql-plperl.x86_64 0:9.2.24-1.el7_5 postgresql-plpython.x86_64 0:9.2.24-1.el7_5 postgresql-pltcl.x86_64 0:9.2.24-1.el7_5 postgresql-server.x86_64 0:9.2.24-1.el7_5 postgresql-test.x86_64 0:9.2.24-1.el7_5 依存性関連をインストールしました: copy-jdk-configs.noarch 0:3.3-10.el7_5 java-11-openjdk-headless.x86_64 1:11.0.ea.28-7.el7 javapackages-tools.noarch 0:3.4.1-11.el7 libjpeg-turbo.x86_64 0:1.2.90-6.el7 lksctp-tools.x86_64 0:1.0.17-2.el7 perl.x86_64 4:5.16.3-293.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-293.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-293.el7 perl-macros.x86_64 4:5.16.3-293.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 python-javapackages.noarch 0:3.4.1-11.el7 python-lxml.x86_64 0:3.2.1-4.el7 tcl.x86_64 1:8.5.13-8.el7 tzdata-java.noarch 0:2018e-3.el7 unixODBC.x86_64 0:2.3.1-11.el7 uuid.x86_64 0:1.6.2-26.el7 完了しました! [root@cent76-d1 ~]# 2.postgreSQLの自動起動と実行 プロセスの自動起動を有効化します。 process_enable [root@cent76-d1 ~]# systemctl enable postgresql [root@cent76-d1 ~]# systemctl is-enabled postgresql enabled [root@cent76-d1 ~]# プロセスの起動をしますが、エラーが表示されます。 process_start_error [root@cent76-d1 ~]# systemctl start postgresql Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details. [root@cent76-d1 ~]# エラーの原因はinitdb処理がされていないためなので、initdbを実行します。 initdb [root@cent76-d1 ~]# postgresql-setup initdb Initializing database ... OK [root@cent76-d1 ~]# これでプロセスが正常に起動します。 process_start [root@cent76-d1 ~]# systemctl start postgresql [root@cent76-d1 ~]# 3.ローカル接続確認 まずはローカルで接続確認を行います。 local_login [root@cent76-d1 ~]# sudo -u postgres psql -U postgres could not change directory to "/root" psql (9.2.24) Type "help" for help. postgres=# postgres=# \q [root@cent76-d1 ~]# 4.リモート接続設定(postgresql.conf) リモート接続を受け付ける自セグメントを定義するため、以下コンフィグファイルに追記をします。最上1行が追記部分です。 ファイル:/var/lib/pgsql/data/postgresql.conf pg_hba.conf listen_addresses = '*' ### CUSTOM ADD ### #listen_addresses = 'localhost' # what IP address(es) to listen on; 5.リモート接続設定(pg_hba.conf) リモート接続してくるセグメントについての接続許可設定をするため、以下コンフィグファイルに追記をします。最下2行が追記部分です。 ファイル:/var/lib/pgsql/data/pg_hba.conf pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 ident #host replication postgres ::1/128 ident ### CUSTOM ADD ### host all postgres 10.0.1.0/24 trust 項目 内容 説明 TYPE host 認証対象。'host'は任意の対象。 DATABASE all 対象DB。'all'は全てのDBを対象。 USER postgres 対象ユーザ。'postgres'でスーパーユーザのみの指定 ADDRESS 10.0.1.0/24 接続元。指定のセグメントをCIDR表記で記載。 METHOD trust 認証方式。trustは認証無しでログイン可能。 ※認証METHODをtrustとした場合、ユーザ名のみで接続可能なため、適切な構築タイミングでmd5認証やpeer認証に変更することを推奨します。 5.pgAdminから接続 管理サーバ(Windows)にてpgAdminを起動します。 オブジェクト - 作成 - サーバ を選択します。 一般タブ、接続タブにて各種設定を記載します。 なお、接続タブのパスワードについてはtrust認証のため無入力としています。 接続ができました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Rocky Linuxでサーバ構築を試してみた

Rocky Linux は、 Red Hat Enterprise Linux (RHEL)と互換性を持つLinuxディストリビューションです。CentOSの代替えディストリビューションとするべく、現在開発中です。ベータ版のため、実稼働環境での使用はできません。今回は評価用としてサーバ構築を試みました。具体的には、サーバとしては定番とも言える、LAMP環境を構築し、CMSとして有名なWordPress構築に挑戦します。 参考URL 自身のブログから転載しました。 いち早くRocky Linuxでサーバ構築を試す Rocky Linuxをインストールしよう Rocky Linuxをダウンロードしよう 本稿執筆時点でRocky Linux 8.4 RC1(Release Candidate 1)がダウンロード可能です。予め、こちらのリンクからダウンロードしておきます。本稿では「Minimal」をダウンロードしました。 VirtualBoxの設定をしよう 本稿では「VirtualBox」を使用して、仮想環境上にRocky Linuxをインストールします。 [新規]ボタンをクリックします。 [名前とオペレーティングシステム]の[名前]に任意の名称を入力します。私は「Rocky Linux」としました。[タイプ]が「Linux」となっていることを確認します。[メモリーサイズ]はホストマシンのメモリサイズに応じて2〜4GB程度割り当てます。[仮想ハードディスクを作成する]にチェックが入っていることを確認します。最後に[作成]ボタンをクリックします。 次の画面で[作成]をクリックします。 左ペインからLocky Linuxの仮想マシンを選択し、[設定]ボタンをクリックします。 VirtualBoxにOSのタイプとディストリビューションを設定します。Rocky Linuxと互換性のあるディストリビューションは「Red Hat」です。左ペインから[一般]を選択し、[基本]タブの[タイプ]を[Linux]とします。[バージョン]はプルダウンメニューから[Red Hat(64-bit)]を選択します。 CPUの割当を行います。左ペインから[システム]を選択し、[プロセッサー]タブをクリックして[プロセッサー数]を変更します。私は「2」としました。 インストールするRocky LinuxのISOイメージを指定します。左ペインの[ストレージ]をクリックします。次に中央の[コントローラー:IDE]にある「空」の光学ドライブアイコンをクリックします。右ペインの[属性]領域にある光学ドライブアイコンをクリックし、メニューから[ディスクファイルを選択]をクリックします。 あらかじめダウンロードしておいた「Rocky Linux」のISOイメージファイルを選択し、右上の「開く」ボタンをクリックします。 ホストマシンから仮想マシンにアクセスできるよう、ネットワークの設定を行います。左ペインの[ネットワーク]をクリックします。[アダプター1]タブの[割り当て]を[ブリッジアダプター]にします。最後に下の[OK]をクリックします。 これでVirtualBoxでの設定が完了しました。 インストールをしよう 左ペインから「Rocky Linux」を選択し、[起動]アイコンをクリックします。 上下矢印キーで[Install Rocky Linux 8]を選択し、[Enter] キーを押します。 正常にインストールが始まると、次の画面が表示されます。 次の画面で[日本語]を選択します。 [ソフトウェアの選択]をクリックします。 本稿では[最小限のインストール]を選択します。[完了]をクリック。 画面が見切れて表示されます。[インストール先]をクリック。 デバイスが選択されていることを確認し、完了をクリックします。 [ネットワークとホスト名]をクリックします。 Ethernetのスライドスイッチを[オン]にします。ホスト名を入力し、[適用]。最後に[完了]をクリック。 rootアカウントを無効にしたまま、サーバの管理ができる特権ユーザの作成を行います。[ユーザーの作成]をクリックします。 管理者となるユーザ名を入力します。続いて、[このユーザーを管理者にする]にチェックを入れます。[パスワード]および[パスワードの確認]に管理者のパスワードを入力します。 [時刻と日付]をクリックします。 世界地図の日本をクリックし、タイムゾーンを「東京」に設定します。 これで、インストール前のお膳立てが整いました。これからインストールを始めます。画面右下の[インストールの開始]をクリックします。 インストール中の画面です。 以下が表示されると、インストール完了です。 再起動する前に、光学ドライブからインストーラを取り除きます。メニューバーの[仮想マシン]>[設定]をクリック。 設定画面の[ストレージ]>[Rocky-8.4-x86_64-minimal.iso]をクリックします。[属性]領域の[光学ドライブ]右端にあるアイコンをクリックし、[仮想ドライブからディスクを除去]をクリックします。 次の画面のように、光学ドライブの中身が「空」になります。[OK]ボタンを押して元の画面に戻ります。 [システムの再起動]をクリックします。 以下の画面から再起動が始まります。 Rocky Linuxにログインできるようになりました。 SSHでリモートから操作しよう SSHは、サーバ(Rocky Linux)とクライアントPC(WindowsやMac、Ubuntuなど)とで通信し、リモートにあるサーバを管理するための仕組みです。 まず、VirtualBoxのコンソールからログインします。パスワードはエコーバックされません。次に、以下のコマンドでパッケージをアップデートします。「$ 」はプロンプトです。 $ sudo dnf -y update 再度パスワードを聞かれるので、入力します。 エディタをインストールしよう エディタはnanoやvimなど、好みのものをインストールしてください。 nanoの場合は以下のとおりです。 $ sudo dnf -y install nano vimをインストールする場合は、次のコマンドを実行します。 $ sudo dnf -y install vim SSHをセキュアに使えるように設定しよう エディタで/etc/ssh/sshd_configを開きます。まず、SSHの通信に用いるポートを使用可能にします。ここで、デフォルトの「22」は攻撃の的になりやすいので、「10022」に変更しておきます。 #Port 22 上記の行を、下の行に変更します。 Port 10022 さらに、SSHでリモートから直接rootにログインできなくします。 実はインストール時に、rootを無効化しているため、本来この設定は不要ですが、標準的な手順であるため行っておきます。 PermitRootLogin yes 上記の行を、下の行に変更します。 PermitRootLogin no /etc/ssh/sshd_configを変更したら、保存してエディタを終了します。 SELinuxとファイアウォールを設定しよう SELinuxとは、ユーザーと管理者がアクセス制御をより細かく制御できるようにして、万一不正侵入を受けたとしても情報を保護できるように考えられた仕組みです。 SELinuxの設定コマンドをインストールします。 $ sudo dnf -y install policycoreutils-python-utils SSHのポートにアクセス権を付与します。さらに付与した結果を確認します。 $ sudo semanage port -a -t ssh_port_t -p tcp 10022 $ sudo semanage port -l | grep ssh ssh_port_t tcp 10022, 22 上記のようにポート10022が追加されていれば成功です。 続いてファイアウォールを設定します。 $ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ エディタで/etc/firewalld/services/ssh.xmlを開きます。 <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/> </service> 下から2行目の、port="22"と記述された「22」の部分を下のように「10022」に変更します。 <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="10022"/> </service> /etc/firewalld/services/ssh.xmlの変更内容をシステムに反映させます。 sudo firewall-cmd --reload sudo systemctl restart sshd.service これでクライアントPCからリモートでアクセスできるようになりました。 クライアントPCからリモートログインしてみよう 本稿では、UbuntuのクライアントPCから接続する例を示します。 まず、サーバ(Rocky Linux)のIPアドレスを調べます。サーバは固定IPアドレスの設定などを施していないので、DHCPでリースされたIPアドレスを使用しています。 $ ip route default via 192.168.1.1 dev enp0s3 proto dhcp metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.23 metric 100 上記の結果で、192.168.1.23がサーバのIPアドレスとわかります。 SSHコマンドの書式は以下のとおりです。ssh -p <ポート番号> <ユーザ名>@<IPアドレス> Ubuntuの「端末」からSSHを使用してリモートログインしている様子を以下に示します。 項目 値 ポート番号 10022 ユーザ名 linux IPアドレス 192.168.1.23 $ ssh -p 10022 linux@192.168.1.23 The authenticity of host '[192.168.1.23]:10022 ([192.168.1.23]:10022)' can't be established. ECDSA key fingerprint is SHA256:ls1zprm1PTXFDuHryzWl5Qw75ayyn4WdNcTnN2kNFKw. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[192.168.1.23]:10022' (ECDSA) to the list of known hosts. linux@192.168.1.23's password: Last login: Wed Jun 9 09:33:11 2021 $ 上記の例では、途中でパスワードを入力します。現在ではWiondowsやmacOSのターミナルから、上記と同様SSHによるログインが可能です。 システムを自動でアップデートするには 自動アップデートのメリットとは dnfコマンドを使い、手動でアップデートは可能ですが、自動アップデートには以下のメリットがあります。 ソフトウェアのアップデートは頻繁にあるため、自動化しておくとラク アップデートを忘れて、サーバのセキュリティ脆弱性をつく攻撃をされないで済む 一方で、デメリットもあります。システムのアップデート内容によっては、それまで正常に動作していたソフトウェアに不具合が生じる可能性があるというデメリットです。 アップデートを自動化するには システムアップデートの自動化は「dnf-automatic」というパッケージをインストールすることにより実現できます。 $ sudo dnf -y install dnf-automatic エディタで「/etc/dnf/automatic.conf」を開きます。 まず、「upgrade_type = default」の行に着目します。「default」オプションはあらゆるアップデートをすべて実施します。また、「security」オプションはセキュリティ関連のアップデートに絞って実行されます。アップデートによるリスクを考慮していずれかを選択します。私はdefaultオプションを選択しました。 次に「apply_updates = no」の行を以下のように変更します。 apply_updates = yes 本稿での/etc/dnf/automatic.conf編集イメージは以下のとおりです。 [commands] # What kind of upgrade to perform: # default = all available upgrades # security = only the security upgrades upgrade_type = default random_sleep = 0  <略> # Whether updates should be applied when they are available, by # dnf-automatic.timer. notifyonly.timer, download.timer and # install.timer override this setting. apply_updates = yes 次のコマンドを実行し、サービスの起動と、次回のシステム起動時にもシステムのアップデートが行われるようにします。 $ sudo systemctl start dnf-automatic.timer $ sudo systemctl enable dnf-automatic.timer これでシステムアップデートが自動化されました。 WordPressを構築してみよう いよいよ、典型的なLAMPサーバであるWordPressを構築してみましょう。LAMPとは、Linux(OS)、Apache HTTP Server(Webサーバ)、MySQL、MariaDB(DB)、Perl、PHP、Python(スクリプト言語)の頭文字を並べて造られたワードです。すべてオープンソースです。現代的な動きのあるウェブサイトの構築に適していると言われています。 Apacheをインストールしよう Apache HTTP Server(Apache)とは、高いシェアを持つフリーでオープンソースのWebサーバ・ソフトウェアです。 Apacheのパッケージ名httpdをインストールします。 $ sudo dnf -y install httpd インストールが完了したら、「/etc/httpd/conf/httpd.conf」を編集します。 #ServerName www.example.com:80 上記の行、先頭の「#」を削除します。削除後の行は以下のとおりです。 ServerName www.example.com:80 Apacheを起動します。また、次回以降のシステム起動時に自動的に起動されるようにします。 $ sudo systemctl start httpd.service $ sudo systemctl enable httpd.service HTTPのアクセスを許可しよう ファイアウォールで80番ポートが使えるように変更します。 $ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --reload それではWebサーバにアクセスできるようになったことを確認してみましょう。WebブラウザのアドレスバーにサーバのIPアドレスを入力してみてください。以下のようなテストページが表示されればOKです。 続いて、HTMLを作成し、表示してみます。「/var/www/html/」に「testpage.html」というファイルを以下のように作成します。 <html> <head> <title>Welcom to my page</title> </head> <body> <p>Hello World!</p> </body> </html> ブラウザのアドレスバーから「サーバのIPアドレス/testpage.html」のように入力してみます。「Hello World!」が表示されたでしょうか? MariaDBをインストールしよう データベース管理システム(DBMS)であるMariaDBをインストールします。 $ sudo dnf -y install mariadb-server mariadb 続いて以下の設定ファイルをエディタで開き、日本語を正しく処理できるようにします。 /etc/my.cnf.d/mariadb-server.cnf [mysqld]セクションの最後に、以下の通り1行追加します。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mariadb/mariadb.log pid-file=/run/mariadb/mariadb.pid character-set-server=utf8 ← 1行追加 /etc/my.cnf.d/client.cnf [client]セクションに、以下の通り1行追加します [client] default-character-set = utf8 ← 1行追加 MariaDBのサービスを起動します。次回以降のシステム起動時にも自動起動するよう設定します。 $ sudo systemctl start mariadb $ sudo systemctl enable mariadb MariaDBのセキュリティ関連の設定を行います。OSとは別にDBのrootのパスワードを管理する必要があります。 $ sudo mysql_secure_installation  <略> Enter current password for root (enter for none): ← [Enter] OK, successfully used password, moving on...  <略> Set root password? [Y/n] y New password: ← パスワードを設定 Re-enter new password: ← パスワード再入力 Password updated successfully! Reloading privilege tables.. ... Success!  <略> Remove anonymous users? [Y/n] y ... Success!  <略> Disallow root login remotely? [Y/n] y ... Success!  <略> Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!  <略> Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! PHPをインストールしよう WordPressはPHPで書かれているので、PHPをインストールします。WordPressでは21年6月時点ではバージョン7.3以上が推奨されています。ここでは、7.4をインストールします。 $ sudo dnf -y module install php:7.4 $ sudo dnf -y install php php-mbstring php-pear php-mysqlnd php-gd php-pecl-zip php-json PHPのバージョン7.4がインストールされているかを確認します。バージョンの確認結果は以下のとおりです。 $ php --version PHP 7.4.6 (cli) (built: May 12 2020 08:09:15) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies ここで、Apacheを再起動し、ApacheがPHPと連携しPHPを実行できるようにします。 $ sudo systemctl restart httpd.service これでWebサーバ上でPHPが動くようになったので、PHPプログラムを作成して動作確認を行います。エディタで「/var/www/html/hellophp.php」を作成します。hellophp.phpの中身は次の1行だけ記述します。 <?php echo phpinfo(); ?> エディタでファイルを保存したら、ブラウザのアドレスバーから「サーバのIPアドレス/hellophp.php」のように入力してみます。以下のようなPHPの情報ページが表示されたでしょうか? 確認が済んだらPHPのプログラムを削除しましょう。悪意ある第三に情報を与えないようにするためです。 $ sudo rm /var/www/html/hellophp.php WordPressでつかうデータベースを作成しよう これから、MariaDBのroot(管理者)となってWordPressの各種データを格納するデータベースの器の部分を作成します。パスワードは、mysql_secure_installationで設定したものを入力します。 $ mysql -u root -p Enter password: ← パスワード入力する Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.28-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>  ← MariaDBのプロンプト これより、SQLを使ってデータベースの作成を行います。本稿では表の値を使用しますが、安全のため他の値に変更してください。 項目 値 データベース名 wpdb ユーザ名 wpadmin パスワード wppassword MariaDB [(none)]> create database wpdb; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> grant all privileges on wpdb.* to "wpadmin"@"localhost" identified by "wppassword"; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> exit Bye $ WordPressをインストールしよう いよいよ、WordPressをインストールします。 まず、ホームディレクトリに「wp」というディレクトリを作成し、そのディレクトリに移動します。次に、公式サイトから最新版をcurlコマンドでダウンロードします。 $ cd $ mkdir wp $ cd wp $ curl -LO http:/ja.wordpress.org/latest-ja.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 162 100 162 0 0 200 0 --:--:-- --:--:-- --:--:-- 200 100 15.6M 100 15.6M 0 0 112k 0 0:02:22 0:02:22 --:--:-- 1910k $ ls latest-ja.tar.gz ダウンロードしたlatest-ja.tar.gzをtarで解凍します。ところがなぜかtarコマンドがないので、まずtarをインストールします。 $ sudo dnf -y install tar tarをインストールしたところでlatest-ja.tar.gzを解凍します。 $ tar xvf latest-ja.tar.gz 解凍したファイルやディレクトリを確認します。 $ ls latest-ja.tar.gz wordpress $ ls wordpress/ index.php wp-activate.php wp-comments-post.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php license.txt wp-admin wp-config-sample.php wp-includes wp-login.php wp-signup.php readme.html wp-blog-header.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php wordpressというディレクトリ以下が展開されていることがわかります。このwordpressディレクトリを「/var/www/html/」の下に移動します。wordpressの名称のままだとアタックされる恐れがあるので、ここでは「mypage」というディレクトリ名に変更します。 $ sudo mv wordpress/ /var/www/html/mypage Apacheのプロセスがアクセスできるようにし、wp-config.phpファイルをサンプルからコピーします。 $ sudo chown -R apache:apache /var/www/html/mypage/ $ cd /var/www/html/mypage/ $ sudo mv wp-config-sample.php wp-config.php wp-config.phpファイルをエディタで編集します。以下は変更前のファイルです。矢印の3箇所を、あなたが作成したデータベース名、ユーザ名、パスワードに変更します。 // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define( 'DB_NAME', 'database_name_here' ); ← データベース名を変更 /** MySQL データベースのユーザー名 */ define( 'DB_USER', 'username_here' ); ← ユーザ名を変更 /** MySQL データベースのパスワード */ define( 'DB_PASSWORD', 'password_here' ); ← パスワードを変更 /** MySQL のホスト名 */ define( 'DB_HOST', 'localhost' ); 本稿での変更後のイメージは以下のとおりです。 // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define( 'DB_NAME', 'wpdb' ); /** MySQL データベースのユーザー名 */ define( 'DB_USER', 'wpadmin' ); /** MySQL データベースのパスワード */ define( 'DB_PASSWORD', 'wppassword' ); /** MySQL のホスト名 */ define( 'DB_HOST', 'localhost' ); wp-config.phpをapache以外の第三者から読めなくします。 $ sudo chmod 400 wp-config.php $ ll wp-config.php -r--------. 1 apache apache 3908 6月 12 14:09 wp-config.php 最後にSELinuxを設定します。この設定によってWordPressが起動できるようになります。 $ sudo setsebool -P httpd_dbus_avahi 1 $ sudo setsebool -P httpd_unified 1 $ sudo setsebool -P httpd_tty_comm 1 $ sudo setsebool -P httpd_can_network_connect_db 1 $ sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/mypage" $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/mypage/wp-content(/.*)?" $ sudo restorecon -R -v /var/www/html/mypage WordPressのセットアップを完了させよう Webブラウザのアドレスバーから、「http://サーバのIPアドレス/mypage/wp-admin/install.php」を入力してみてください。WordPressのインストール画面が表示されます。必要事項を入力して、[WordPressをインストール]ボタンをクリックします。 インストールが完了したら下の画面になります。[ログイン]ボタンをクリックします。 下の画面が表示されるので、ログインしてみましょう。 WordPressのダッシュボードが表示されました。 さいごに Rocky LinuxでWebサーバを構築し、WordPressの画面を表示できるところまでを試してみました。構築の手順は本番サーバを構築する手順に匹敵するものです。ただし、本稿ではIPアドレスの固定は実施していないので、その点ご了承ください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ボリュームの中身が更新されているか確認する(初心者向け)

はじめに Dockerにてマウントする方法にバインドマウントとボリュームマウントがあるかと思います。 バインドマウントはマスター環境で作成したディレクトリにデータを直接放り込む事でコンテナに直接反映されますが、ボリュームマウントはDockerEngine上にボリュームをマウントするのでボリュームの中身を確認しづらいかと思います。 力技?でボリュームマウントで作成したボリュームの中身を確認する方法を試してみたのですが、忘れてしまいそうなので備忘録として残しておきます。 これを書いている現在、Dockerを学び始めて1ヵ月程度&エンジニアですらないので、「そんなのなんちゃってな確認方法だ」「ただの2重チェックに過ぎない」と思われるかもですが、温かくご指摘頂けると嬉しいです。 私自身インフラ的知識もプログラミングスキルも初心者ですので、初心者にも解りやすい内容になっていればい良いなと思います。 環境 ・Windows10 Home(64bit) ・DockerDesktop for Windows(WSL2) 図解 ボリュームをマウントしたapacheコンテナを起動し、そこにhtmlファイルを作成するという体で進めていきます。 ボリュームマウントでマウントされたボリュームの中身を確認するために確認用のLinuxコンテナ別途起動し、ボリュームに接続して確認をしてみます。 ①ボリュームを作成 $ docker volume create hoge_volume ②ボリュームがマウントされたApacheコンテナを起動する $ docker run --name hoge_apache -d -p 8080:80 -v hoge_volume:/usr/local/apache2/htdocs httpd 公式で用意されているApacheイメージを使用します。 これでボリュームがマウントされたApacheコンテナが立ち上がりました。 ちゃんと起動できているか確認してみます。 ブラウザにhttp://localhost:8080/と入力。ちゃんと起動できている事が確認できました。 ③同じボリュームがマウントされたlinux(ubuntu)コンテナを起動する $ docker run --name hoge_ubuntu -dit -v hoge_volume:/home ubuntu apacheコンテナと同じボリュームにマウントされたlinuxコンテナが立ち上がりました。 ④ボリューム内のhtmlファイルを更新してみる <html> <head> <meta charset="utf-8"> </head> <body> <h1>更新したよ</h1> </body> </html> ボリューム内のhtmlファイルを上記に変更します。 今回はマスター(windows)のドキュメント下に「hoge_directory」フォルダを作成し、更新用htmlファイルを作成しました。 これをcpコマンドでボリュームに移します。 $ docker cp C:\Users\[ユーザー名]\Documents\hoge_directory\index.html hoge_apache:/usr/local/apache2/htdocs/ ⑤ボリューム内がちゃんと更新されているか確認してみる cpコマンドで更新したので、Apacheコンテナのhtdocs下を調べるともちろん更新されていますが、ちゃんとボリューム内が更新されているのかLinuxコンテナから確認してみます。 Linuxコンテナでは/homeディレクトリにボリュームをマウントしているので、ここがちゃんと更新されていたら正常にボリューム内が更新されたという事になりますよね。 $ docker exec -it hoge_ubuntu /bin/sh 上記コマンドでLinuxコンテナ内に入ります。 /homeディレクトリを確認してみます。 ちゃんと更新されてました! root権限で確認したり、ボリューム内を確認する専用のイメージを使う方法等やり方は沢山あるみたいですが、自分の様な初心者ならこの方法のほうが理解しながら進められるような気がしました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac難民】WSL2でのreactの環境構築

はじめに ポートフォリオサイトを作りたいと思い、どうせ作るなら流行のreactで作りたいと考える。 ただ環境構築関係のサイト、Udemy、メンターなどもだいたいmac前提が多い。 Macは持っていなかったし、メインのデスクトップPCがwindowsなのと、外に出ないのでラップトップである必要性がない。 あと高い。 よってwsl2での最小限のreact環境構築をしてみた。 環境 windows10Home wsl2 Ubuntu 20.04LTS 目標環境 nodebrew nodejs 14.17.0 yarn 1.22.5 create-react-app コマンドのインストール 環境構築 こちらのサイト[1]を参考にした。 nodejs公式[2]2021年6月12日現在ではv14.17.0がLTS版における最新のようなのでそこだけ変更。 nodejsのダウンロードはうまくいったが、yarnのインストールがうまくいかないので別のサイト[3]を参考にして進めた。 ただ、create-react-appコマンドのパスが通っていない。 記事内にも対策が書いてあったがそれをしてもパスが通っていない。 findコマンドでパスを検索。 cd / find ./ -name create-react-app パスが見つかったのでそれを.bashrcに追加してsourceコマンドで更新。 具体的にはexport PATH=$PATH:'/home/ユーザー名/.yarn/bin' を追加。 whichコマンドでパスを確認。 which create-react-app 出力されたらパスが通っています。 あとは[1]の通りcreate-react-appコマンドを実行後cdしてからyarn startしたら実行できました。 おわりに 思ったより簡単でしたが、ある程度linuxの知識がないとやはり環境構築は難しいですね。 dockerも使えるようになったようですし、wsl2でいいのではと思わなくもない。 まあ情報があまりになさすぎるので、お金に余裕がある人はMac買った方がいいとは思います。 それではまた。 参考文献 [1]:WSLでReactを使ってHello Worldしてみた [2]:nodejs公式 [3]:yarnのインストール - Ubuntu
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux基礎学習まとめ⑦ ファイル管理

概要 Linuxのファイル管理には、ハードディスクとファイルシステムとディレクトリ構造の理解が必要になる。 ここでは、ファイルシステムを準備するためのコマンドなどを簡単にメモしておく。 実行環境 macOS BigSur 11.4 CentOS7 (macOS上でLinux環境を構築する方法はこちらを参考にしました) ファイルシステム ファイルシステムとは、ファイル名・更新日などの属性データ・ファイルデータ本体を管理するための仕組み。 パーティション ハードディスクを利用するために、ハードディスクを区切った単位。 ディスクの内部を複数のパーティション(領域)に区切る必要がある。 ファイル管理の主な流れ パーティションの作成 : fdisk ファイルシステムの作成 : mkfs マウント : mount 1. パーティションの作成 $ fdisk -l : 現在認識されているハードディスクのパーティション情報を表示する。(これは使い勝手が良い) 例) パーティション作成に関する様々なオプションの確認 $ fdisk [target] $ Command (m for help): m n : 新しいパーティション領域の作成、基本or拡張パーティションの指定、パーティション番号の指定、先頭シリンダの指定などを行っていく。 t : パーティションの種類の変更 w : ハードディスクにパーティション情報を書き込む (write) q : パーティションの変更を破棄する (quit) 例) $ mkfs -t ext3 -c /dev/vda1 2. ファイルシステムの作成 $ mkfs -t : 作成するファイルシステムの種類を指定 -c : ハードディスクの壊れている箇所を検出して、利用しない   ラベルの確認 $ e2label [target] [name] [name]無しでデバイスを指定すると、ラベルを確認できる。 ラベルとデバイスを指定すると、デバイスのラベルを変更できる。 3. マウント ハードディスクはパーティション分割して、、ファイルシステムを作ってからマウントすると読み書きできるようになる(CD-ROM, DVD-ROMなどのリムーバブルディスクも)。 マウントする際には、存在しているディレクトリにマウントする必要があり、マウントするために利用するディレクトリをマウントポイントと呼ぶ。 dfコマンドで、現在マウントされているファイルシステムのリストを表示することができる。 $ mount -t [type] -o [option] [device_file] [mount_point] -t : タイプ、ファイルシステムのext3、Windowsのmsdos、CD,DVDのiso9600など -o : 読み書きのrw、読み取り専用のroなど [device_file] : ファイルシステムをアクセスするためのデバイスファイル (ex. /dev/vda1) [mount_point] : マウントするディレクトリ (ex. /opt) アンマウント マウントされたハードディスクなどを利用しなくなると、アンマウントする。 $ unmount [mount_point] スワップ領域 Linuxのカーネルは、ハードディスクからプログラムやデータをメモリ領域へ読み込んで実行する。 新たに読み込むための空きメモリ領域がなくなると、カーネルは今利用していないメモリ上のプログラムやデータをスワップ領域へ一時的に退避する。 (基本情報技術者の参考書にもこんな感じの記載があったと思うので、そっちの方がわかりやすいかも) (スワッピング方式、スワップアウト、スワップインなど) ・mkswap [device_file]  スワップのパーティション確保コマンド  -c : 不要な部分を探して利用しない ・swapon [device_file]  スワップ領域の有効化コマンド  -s : 現在利用しているスワップ領域の表示 ・swapoff [device_file]  スワップ領域の無効化コマンド  -v : 指定したスワップの無効化  -a : 全てのスワップの無効化 例) $ fdisk -l (ハードディスクのパーティションを確認、IDが82(スワップ用)のパーティションを確認) ... device boot start end block Id system /dev/sda2 * 1 587 123681 82 Linux swap/Solaris $ mkswap -c /dev/sda2 (スワップファイルに変更) $ swapon /dev/sda2 (スワップファイルシステムとして利用(有効化)) $ swapon -s (利用開始しているスワップ領域の表示) Filename Type Size User /dev/sda2 partition 12311 0 -1 $ swapoff /dev/sda2 (スワップファイルシステムの無効化) iノード ext3ファイルシステムは、ファイルやディレクトリに対し、iノード番号という番号を割り振って管理している。 ファイルシステムを作成した時にiノード領域という場所が確保される。 iノード領域には、ファイルがディスク上にある位置やアクセス権限などの情報が保持されている。 ファイルシステムに作れるファイル数はiノード領域の大きさに左右されるため、データ領域が余っていても、iノード領域が足りなければ新規にファイルを作成することはできない。 ・df -i  -i : ファイルシステムにおけるiノード情報の表示 ・ls -il | sort  -i : ファイルやディレクトリに割り振られたiノード番号を表示 ハードリンクとシンボリックリンク リンク機能とはファイルをコピーしたり移動したりせずに、別のディレクトリにあるように扱うことができる機能。 パスを指定する際などに、よく使うファイルを自分のホームディレクトリにあるように扱うこともできる。 ハードリンク ファイルの実体を直接指し示して共有する。 iノード番号を共有して実現しているため、他のファイルシステム(パーティション)には作成できない。 シンボリックリンク 元ファイルが保管されている位置(パス)を示す擬似的なファイルを作成する。 パスを指定しているだけなので、他のファイルシステムの間でも作成できる。 Windowsでいうショートカットと考え方は同じ。 リンクを消しても元ファイルに影響はないが、元ファイルを消すとアクセスエラーとなる。(ハードリンクは大丈夫) リンク作成コマンド $ ln [original_file] [link_name] lnコマンドでリンクを作成する。 何もオプションをつけなければ、ハードリンクを作成。 -sオプションでシンボリックリンクを作成。 ファイルのハードリンクを作ると、iノード領域にあるリンク数が1つ増え、削除すると一つ減る。 リンク数が0になると、ファイルのデータがファイルシステムから完全に削除される。 シンボリックリンクはパーミッション情報の先頭がlで表示される 例)  $ ls -il 12311413 -rw-r--r-- 1 root root 5 Jun 6 14:31 test1 12311412 lrw-r--r-- 1 root root 5 Jun 6 14:31 test2 -> test1 ディスク管理 ・fsck [device_name] ファイルシステムのチェックと修復コマンド。 コンピュータが異常終了するなど、正常にシャットダウンが行われないと、ファイルシステムのファイル管理情報とハードディスクに書き込まれたデータ間の辻褄が会わなくなる。 不整合の場合、fsckコマンドを用いて、整合性のチェックと修復を行う。 ext3は、ジャーナリング機能があるため、修復が早い。    ・du [directory/file] ディレクトリの使用料やファイルのサイズを調べる。 -s : 指定ファイルや指定ディレクトリの統計を表示する。 終わりに ものすごく簡単なメモになってしまった。 実際にどういった場面で使うのか現時点では、全然イメージが沸いてないので今回の記事もよくわからない内容になってしまった。 早くこれらを使うような場面に行きたい。 参考文献 この記事は以下の情報を参考にして執筆しました。 - Linux標準教科書(ver.3.0.2)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Oracle実験室 / CentOS7.x 初期設定

私が勉強中のOracle DatabaseについてVirtualBox環境でセットアップ・各種操作等を行った際のメモです。 CentOS7.x初期設定 前書き 前の記事 https://qiita.com/Que-sera-sera/items/5caf51f9f55f962ff7e3 でインストールしたCentOS7.xをOracle Databse 19c稼働用に初期設定を行います。 パッケージインストール OSアップデート # yum -y update GNOME Desktopのインストール # export LANG=C # yum -y groupinstall "GNOME Desktop" 時刻同期 設定 systemctl enable chronyd.service systemctl start chronyd.service 確認 systemctl status chronyd.service chronyc sources ランレベル確認・変更 確認 # systemctl get-default multi-user.target 設定 # systemctl set-default graphical.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target. 確認 # systemctl get-default graphical.target firewall設定 Oracle*Net用のポート番号1521を開放しておきます。 EM Expressのポート番号はOracle Databaseインストール後に開放しますのでここでは実施しません。 Oracleでは必要ありませんがサーバーも使用するのででhttpサービス用も開放します。 ### 設定 # firewall-cmd --add-service=http --permanent success # firewall-cmd --add-port=1521/tcp --permanent success # firewall-cmd --reload success 確認 # firewall-cmd --get-default-zone public # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: dhcpv6-client http ssh ports: 1521/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OS初学者の学習記録 〜4. メモリ管理〜

メモリ管理とは? 一次元の物理アドレス空間を持つメインメモリ上には、OSの自身だけでなく、複数のアプリケーションプログラムやデータも共存することになる。 ↓ どの領域が使用済みor未使用かを管理し、確実に書き込み&読み出しをおこなうことが要求される。(メモリ管理、メモリ保護) アドレス空間 通常、プログラムは実行可能形式のデータとして補助記憶装置に格納されていて、実行時に物理メモリに読み出す。 多くのOSでは、物理メモリ上の任意の位置にプログラムを配置することができる。 物理アドレス:物理メモリ上のアドレス 物理アドレス空間:物理アドレスの集合 論理アドレス:各プロセスに独立に与えられた、論理的なアドレス 論理アドレス空間論理アドレスの集合 上の2つのアドレスの変換は、アドレス変換と呼ばれ、メモリ管理ユニット(MMU)と呼ばれるハードウェアを用いて行われる。 スワッピング スワップアウト メモリ容量が不足した場合に、時間刻みを使い切ったプロセスをスワップファイル(スワップ領域)に書き出して停止し、専有していたメモリ空間を開放する。 スワップアウト スワップファイル(スワップ領域)から再度メモリに書き戻す。 スワップを繰り返すと、メモリ名にたくさんの利用できない小さな空き領域が生じてしまう。(フラグメンテーション) 解消するには、メモリコンパクションという、小さな細切れの空き領域を大きな空き領域にする処理を行えば良いが 処理コストが大きいので、現実的には困難な場合が多い。 空きメモリ管理 固定区画方式 メモリを固定長の区画に分割してメモリを割り当てる。 各区画へ1つのプロセスを割り当てる単一区画方式と、複数の固定長の区画に分ける多重区画方式がある。 ↓ 同時に実行可能なプロセスの多重度は、いくつの区画に分割しているかによる区画の数に依存するので、原罪ではあまり利用されていない 可変区画方式 メモリのどの部分が利用可能で、どの部分が使用済みかを記録した表を用いて管理する方法。これが現在のOSでは一般的。 この方式では、大きさの異なる様々な空き領域が生じるので、適切に割り当てることが必要になる。 ファーストフィット 最初に見つかった領域に入れる。 ベストフィット 1番ギリギリで格納できる領域に入れる。 ワーストフィット ベストフィットの逆 ビットマップによる管理 各ブロックの使用状況をビットマップ(ビットベクトル)で管理する。 連結リストを用いた管理 空きもしくはプロセス所有 その領域の先頭アドレス 領域サイズおよび次エントリのアドレス などをが合わさった構造体を連結させたリストを使って管理する。 仮想記憶 物理メモリ容量より大きなプログラムを動かす場合は、工夫が必要。 ↓ メインメモリを抽象化し、巨大で一様な記憶領域である仮想アドレス空間として、物理アドレスから独立させた形で論理アドレス空間を提供する。 オーバーレイ 補助記憶装置上のプログラムを、いくつかの断片に分け、必要に応じてその断片をスワップイン・アウトする。 この手法は、プログラマがどのタイミングでどの部分をスワップするか指定する必要があった、、、 ページング 仮想アドレス空間を、ページ(page)と呼ばれる固定長ブロックに分割。 一方、物理アドレス空間を、ページフレーム(page frame)と呼ばれる固定長ブロックに分割。 この2つのサイズは同じにするのが一般的。(Linuxは4096バイト) ↓ ページテーブルという対応表を使って、ページとページフレームをマッピングすることで、ペーz単位でメモリを割り当てることができる。(ページイン・ページアウト) ページングの高速化 ページテーブルをCPUのレジスタにおくことができれば、メモリにアクセスすることなくマッピングを行えるが、ページテーブルのサイズが大きい場合は、ページテーブルの実装にレジスタを使うのは適していない。 ↓ そこで、TLB(transration look-aside buffer)または連想メモリと呼ばれる、小型かつ高速な、キャッシュ用の専用ハードウェアを利用することが一般的。 大容量仮想記憶でのページテーブル 逆ページテーブル法と呼ばれる、物理アドレス空間のページフレームごとにエントリを作成する方法がある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Oracle実験室 / CentOS7.xインストール

私が勉強中のOracle DatabaseについてVirtualBox環境でのセットアップ・各種操作等を行った際のメモです。 CentOS7.xダウンロード CentOS7ダウンロードサイドにアクセスします。 https://www.centos.org/download/ "Minimal版"をダウンロードします。 VirtualBoxインストール 実験用のVirtualboxをインストールします。 VirtualBoxのインストールについては紹介されているサイトがたくさんありますのでそちらを参照ください。 仮想マシンの作成 VirtualBoxのバージョンは"6.1.22"を使用します。 「新規」ボタンをクリックします。 仮想マシンの作成 名前とオペレーションシステム 名前には任意の名称を入力します。 マシンフォルダーはデフォルトのディレクトリから変更しています。 タイプに「Linux」, バージョンに「Red Hat (64bit)」を選択します。 仮想マシンに割り当てるメモリーサイズを指定します。 今回は「8GB」としました。 仮想マシンのストレージを作成します。 今回は新規作成なので「新規ハードディスクを作成する」を選択しました。 ハードディスクのファイルタイプを選択します。 今回はVirtualBoxのデフォルトの「VDI」形式を選択しました。 物理ハードディスクにあるストレージを指定します。 今回は「固定サイズ」選択しました。 ファイルの場所とサイズを選択します。 今回は「60GB」の固定ファイルサイズそ指定します。 固定ファイルサイズを選択するとサイズに応じて時間がかかります。可変サイズを選択した場合はすぐ終わります。 仮想マシンが作成されていることを確認します。 仮想マシンの設定 「設定」ボタンをクリックして、作成した仮想マシンの設定を変更します。 画像を表示していない箇所はすべてデフォルトです。 システム プロセッサータブを選択します。 今回はプロセッサー数に「4」を指定しました。 ディスプレイ リモートディスプレイタブを選択して、でサーバーを有効化します。 今回はポート番号をデフォルト値から変更しています。 ストレージ コントローラー:IDEを指定してCentOSのインストールメディアを指定します。 ネットワーク アダプター2を選択してアダプターを有効化します。 割り当てには「ホストオンリーアダプター」を指定します。 CentOS7.xインストール 作成した仮想マシンを起動します。 Install CentOS 7 を選択します。 インストール時のデフォルトの画面解像度はSVGAになります。 このままだと画面が見切れて操作しずらいので、TABキーを押して起動オプションを表示させ、末尾に「vga=773」(XGA) を指定します。 「日本語」を選択します。 インストールの概要画面 ネットワークの設定を行うため「ネットワークとホスト名」を選択します。 enp0s03のネットワークアダプターを「オン」にします。 ホスト名を設定します。 enp0s03を選択して[設定]ボタンをクリックします。 全般タブを選択して「この接続が利用可能になったときは自動的に接続する」にチェックします。 [保存]ボタンをクリックします。 enp0s08のネットワークアダプターを「オン」にします。 enp0s08を選択して[設定]ボタンをクリックします。 全般タブを選択して「この接続が利用可能になったときは自動的に接続する」にチェックします。 IPv4のセッティングタブを選択して、固定のIPアドレス情報を入力します。 DNSサーバーは各自の環境に合わせて設定ください。 インストールの概要画面でKDUMPの設定をクリックします。 「kdumpを有効にする」のチェックを解除して、[完了]ボタンをクリックします。 インストールの概要画面でインストール先の設定をクリックします。 今回は実験用ということで、LVMの設定でhomeを割り当てず、すべてルートパーティションにストレージを割り当てます。本番機運用の場合はありえませんが、、、 「パーティションを自分で構成する」を選択します。 [完了]ボタンをクリックします。 「ここをクリックして自動的に作成します」を選択します。 初期表示される"/home"ボリュームを[-]ボタンで削除します。 swapには"8192MB"を割り当てます。 その後"/"ボリュームに残りの容量をすべて割り当てます。 [変更を許可する]ボタンをクリックします。 [インストールの開始]ボタンをクリックします。 インストール実行中にrootのパスワード設定を行います。 インストール実行中に一般ユーザーの作成を行います。 インストールが完了するまでしばらく待ちます・・・。 インストールが完了したら[再起動]ボタンをクリックします。 再起動が完了して、ログインプロンプトが表示されれば完了です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

フォーマット中のSDカードを抜いてしまった

Linux PC(ubuntu 16.04)でフォーマット中のSDカードを誤って抜いてしまい、 SDカードを読み込めなくなったので、SDカードを読み込めるようするためにしたことをメモしておく。 SDカードをフォーマットする ファーマットが終了したと思ってSDカードを抜く 再度SDカードを挿したが、認識しない フォーマットしたものとは別のSDカードを挿してみたが認識しない PCを再起動(GUIで再起動したが、なぜかpasswordの入力を求められた) なかなか(5分待っても)再起動しないので、強制再起動(Alt+PrtScを押しながら R→S→E→I→U→B) 再起動後、問題のSDカードを挿すが認識しない 別のSDカードを挿してみると問題なく認識した 再度、問題のSDカードを挿し、dmesgで確認 xxx@xxx:$dmesg | tail [ 849.515807] mmc0: cannot verify signal voltage switch [ 849.645988] mmc0: new ultra high speed SDR104 SDHC card at address aaaa [ 849.648696] mmcblk0: mmc0:aaaa SC16G 14.8 GiB [ 849.651696] mmcblk0: p1 p2 mmcblk0でググってSDカードだと確認(mmcblkは「「Multimedia Card」(SD含む) のブロックデバイス」らしい。。。) とりあえずマウントしてみる xxx@xxx:$sudo mount -t vfat /dev/mmcblk0p1 /mnt mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. xxx@xxx:$sudo mount /dev/mmcblk0 /mnt mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. マウントできなかった、いろいろググッた結果フォーマットするコマンドがわかったのでフォーマット (もともとフォーマットするつもりだった) sudo mkfs.vfat -F 32 /dev/sdc1 SDカードを抜いてから、再度挿し直すと認識できた(ファイルマネージャで自動マウントされた)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】ls と cat の違いとは?

はじめに 今回は、自分がLinuxを始めて一番最初につまづいた lsコマンドと catコマンドの違いについて説明したいと思います。 拙い説明ではありますが、Linuxを始めたばかりの方の勉強の助けになれればと思います。 結論 まず最初に簡単に結論を書いてしまいます。 「うーん、わからん」となった方は、さらに先で細かく説明しているのでそちらを参照してください。 lsコマンド ファイルやディレクトリ(フォルダ)の情報を表示するコマンド。 ディレクトリを対象にすることで、そのディレクトリが持っているファイルや、ディレクトリの情報も取得できる。 catコマンド ファイルの中身(ファイルに何が書かれているか)を見るために使われることが多い。 ディレクトリに対して使用するとエラーが発生する。 ファイル と ディレクトリ(フォルダ)の違い lsコマンドと catコマンドの違いを理解する上で一番大切なのは「ファイル」と「ディレクトリ(フォルダ)」の違いです。 「ファイル」は一枚の紙のようなものであり、情報が書き込まれています。 中に何かを入れることはできません。 「ディレクトリ」は「ファイル」を入れるための入れ物で、直接何かを書き込むことはできません。 ファイルとディレクトリ(フォルダ)についてのまとめ ファイルは書類 ディレクトリは書類等のものを入れる入れ物 ※ ちなみに「フォルダ」と「ディレクトリ」は基本的には呼び方が違うだけで、同じ意味と考えて問題ないでしょう。 ls コマンドにできること ls コマンドができるのは①入れ物(ディレクトリ)の中身を覗くことと、②書類(ファイル)自体を見ることです。 ディレクトリに対して ls コマンドを実行 実際にコマンドを実行してみます。 [qiita@localhost ~]$ ls test a.txt b.txt c_directory これをWindowsのイメージにしてみると ↓ のようになります。 「testディレクトリ」の中に入っているものをlsコマンドで覗いていることがわかると思います。 また、「testディレクトリ」の中には a.txt b.txt c_directory の3つが入っていることが確認できます。 ファイルに対して ls コマンドを実行 次にファイルに対してlsコマンドを実行します。 [qiita@localhost test]$ ls a.txt a.txt これをWindowsのイメージにしてみると ↓ のようになります。 「a.txt(ファイル)」自体を見ていることがわかると思います。 「a.txt(ファイル)」は入れ物ではないので、中身はありません。 また、ls コマンドは何が書かれているかまで見ることはできません。 ※ ls コマンドはオプションを付けることで入れ物自体を見ることもできます。 cat コマンドにできること catコマンドは書類(ファイル)に何が書かれているかを見ることができます。 ファイルに対して cat コマンドを実行 実際にコマンドを実行してみます。 [qiita@localhost test]$ cat a.txt Hello World!!! Good Bye!!! これをWindowsのイメージにしてみると ↓ のようになります ディレクトリに対して cat コマンドを実行 入れ物(ディレクトリ)に対してcatコマンドをすることはできません。 入れ物(ディレクトリ)にはテキストファイルのように何かを書くことができないからです。 実際にコマンドを実行してみます。 [qiita@localhost test]$ cat c_directory/ cat: c_directory/: ディレクトリです このようにエラーが発生してしまいます。 これをWindowsのイメージにしてみると ↓ のようになります。 まとめ lsコマンドにできること ①入れ物(ディレクトリ)の中身を覗くこと  →ls コマンドの結果は「入れ物の中身」 ②書類(ファイル)自体を見ること  →ls コマンドの結果は「書類自体」 cat コマンドにできること 書類(ファイル)に何が書かれているかを見ること  →cat コマンドの結果は「書類に書き込まれている文章」 ※入れ物(ディレクトリ)にcatコマンドはできない   →cat コマンドの結果は「エラー」 おわりに 最後まで読んでいただきありがとうございました。 今回のような素朴な疑問に答えることの難しさを痛感しました...。 説明するための無理やりな解釈等が入ってしまい、我ながらとても残念です。 良い説明方法等ありましたら、コメント等でご教授いただけると幸いです。 Twitter(@IT_no_mushi)もやっていますので、こちらでもコメントやフォローをお待ちしております。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む