khanhnnvn

Tự động backup dữ liệu, mã nguồn lên git

 Linux  Comments Off on Tự động backup dữ liệu, mã nguồn lên git
Feb 022018
 

Chào các bạn,

Công việc hàng ngày backup cơ sở dữ liệu, mã nguồn khá mất công. Tôi thử viết một đoạn sau để thực hiện backup dữ liệu mã mã nguồn của tôi lên git. Các bạn tham khảo đoạn code sau:

#!/bin/bash

# Database credentials
user=”asianux_user”
password=”asianux”
host=”localhost”
db_name=”db”

# Other options
backup_path=”/home/asianux/db”
date=$(date +”%d-%b-%Y”)

# Set default file permissions
umask 177

# Dump database into SQL file
mysqldump –user=$user –password=$password –host=$host $db_name > $backup_path/$db_name-$date.sql

# Delete files older than 30 days
find $backup_path/* -mtime +30 -exec rm {} \;

# Push to git backup code and db
sleep 10
cd /var/asianux
git add .
git commit -m “Auto Commit Asianux”
git push origin master
echo “Backup code and db finish! Goodluck”

Sau đó bạn thiết lập chạy crontab để chạy tự động.

Blockchain là gì?

 BlockChain  Comments Off on Blockchain là gì?
Feb 022018
 

1. Mô hình tính toán mạng lưới, tổ chức kiểu phi tập trung, các nút mạng nối nhau từng nhóm
2. Với dữ liệu ghi chép kiểu sổ cái, lưu phân tán, đồng bộ liên tục nhờ cơ chế đồng thuận
3. Được đảm bảo an ninh bằng hàm băm mật mã, chữ ký số và cấu trúc lưu trữ móc xích các khối dữ liệu.

. Blockchain có tính chất không thể đảo ngược vì dữ liệu chỉ ghi thêm mà không sửa, không xoá.

. Blockchain có tính bền vững cao về dữ liệu lưu, khi số nút mạng đủ nhiều và liên tục bổ sung.

. Blockchain luôn online, luôn sẵn sàng vì các node gần như không bao giờ tắt đồng thời. Hệ thống có nhiều điểm truy cập, không có nút cổ chai.

. Blockchain có tính minh bạch cao vì dữ liệu lưu khắp nơi và bất kỳ nút mạng nào cũng có thể xem toàn bộ sổ.

. Blockchain khó bị tấn công nhờ:

1. Sử dụng chữ ký số bảo vệ giao dịch
=> không thể giả mạo hay sửa đổi giao dịch.

2. Sử dụng các cơ chế lưu trữ kiểu móc xích
=> đảo ngược dữ liệu là bất khả thi

3. Đòi hỏi TỐN TÀI NGUYÊN trong quá trình tạo các khối dữ liệu block. (PoW, PoS, PoI, PoA)
=> chi phí tấn công là quá lớn và độ khó kỹ thuật quá cao.

. Blockchain dễ bị quá tải nếu số nút mạng chưa đủ nhiều hoặc lượng dữ liệu cần đồng bộ trên mỗi giao dịch lớn.

. Blockchain có thể bị chi phối, điều khiển tập trung nếu có một bên nào đó giữ quyền cấp phép tham gia mạng hoặc sở hữu phần lớn tài nguyên tính toán trên mạng.

. Vì có nhiều nút nối mạng, tốc độ đồng bộ thông tin các nút mạng quyết định tốc độ blockchain. Mỗi giao dịch thường cần tối thiểu vài phút để nó được lan toả toàn mạng và xác nhận.

. Quá tải và băng thông thấp là hiệu ứng sẽ xảy ra trên blockchain khi số giao dịch thực hiện đồng thời và số nút mạng cần đồng bộ/đồng thuận đủ lớn.

Hướng dẫn triển khai SSL GlobalSign trên Apache – CentOS

 Hệ thống  Comments Off on Hướng dẫn triển khai SSL GlobalSign trên Apache – CentOS
Jan 312018
 

Bước 1: Cài đặt các gói cần thiết:

yum install mod_ssl

Bước 2: Bạn sinh ra 2 file csr và key

openssl req -new -newkey rsa:2048 -nodes -out asianux.csr -keyout asianux.key -subj “/C=VN/ST=Hanoi/L=Hanoi/O=Asianux/OU=IT/CN=asianux.org.vn”

Bước 3: Bạn gửi file csr cho hỗ trợ phía GlobalSign, bạn sẽ nhận được các file chứng chỉ.

Bước 4: Thiết lập Apache với các chứng chỉ đã có, ví dụ file cấu hình như sau:

<VirtualHost *:443>
DocumentRoot /var/www/html/asianux/html
ServerName asianux.org.vn
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/asianux.cer
SSLCertificateKeyFile /etc/httpd/ssl/asianux.key
SSLCACertificateFile /etc/httpd/ssl/AV_intermediate.cer
</VirtualHost>

Chúc bạn thành công.

Hướng dẫn sử dụng SSH KEY + bitbucket

 Programing  Comments Off on Hướng dẫn sử dụng SSH KEY + bitbucket
Jan 302018
 

Bước 1: Sinh key trên máy chứa mã nguồn mà bạn muốn backup

ssh-keygen -t rsa -b 4096 -C “khanhnnvn@gmail.com”

Bước 2: Key sẽ lưu ở đường dẫn mặc định: /root/.ssh/id_rsa.pub

bạn kiểm tra key bằng lệnh: cat  /root/.ssh/id_rsa.pub

Bước 3: Bạn copy key vào tài khoản bitbucket như hình dưới đây.

Bạn dùng lệnh ssh -T git@bitbucket.org để kiểm tra việc kết nối.

Bước 4: Thay đổi url source từ http sang ssh bằng lệnh:

git remote set-url origin git@bitbucket.org:tai_khoan/ma_nguon.git

kiểm tra:

git remote -v

Bước 5: Để push code lên bạn có thể dùng lệnh:

git push origin master

Nếu bạn muốn add các phần thay đổi thì dùng các lệnh sau:

git add -A

git commit -am “x”

Sau đó đẩy code lên.

Bạn hoàn toàn có thể viết chương trình tự động để đẩy việc này hàng ngày bằng cách set crontab.

Chúc bạn thành công.

 

Hướng dẫn sử dụng GIT

 Programing  Comments Off on Hướng dẫn sử dụng GIT
Jan 262018
 

 

  1. Initialize the local directory as a Git repository.
    git init
    
  2. Add the files in your new local repository. This stages them for the first commit.
    git add .
    # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
    
  3. Commit the files that you’ve staged in your local repository.
    git commit -m "First commit"
    # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.
    
  4. Copy remote repository URL fieldAt the top of your GitHub repository’s Quick Setup page, click  to copy the remote repository URL.
  5. In the Command prompt, add the URL for the remote repository where your local repository will be pushed.
    git remote add origin remote repository URL
    # Sets the new remote
    git remote -v
    # Verifies the new remote URL
    
  6. Push the changes in your local repository to GitHub.
    git push origin master
    # Pushes the changes in your local repository up to the remote repository you specified as the origin

Tutorial Install Parallels Cloud Server

 Hệ thống, Linux  Comments Off on Tutorial Install Parallels Cloud Server
Dec 232015
 

Parallels Cloud Server 6.0 (PCS) is a virtualization solution that allows you to run multiple virtual machines and Containers on a single physical server.

In this topic, we install PCS on Vmware

Screenshot_1

 

 

 

 

 

 

 

 

 

 

 

 

And then, we click Agree

Screenshot_2

 

 

 

 

Select type keyboard for install

Screenshot_3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Then set hostname for PCS

Screenshot_4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In step we format disk for install

Screenshot_5

 

 

 

 

 

 

 

 

Screenshot_6 Screenshot_7 Screenshot_8 Screenshot_9 Screenshot_10 Screenshot_11 Screenshot_12 Screenshot_13 Screenshot_14 Screenshot_15 Screenshot_16 Screenshot_17 Screenshot_18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

That okie. We can using it for Our cloud.

Configure Apache for SSL HTTPS CentOS 6

 Hệ thống, Linux  Comments Off on Configure Apache for SSL HTTPS CentOS 6
Nov 182015
 

Configure Apache for SSL HTTPS CentOS 6

Using Apache over HTTPS or SSL allows a slightly more secure setup, any computer that connects over ssl is automatically encrypted.

Original Reference:

http://xmodulo.com/2014/04/https-apache-web-server-centos.html

 

Here’s the basic instructions:

Login to your server, and su to root

install modssl and openssl

The next Large step is to generate a self-signed certificate

create a Private Key

done

now you must generate the CSR, or Certificate Signing Request

Fill in all the necessary fields, this will be different for almost every scenario

Finally, Generate a Self-Signed Certificate for the Life of the Server, 365 days * 7 (allowing up to 7 years)

you should see signature OK

now copy the necessary files to the appropriate directories:

Now all we have to do is set-up Apache to use the certificates:

 

Edit the Apache SSL.conf

Comment Out Line 105, and add 106

now do the same for 113 and 114

### The following parameter does not need to be modified in case of a self-signed certificate. ### ### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ### SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle (reference below)

now restart apache

the webserver should now be able to use HTTPS.

 

That’s it!

Original Reference:

http://xmodulo.com/2014/04/https-apache-web-server-centos.html

Mô hình MVC là gì?

 Programing  Comments Off on Mô hình MVC là gì?
Nov 182015
 

Nếu bạn là một lập trình viên, nhất là lập trình web, sẽ rất khó để bạn có thể xin được việc nếu không biết mô hình MVC. Trong post này mình sẽ trình bày đến các bạn mô hình MVC là gì theo cách hiểu của mình qua một vài dự án sử dụng MVC?

MVC là gì?

MVC là viết tắt của Model – View – Controller. Là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nói cho dễ hiểu, nó là mô hình phân bố source code thành 3 phần, mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

Các thành phần trong MVC

Controller

Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng… Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model.

Model

Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

View

Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images… Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML.

Luồng đi trong MVC

Để giải thích, mình xin dùng 1 ví dụ đơn giản + hình minh họa sau.

Mô hình MVC
Mô hình MVC

Khi có một yêu cầu từ phía client gửi đến server, Bộ phận controller có nhiệm vụ nhận yêu cầu, xử lý yêu cầu đó. Và nếu cần, nó sẽ gọi đến phần model, vốn là bộ phần làm việc với Database..

Sau khi xử lý xong, toàn bộ kết quả được đẩy về phần View. Tại View, sẽ gen ra mã Html tạo nên giao diện, và trả toàn bộ html về trình duyệt để hiển thị.

Ưu điểm và nhược điểm của MVC

1. Ưu điểm

Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì..

2. Nhược điểm

Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các thành phần.

Tóm lại

Để lập trình chuyên nghiệp, làm việc trọng một nhóm nhiều người, việc áp dụng mô hình trong thiết kế là điều bắt buộc. MVC là một mô hình khá đơn giản và thích hợp cho những người chưa nhiều kinh nghiệm. Hy vọng qua bài giới thiệu này các bạn có những kiến thức cơ bản về mô hình thiết kế trong làm phần mềm.

Why Pound is awesome in front of Varnish

 Hệ thống, Linux  Comments Off on Why Pound is awesome in front of Varnish
Nov 172015
 

We all know Varnish is awesome. I went as far as presenting a topic on Varnish then writing about it. This is a known fact.

However, what happens to all that caching goodness when you want to run your entire site over SSL? Out of the box, Varnish doesn’t support it. While I’ve heard some mention that not supporting SSL is an oversight,there exists some very sound reasoning for why not.

So how do people terminate SSL?

What is Pound?

Without copying exactly what’s on the Pound documentation, or theWikipedia entry about Pound, it’s essentially a reverse proxy, SSL terminator and load balancer but NOT a webserver. It’s small, easy enough to install and has minimal configuration. Stunnel is similarly simple, but since I have quite extensive experience using Stunnel, I decided to learn something new.

On my load balancing servers, Pound listens on port 443 and Varnish listens on port 80. When traffic comes in on port 443, it hits Pound, gets decrypted using my server certificate and then gets passed to Varnish on port 80. By putting all traffic through Varnish, I’m able to take advantage of its caching ability for both HTTP and HTTPS traffic.

It’s almost, that simple. I had to make some minor changes to my VCL to receive and cache mixed mode traffic. Prior to these changes, I would sometimes deliver resources using the HTTP schema to pages delivered over HTTPS. This had the understandable effect of causing my browser to complain about insecure resources.

Getting Varnish and Pound to play nicely

Realising that we need to handle HTTP/HTTPS traffic differently in Varnish, even though it all comes in on port 80, I decided to use a separate cache hash key for each. Varnish uses hashes of the URI as a key to store and look up data by. My VCL implements the vcl_hashsubroutine to detect HTTPS traffic and alter the hash key. We add a header in Pound to tell Varnish that the traffic came in over SSL and then watch the magic happen.

pound.cfg

ListenHTTPS
  Address 0.0.0.0
  Port 443
  HeadRemove "X-Forwarded-Proto"
  AddHeader "X-Forwarded-Proto: https"
  Cert "/etc/ssl/certs/adammalone.net.pem"
End
 
Service
  HeadRequire "Host:.*adammalone.net.*"
    Backend
      Address 127.0.0.1
      Port 80
    End
End

default.vcl – vcl_hash {}

sub vcl_hash {
  hash_data(req.url);
  if (req.http.host) {
    hash_data(req.http.host);
  } else {
    hash_data(server.ip);
  }
  # Use special internal SSL hash for https content
  # X-Forwarded-Proto is set to https by Pound
  if (req.http.X-Forwarded-Proto ~ "https") {
    hash_data(req.http.X-Forwarded-Proto);
  }
  return (hash);
}

The hash_data function allows us to add further information to the hash. By adding ‘https’ to the host and uri information, we’re altering the hash in such a way that it is different from just the host + uri that an http request would use.

I’ve also attached a downloadable copy of my full Pound config and the puppet manifest that generates it for people who are interested in replicating this functionality. I’m using my Pound puppet class located at typhonius/puppet-pound, a fork of mrintegrity/puppet-pound.

Drupal configuration

The final thing to do is to inform Drupal it needs to be in SSL mixed mode and to enter a small snippet in my settings.php so it can be turned on or off based on the incoming request. If Varnish is running on the same server as your Drupal installation, you’ll need to replace www.xxx.yyy.zzz with 127.0.0.1. Otherwise it’ll be the IP of your load balancing server.

// Varnish Settings
$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('www.xxx.yyy.zzz');
$conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR';
$conf['page_cache_invoke_hooks'] = FALSE;
 
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $_SERVER['HTTPS'] = 'on';
}

This is how I allow SSL through Varnish, if you do it differently, add a comment!