使用 acme.sh 取得 Let’s Encrypt 免費 SSL證書

使用 acme.sh 取得 Let’s Encrypt 免費 SSL證書

安裝 acme.sh
# wget -O – https://get.acme.sh | sh

將 acme.sh 的別名指定到路徑上
# alias acme.sh=~/.acme.sh/acme.sh
(解除:unalias acme.sh )

產生證書
更新:目前 acme.sh 採用 ZeroSSL,首次申請SSL證書時必須要使用email註冊一個帳號
acme.sh –register-account -m Email@gmail.com

單一網域申請證書:
# acme.sh –issue -d 你的網域 -w 網域的根目錄
# acme.sh –issue -d domain.com -w /var/www/html

多個網域申請證書:
# acme.sh –issue -d 你的網域A -d 你的網域B …… -w 網域的根目錄
# acme.sh –issue -d domain.com -d www.domain.com -d dev.domain.com -w /var/www/html

當證書產生完成後,畫面上最後會顯示你的每一個證書所產生的路徑!

Your cert is in /家目錄/.acme.sh/你的網域/你的網域.cer
Your cert key is in /家目錄/.acme.sh/你的網域/你的網域.key
The intermediate CA cert is in /家目錄/.acme.sh/你的網域/ca.cer
And the full chain certs is there: /家目錄/.acme.sh/你的網域/fullchain.cer

由於安裝程序的過程中已經自動設定了 corntab 了 使用 crontabl -l 查看指令

Ubuntu 20 使用 Anaconda 解決tensorflow gpu 問題

Ubuntu 20 使用 Anaconda 解決tensorflow gpu 問題

簡單作法如下
1.安裝 NVIDIA 官方 driver
2.建立 conda env (TF2.2) 並一併安裝 tensorflow-gpu
這步驟會把 cuda toolkit、 CUDNN 一起安裝
3.啟動 ENV (TF2.2)
4.跑 code

—————
1.安裝 NVIDIA 官方 driver:
清除原有的nvidia driver (如果你有的話)
sudo apt-get purge nvidia*
加入顯卡 ppa
sudo add-apt-repository ppa:graphics-drivers
package 更新
sudo apt-get update
sudo apt upgrade
Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
找出目前支援的GPU driver 版本
ubuntu-drivers list
安裝 nvidia driver
sudo apt install nvidia-driver-VERSION_NUMBER_HERE
我目前 (2021/7) 使用 460 版本
sudo apt install nvidia-driver-460
安裝完後重啟
sudo reboot
檢查是否安裝成功
nvidia-smi

2.
conda create –name tf python=3.7.5 tensorflow-gpu==2.2.0
conda activate tf

acme.sh 預設 CA 更新為 ZeroSSL 引起的問題

acme.sh 預設 CA 更新為 ZeroSSL 引起的問題

[Mon Jul 12 15:53:31 CST 2021] Using CA: https://acme.zerossl.com/v2/DV90
[Mon Jul 12 15:53:31 CST 2021] No EAB credentials found for ZeroSSL, let’s get one
[Mon Jul 12 15:53:31 CST 2021] acme.sh is using ZeroSSL as default CA now.
[Mon Jul 12 15:53:31 CST 2021] Please update your account with an email address first.
[Mon Jul 12 15:53:31 CST 2021] acme.sh –register-account -m my@example.com
[Mon Jul 12 15:53:31 CST 2021] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
[Mon Jul 12 15:53:31 CST 2021] Please add ‘–debug’ or ‘–log’ to check more details.
[Mon Jul 12 15:53:31 CST 2021] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
Error: Create Let’s Encrypt SSL Certificate failed!

因為預設使用ZeroSSL 需要先註冊,改回使用Let’s Encrypt,使用指令:

# .acme.sh/acme.sh –set-default-ca –server letsencrypt

Done!

[更新]

acme.sh –set-default-ca –server letsencrypt
↑改為預設letsencrypt

/dev/mapper/VolGroup-lv_root爆滿 調整大小

/dev/mapper/VolGroup-lv_root爆滿 調整大小

目標:將VolGroup-lv_home縮小到20G,並將剩余的空間添加給VolGroup-lv_root

1.首先查看磁盤使用情況

[[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 154G 7.9G 139G 6% /
tmpfs 1.9G 100K 1.9G 1% /dev/shm
/dev/sda1 485M 69M 391M 15% /boot
/dev/mapper/VolGroup-lv_home 299G 984M 283G 1% /home
2、卸載/home

[root@localhost ~]# umount /home
umount /home 如果提示無法卸載
[root@localhost ~]# umount –lf /home 強制卸載
-f:強制卸載
-l:清除與文件系統相關的引用
3、調整分區大小

[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
如果提示運行“e2fsck -f /dev/mapper/VolGroup-lv_home”,則執行相關命令:
[root@localhost ~]# e2fsck -f /dev/mapper/VolGroup-lv_home 然後重新執行命令:
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
註:resize2fs 為重新設定磁盤大小,只是重新指定一下大小,並不對結果有影響,需要下面lvreduce的配合

4、掛載上/home,查看磁盤使用情況

[root@localhost ~]# mount /home
[root@localhost ~]# df -h
5、設置空閑空間
使用lvreduce指令用於減少LVM邏輯卷占用的空間大小。可能會刪除邏輯卷上已有的數據,所以在操作前必須進行確認。記得輸入 “y”
[root@localhost ~]# lvreduce -L 20G /dev/mapper/VolGroup-lv_home
註:lvreduce -L 20G的意思為設置當前文件系統為20G,如果lvreduce -l 20G是指從當前文件系統上減少20G
使用lvreduce減小邏輯卷的大小。註意:減小後的大小不能小於文件的大小,否則會丟失數據。

可以使用vgdisplay命令等查看一下可以操作的大小。也可以是用fdisk -l命令查看詳細信息。
[root@localhost ~]# vgdisplay
註:vgdisplay為顯示LVM卷組的元數據信息

6.把閑置空間掛在到根目錄下

[root@localhost ~]# lvextend -L +283G /dev/mapper/VolGroup-lv_root
註:lvextend -L +283G為在文件系統上增加283G
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_root
7、檢查調整結果
[root@localhost ~]# df -h

增加新磁盤對VolGroup-lv_root進行擴容
前面提到過/dev/mapper/VolGroup-lv_root是一個邏輯卷,既然是邏輯卷那麽就可以給它的卷組(資源池)進行擴容。

[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用%% 掛載點
/dev/mapper/VolGroup-lv_root
18G 1.2G 16G 7% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
/dev/sdb1 8.9G 149M 8.3G 2% /home

DNSMASQ 快取設定

DNSMASQ 快取設定

透過DNSMASQ的DNS快取功能,減少UDP53的查詢

第一步: 安裝所需軟體
yum install bind-utils dnsmasq

第二步: 修改/etc/resolv.conf
新增最上面一筆
nameserver 127.0.0.1

第三步: 新增 /etc/resolv.dnsmasq.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

第四步:複製原本/etc/hosts到dnsmasq內
cp /etc/hosts /etc/dnsmasq.hosts

第五步:修改/etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq.conf
strict-order
addn-hosts=/etc/dnsmasq.hosts
listen-address=127.0.0.1
no-dhcp-interface=
cache-size=10000

第六步:啟動dnsmasq
service dnsmasq start

第七步:測試
dig 34e.cc | grep “Query time”
第一次可能10ms以上,再測一次就會是0ms 表示快取成功

備註:
重開機後如果/etc/resolv.conf被重置,須至網路卡修改

修改檔案/etc/sysconfig/network-scripts/ifcfg-eth0的內容:
增加↓
PEERDNS=no

結束

CentOS 6 安裝 php 5.6

CentOS 6 安裝 php 5.6

移除本來的 php
yum -y remove php php*
安裝測試版本的 yum資料庫
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

安裝php56
yum install php56w php56w-opcache php56w-xml php56w-xmlrpc php56w-pdo php56w-mysql php56w-mcrypt php56w-mbstring php56w-curl php56w-gd

記得啟用OPcache
/etc/php.d/opcache.ini
註:php套件沒有移除乾淨的話,會出現錯誤,ex php-commn

CentOS 6 x86_64 及Win7 安装TensorFlow

CentOS 6 x86_64 及Win7 安装TensorFlow

1) /lib64/libc.so.6: version `GLIBC_2.14′ not found 解決

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar -xvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure -prefix=/usr -disable-profile -enable-add-ons -with-headers=/usr/include -with-binutils=/usr/bin
make && make install

2)GCC版本太舊,升级GCC到4.8.3

$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.gz
$ tar -zxvf gcc-4.8.3.tar.gz
$ cd gcc-4.8.3
$ ./contrib/download_prerequisites 
$ mkdir build
$ cd build
$ yum -y install gcc-c++
$ ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
$ make && make install
$ cp ./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64
$ cd /usr/lib64
$ rm -f /usr/lib64/libstdc++.so.6
$ ln -s libstdc++.so.6.0.19 libstdc++.so.6

跑tensorflow如果出現
「ImportError: DLL load failed with error code -1073741795」之類的動態檔讀取錯誤,問題是在CPU沒有支援「指令集擴充 AVX」。
有些CPU只有支援「指令集擴充 SSE」,然而tensorflow預設是使用AVX,所以CPU是SSE的永遠不會成功。

查詢你的CPU有無AVX範例:
https://ark.intel.com/content/www/tw/zh/ark/products/52224/intel-core-i5-2410m-processor-3m-cache-up-to-2-90-ghz.html (這顆是AVX)
https://ark.intel.com/content/www/tw/zh/ark/products/41447/intel-core-i7-930-processor-8m-cache-2-80-ghz-4-80-gt-s-intel-qpi.html (這顆是SSE)

我桌機沒有AVX,筆電有,所以剛測試一下,筆電很快就安裝起來了,桌機仍然失敗。
若CPU只有SSE的話必須手動修正tensorflow,
可以來這邊抓取相關的檔案 https://github.com/fo40225/tensorflow-windows-wheel

抓下來之後「pip install 檔名」即可安裝

另外Win7跑Tensorflow最簡單的方式就是用conda建一個虛擬環境,python選3.5,除了CPU指令集會有問題外,基本沒其他狀況。

CentOS 6.9 安裝python2.7

CentOS 6.9 安裝python2.7

yum groupinstall “Development tools”

tar -zxvf Python-2.7.12.tgz
cd Python-2.7.12/
./configure –prefix=/usr/local –enable-optimizations
make && make altinstall
//找出python
which python

ln -s /usr/local/bin/python2.7 /usr/local/bin/python

curl “https://bootstrap.pypa.io/get-pip.py” -o “get-pip.py”
python get-pip.py

pip install jieba
pip install gensim

yum install perl-CPAN

yum install python-setuptools python-setuptools-devel
yum install gcc-c++

cpan YAML
cpan Module::Build #這段常出錯
若是失敗
*yum install perl-ExtUtils-MakeMaker
* cpan Module::Install

上面兩個不確定要不要用 但莫名好了

cpan force install Module::Build

問題 build-essential
yum install -y libxml2 libxml2-devel libxslt libxslt-devel

1. Can’t locate Encode/Detect/Detector.pm 問題解決

wget http://search.cpan.org/CPAN/authors/id/J/JG/JGMYERS/Encode-Detect-1.00.tar.gz
tar -zxvf Encode-Detect-1.00.tar.gz
cd Encode-Detect-1.00
vi parche

—–新增內容—-
— Detector.xs 2006-10-27 16:48:59.000000000 -0400
+++ Detector.xs.old 2008-04-29 15:59:43.000000000 -0400
@@ -38,6 +38,7 @@
#define PERL_NO_GET_CONTEXT /* we want efficiency */
#include “EXTERN.h”
#include “perl.h”
+#undef HASATTRIBUTE_UNUSED
#include “XSUB.h”
}
——內容結束—-

perl Makefile.PL && make && make install

Mysql 錯誤InnoDB: mmap(8585216 bytes) failed; errno 12

Mysql 錯誤InnoDB: mmap(8585216 bytes) failed; errno 12

linux下mysql啟動錯誤,且無法啟動mysql服務,查看myql日誌,發現如下日誌:

2017-08-10 18:11:03 9772 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
2017-08-10 18:11:03 9772 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2017-08-10 18:11:03 9772 [ERROR] Plugin ‘InnoDB’ init function returned error.
2017-08-10 18:11:03 9772 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2017-08-10 18:11:03 9772 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-08-10 18:11:03 9772 [ERROR] Aborting

其中InnoDB: mmap(136019968 bytes) failed; errno 12是關鍵的錯誤信息。
從網上查資料,有人說修改innodb_buffer_pool_size,經過測試無效。
有人說是swap分區為0導致的此錯誤,使用free -m命令查看系統內存,發現swap確實為0。使用如下命令建立一個臨時的swap分區:

dd if=/dev/zero of=/swap bs=1M count=512 //創建一個swap文件,大小為512M
mkswap /swap //將swap文件變為swap分區文件
swapon /swap //將其映射為swap分區

此時使用free -m命令即可看到swap分區已存在了,然後啟動mysql服務即可。
為了保證下次系統啟動後,此swap分區被自動加載,需要修改系統的fstab文件,操作如下:

vi /etc/fstab
//在其中添加如下一行
/swap swap swap defaults 0 0

保存文件即可。

SSD 硬碟讀寫紀錄

SSD 硬碟讀寫紀錄

1.MySQL
#time dd if=/dev/zero of=/var/test bs=2k count=1000000

1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 11.0035 s, 186 MB/s

real 0m11.311s
user 0m0.112s
sys 0m3.407s

#hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 17856 MB in 2.00 seconds = 8942.26 MB/sec
Timing buffered disk reads: 490 MB in 3.01 seconds = 162.90 MB/sec
———————-
2020

#hdparm -Tt /dev/sda
Timing cached reads: 18206 MB in 2.00 seconds = 9118.22 MB/sec
Timing buffered disk reads: 474 MB in 3.01 seconds = 157.71 MB/sec

2.Main Server
#time dd if=/dev/zero of=/var/test bs=2k count=1000000
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 7.75729 s, 264 MB/s

real 0m7.980s
user 0m0.072s
sys 0m2.265s

#2020 kingstone
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 7.76174 s, 264 MB/s

real 0m7.778s
user 0m0.215s
sys 0m2.552s

#2020 MX500
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB) copied, 6.04026 s, 339 MB/s

real 0m6.057s
user 0m0.260s
sys 0m2.492s

#hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 28628 MB in 2.00 seconds = 14337.89 MB/sec
Timing buffered disk reads: 1032 MB in 3.00 seconds = 343.47 MB/sec

——
2020 Kingston
Timing cached reads: 28454 MB in 1.99 seconds = 14293.92 MB/sec
Timing buffered disk reads: 996 MB in 3.00 seconds = 331.76 MB/sec

2020 MX500
Timing cached reads: 28586 MB in 1.99 seconds = 14360.96 MB/sec
Timing buffered disk reads: 1528 MB in 3.00 seconds = 508.89 MB/sec