Leon

圖片來自 Stackscale

Adminer 很簡單,它只是一個 php 檔案,抓回來放到 web server 目錄下就好:

> cd /usr/share/nginx/html/
> wget https://www.adminer.org/latest.php
> mv latest.php adminer.php

可是事情果然沒那麼簡單!這樣跑下去它會報錯,找不到 PHP 連接 MariaDB 的庫。

又再次因為我是裝 CentOS Software Collections 的 PHP,所以額外的套件也都要裝 SCL 提供的,把必要的套件裝起來:

> sudo yum install rh-php72-php-mysqlnd

還沒完,/var/opt/rh/rh-php72/lib/php/ 這個地方裡面的子目錄,群組都被設成 apache,可是因為我是用 nginx,要把群組改成 nginx 才可讓 nginx 有能力寫入這些子目錄。

以上做完當然試開一下瀏覽器看看 Adminer 有沒有正常跑起來。

--

--

圖片來自 Stackscale

因為本人的某種對新版的偏執的愛好,就是想用 Python 3,可是卻又找不到 python3-pip 這個包,故有以下解。

裝 Python 3:

> sudo yum install python

然後參考一下 Recommended way to install pip(3) on centos7 這篇:

> sudo python36 -m ensurepip

有興趣可以自己去調查一下 ensurepip 的由來。

這樣就有 pip 了!(撒花)

再用 pip 把它自己更新一下:

> sudo -H pip3 install --upgrade pip

開始裝 mycli:

> sudo -H pip3 install mycli

裝完試一下:

> mycli -u root

可以連入應該就是沒問題。

--

--

CentOS 裝 MariaDB 10
圖片來自 Stackscale

一樣因為 CentOS 自帶的 MariaDB 太舊,改用 CentOS Software Collections 提供的 MariaDB 10。

這篇參考〈How to Install and Configure a LEMP Stack using Software Collections on CentOS 7〉。

先安裝:

> sudo yum install rh-mariadb102

跑起來:

> sudo systemctl start rh-mariadb102-mariadb

讓這個 SCL 管理的 MariaDB 進入 path 內:

> source scl_source enable rh-mariadb102

執行安裝後組態設定,應該要用 root 權限跑,但不知為何跑不了,所以改先開一個 root shell 再跑。

> sudo bash
> source /opt/rh/rh-mariadb102/enable
> mysql_secure_installation
  1. 被問 root 密碼,在此指 DB 的 root,非 OS 的 root,目前沒有,就 Enter 過去。
  2. 設定 DB root 密碼。
  3. 關閉匿名帳號登入權限。
  4. 讓 root 只能從本機連線。
  5. 把 test 資料庫刪掉。
  6. 重載入權限表讓以上決定生效。

設定開機啟動 MariaDB:

> sudo systemctl enable rh-mariadb102-mariadb

照 SCL 慣例,設定擋在 /etc/opt/rh/rh-mariadb102/ 內、程式等等都在 /opt/rh/rh-mariadb102/ 內。

測試一下連線:

> mysql -u root -p

沒問題就這樣了。

最後一樣在 /etc/profile.d/ 建一支小 shell script 讓開機就自動把 SCL 的 mariadb 加到路徑內,方便執行 mysql:

# /bin/bashsource scl_source rh-mariadb102

後面大概再裝一下 phpMyAdmin 和 mycli 就差不多了。

--

--

圖片來自 Stackscale

因為我們是用 CentOS Software Collection 的 PHP 7,所以 PHP FPM 也要用 SCL 提供的。

主要是參考 〈CentOS 7 安裝 Nginx、MySQL / MariaDB、PHP7,架設 LEMP 網頁伺服器筆記〉。

先把 PHP FPM 裝起來:

> sudo yum install rh-php72-php-fpm

修改 /etc/opt/rh/rh-php72/php-fpm.d/www.conf,把 user、group 設定為 nginx:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
;user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache
group = nginx

把 PHP FPM 跑起來:

> sudo systemctl start rh-php72-php-fpm

再把 PHP FPM 設為開機啟動服務:

> sudo systemctl enable rh-php72-php-fpm

下一篇來研究 nginx * PHP FPM 的作法。

--

--

圖片來自 Stackscale

參考 CentOS wiki 文章〈Using PHP 7.x on CentOS 7.4〉的前半部份。

預設的軟體庫只有 PHP 5,要啟用 CentOS Software Collections 這個庫才會有 PHP 7。

設定 Software Collections 庫:

> sudo yum install centos-release-scl

然後就可以裝 PHP 7 了:

> sudo yum install rh-php72

一些有依賴到的套件也都會一併裝上。

裝上是裝上,是裝到那去呢?看這篇:〈What Files Are In a RPM Package?〉。

路徑在 /opt/rh/rh-php72/ 內。用 scl 把 PHP 啟用

> sudo scl enable rh-php72 bash

這樣會執行一個新的 bash session,並且把那 PHP 7 引入 path 內,可是重開機就失效了…。

再參考一下〈PHP 7.0 or 7.1 on RHEL or CentOS〉這篇的作法,在 /etc/profile.d/rh-php72.sh 建一個小 shell script 讓它在登入時自動執行,把那 PHP 7 自動加入 path 內:

#!/bin/bash
source scl_source enable rh-php72

把這支 script 設為可執行以便日後手動使用:

> sudo chmod a+x /etc/profile.d/scl.sh

設定 nginx * PHP 見下篇。

--

--

圖片來自 NGINX

CentOS 是選用 CentOS 7.4 Minimal with Webmin (HVM),它已經幫我們設定好一些常用的 CentOS EPEL。 ❤

抄一下這篇〈於CentOS7安裝 Nginx + php7 + php-fpm + Laravel5.6〉。

裝下去:

> sudo yum install nginx

設定開機執行 NGINX:

> sudo systemctl enable nginx

啟動 NGINX:

> sudo systemctl start nginx

systemctl 指令的解說可以讀一下 Arch Linux 的主題文章

以上做完,試開一下應該就可以看到 Welcome to nginx 的頁面了。注意到這個頁面檔案放在 /usr/share/nginx/html/。

--

--

Odoo 安裝
圖片來自 Savoir-faire Linux

Odoo 是企業用的商業套件,主要是 ERP,不過除了庫存、帳務控制外,也包了很多很多的模組,也可以自行擴展,又是 open source 的。

利用這段長假花點時間開始研究研究。從安裝開始,安裝主要是參考官方文件 Installing Odoo,採用 DEB 的模式安裝。

Odoo 需要搭配 PostgreSQL 使用,先把 PostgreSQL 裝起來:

> sudo apt install postgresql

輸出 PDF 則是靠 wkhtmltopd,也裝起來:

> sudo apt install wkhtmltopdf

開始加 Odoo APT repository:

> wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -> echo "deb http://nightly.odoo.com/12.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list> sudo apt update
> sudo apt install odoo

以上跑完,確認一下服務有沒有跑起來:

> sudo service --status-all

應該會看到 [ + ] odoo[ + ] postgresql

註記一下安裝多了或動了哪些檔案或目錄:

  • /etc/init.d/odoo
  • /etc/logrotate.d/odoo
  • /etc/odoo
  • /lib/systemd/system/odoo.service
  • /usr/bin/odoo
  • /usr/lib/python3/dist-packages/odoo
  • /usr/share/doc/odoo

瀏覽器開到 http://localhost:8069 就可以看到初次啟動的設定頁面了,自由發揮填一下,等它跑完就會自動進入主畫面,安裝完畢。

--

--

Leon

Leon

產品開發的「思想的巨人、行動的侏儒」。https://leonh.space/