顯示具有 ubuntu 標籤的文章。 顯示所有文章
顯示具有 ubuntu 標籤的文章。 顯示所有文章

2025-03-03

OrbStack 安裝 Ubuntu 22.4, php 5.6 及 apache2

OrbStack 安裝 Ubuntu 22.4, php 5.6 及 apache2

某個專案還在老舊的 php 5.6 環境,macOS 15 Sequoia 目前已無法正常執行 XAMPP。在不小心升級 macOS 後,測試 php 5.6 程式是讓人困擾的問題。

原本想要使用 OrbStack 的 docker containers 功能,然而 container 需要不少設定,反而是一種麻煩的做法。後來還是以 VM 的方式來處理。OrbStack 的安裝就不贅述。

安裝 ubuntu vm

# *** 安裝 ubuntu vm *** # orb create --help # orb create [flags] DISTRO[:VERSION] [MACHINE_NAME] orb create ubuntu:jammy # 預設的 machine name 為 ubuntu
# *** 從 mac ssh 連線 vm *** # ssh [用戶名]@[虛擬主機名]@orb ssh root@ubuntu@orb
# *** 使用 vm 的 domain *** # ping [虛擬主機名].orb.local ping ubuntu.orb.local # mac host 的 ip 可以直接使用區域網路 ip

在 vm 中可以透過 /mnt/mac 路徑找到 mac 的對應檔案。

安裝 php 5.6

以 ssh 登入 vm 後,依下列步驟安裝 php 5.6

# *** 1. 更新系統 repo 資料 apt update # *** 2. 安裝 software-properties-common 以管理 PPA (Personal Package Archives) apt install software-properties-common # *** 3. php 5.6 已經不是官方維護的版本,需依賴 PPA add-apt-repository ppa:ondrej/php # *** 4. 再更新系統 repo 資料一次 apt update # *** 5. 安裝 php 5.6 apt install php5.6 # *** 6. 安裝 php 常用套件 apt install php5.6-mysql php5.6-curl php5.6-json php5.6-cgi php5.6-xml php5.6-mbstring php5.6-gd # *** 7. 確認 php 版本 php -v # *** 8. 啟用 apache2 模組 # 在安裝 apache2 之後才可以執行 # a2dismod php8.3 # 若有需要先關閉新模組 a2enmod php5.6

安裝 apache2

apt install apache2
# 啟用 rewrite module a2enmod rewrite
# /etc/apache2/mods-enabled 裡啟用的模組參考 access_compat.load -> ../mods-available/access_compat.load alias.conf -> ../mods-available/alias.conf alias.load -> ../mods-available/alias.load auth_basic.load -> ../mods-available/auth_basic.load authn_core.load -> ../mods-available/authn_core.load authn_file.load -> ../mods-available/authn_file.load authz_core.load -> ../mods-available/authz_core.load authz_host.load -> ../mods-available/authz_host.load authz_user.load -> ../mods-available/authz_user.load autoindex.conf -> ../mods-available/autoindex.conf autoindex.load -> ../mods-available/autoindex.load cache.load -> ../mods-available/cache.load cache_disk.conf -> ../mods-available/cache_disk.conf cache_disk.load -> ../mods-available/cache_disk.load deflate.conf -> ../mods-available/deflate.conf deflate.load -> ../mods-available/deflate.load dir.conf -> ../mods-available/dir.conf dir.load -> ../mods-available/dir.load env.load -> ../mods-available/env.load expires.load -> ../mods-available/expires.load file_cache.load -> ../mods-available/file_cache.load filter.load -> ../mods-available/filter.load headers.load -> ../mods-available/headers.load mime.conf -> ../mods-available/mime.conf mime.load -> ../mods-available/mime.load mpm_prefork.conf -> ../mods-available/mpm_prefork.conf mpm_prefork.load -> ../mods-available/mpm_prefork.load negotiation.conf -> ../mods-available/negotiation.conf negotiation.load -> ../mods-available/negotiation.load php5.6.conf -> ../mods-available/php5.6.conf php5.6.load -> ../mods-available/php5.6.load reqtimeout.conf -> ../mods-available/reqtimeout.conf reqtimeout.load -> ../mods-available/reqtimeout.load rewrite.load -> ../mods-available/rewrite.load setenvif.conf -> ../mods-available/setenvif.conf setenvif.load -> ../mods-available/setenvif.load socache_shmcb.load -> ../mods-available/socache_shmcb.load ssl.conf -> ../mods-available/ssl.conf ssl.load -> ../mods-available/ssl.load status.conf -> ../mods-available/status.conf status.load -> ../mods-available/status.load

安裝 Mariadb 10

# *** 1. 更新套件資訊 apt update # *** 2. 查看可以安裝的子版本 apt-cache policy mariadb-server # *** 3. 安裝 apt install mariadb-server
# 以 mysql client 使用 root 登入 mysql -uroot # 變更 root 密碼 ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密碼'; # 建立管理用戶給 phpmyadmin 使用 CREATE USER 'pmauser'@'localhost' IDENTIFIED BY 'pmauser'; GRANT ALL PRIVILEGES ON *.* TO 'pmauser'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; # 查看使用者 SELECT User, Host FROM mysql.user;

2020-11-21

在 ubuntu 使用 screen 背景執行

在 ubuntu 使用 screen 背景執行

通常終端機指令在其後下 & 就可以背景執行,不過很不方便。screen 用起來就方便多了。 尤其是使用 ssh 遠端登入,就算網路斷線或者筆電進入睡眠狀態,也不用擔心程式跑一半就斷了;同時又可以接回去原本的訊息畫面。

# 查看有沒有安裝 screen $ screen --version # 若沒有安裝,以 apt 安裝 $ sudo apt install screen # 查看背景執行的程式 $ screen -ls # 開始,直接下 screen 指令,然後按 Enter 進入即可 $ screen # 進入後像是進入另一個 shell 一樣,執行你要執行的指令後,可以關掉 terminal # 退出 screen $ exit

以下是查看的例子:

$ screen -ls There are screens on: 220648.pts-4.backup-sfo2-20201024 (11/20/20 11:05:38) (Detached) 210531.pts-0.backup-sfo2-20201024 (11/18/20 23:00:07) (Attached)

使用參數 -r 可以連接目前分離狀態 (Detached) 的 terminal

# id 打前面幾個字元按 tab 即可 $ screen -r 220648.pts-4.backup-sfo2-20201024

使用參數 -x 可以搶用目前不是在分離狀態 (Attached) 的 terminal

# id 打前面幾個字元按 tab 即可 $ screen -x 210531.pts-0.backup-sfo2-20201024

2020-11-20

在 ubuntu 建立磁碟交換區 swap

在 ubuntu 建立磁碟交換區 swap (暫存區)

本篇筆記參考How To Add Swap Space on Ubuntu 16.04

文中警告,swap 可能會降低 SSD 硬碟的壽命!

# 查看是否有磁碟交換區 $ sudo swapon --show # 查看記憶體使用情況(亦會顯示交換區) $ free # 建立 swap 之前,先了解磁碟的使用狀況 $ df -h # 建立一個用來當做 swap 的檔案 swapfile(名稱可自己決定), # 大小為 4g,通常為實體記憶體的一半到相同大小,視情況而定 $ sudo fallocate -l 4G /swapfile # 變更為只有 root 能用 $ sudo chmod 600 /swapfile # 設定檔案為交換區 $ sudo mkswap /swapfile # 啟用檔案為交換區 $ sudo swapon /swapfile # 若要在下次重開機時,重新掛載 swap,需編輯 /etc/fstab # 先備份檔案,以免發生悲劇 $ sudo cp /etc/fstab /etc/fstab.bak # 將設定內容加入檔案,就全部完成 $ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

2020-05-16

Raspberry Pi 4 model B 安裝 Ubuntu 64-bit

Raspberry Pi 4 model B 安裝 Ubuntu 64-bit

Raspberry Pi 4 B 的 CPU 為 ARMv7l,是 32-bit 的 CPU,一般只會安裝 32-bit 的 OS。

但有些軟體已經不再支援 32-bit 的環境,此時使用 64-bit 變成一個基本需求。可喜的是 Ubuntu 官方已經提供 64-bit for Raspberry Pi 的 OS,不需要再到網路上找複雜的處理方式。

先到 Ubuntu 官網 下載 for Raspberry Pi 的 image 檔,現在可以選 Ubuntu 20.04 64-bit 的版本。雖然 R-Pi 官方的 Imager 裡已經有提供 Ubuntu 64-bit 的選項,但是還是建議先下載再使用 Imager,因為下載速度真的很慢。

接著再依照 How to install Ubuntu on your Raspberry Pi 安裝即可。

我個人是直接接實體網路線,所以 wifi 的設定都省了。

查看目前系統中可以安裝的 nodejs 和 mongodb 版本:

ubuntu@ubuntu:~$ apt-cache policy nodejs nodejs: Installed: (none) Candidate: 10.19.0~dfsg-3ubuntu1 Version table: 10.19.0~dfsg-3ubuntu1 500 500 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages ubuntu@ubuntu:~$ apt-cache policy mongodb mongodb: Installed: (none) Candidate: 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu5 Version table: 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu5 500 500 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages

如果沒有要太新的功能 nodejs 10 是可以接受的,安裝 nodejs 和 npm:

sudo apt install nodejs sudo apt install npm

也可以直接裝 MongoDB 3.6。若要安裝 MongoDB 4.2 可以參考這篇 Install Node.js and Npm on Raspberry Pi

2019-02-09

MongoDB 遠端連線 (ubuntu 18.04)

MongoDB 的安裝可以直接參考官方說明:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

這裡的 MongoDB 版本為 4.0.6。MongoDB 安裝完成後,只允許 localhost 的連線,而且沒有任何的權限限制,可以連上線的都是管理者權限。但不用太擔心,因為沒有設定的情況下,遠端是無法連線的。

如果使用 ssh 連線到主機,再使用 mongo client 管理,理應也不需要設定。但我希望可以用家裡的 mac 使用 Robo 3T 連線到主機管理,這個時候就需要做些設定,本篇是採用簡便的 Role-Based Access Control 做法。

1. 針對 admin 資料庫設定管理者。選用 admin 資料庫,並建立管理權限的管理者帳號,請參考 Enable Auth 。預設的權限角色請參考 Built-In Roles 。
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

2. 先將服務停下來:
$ sudo service mongod stop

3. 設定 /etc/mongod.conf 裡的 net.bindIp。伺服器綁定的 IP,可將 net.bindIp 設定為 0.0.0.0 或使用 net.bindIpAll 設定為 true。亦或者設定為 Server 實際使用的 IP 及 127.0.0.1。
net:
  port: 27017
  bindIp: 127.0.0.1,157.23.???.???

4. 設定 /etc/mongod.conf 裡的 security.authorization 為 enabled,啟用帳密限定連線。
security:
  authorization: enabled

5. 啟動服務:
$ sudo service mongod start

6. 連線時,需要輸入帳號及密碼
$ mongo -u myUserAdmin -p abc123

如此就可以透過 Robo 3T 從遠端連線管理 MongoDB 了。

另外,可以參考這篇使用 ufw 防火牆去限定連線來的 ip。記得要開啟必要的 ports:
$ sudo ufw allow OpenSSH
$ sudo ufw allow from 你個人電腦的IP to any port 27017
$ sudo ufw allow http
$ sudo ufw allow https







FB 留言