Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
Ở bài viết trước của mình, mình có nói đến việc cài đặt một con Local jekyll vậy nên ở bài này mình sẽ viết lại các bước cụ thể để có thể cài đặt và sử dụng được nó. Nếu ai chưa biết về Jekyll hay Github pages là gì thì quay lại đọc bài viết trước của mình tại đây nhé.
Sẽ có nhiều người tự hỏi. Ủa, sao có Github pages rồi còn phải chơi **Local jekyll** để làm gì? Với câu hỏi này mình sẽ trả lời như sau:
Có thể bạn biết thừa: Blog này được chạy bằng Local jekyll đó =))
Chuẩn bị một VPS có cấu hình tối thiểu như sau:
Vì bài viết này là hướng dẫn cơ bản nên mình sẽ chạy các command phía dưới với quyền root
và setup server của mình chạy trong môi trường lý tưởng. Nếu các bạn chạy trên production, để đảm bảo an toàn thì nhớ enable và set rule cho firewall nhé.
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
useradd jekyll
reboot
yum -y update
yum install vim wget unzip git -y
a. Cài đặt rvm
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
b. Cài đặt ruby
source /etc/profile.d/rvm.sh
rvm install ruby-2.5
ruby -v
gem -v
c. Giải thích một chút:
Vì Jekyll được viết bằng ruby và yêu cầu ruby từ version 2.2.5 trở lên nên mình sẽ cài ruby version mới nhất tại thời điểm viết bài viết này là 2.5
gem install jekyll -v 3.7.4
gem install bundler
jekyll -v
bundler dùng để quản lý, install, uninstall.. các gem. Các gem là đây là các lib phục vụ cho jekyll
Như đã nói, các bạn có thể tự build một blog cho riêng mình hoặc tải một theme free có sẵn trên mạng để deploy một blog cho riêng mình.
Ở đây mình chọn blog của cloud365vn và Github của cloud365 ở đây. Các bạn cũng có thể contribute với cloud365 để chia sẻ kiến thức của mình cho những người khác nữa nhé :D.
Vì loài người rất đáng sợ, nên mình sẽ chạy blog của mình dưới quyền của jekyll
!
a. Clone repo blog của cloud365
cd /opt/
git clone https://github.com/blogcloud365vn/blogcloud365vn.github.io.git
mv blogcloud365vn.github.io myblog
chown -R jekyll:jekyll /opt/myblog
b. Sử dụng bundler
để install các gem lib
Chú ý xóa file Gemfile.lock
trước khi install
cd /opt/myblog/
rm -f Gemfile.lock
bundle install
c. Quản lý tiến trình jekyll với systemctl
Tìm đường dẫn gốc của jekyll
which jekyll
# /usr/local/rvm/gems/ruby-2.5.3/bin/jekyll
Chú ý. Với đường dẫn gốc trên khi chạy jekyll trong systemctl sẽ bị sai vậy nên đường dẫn gốc lúc nào phải là
/usr/local/rvm/gems/ruby-2.5.3/wrappers/jekyll
Tạo file /etc/systemd/system/jekyll.service
với nội dung sau:
[Unit]
Description=Jekyll service
After=syslog.target
After=network.target
[Service]
User=jekyll
Type=simple
WorkingDirectory=/opt/myblog
ExecStart=/usr/local/rvm/gems/ruby-2.5.3/wrappers/jekyll serve --host [YOUR_IP] --port 8080 --watch "/opt/myblog"
ExecStop=/usr/bin/pkill -u jekyll
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=jekyll
[Install]
WantedBy=multi-user.target
Khởi động jekyll
systemctl daemon-reload
systemctl start jekyll
Truy cập vào jekyll theo địa chỉ http://YOUR_IP:8080
Vậy là mình đã kết thúc series 2 bài với Jekyll và Github page. Hy vọng loạt bài này của mình sẽ giúp ích được gì đó cho các bạn. Nếu có thắc mắc gì các bạn có thể liên hệ với cloud365 để được giải đáp nhé.
Chúc các bạn thành công và cảm ơn các bạn đã theo dõi loạt bài viết này. Hẹn gặp lại trong các bài viết tiếp theo của mình :D
“if you have knowledge let others light their candles in it”
https://jekyllrb.com/docs/installation/
Thực hiện bởi cloud365.vn