これまでの作業で 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>
各種ソフトウェアをインストールするためのコードを 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 を利用する準備ができました.しかし,英語の環境であったり,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>