VirtualBoxにCentOS8の環境作成

目次


VirtualBoxで仮想マシン上にゲストOSとしてCentOS8をインストールし、C及びC++コンパイラ、Python、Apatch(HTTPサーバー)の環境を作成する。

1.仮想マシンの作成とCentOS8のインストール
(1)CentOS8のダウンロード
iSOイメージファイル
http://isoredirect.centos.org/

ミラーサーバーが表示されるので選択する

DVD ISOファイルをダウンロードする

ダウンロードしたファイル

(2)仮想マシンの作成とゲストOSのインストール
・「新規」を選択

・メモリサイズを2048MBに設定

・ハードディスクVDI・可変・20GBに設定

・仮想マシンを起動する

・起動ハードディスクの選択画面が表示される

フォルダを選択し、光学ディスク選択画面で「追加」を選択する

・ダウンロードしたファイルを選択する

・選択一覧に表示されたファイルを選択して「選択」押下

・CentOS8のISOイメージの表示を確認して「起動」押す

・「ライセンス情報」を選択

「アクティビティ」を選択するとメニューが表示される

(3)ネットワークの設定
 # cd /etc/sysconfig/network-scripts
 # vi ifcfg-enp0s3
 ONBOOT=noをONBOOT=yesにする

(4)PuTTY(リモートログオンクライアント)による接続
 SSHでホストから仮想マシンに接続するためのポートフォワーディングの設定を行います。
 VirtualBoxマネージャーから設定>ネットワーク>アダプター1のタブ選択>「高度」選択>ポートフォワーディング選択で「+」で追加します。
 ここではホストポート2222、ゲストポート22とします。

ホスト:127.0.0.1 ポート:2222で接続します。

(5)WinSCP(SSHクライアント)による接続

2.Cコンパイラのインストール
[root@localhost ~]# gcc –version

yesで継続

# gcc –version
gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)

3.C++コンパイラのインストール
[root@localhost ~]# g++ –version

yesで継続

# g++ –version
g++ (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)

4.pythonのインストール
(1)python
 CentOS8にpython3はインストール済
 # python3 –version
 Python 3.6.8

(2)PythonIDLE
 ・Python3 IDEのインストール
 # yum install python3-tools
 ・CentOSのディスクトップで端末を起動
 # idle3
 リモートでsshで実行。idleはリモートでは使えない。

quit()で終了

5.Apatch(HTTPサーバー)のインストール
(1)Apache httpdパッケージの確認
 # dnf list | grep httpd

(2)Apache httpdパッケージのインストール
・下記の4つをインストール
httpd.x86_64 httpdウェブサーバー本体
httpd-devel.x86_64 httpd開発ツール、モジュールなど
httpd-manual.noarch httpdのマニュアル
httpd-tools.x86_64 httpdに関連するツール群
・インストール
# dnf -y install httpd httpd-tools httpd-devel httpd-manual

(3)Apache httpdインストール後の確認
  $ dnf list installed | grep http

(4)インストール先(パス)確認
$ which httpd

(5)httpd起動と確認
・起動
 # systemctl start httpd
・状態確認
 $ systemctl status httpd
  Active: active (running) since ・・・

・プロセスの稼働の確認
 $ ps -aux | grep httpd

・httpd自動起動の設定
 # systemctl enable httpd
・自動起動が設定されたことを確認
 $ systemctl is-enabled httpd
 enabled

(6)firewallの許可設定
・firewallの設定
 # firewall-cmd –add-service=http –permanent
・設定の反映
 # firewall-cmd –reload
・firewallの設定確認
 # firewall-cmd –list-all
  services:にサービス名が設定されていることを確認

・tcpプロトコルのポート番号
/usr/lib/firewalld/services/http.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

(7)テストページの確認
 VirtualBoxの仮想マシンのホスト→ゲストのポート変換の設定

ホストのブラウザからhttp://localhost

下記のフォルダにindex.htmlの名前で置く
/var/www/html/index.html

6.Mysql のインストール
(1)最新バージョンの確認
  # dnf info mysql-server

(2)mysql-serverのインストール
# dnf install mysql-server
・バージョン確認
# mysql –version
mysql  Ver 8.0.26 for Linux on x86_64 (Source distribution)

(3)mysqlclientのインストール
# yum install mysql-devel
 # pip3 install mysqlclient
Successfully installed mysqlclient-2.0.3

(4)ファイアウォールにmysqlを追加
# firewall-cmd –add-service=mysql –zone=public — permanent
# firewall-cmd –list-all
services:に”mysql”が追加される
services: cockpit dhcpv6-client http https mysql ssh

(4)MySQLの起動
 # service mysqld start
 # systemctl status mysqld

(5)MySQLの起動
 # service mysqld start
 # systemctl status mysqld

(6)mysqlの初期設定
 # mysql_secure_installation

下記の入力を求められる(入力値は本環境の例)
・VALIDATE PASSWORDコンポーネントをセットアップする? :n
・New password:? 空は設定できない。ここでは半角スペースを入力
・匿名ユーザーを削除しますか? :n
・rootログインをリモートで禁止しますか? :y
・テストデータベースを削除してアクセスしますか? :y
・特権テーブルをリロードしますか? :n

(6)データベースサーバに接続と確認
・mysqlサーバに接続
  # mysql -u root -p
・データベースの一覧の確認
  # mysql -u root -p
  Enter password:
・データベースの作成
  mysql> CREATE DATABASE (データベース名);
・データベースを選択
mysql> USE (データベース名);
・テーブル一覧確認
mysql> SHOW tables;
mysql> CREATE TABLE (テーブル名);
・テーブルの動作確認
作成したテーブルにデータを挿入・取得して動作確認する
現在のテーブルデータ
mysql> SELECT * FROM (テーブル名);
テーブルにデータ追加
INSERT INTO テーブル名(フィールド名) VALUES (‘値’);
取得
SELECT * FROM (テーブル名);

7.ホスト側からゲスト側に繋がらないときの対処方法
(1)ゲストOSのファイアウォール
・services:にサービス名が設定されていることを確認する
# firewall-cmd –list-all

・サービス名がないときは追加する
 service=httpを追加する
 firewall-cmd –permanent –add-service=http
 firewall-cmd –reload
・firewalldの起動状態
 $ systemctl status firewalld
・設定の反映
 # firewall-cmd –reload
・設定確認
 # firewall-cmd –list-all

・firewallサービスの停止
 $ systemctl stop firewalld
・firewallサービスの起動
 $ systemctl start firewalld

(2)サービスの状態を確認
 sshd(デーモン) の状態
 $ sudo systemctl status sshd

・sshdの設定ファイル
 # vi /etc/ssh/sshd_config

(3)IPアドレスの確認
 $ ifconfig

(4)iptables

 iptables(Linuxに実装されたパケットフィルタリング型のファイアウォール機能)の設定を確認する
 # iptables –version

・ポートの解放
 # iptables -I INPUT 5 -p tcp -m tcp –dport 443 -j ACCEPT
・ポートの設定確認
 # iptables -L

(5)接続待ちポートの確認
接続待ちをしているポートを確認する(ssコマンド)
 # ss -atn
 -a 全てのソケットを表示
 -n サービス名に変換せずに表示
 -t TCP情報のみ表示
 -u UDP情報のみ表示

(6)SELinux
SELinux(Security-Enhanced-Linuxの略称)は細かいアクセス制御を可能とする。
・SELinuxの状態の確認
# getenforce
・無効化
# setenforce 0
setenforceでの変更はリアルタイムで一時的なもので再起動すると初期化される。恒久的に設定を有効化、もしくは無効化する場合は下記ファイルに設定する。
# vi /etc/selinux/config

・有効の設定 SELINUX=enforcing
・無効で警告表示のみの設定 SELINUX=permissive
・無効の設定 SELINUX=disabled

The subject ends herewith.