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


Ubuntu の基本設定と各種ソフトウェアのインストール

これまでの作業で Ubuntu の仮想マシンがインストールできたので,Ubuntu を利用する準備ができました.ここではログインの方法を確認し,Ubuntu のアップデートと基本設定,各種ソフトウェアのインストールを行います.

仮想マシンを起動する

コマンドプロンプトから,vagrant status コマンドで仮想マシンが起動していることを確認する.まだ起動していなければ vagrant upで起動する.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant status ⏎
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>

秘密鍵でログインする

秘密鍵によるログインが標準的なログイン方法でしょう.秘密鍵を使ってログインするには,コマンドプロンプトで Vagrantfile のあるディレクトリで vagrant ssh コマンドを使えば良い.このときログインにパスワードを必要としないことに注意しよう.なお,Ubuntu からのログアウトは exit コマンドです.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant ssh ⏎
vagrant@ubuntu2204:~$ exit ⏎
logout
Connection to 127.0.0.1 closed.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>

なお,Vagrantfile で指定した IP アドレス (192.168.56.101) が正しく設定されていることを確認してみます.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant ssh ⏎
Last login: Tue Oct 25 03:12:38 2022 from 10.0.2.2
vagrant@ubuntu2204:~$ ip a ⏎
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:2d:3b:77 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 86249sec preferred_lft 86249sec
    inet6 fe80::a00:27ff:fe2d:3b77/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ea:27:c3 brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feea:27c3/64 scope link
       valid_lft forever preferred_lft forever
vagrant@ubuntu2204:~$ exit ⏎
logout
Connection to 127.0.0.1 closed.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>

パスワードでログインする

パスワードでログインするには次のようなコマンドを入力します.なお,ユーザIDは「vagrant」,パスワードも「vagrant」です.また,初めてログインを試みるときに,ECDSA key fingerprint に関する注意が表示されるが,yes を入力して登録するとよい.次回以降は表示されなくなるのとともに,もしもサーバが変更された(なりすまされた)らそれを認識できるようになる.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>ssh vagrant@192.168.56.101 ⏎
The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.
ECDSA key fingerprint is SHA256:fx9qwmhNfFoGshKmhUKRLbpxylPgtJeyawcVyChy448.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ⏎
Warning: Permanently added '192.168.56.101' (ECDSA) to the list of known hosts.
vagrant@192.168.56.101's password: # パスワード「vagrant」を入力する(表示されない)
Last login: Tue Oct 25 03:13:15 2022 from 10.0.2.2
vagrant@ubuntu2204:~$ exit ⏎
logout
Connection to 192.168.56.101 closed.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>

Git の設定

各種ソフトウェアをインストールするためのコードを GitHub からダウンロードしたいので,Ubuntu にも Git の設定を行なっておこう.もちろん名前やメールアドレスは自身のものを指定してください.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant ssh ⏎
Last login: Tue Oct 25 03:14:13 2022 from 192.168.56.1
vagrant@ubuntu2204:~$ git config -l ⏎
vagrant@ubuntu2204:~$ git config --global user.name "Gakuin Hanako" ⏎
vagrant@ubuntu2204:~$ git config --global user.email "gakuin.hanako@dummy.kobegakuin.ac.jp" ⏎
vagrant@ubuntu2204:~$ git config --global color.ui true ⏎
vagrant@ubuntu2204:~$ git config --global push.default matching ⏎
vagrant@ubuntu2204:~$ git config -l ⏎
user.name=Gakuin Hanako
user.email=gakuin.hanako@dummy.kobegakuin.ac.jp
color.ui=true
push.default=matching
vagrant@ubuntu2204:~$

Ubuntu の設定とソフトウェアのインストール

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

林坂が記述した Ansible のコードは GitHub (https://github.com/rinsaka/ubuntu2204-ansible) で公開しています.このコードを利用することでインストールされた直後の Ubuntu 22.04 に,Apache(Webサーバ),Python, PHP, Laravel, MySQL, MeCab などを自動的にインストールすることができます.ただし,CaboChaをインストールするには手動での作業がわずかに必要です(完全な自動化はまだ成功していません).まず,次のコマンドで GitHub からコードをダウンロード(クローン)します.

vagrant@ubuntu2204:~$ ls ⏎
vagrant@ubuntu2204:~$ git clone https://github.com/rinsaka/ubuntu2204-ansible ⏎
Cloning into 'ubuntu2204-ansible'...
remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 36 (delta 14), reused 32 (delta 10), pack-reused 0
Receiving objects: 100% (36/36), 5.55 KiB | 473.00 KiB/s, done.
Resolving deltas: 100% (14/14), done.
vagrant@ubuntu2204:~$

なお,CaboCha(構文解析システム)をインストールする場合は,Windows PCで GoogleDrive から cabocha-0.69.tar.bz2 をダウンロードし,Cyberduck 等(scp コマンドでも可)を使って,/home/vagrant/ubuntu2204-ansible/work/ フォルダに cabocha-0.69.tar.bz2 をアップロードした後,/home/vagrant/ubuntu2204-ansible/05-mecab.yml を編集(Cyberduck を使って編集するか,vi コマンド等でも可)して,コメント状態になっている次の箇所のコメントを解除(# を削除)してください.

05-mecab.yml (抜粋)
    - name: unarchive CaboCha
      command: chdir={{work_dir}} tar xvjf {{cabocha_ver}}.tar.bz2
      become: no
    - name: configure CaboCha
      command: chdir={{work_dir}}/{{cabocha_ver}} ./configure --with-charset=UTF8
      become: no
    - name: make CaboCha
      command: chdir={{work_dir}}/{{cabocha_ver}} make
      become: no
    - name: make install CaboCha
      command: chdir={{work_dir}}/{{cabocha_ver}} make install
      become: yes
    - name: edit .bashrc
      shell: /usr/bin/echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc
      become: no

ダウンロードしたファイルを確認します.ubuntu2204-ansible というフォルダが作成され,その中に run.sh というファイルがあることを確認します.さらに,run.sh には vagrant ユーザ(ファイルの所有者)に対して実行権限 x が付与されていることも確認します.これは rwxrwxr-x の左から3文字目に x があることを確認すると良いです.

vagrant@ubuntu2204:~$ ls ⏎
ubuntu2204-ansible
vagrant@ubuntu2204:~$ cd ubuntu2204-ansible/ ⏎
vagrant@ubuntu2204:~/ubuntu2204-ansible$ ls ⏎
00-needrestart.yml  02-mysql.yml  04-laravel.yml  06-pyenv-anaconda.yml         README.md  work
01-apache.yml       03-php.yml    05-mecab.yml    disable_warning_restart.conf  run.sh
vagrant@ubuntu2204:~/ubuntu2204-ansible$ ls -l ⏎
total 44
-rw-rw-r-- 1 vagrant vagrant  268 Oct 25 03:33 00-needrestart.yml
-rw-rw-r-- 1 vagrant vagrant  494 Oct 25 03:33 01-apache.yml
-rw-rw-r-- 1 vagrant vagrant  692 Oct 25 03:33 02-mysql.yml
-rw-rw-r-- 1 vagrant vagrant  667 Oct 25 03:33 03-php.yml
-rw-rw-r-- 1 vagrant vagrant  934 Oct 25 03:33 04-laravel.yml
-rw-rw-r-- 1 vagrant vagrant  876 Oct 25 03:33 05-mecab.yml
-rw-rw-r-- 1 vagrant vagrant 1403 Oct 25 03:33 06-pyenv-anaconda.yml
-rw-rw-r-- 1 vagrant vagrant   52 Oct 25 03:33 disable_warning_restart.conf
-rw-rw-r-- 1 vagrant vagrant  630 Oct 25 03:33 README.md
-rwxrwxr-x 1 vagrant vagrant 1073 Oct 25 03:33 run.sh
drwxrwxr-x 2 vagrant vagrant 4096 Oct 25 03:33 work
vagrant@ubuntu2204:~/ubuntu2204-ansible$

設定とインストールの準備が整ったので,./run.sh を実行します.なおこの処理にはかなりの時間(20分またはそれ以上)を要します.具体的な処理内容は run.sh の内容を確認してください.

vagrant@ubuntu2204:~/ubuntu2204-ansible$ ./run.sh ⏎
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  ieee-data python-babel-localedata python3-argcomplete python3-babel python3-certifi python3-dnspython python3-jinja2
  python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-markupsafe python3-netaddr
  python3-ntlm-auth python3-packaging python3-pycryptodome python3-requests python3-requests-kerberos
  python3-requests-ntlm python3-requests-toolbelt python3-selinux python3-simplejson python3-tz python3-urllib3
  python3-winrm python3-xmltodict
Suggested packages:
  cowsay sshpass python3-sniffio python3-trio python-jinja2-doc python-lockfile-doc ipython3 python-netaddr-docs
  python3-socks python-requests-doc
The following NEW packages will be installed:
  ansible ieee-data python-babel-localedata python3-argcomplete python3-babel python3-certifi python3-dnspython
  python3-jinja2 python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-markupsafe
  python3-netaddr python3-ntlm-auth python3-packaging python3-pycryptodome python3-requests python3-requests-kerberos
  python3-requests-ntlm python3-requests-toolbelt python3-selinux python3-simplejson python3-tz python3-urllib3
  python3-winrm python3-xmltodict
0 upgraded, 27 newly installed, 0 to remove and 0 not upgraded.
Need to get 28.4 MB of archives.
After this operation, 272 MB of additional disk space will be used.
Get:1 https://mirrors.edge.kernel.org/ubuntu jammy/main amd64 python-babel-localedata all 2.8.0+dfsg.1-7 [4,982 kB]

(中略)

TASK [Install Anaconda] ************************************************************************************************
changed: [localhost]

TASK [Rehash] **********************************************************************************************************
changed: [localhost]

TASK [Set Global] ******************************************************************************************************
changed: [localhost]

TASK [edit .bashrc] ****************************************************************************************************
changed: [localhost]

TASK [Source] **********************************************************************************************************
changed: [localhost]

TASK [Update Conda] ****************************************************************************************************
changed: [localhost]

PLAY RECAP *************************************************************************************************************
localhost                  : ok=11   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

vagrant@ubuntu2204:~/ubuntu2204-ansible$

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

vagrant@ubuntu2204:~/ubuntu2204-ansible$ exec $SHELL -l ⏎
vagrant@ubuntu2204 ubuntu2204-ansible $

MySQL を利用する場合は管理者ユーザ (root) のパスワードを設定しておきます.もちろん,パスワードには複雑なものを設定してください.

vagrant@ubuntu2204 ubuntu2204-ansible $ sudo mysql ⏎
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxx'; ⏎
Query OK, 0 rows affected (0.07 sec)

mysql> FLUSH PRIVILEGES; ⏎
Query OK, 0 rows affected (0.03 sec)

mysql> exit ⏎
Bye
vagrant@ubuntu2204 ubuntu2204-ansible $

今設定したパスワードでログインできることを確認しておくと良いでしょう.なお,SHOW DATABASES; などの MySQL コマンドは小文字で入力しても構いません.

vagrant@ubuntu2204 ubuntu2204-ansible $ mysql -u root -p ⏎
Enter password: # 上で設定したパスワードを入力する(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES; ⏎ # データベースの一覧を確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.07 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ubuntu2204-ansible $

なお,./run.sh 実行時に OS のカーネルがアップデートされているはずなので,OS (仮想マシン) を再起動しておく必要があります.一旦 vagrant halt でシャットダンした後に vagrant up で起動すると良いでしょう.あるいは,vagrant reload で再起動することも可能です.

vagrant@ubuntu2204 ubuntu2204-ansible $ exit ⏎
logout
Connection to 127.0.0.1 closed.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant halt ⏎
==> default: Attempting graceful shutdown of VM...

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>vagrant up ⏎
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'generic/ubuntu2204' version '4.1.16' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection aborted. Retrying...
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 6.1.38
    default: VirtualBox Version: 7.0
==> default: Configuring and enabling network interfaces...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

C:\Users\Rinsaka\MyVagrant\ubuntu2204-vagrantfile>