1. 程式人生 > 實用技巧 >CentOs8安裝redis與Linux安裝GDI+圖形

CentOs8安裝redis與Linux安裝GDI+圖形

1、安裝

yum install redis

2、編輯配置檔案

vim /etc/redis.conf

#requirepass那行並開啟註釋,在後面寫自己的密碼,如下
requirepass yourpassword
將bind 後 127.0.0.1 改為 內網IP    # 為安全起見,請勿使用 0.0.0.0
protected-mode yes 改為 protected-mode no    # 關閉保護模式
daemonize no 改為 daemonize yes    # 開啟守護程序

3、啟動

systemctl start redis
//重啟
systemctl stop redis

4、開啟自啟動

systemctl enable redis

5、開放防火牆埠(如有需要)

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
//重啟防火牆
systemctl restart firewalld

.net core GUI+庫 在linux釋出的坑

微軟官方提供了一個元件System.Drawing.Common實現生成驗證碼、二維碼,QRCoder是一個非常強大的生成二維碼的元件,它使用了System.Drawing.Common

在Windows沒問題 釋出到linux生成就會出現

該異常的意思是: 找不到DLL libgdiplus

System.Drawing.Common 元件提供對GDI+圖形功能的訪問。它是依賴於GDI+的,那麼在Linux上它如何使用GDI+,因為Linux上是沒有GDI+的。Mono 團隊使用C語言實現了GDI+介面,提供對非Windows系統的GDI+介面訪問能力(個人認為是模擬GDI+,與系統圖像介面對接),這個就是 libgdiplus。進而可以推測 System.Drawing.Common 這個元件實現時,對於非Windows系統肯定依賴了 ligdiplus 這個元件。如果我們當前系統不存在這個元件,那麼自然會報錯,找不到它,安裝它即可解決。

libgdiplus github: https://github.com/mono/libgdiplus

1.CentOS

#一鍵命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/centos7.sh|sh

或者

yum update
yum install libgdiplus-devel -y
ln -s /usr/lib64/libgdiplus.so /usr/lib/gdiplus.dll
ln -s /usr/lib64/libgdiplus.so /usr/lib64/gdiplus.dll

2.Ubuntu

#一鍵命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/ubuntu.sh|sh

或者

apt-get update
apt-get install libgdiplus -y
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

3.Docker

Dockerfile 加入 RUN 命令,以官方 asp.net core runtime 映象,以 asp.net core 2.2 作為示例:

FROM microsoft/dotnet:2.2.0-aspnetcore-runtime
WORKDIR /app
COPY . .
RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
EXPOSE 80
ENTRYPOINT ["dotnet", "<你的入口程式集>"]

apt-get update 這一步是必不可少的,不然會報找不到 libgdiplus。但是官方映象裡面使用的軟體包源又是國外的地址,所以造成我們使用國內網路非常慢,進而造成整體構建過程非常慢。下面有兩個解決方案:

直接使用打包好的Docker映象

該映象是基於微軟官方映象打包的,只安裝了 libgdiplus,不新增任何新增劑。

將 Dockerfile 中的 FROM microsoft/dotnet:2.2.0-aspnetcore-runtime 換為 FROM stulzq/dotnet:2.2.0-aspnetcore-runtime-with-image

示例:

FROM stulzq/dotnet:2.2.0-aspnetcore-runtime-with-image
WORKDIR /app
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "<你的入口程式集>"]