らずぱい日記

定年したので日記でもかくか。って感じ

apache入らんがな

■apache2がインストールできない。

httpサーバはファイルアクセスの窓口として使うつもりがインストールできない。

いろいろ試して2度ほど環境が壊れてしもた。

やったことをメモしておこう。

 

$sudo apt update
$sudo apt upgrade

ファイアウォールの調整
$sudo ufw app list
  Available applications:
  Apache ※1
  Apache Full ※2
  Apache Secure ※3
  OpenSSH
  Samba

※1 Apache: WWW、ポート80 のみを聞く
※2 Apache Full: このプロファイルは、ポート80とポート443の両方を開く
※3 Apache Secure: このプロファイルは、ポート443 のみを聞く

今回は80と443両方だな。

$sudo ufw allow 'Apache Full'

$sudo ufw enable

$ sudo ufw status
Status: active
To      Action    From
--      ------     ----
Apache    ALLOW    Anywhere
Apache Full  ALLOW    Anywhere
OpenSSH   ALLOW    Anywhere
Samba    ALLOW    Anywhere
Apache (v6)  ALLOW    Anywhere (v6)
Apache Full (v6) ALLOW   Anywhere (v6)
OpenSSH (v6)  ALLOW   Anywhere (v6)
Samba (v6)   ALLOW   Anywhere (v6)

■apache2のインストール
$sudo apt install apache2
Do you want to continue? [Y/n] Y

ここでエラーで入らない。

Setting up apache2 (2.4.46-1ubuntu1) ...
Can't locate if.pm in @INC (you may need to install the if module) (@INC contains: /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.30.3 /usr/local/share/perl/5.30.3 /usr/lib/aarch64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl-base /usr/lib/aarch64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl) at /usr/sbin/a2enmod line 15.
BEGIN failed--compilation aborted at /usr/sbin/a2enmod line 15.
dpkg: error processing package apache2 (--configure):
installed apache2 package post-installation script subprocess returned error exit status 2
Processing triggers for ufw (0.36-7) ...
Rules updated for profile 'Apache'
Rules updated for profile 'Apache Full'
Rules updated for profile 'OpenSSH'
Rules updated for profile 'Samba'
Skipped reloading firewall
Processing triggers for systemd (246.6-1ubuntu1.1) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for libc-bin (2.32-0ubuntu3) ...
Errors were encountered while processing:
apache2
E: Sub-process /usr/bin/dpkg returned an error code (1)Setting up apache2 (2.4.46-1ubuntu1) ...
Can't locate if.pm in @INC (you may need to install the if module) (@INC contains: /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.30.3 /usr/local/share/perl/5.30.3 /usr/lib/aarch64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl-base /usr/lib/aarch64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl) at /usr/sbin/a2enmod line 15.
BEGIN failed--compilation aborted at /usr/sbin/a2enmod line 15.
dpkg: error processing package apache2 (--configure):
installed apache2 package post-installation script subprocess returned error exit status 2
Processing triggers for ufw (0.36-7) ...
Rules updated for profile 'Apache'
Rules updated for profile 'Apache Full'
Rules updated for profile 'OpenSSH'
Rules updated for profile 'Samba'
Skipped reloading firewall
Processing triggers for systemd (246.6-1ubuntu1.1) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for libc-bin (2.32-0ubuntu3) ...
Errors were encountered while processing:
apache2
E: Sub-process /usr/bin/dpkg returned an error code (1)

perlとかに問題あるの・・・?

/usr/sbin/a2enmod line 15.って。。。

なにやらa2enmodがperl使ってるな?今回は深追いするの疲れたので
ペンディングにするわ。うまくいったら続きを。。。

 a2enmod  は、apache2構成内で指定されたモジュールを有効にするスクリプトです。
これは、/ etc / apache2 / mods-enabled内にシンボリックリンクを作成することに
よって行われます。
同様に、a2dismodこれらのシンボリックリンクを削除して、モジュールを無効にします。
モジュールを有効にすることはエラーではありません。
はすでに有効になっている、またはすでに無効になっているものを無効にする。
多くのモジュールには、.loadファイルに加えて、関連する.confファイルがあることに注意してください。
モジュールを有効にすると、構成ディレクティブが.confファイルにディレクティブとして配置されます。

いったん削除しておこう

$ sudo apt remove apache2
$ sudo apt autoremove
$ cd /var/lib/dpkg/info
$ ls apache*
apache2.list apache2.postrm

$sudo mv apache* /tmp
$ sudo dpkg --configure -a

 ※これって綺麗に消えてるのかな?

 2回目インストールしても設定ファイルとかが入らないのだが。。

 

ちなみに設定しようと思っているメモは残しておこう。

httpd.conf

oresamaにアクセスするとIDとパスワードを聞いてくる

oresama以下のシンボリックリンクもアクセスできるようにする
 これでNASサーバのファイルをブラウザ経由でアクセスできるので。。

<Directory "/var/www/html/oresama/">
   AllowOverride None
   Order allow,deny
   Allow from all
   Options FollowSymlinks
   Options Indexes FollowSymLinks
   IndexOptions +FancyIndexing +NameWidth=* +Charset=UTF-8
   AuthType Basic
   AuthName "erina Please input ID & Password"
   AuthUserFile /var/www/.htpasswd
   AuthGroupFile /dev/null
<Limit GET POST>
   require valid-user
</Limit>
</Directory>

 

apache2インストールの解決方法を探すか。。

あれ?シンボリックリンク共有できんやん。

sambaも立ち上げたし、NASもマウントしたのでwindowsからRaspberryPi4経由でNASをアクセスしてみるか、と思いさっそく[symbolic link]設定してアクセスでアクセス不可!管理者に問い合わせろと。管理者おれやん。

 

1.NASのマウントポイントに向けシンボリックリンクを張る。

$cd /home/[New_user]

$sudo ln -s /mnt/oresama1 oresama1

$ls -l
lrwxrwxrwx 1 root root 14 Jan 28 07:01 oresama1 -> /mnt/oresama1/

 

2.sambaの設定変更

$sudo vi /etc/samba/smb.conf
-----------------------

[global]

# symbolic link setting
unix extensions = no
wide links = yes
-----------------------

を追加してsambaを再起動

$ sudo service smbd restart

 

windowから共有可能となった。

samba設定で[global]も追記が必要だな。

 

あれ?タブ補完できんがな。

新しく作ったユーザーで作り方がまずかったのか?/homeにユーザディレクトリが
自動で出来てなかったが、いろいろ不都合が出てきた。
ログインすると$プロンプトだけやし(これはこれですっきりしていいけど)
って、これシェルがbashじゃないじゃん。
なので、キーボードでタブ補完やコマンドヒストリ↑キー機能が使えない。

 

1.まずsudoが使えるように
[USER_NAME]をsudoグループに追加する
$ sudo gpasswd -a [USER_NAME] sudo


2.ubuntuユーザから起動ファイル持ってきた。
$cd /home/[USER_NAME]
$sudo /home/ubuntu/.profile .
$sudo /home/ubuntu/.bashrc .

 

3./etc/passwd
/etc/passwd ってどうなっとるん?
$sudo vi /etc/passwd
やっぱ、/bin/sh になってる。

[New_User]:x:1001:1001::/home/[New_User]:/bin/sh

[New_User]:x:1001:1001::/home/[New_User]:/bin/bash

/bin/bashに変更してOK

 

以降は調べたのでもったいないからメモっておく。

■補完機能を使えるようにする
LinuxでTab補完ができないのはシェルがcshとか古いものになっている場合が多い
そもそもbash-completionがインストールされていれば問題なくすぐ使える。
入っていない場合
$sudo apt-get install bash-completion

でインストールして
補完機能を使えるようにするには”/etc/bash.bashrc“に”/usr/share/bash-completion/bash_completionを
読み込む設定を行います。

--------------
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion ←ここのコメント"#"を消す
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
#fi

-------------

強引だが、とな。

 

ちなみにbash起動時に実行される初期化ファイル
ユーザーがログインに成功した後、bashは「ログインシェル」として一般的に以下のような流れでファイルを順次検索し、ファイルが存在していれば実行し起動します。

1./etc/profileを実行
2./etc/profileによって、/etc/profile.dディレクトリ配下のすべてのファイルを実行
3.ログインユーザーのホームディレクトリにある̃/.bash_profileを実行*
4.̃/.bash_profileによって、̃/.bashrcを実行
5.̃/.bashrcによって、/etc/bashrcを実行

例えば、コマンドラインからのbashの起動、suコマンドで別のユーザーになった場合など、ログインシェルとしての起動ではない場合は、5のみが実行されます。

.bashrcファイルはテキストファイルのため、簡単に編集できる。編集しただけでは変更が反映されず、ログインし直すか、次のようにsourceコマンドを使用する必要がる。
$ source .bash_profile


そもそもubuntuユーザでLoginしてbashが使えて[New_User]でログインして使えないのって/etc/passwd をすぐに確認しなかったのが遠回りになった。
少しづつ思い出してきたかな。

RaspberryPi4からNASサーバーマウント

LinuxNASサーバー(windowでも可能)マウント

らずぱいのMicroSDは今回32GBなのでそんなにファイルを置くことはできないので
RaspberryPi4からNASサーバーをマウントして使ってみる。

 

1.マウントポイントを決める
/mntにマウントポイントを作る。

$sudo mkdir -p /mnt/oresama1

2.作ったマウントポイントにNASサーバをマウントする。

$sudo mount -t cifs //[NASサーバーのIPアドレス]/[ディレクトリ] /mnt/oresama1 -o user=[ユーザ名],password=[パスワード]
mount: /mnt/oresama1: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.

マウントできん。fileシステムのモード違うかな。

なるほどLinux 側からマウントするだけなら cifs-utils があればOKとのこと。
cifs-utilsをインストール

$sudo apt install cifs-utils

マウントしてみた。
$sudo mount -t cifs //[192.168.1.XX]/public /mnt/oresama1/ -o user=[XXXX],password=[YYYY]

マウントできました。

$ls /mnt/oresama1 で中身を確認

 

 

さっそくファイル共有ってとこか?

■ファイル共有機
window10とファイル共有できるようにsambaを設定。

サービスの稼働状況一覧を確認する
$service --status-all
以下のサービス[+]が稼働しているようだ。

[ + ] apparmor
[ + ] apport
[ + ] atd
[ - ] console-setup.sh
[ + ] cron
[ - ] cryptdisks
[ - ] cryptdisks-early
[ + ] dbus
[ - ] hwclock.sh
[ + ] irqbalance
[ - ] iscsid
[ - ] keyboard-setup.sh
[ + ] kmod
[ - ] lvm2
[ - ] lvm2-lvmpolld
[ + ] multipath-tools
[ - ] open-iscsi
[ + ] plymouth
[ + ] plymouth-log
[ - ] pppd-dns
[ + ] procps
[ - ] rsync
[ + ] rsyslog
[ - ] screen-cleanup
[ + ] ssh
[ + ] udev
[ + ] ufw
[ + ] unattended-upgrades
[ - ] uuidd

sambaは入ってないようだな。。

Ubuntuのサービスは「/etc/init.d/」フォルダの中で管理しているようです。

$service (コマンド名) status

 

■sambaのインストール
$sudo apt install samba
After this operation, 133 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y

 

早速設定

■ユーザを作成しておこう。

$sudo adduser ユーザ名

 ※useradd はホームディレクトリが作成されない

$sudo mkdir /home/ユーザ名

$ sudo chown ユーザ名:ユーザ名 /home/ユーザ名

$ls -l /home で確認

 

※adduserコマンドで対話型で作成するとユーザディレクトリもシェルの環境も整うのでadduserコマンドで作成すること。

 

■設定
共有場所:/home/samba
workgroup = WORKGROUP

/etc/samba/smb.conf に設定を追加

 

[public]
comment = RaspberryPi4 Server
create mask = 0777
directory mask = 0777
path = /home/samba
read only = No

■設定の確認(エラーがない事)

$testparm

[global]

[homes]

[printers]

[print$]

[public]
comment = RaspberryPi4 Server
create mask = 0777
directory mask = 0777
path = /home/samba
read only = No

 

■ユーザの作成(windowsからアクセスするときのsambaユーザを作成
$sudo pdbedit -a xxxx

 

■サービスの起動
$sudo service nmbd start

$sudo service smbd start

■起動時に立ち上がるようにしておく

$sudo systemctl enable smbd.service

$sudo systemctl enable nmbd.service

やっぱりLANケーブルうざい

■ネットワーク接続設定
RaspberryPiを立ち上げてSSHが使えるようになったのでもうディスプレイもキーボード
マウスもRaspberryPiに直接接続する必要もなく手元に置かなくいても良い状況になっ
たので置き場所を変えるか!っと思ったのですが、LANケーブルうざくない?せっか
wifi使えるのだからLANケーブル外しちゃお!って事でwifi設定にチャレンジ。

sshwifi設定
いつの間にか一般ユーザで実行可能な便利なCLI操作コマンドnmcliというのが
使われているようなのね。
network-manager パッケージがインストールされていれば
nmcli というコマンドを使用して設定ができるらしい。
早速試しにwifiの設定を行ってみた。

$sudo apt install network-manager

Wi-Fi ネットワークのリストを表示。
$nmcli device wifi list

$nmcli device wifi connect 'SSID' password 'wifi のパスワード' ifname wlan0

ということであっさりwifi接続OKとなりました。

以下nmcli コマンド利用方法のメモです。
便利なコマンドを使うとどこが触られてるかわからないなぁ。

>ネットワークデバイスの状態を確認
$nmcli device status

>ネットワーク(例えば wlan0)を切断する場合には
$nmcli dev disconnect wlan0

>接続したネットワークは、通常、次回からネットワーク検出時に自動的に接続が行われます。これが嫌な場合は、ネットワーク設定を削除。
$nmcli connection delete id SSID

>メニューで設定
$sudo nmtui

 

まずはラズパイ4

1.はじめに

しばらく触ってなかったRaspberryPI3机の中から引っ張り出してきて、さて何をしようかとWebで情報を見ていたら既にRaspberryPI4が発売されていた。

「へー!スペックもなかなか上がってるし」、さっそく買ってみた。

これでサーバーを立ち上げてみるか・・・って事で少しずつ設定をしていきます。

その備忘録をまず書いていきます。

 

2.OSを選定

 OSはいろいろあるが、専用のディスプレイやキーボード、マウスで使うのも場所をとるので、サーバ単体としてメインPCからのSSHで設定して行く事にした。

OSは「UBUNTU SERVER 20.10」を選択してMicroSD(32GB)に書き込んだ。

32GBが880円位で売ってたので。。

f:id:raspberrypi4:20210125173042j:plain

RaspberryPI-OS

3.起動

MicoroSDをセットして起動したら login:の表示。

え?root のパスワードは? ユーザは? 状態。

ググってみたら、ユーザ:ubuntu パスワード:ubuntu ここからスタート。

あとは、rootのパスワードを設定し無事Login。

$sudo passwd root

Enter new UNIX password:
Retype new UNIX password:

 

4.細かな設定へ

ここからはまずLANの状態だろ!って事でifconfig叩いたが、入ってない!

$sudo apt install net-tools でifconfig や netstat が使えるようになる。

 

次にモジュールのバージョンアップを実施

$sudo apt-get update

$sudo apt-get upgrade

少し放置して終了するまで待つ。

 

各種サーバの設定は次回へ