Eric Guo's blog.cloud-mes.com

Hoping writing JS, Ruby & Rails and Go article, but fallback to DevOps note

Extend the Disk Size in CentOS Which Running in VMware

Permalink

Largely copy from Linux Techi

Check whether free space is available space in the volume group

[root@localhost dev]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <199.00 GiB
PE Size 4.00 MiB
Total PE 50943
Alloc PE / Size 28896 / <112.88 GiB
Free PE / Size 22047 / 86.12 GiB
VG UUID cUFFyw-wCaq-Ym07-TzQY-mii3-y8Xo-IdQRmn

lvextend command to increase the size

[root@localhost ~]# lvextend -L +80G /dev/mapper/centos-root
Size of logical volume centos/root changed from 100.00 GiB (25600 extents) to 180.00 GiB (46080 extents).
Logical volume centos/root successfully resized.

Run the resize2fs command

[root@localhost ~]# resize2fs /dev/mapper/centos-root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-root
找不到有效的文件系统超级块.

Resolve error due to root is xfs

[root@localhost ~]# cat /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Dec 23 14:28:29 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=48xxxx48-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=8, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26214400 to 47185920

Presenting Code With Syntax-highlight in Keynote Using Command Tool Highlight

Permalink

Just one line

pbpaste | highlight --syntax=rb -O rtf | pbcopy
pbpaste | highlight --syntax=html -O rtf | pbcopy
pbpaste | highlight --syntax=scss -O rtf | pbcopy
pbpaste | highlight --syntax=jsx -O rtf | pbcopy
pbpaste | python -m json.tool | highlight --syntax=json -O rtf | pbcopy

Click to see more language highlight supported.

Note: install highlight first using brew install highlight, original link

Bug or Correct Behavior but Very Miss Leading LEFT JOIN in MySQL 8

Permalink

Today I found a missing rows in MySQL 8 problem in production, which SQL LEFT JOIN should be added at join condition instead of where.

Missing data version:

SELECT SUM(markettotal) markettotal
FROM `SUB_COMPANY_REAL_RECEIVE`
LEFT JOIN ORG_REPORT_DEPT_ORDER on ORG_REPORT_DEPT_ORDER.编号 = SUB_COMPANY_REAL_RECEIVE.deptcode_sum
WHERE `SUB_COMPANY_REAL_RECEIVE`.`realdate` BETWEEN '2020-01-01' AND '2020-06-30'
AND (ORG_REPORT_DEPT_ORDER.开始时间 <= '2020-06-11')
AND (ORG_REPORT_DEPT_ORDER.结束时间 IS NULL OR ORG_REPORT_DEPT_ORDER.结束时间 >= '2020-06-11')
AND `SUB_COMPANY_REAL_RECEIVE`.`orgcode_sum` IN ('H000109', '000109')

Correct version:

SELECT sum(markettotal)
FROM `SUB_COMPANY_REAL_RECEIVE`
LEFT JOIN ORG_REPORT_DEPT_ORDER ON SUB_COMPANY_REAL_RECEIVE.deptcode = ORG_REPORT_DEPT_ORDER.编号
AND ((ORG_REPORT_DEPT_ORDER.开始时间 <= '2020-06-11') AND (ORG_REPORT_DEPT_ORDER.结束时间 IS NULL OR ORG_REPORT_DEPT_ORDER.结束时间 >= '2020-06-11'))
WHERE `SUB_COMPANY_REAL_RECEIVE`.`realdate` BETWEEN '2020-01-01' AND '2020-06-30'
AND `SUB_COMPANY_REAL_RECEIVE`.`orgcode_sum` IN ('H000109')

New T3 Micro EC2 Box on Amazon Linux Install Log

Permalink

Time is pass so faster, another 3 years passed after my previous T2 micro installed.

Now have to install another new box with price $134 in Tokyo AWS.

Install postgresql 11

yum update
amazon-linux-extras install postgresql11 epel
yum install -y postgresql-server postgresql-devel
/usr/bin/postgresql-setup --initdb
systemctl enable postgresql
systemctl start postgresql
sudo -u postgres -i psql -c 'SELECT version();'

Install nginx

amazon-linux-extras install nginx1
yum install nginx
systemctl enable nginx
systemctl start nginx

Install node.js 14 & yarn

curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
yum install -y gcc-c++ make
yum install -y nodejs
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
yum install yarn

Install dependencies required by rbenv and ruby 2.7.1

yum install openssl-devel readline-devel zlib-devel gdbm-devel

Fix Yum Update Postgresql12 to v12.3 Require LLVM-toolset-7-clang >= 4.0.1 Dependency Problem

Permalink

Simple running yum update on a CensOS 7 machine which installing the official postgresql v12 will get below problem:

---> Package postgresql12-devel.x86_64 0:12.3-1PGDG.rhel7 will be an update
--> Processing Dependency: llvm-toolset-7-clang >= 4.0.1 for package: postgresql12-devel-12.3-1PGDG.rhel7.x86_64
--> Finished Dependency Resolution
Error: Package: postgresql12-devel-12.3-1PGDG.rhel7.x86_64 (pgdg12)
Requires: llvm-toolset-7-clang >= 4.0.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

You can install CentOS SCLo RH repository and install llvm-toolset-7-clang to resolve it.

yum install centos-release-scl-rh
yum install llvm-toolset-7-clang

Deploy Another Rails 6 App to Existing CentOS 7 Server

Permalink

Prepare the execution files & account

adduser sccsa_web
sudo su - sccsa_web
mkdir .ssh
chmod 700 .ssh
vi .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

Install rbenv and ruby-build

cd # as a sccsa_web
git clone https://github.com/sstephenson/rbenv.git .rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
~/.rbenv/bin/rbenv init
# As an rbenv plugin
mkdir -p "$(rbenv root)"/plugins
# git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
git clone https://gitee.com/Eric-Guo/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# git clone https://github.com/andorchen/rbenv-china-mirror.git "$(rbenv root)"/plugins/rbenv-china-mirror
git clone https://gitee.com/Eric-Guo/rbenv-china-mirror.git "$(rbenv root)"/plugins/rbenv-china-mirror

Install Ruby 3.0.1

rbenv install -l
rbenv install 3.0.1
rbenv global 3.0.1
rbenv shell 3.0.1
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
echo "gem: --no-document" > ~/.gemrc
# gem install bundler --default -v "1.17.3"
gem install bundler
bundle config build.pg --with-pg-config=/usr/pgsql-13/bin/pg_config

Fix permission for CentOS

sudo mkdir /var/www
cd /var/www
sudo mkdir sccsa_web
sudo chown sccsa_web:sccsa_web sccsa_web/

Fix Rake 11.3 and Jekyll 0.12.1 Warning Under Ruby 2.7.1

Permalink

After upgrade ruby to 2.7.1, I found my old octopress give below two warning:

/usr/local/lib/ruby/gems/2.7.0/gems/rake-11.3.0/lib/rake/application.rb:378: warning: deprecated Object#=~ is called on Proc; it always returns nil

Just need change application.rb:378 as below to fix it.

- opt.select { |o| o =~ /^-/ }.map(&:downcase).sort.reverse
+ opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse

Another warning is:

/usr/local/lib/ruby/gems/2.7.0/gems/jekyll-0.12.1/lib/jekyll/post.rb:140: warning: URI.escape is obsolete

Just change as below:

- "categories" => categories.map { |c| URI.escape(c) }.join('/'),
+ "categories" => categories.map { |c| URI.encode_www_form_component(c) }.join('/'),