仮想開発環境の構築トップページ


CentOS の設定(各種ソフトウェアのインストール)

これまでの作業で CentOS 7 の仮想マシンがインストールできたので,CentOS を利用する準備ができました.しかし,Web サーバやその他の開発環境などが一切インストールされていないので,ここでは各種のソフトウェアのインストールと設定を行います.ただ,一つひとつソフトウェアをインストールするのは大変な作業です.よって,ここでは,必要なソフトウェアを自動的にインストール・設定するための Ansible を使うことにします.

Ansible コードをダンロードする

Ansible による自動インストールのスクリプトファイルを GitHub から Windows にダウンロードし,ダウンロードしたファイルを Cyberduck を使って仮想マシンにアップロードする.(Github のユーザ登録が完了して,公開鍵を Github に登録している場合は,git clone コマンドでも可能です.)

GitHub の https://github.com/rinsaka/centos7ansible を開く.「Code」から「Download ZIP」をクリックし,ZIP 形式でローカルの Windows PC にダウンロードする.

a-01

ダウンロードした ZIP ファイルを右クリックして「すべて展開」する.

a-02

展開先は適当な場所でよい.

a-03

次は,Cyberduck を使って,仮想マシンのホームフォルダ 「/home/vagrant/」にアップロードする.Windows のエクスプローラからフォルダごとドラッグ&ドロップすれば良い.

a-04

アップロードできれば次のような画面が表示される.この画面は閉じて良い.

a-05

仮想マシンの「/home/vagrant/」以下にフォルダごとコピーされた.

a-06

インストールスクリプトを実行する

ここからはコマンドプロンプトで作業する.Ansible のスクリプトがコピーされたので,そのフォルダに移動する.

C:\Users\Rinsaka\MyVagrant\MyCentOS>vagrant ssh ⏎ # 
Last login: Wed Mar 24 06:42:26 2021 from 192.168.33.1
[vagrant@localhost ~]$ pwd ⏎ # 
/home/vagrant
[vagrant@localhost ~]$ ls ⏎
centos7ansible-master
[vagrant@localhost ~]$ cd centos7ansible-master/ ⏎
[vagrant@localhost centos7ansible-master]$ ls ⏎
00-ntp.yml         05-mongodb.yml          10-pdftotext.yml     httpd.conf.custom            password-auth-ac.custom
01-apache.yml      05-mysql.yml            10-tesseract.yml     ldap_work                    php.ini.custom
02-ldapclient.yml  06-php.yml              11-nfs-server.yml    main.yml                     README.md
02-ldapserver.yml  07-laravel.yml          12-bind-utils.yml    mongodb-org-4.2.repo.custom  run.sh
03-ldif.yml        08-ruby.yml             13-siege.yml         mongod.conf.custom           system-auth-ac.custom
04-mecab.yml       09-python-anaconda.yml  bash_profile.custom  nsswitch.conf.custom         work
[vagrant@localhost centos7ansible-master]$

コピーされたファイルの一つ,run.sh には実行権限が付与されていないので,chmod コマンドで実行権限を付与する.(ファイルの属性が -rw-rw-r-- ではなく -rwxrwx--- になるように x (eXecutable) のフラグを立てる)

[vagrant@localhost centos7ansible-master]$ ls -l ⏎
total 208
-rw-rw-r--. 1 vagrant vagrant   252 Mar 24 07:07 00-ntp.yml
-rw-rw-r--. 1 vagrant vagrant   413 Mar 24 07:07 01-apache.yml
-rw-rw-r--. 1 vagrant vagrant  1058 Mar 24 07:07 02-ldapclient.yml
-rw-rw-r--. 1 vagrant vagrant   540 Mar 24 07:07 02-ldapserver.yml
-rw-rw-r--. 1 vagrant vagrant  1012 Mar 24 07:07 03-ldif.yml
-rw-rw-r--. 1 vagrant vagrant  2373 Mar 24 07:07 04-mecab.yml
-rw-rw-r--. 1 vagrant vagrant   489 Mar 24 07:07 05-mongodb.yml
-rw-rw-r--. 1 vagrant vagrant  1309 Mar 24 07:07 05-mysql.yml
-rw-rw-r--. 1 vagrant vagrant   861 Mar 24 07:07 06-php.yml
-rw-rw-r--. 1 vagrant vagrant   934 Mar 24 07:07 07-laravel.yml
-rw-rw-r--. 1 vagrant vagrant  2693 Mar 24 07:07 08-ruby.yml
-rw-rw-r--. 1 vagrant vagrant  1300 Mar 24 07:07 09-python-anaconda.yml
-rw-rw-r--. 1 vagrant vagrant   381 Mar 24 07:07 10-pdftotext.yml
-rw-rw-r--. 1 vagrant vagrant   305 Mar 24 07:07 10-tesseract.yml
-rw-rw-r--. 1 vagrant vagrant   368 Mar 24 07:07 11-nfs-server.yml
-rw-rw-r--. 1 vagrant vagrant   242 Mar 24 07:07 12-bind-utils.yml
-rw-rw-r--. 1 vagrant vagrant   963 Mar 24 07:07 13-siege.yml
-rw-rw-r--. 1 vagrant vagrant   374 Mar 24 07:07 bash_profile.custom
-rw-rw-r--. 1 vagrant vagrant 34418 Mar 24 07:07 httpd.conf.custom
drwxrwxr-x. 2 vagrant vagrant   149 Mar 24 07:07 ldap_work
-rw-rw-r--. 1 vagrant vagrant   978 Mar 24 07:07 main.yml
-rw-rw-r--. 1 vagrant vagrant   200 Mar 24 07:07 mongodb-org-4.2.repo.custom
-rw-rw-r--. 1 vagrant vagrant   854 Mar 24 07:07 mongod.conf.custom
-rw-rw-r--. 1 vagrant vagrant  1714 Mar 24 07:07 nsswitch.conf.custom
-rw-rw-r--. 1 vagrant vagrant  1325 Mar 24 07:07 password-auth-ac.custom
-rw-rw-r--. 1 vagrant vagrant 67161 Mar 24 07:07 php.ini.custom
-rw-rw-r--. 1 vagrant vagrant   726 Mar 24 07:07 README.md
-rw-rw-r--. 1 vagrant vagrant  1220 Mar 24 07:07 run.sh
-rw-rw-r--. 1 vagrant vagrant  1323 Mar 24 07:07 system-auth-ac.custom
drwxrwxr-x. 2 vagrant vagrant     6 Mar 24 07:07 work
[vagrant@localhost centos7ansible-master]$ chmod 770 run.sh ⏎ # 
[vagrant@localhost centos7ansible-master]$ ls -l ⏎
total 208
-rw-rw-r--. 1 vagrant vagrant   252 Mar 24 07:07 00-ntp.yml
-rw-rw-r--. 1 vagrant vagrant   413 Mar 24 07:07 01-apache.yml
-rw-rw-r--. 1 vagrant vagrant  1058 Mar 24 07:07 02-ldapclient.yml
-rw-rw-r--. 1 vagrant vagrant   540 Mar 24 07:07 02-ldapserver.yml
-rw-rw-r--. 1 vagrant vagrant  1012 Mar 24 07:07 03-ldif.yml
-rw-rw-r--. 1 vagrant vagrant  2373 Mar 24 07:07 04-mecab.yml
-rw-rw-r--. 1 vagrant vagrant   489 Mar 24 07:07 05-mongodb.yml
-rw-rw-r--. 1 vagrant vagrant  1309 Mar 24 07:07 05-mysql.yml
-rw-rw-r--. 1 vagrant vagrant   861 Mar 24 07:07 06-php.yml
-rw-rw-r--. 1 vagrant vagrant   934 Mar 24 07:07 07-laravel.yml
-rw-rw-r--. 1 vagrant vagrant  2693 Mar 24 07:07 08-ruby.yml
-rw-rw-r--. 1 vagrant vagrant  1300 Mar 24 07:07 09-python-anaconda.yml
-rw-rw-r--. 1 vagrant vagrant   381 Mar 24 07:07 10-pdftotext.yml
-rw-rw-r--. 1 vagrant vagrant   305 Mar 24 07:07 10-tesseract.yml
-rw-rw-r--. 1 vagrant vagrant   368 Mar 24 07:07 11-nfs-server.yml
-rw-rw-r--. 1 vagrant vagrant   242 Mar 24 07:07 12-bind-utils.yml
-rw-rw-r--. 1 vagrant vagrant   963 Mar 24 07:07 13-siege.yml
-rw-rw-r--. 1 vagrant vagrant   374 Mar 24 07:07 bash_profile.custom
-rw-rw-r--. 1 vagrant vagrant 34418 Mar 24 07:07 httpd.conf.custom
drwxrwxr-x. 2 vagrant vagrant   149 Mar 24 07:07 ldap_work
-rw-rw-r--. 1 vagrant vagrant   978 Mar 24 07:07 main.yml
-rw-rw-r--. 1 vagrant vagrant   200 Mar 24 07:07 mongodb-org-4.2.repo.custom
-rw-rw-r--. 1 vagrant vagrant   854 Mar 24 07:07 mongod.conf.custom
-rw-rw-r--. 1 vagrant vagrant  1714 Mar 24 07:07 nsswitch.conf.custom
-rw-rw-r--. 1 vagrant vagrant  1325 Mar 24 07:07 password-auth-ac.custom
-rw-rw-r--. 1 vagrant vagrant 67161 Mar 24 07:07 php.ini.custom
-rw-rw-r--. 1 vagrant vagrant   726 Mar 24 07:07 README.md
-rwxrwx---. 1 vagrant vagrant  1220 Mar 24 07:07 run.sh
-rw-rw-r--. 1 vagrant vagrant  1323 Mar 24 07:07 system-auth-ac.custom
drwxrwxr-x. 2 vagrant vagrant     6 Mar 24 07:07 work
[vagrant@localhost centos7ansible-master]$

自動インストールの準備が整ったので,./run.sh を実行する.なおこの処理にはかなりの時間(20分またはそれ以上)を要します.

[vagrant@localhost centos7ansible-master]$ ./run.sh ⏎ # 
which: no ansible-playbook in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin)
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution

(中略)

PLAY [localhost] *******************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]

TASK [download siege-4.0.5.tar.gz] *************************************************************************************
changed: [localhost]

TASK [unarchive siege-4.0.5.tar.gz] ************************************************************************************
[WARNING]: Consider using the unarchive module rather than running 'tar'.  If you need to use command because unarchive
is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get
rid of this message.
changed: [localhost]

TASK [configure siege] *************************************************************************************************
changed: [localhost]

TASK [make siege] ******************************************************************************************************
changed: [localhost]

TASK [make install siege] **********************************************************************************************
changed: [localhost]

TASK [delete siege source dir] *****************************************************************************************
changed: [localhost]

TASK [delete siege source file] ****************************************************************************************
changed: [localhost]

PLAY RECAP *************************************************************************************************************
localhost                  : ok=8    changed=7    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[vagrant@localhost centos7ansible-master]$

設定した内容を反映させるコマンドも入力する.(または一旦ログアウトしてログインしなおす.)

[vagrant@localhost centos7ansible-master]$ exec $SHELL -l ⏎
[vagrant@localhost centos7ansible-master]$

MongoDB を使う場合は,管理者パスワードを(hogehoge の部分を適当に変更して)設定しておくと良い.

[vagrant@localhost centos7ansible-master]$ mongo ⏎
MongoDB shell version v4.2.13
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1e24dd4a-8ff3-49c9-a168-cef62fd0285d") }
MongoDB server version: 4.2.13
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
        https://community.mongodb.com
> use admin ⏎
switched to db admin
> db.createUser({user:"root", pwd:"hogehoge", roles:["root"]}) ⏎
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
> quit() ⏎
[vagrant@localhost centos7ansible-master]$

なお,MySQL を使う場合はここで管理者パスワードを設定しておくとよい(コマンドがややこしいので,コピー&ペーストがおすすめです).パスワードは大文字,小文字,記号,数字などを含んだものでなければ設定できません.

[vagrant@localhost centos7ansible-master]$ tmp_password=$(sudo grep 'A temporary password' /var/log/mysqld.log | sed -e 's/^.*: //') ⏎
[vagrant@localhost centos7ansible-master]$ sudo mysqladmin -u root --password="${tmp_password}" password ⏎
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
New password: (新しいパスワード) ⏎
Confirm new password: (新しいパスワード) ⏎
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[vagrant@localhost centos7ansible-master]$

この作業によって,Apache(Web サーバ),MySQL(データベースサーバ)などのサーバや,PHP,Laravel,Ruby,Python などの開発環境,Mecab(日本語の形態素解析),Groonga/Mroonga(MySQLで日本語検索を行うためのストレージエンジン)などがインストールされた.