[ubuntu][24.04]安裝nginx php

要安裝 nginx:

#sudo apt-get install nginx

安裝 php:

  假如你下指令只安裝PHP的話,它會連Apache2一起安裝。
  若不想安裝Apache2,則必須先裝PHP的其他套件,像是php-fpm、php-cgi。
  (php-fpm是nginx執行PHP必要的套件)

#sudo apt install php-fpm php-cgi

  再安裝php

#sudo apt install php

沒有指定安裝版本,會直接安裝最新的穩定版本(8.3)。
  假如想要安裝舊版本的PHP,在指令中加上版號即可,如:

sudo apt install php7.2 php7.2-fpm php7.2-cgi

設定 nginx:

nginx的設定檔預設在/etc/nginx/sites-available/default

可以去開啟它 #vi /etc/nginx/site-available/default

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock
fastcgi_params SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

改好後記得檢查再重啟nginx

#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

#systemctl restart nginx

上面的完成應該就可以在php檔中執行phpinfo()來看PHP的環境設定。其他的套件就再另外安裝、測試。

#vi /var/www/html/i.php

# vi /var/www/html/i.php
[i]
<?php
phpinfo()
?>
[ESC]:wq

再用瀏覽器開啟該頁面,看是否正常常呈現

win10內建hash值工具

下載完後可以使用win10內建的hash值工具certutil來核對

Windows 10 已經有內建計算檔案 hash 值工具 certutil 使用方式如下

certutil -hashfile <filename> <hash-mode>

當你下載了一個檔案, 要確認是否過程有被竄改, 可以檢查hash值, 如下圖所示, 站台提供的hash值是用SHA256方式演算

下載完後可以使用win10內建的hash值工具certutil來核對是否正確, 操作如下:

再把二個值放在一起比對即可確認該檔沒有被竄改過

[Ubuntu][24.04]以 netplan 設定網路靜態IP

Ubuntu 自 17.10 以後就可以用 netplan 設置網卡~

查看設定檔

所有放置於 /etc/netplan 底下的 yaml 檔都會影響 netplan 的設置,檢查設定檔看到只有一個 00-installer-config.yaml,內容空空如也,一般來說在安裝系統時有設定過網路就會有,如果沒有的話就自己新增囉:

# 查看設定檔
$ ls /etc/netplan/
00-installer-config.yaml
$ cat 00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      dhcp4: true
  version: 2

手動修改設定檔

配置特定網卡的方法就是在 YAML 內將配置寫入,如下:

network:
    ethernets:
        ens160:
          dhcp4: false
          addresses: 
            - 192.168.26.76/24
          routes:
            - to: default
              via: 192.168.26.1
          nameservers:
            addresses: 
              [10.0.1.10,192.168.27.3]
    version: 2

設定檔測試

遠端工作時如果套用了錯誤的網路設定檔就失聯了,因此在套用之前可以先用 netplan try 測試測定檔是否設置正確,測試套用後如果沒有在120秒之內進行確認(例如套用了錯誤的網路設定導致使用者斷線)就會回復至先前有效的設定,讓使用者可以再次連上機器修正配置:

$ sudo netplan try
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 120 seconds
Configuration accepted.

測試無誤後就可以直接讓設定檔生效了:

$ sudo netplan apply

查看現況

$ 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
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:bd:b7:dc brd ff:ff:ff:ff:ff:ff
    inet 192.168.26.76/24 metric 100 brd 192.168.26.255 scope global dynamic enp0s3
       valid_lft 531sec preferred_lft 531sec
    inet6 fe80::a00:27ff:febd:b7dc/64 scope link 
       valid_lft forever preferred_lft forever

Ubuntu 2204 修改預設 editor

Ubuntu環境下,如何更改預設的「editor」

操作說明
執行下面的指令,就可以設定改用其他慣用的文字編輯器了。

sudo update-alternatives --config editor

會出現一個類似如下的列表,選擇你預設要使用的文字編輯器就行了。

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number:

我輸入「4」,按下「Enter」。

上面的操作完畢後驗證一下,看看是不是你想要預設使用的編輯器。

執行下面的指令

editor

或是執行下面的指令

sensible-editor

另外也可以直接執行下面的指令,更改成你慣用的文字編輯器

例如:

慣用 nano

sudo update-alternatives --set editor /bin/nan

慣用 vim.tiny

sudo update-alternatives --set editor /usr/bin/vim.tiny

Linux 限制帳號及群組 SSH 同時登入

在登入 SSH 時, 可以開啟多個 SSH Client , 使用同一個帳號同時連接, 這個情況有時也是需要的。但如果要限制個別帳號同時登入的數量, 可以用以下方法設定。

在多數 Linux 發行版, 在 /etc/security/ 目錄下的 limits.conf 檔案, 可以設定每個帳號或群組同時建立 SSH session 的數量。編輯這個檔案需要有 root 權限, 可以用 sudo 開啟:

$ sudo vi /etc/security/limits.conf

例如想限制帳號 opencli 只可以同時建立一個 SSH session, 可以加入以下內容:

opencli hard maxlogins 1

如果要限制群組的帳號, 可以用以下格式:

groupname hard maxlogins 1

如果要限制系統所有帳號, 可以用 * 取代帳號名稱:

* hard maxlogins 1

當帳號嘗試建立超出限制的 session 時, 登入時會看到以下錯誤:

Too many logins for ‘opencli’.
Last login: Tue Feb 20 08:12:11 2020 from xxx.xxx.xxx.xxx
Connection to xxx.xxx.xxx.xxx closed.

另一種情況是想限制整台主機可以建立的 session, 可以用 maxsyslogins:

* hard maxsyslogins 1

設定了上面語法後, 系統同時只可以該一個帳號建立一個 SSH sessions.

第一次使用foodpanda叫餐

因為大地已經無法自行出門買餐,連走路都不太穩,因此前半個月以來都是我每天下班後買便當回來給二位吃,但時間上都會比較晚。看他們吃飯時餓得反應,心理覺得難過。

Sophia建議可以叫外送,這個並不是沒想過;但是怕送餐後無法通知老人家,因為按電鈴、打電話他們都聽不到。

今天出門前有特別交待老天下午5點要把助聽器戴起來,所以5點多時第一次透過網站向foodpanda訂餐給他們,並打電話交待管理員代收後通知我家裡。

到了foodpanda的網站發現地址輸入很奇怪, 我輸入完後它會自己打門牌號碼消失,我試了幾次都這樣,以為是正常,就訂了一個便當指定送回家,並線上LINE PAY結帳。結果我騎車到自強隧道口就接到來電,外送員說我沒有指定地址,只有街道名稱,於是我口述給他地址,無法避免心中的忐忑不安。

一路上沒有再接到電話,結果回到家看到他們已經吃一半了,才放下心來。但管理室通知的過程也是頗多曲折,但最終仍是有成功送餐。

感謝所有協助的貴人!

初次使用opensuse-15.4

使用Linux也已經有20年了,從Redhat 6.2開始接觸,大都是以RHEL家族的發行版為主,Redhat 9後因為Redhat政策改變,接著用CentOS 3。

一直到最新的CentOS 8 EOL因為CentOS政策的改變,所以也是要找尋新的發行版來使用。雖然2010左右因為去考LPIC的證照而接觸了Ubuntu,但它是另一個debian的家族。

今天因為要裝MSTR的需求,所以指定要用SUSE,雖然之前有聽過,但從未真正的使用過。今天機緣巧合也算是緣份,剛好操作到它。發現它也是很有特色,沒有fdisk可以用,很多功能都做在yast上面,它幾乎可以涵蓋大多數的常用功能。

但netstat這個常用指令卻無法下,查詢套件也有安裝,後來爬文後才知道改用 ss 。其實也沒有什麼不同,習慣就好了。之後公司的SAP主機都會改用SUSE-Enterprise 熟悉一下也是不錯的機會。

使用 certbot 向 Let’s Encrypt 申請憑證

安裝 certbot

官方建議使用 Canonical 的 snapcraft 來進行安裝。
Ubuntu 通常都已預裝好 snapcraft (因為 Ubuntu 的爸爸就是 Canonical),可以使用下方的指令確保使用最新的 snapcraft 版本。

sudo snap install --classic certbot

設定軟連結讓 Certbot 指令可以執行。

sudo ln -s /snap/bin/certbot /usr/bin/certbot

向 Let’s Encrypt 申請憑證

啟動 Certbot,使用手動授權方法搭配 DNS 查問以驗證網域所有權,這會為您的頂層網域及其子網域請求萬用字元憑證。

sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  • –manual:使用手動驗證。
  • –preferred-challenges dns:使用 dns (亦可改用http)的方式 challenge 。
  • certonly:只產生憑證,讓 Certbot 不要自動產生或修改 Nginx 的設定檔案。

解決ssh遇到[no matching host key type found]的問題

當你使用ssh要連線某主機時,竟發現這個訊息,並且無法連線時怎麼辧 ?

解決的辦法是把ssh指定加密的算法就可以連線,舉例如下

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa aliok@192.168.7.14

或者sftp也可以使用

sftp -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa aliok@192.168.7.14

如果是經常性要連線的主機,可以在設定檔中修改,不必每次下這麼多參數

~/.ssh/config

內容範例如下

Host 192.168.7.14
  HostName 192.168.7.14
  User john
  Port 22
  HostKeyAlgorithms +ssh-rsa
  PubkeyAcceptedKeyTypes +ssh-rsa

Rocky與CentOS 8 網卡指令

Rocky 與 CentOS 的網卡指令從第8版後已經不再是systemctl restart network, 而是改用『nmcli』 這個指令。

查看網卡IP

ip address

可簡化為

ip a

列出網卡資訊

nmcli

查看網卡狀態

nmcli device status

秀出網卡詳細資訊

nmcli device show

查看網卡en160詳細資訊

nmcli device show ens160

重啟網卡

nmcli connection restart

啟動或關閉網卡

nmcli c up ens160
nmcli c down ens160

設定網卡開機自動啟動

nmcli c modify ens160 connection.autoconnect yes

剛除連接網卡

nmcli c delete ens160

新增/刪除一個IP位址和閘道

nmcli c modify ens160 +ipv4.address 192.168.0.3/24  #新增ip
nmcli c modify ens160 -ipv4.address 192.168.0.3/24  #删除ip
nmcli c modify ens160 ipv4.gateway 192.168.0.1  #設定閘道

設定DNS

nmcli c modify ens160 ipv4.dns 8.8.8.8  #新增DNS
nmcli c modify ens160 -ipv4.dns 8.8.8.8  #删除DNS

設定IP取得方式

nmcli connection modify ens160 ipv4.method manual  #手動設定
nmcli connection modify ens160 ipv4.method auto  #DHCP自動取得

讓設定重效(修改後要執行才能生效)

nmcli connection reload

立刻生效網卡設定, 不必重新啟動系統(三擇一)

nmcli c up ens160
nmcli device connect ens160
nmcli device reapply ens160

snmp v2 設定mrtg

方法只是差別在多一個參數而已,另外產出的cfg檔裡, IP後面也都會加5個冒號

SNMPv1:
cfgmaker public@192.168.1.1 > kh.cfg

SNMPv2:
cfgmaker –snmp-options=:::::2 public@192.168.1.1 > kh.cfg