Cách di chuyển server Linux Phần 1 - Chuẩn bị hệ thống
Có nhiều tình huống mà bạn có thể phải di chuyển dữ liệu và các yêu cầu hoạt động của bạn từ server này sang server khác. Bạn có thể cần triển khai các giải pháp của bạn trong một trung tâm dữ liệu mới, nâng cấp lên một máy lớn hơn hoặc chuyển đổi sang phần cứng mới hoặc nhà cung cấp VPS mới.Dù lý do của bạn là gì, có nhiều cân nhắc khác nhau mà bạn nên thực hiện khi di chuyển từ hệ thống này sang hệ thống khác. Việc nhận các cấu hình tương đương về chức năng có thể khó khăn nếu bạn không sử dụng giải pháp quản lý cấu hình như Chef, Puppet hoặc Ansible. Bạn không chỉ cần truyền dữ liệu mà còn phải cấu hình các dịch vụ của bạn để hoạt động theo cách tương tự trên một máy mới.
Trong hướng dẫn này, ta sẽ thảo luận về cách chuẩn bị hệ thống nguồn và hệ thống đích của bạn để di chuyển. Điều này sẽ bao gồm việc để hai máy của bạn giao tiếp bằng các SSH key và một cuộc điều tra nặng nề về những thành phần nào cần được chuyển. Ta sẽ làm việc về quá trình di chuyển thực tế trong bài viết tiếp theo .
Backup
Bước đầu tiên cần thực hiện khi thực hiện bất kỳ bước nào có khả năng phá hủy là tạo bản backup mới. Chỉ vì không nên xảy ra vấn đề không nghĩa là điều gì đó bất ngờ sẽ không xảy ra. Bạn không muốn rơi vào tình huống lệnh làm hỏng thứ gì đó trên máy production hiện tại của bạn trước khi thiết bị thay thế bắt đầu hoạt động.
Có một số cách khác nhau để backup server của bạn. Lựa chọn của bạn sẽ phụ thuộc vào những lựa chọn phù hợp với kịch bản của bạn và những gì bạn thấy phù hợp nhất.
Nếu bạn có quyền truy cập vào phần cứng vật lý và không gian để backup (ổ đĩa, USB, v.v.), bạn có thể sao chép đĩa bằng bất kỳ giải pháp backup hình ảnh nào có sẵn. Một chức năng tương đương khi xử lý các máy VPS là chụp nhanh hoặc hình ảnh từ trong giao diện console .
Các tùy chọn khác thường sẽ bảo toàn dữ liệu và có lẽ một số thông tin về dịch vụ của bạn. Tất cả phụ thuộc vào cơ chế backup mà bạn muốn thực hiện. Các trang cộng đồng của ta có các bài viết về nhiều tùy chọn backup khác nhau . Chọn một cái có ý nghĩa đối với dữ liệu và hệ thống của bạn.
Khi bạn đã hoàn tất backup , bạn đã sẵn sàng để tiếp tục. Đối với phần còn lại của hướng dẫn này, ta sẽ giả định bạn đã đăng nhập vào cả hai hệ thống với quyền là user root .
Thu thập thông tin về hệ thống nguồn
Trước khi bắt đầu di chuyển, ta nên thực hiện các bước ban đầu để cài đặt hệ thống đích sao cho phù hợp với hệ thống nguồn của ta .
Ta sẽ muốn đối sánh nhiều nhất có thể giữa server hiện tại và server mà ta định chuyển sang. Nếu bạn muốn quá trình di chuyển diễn ra suôn sẻ, thì bạn không nên coi đây là cơ hội để nâng cấp lên version mới nhất hoặc thử những điều mới. Thực hiện thay đổi có thể dẫn đến sự không ổn định và các vấn đề về đường truyền.
Hầu hết các thông tin cơ bản sẽ giúp bạn quyết định hệ thống server sẽ tạo cho máy mới có thể được truy xuất bằng một uname
đơn giản:
uname -r
3.2.0-24-virtual
Đây là version của kernel mà hệ thống hiện tại của ta đang chạy. Để làm cho mọi thứ diễn ra suôn sẻ, bạn nên cố gắng kết hợp điều đó trên hệ thống mục tiêu.
uname -m
i686
Đây là kiến trúc hệ thống. i686
cho biết đây là hệ thống 32-bit. Nếu chuỗi được trả về là x86_64
, điều này nghĩa là đây là hệ thống 64 bit.
Bạn cũng nên cố gắng trùng với bản phân phối và version của server nguồn của bạn . Nếu bạn không biết version phân phối mà bạn đã cài đặt trên máy nguồn, bạn có thể tìm hiểu bằng lệnh :
cat /etc/issue
Ubuntu 12.04.2 LTS \n \l
Bạn nên tạo server mới của bạn với các thông số tương tự nếu có thể. Trong trường hợp này, ta sẽ tạo một hệ thống 32-bit Ubuntu 12.04. Nếu có thể, ta cũng sẽ cố gắng khớp version kernel trên hệ thống mới.
Cài đặt quyền truy cập SSH key giữa server nguồn và server đích
Ta cần server của bạn có thể giao tiếp để chúng có thể truyền file . Cách dễ nhất để làm điều này là với các SSH key . Bạn có thể tìm hiểu cách cấu hình SSH key trên server Linux tại đây.
Ta muốn tạo một khóa mới trên server đích để ta có thể thêm khóa đó vào file authorized_keys
của server nguồn của ta . Cách này rõ ràng hơn so với cách khác, vì sau đó server mới sẽ không có khóa bị lạc trong file authorized_keys
của nó khi quá trình di chuyển hoàn tất.
Đầu tiên, trên máy đích của bạn, hãy kiểm tra xem user root của bạn chưa có SSH key (bạn phải đăng nhập với quyền root) bằng lệnh :
ls ~/.ssh
authorized_keys
Nếu bạn thấy các file có tên id_rsa.pub
và id_rsa
, thì bạn đã có khóa và bạn chỉ cần chuyển chúng.
Nếu bạn không thấy những file đó, hãy tạo một cặp khóa mới bằng lệnh :
ssh-keygen -t rsa
Nhấn “Enter” qua tất cả các dấu nhắc để chấp nhận các giá trị mặc định.
Bây giờ, hãy chuyển khóa sang server nguồn bằng lệnh :
cat ~/.ssh/id_rsa.pub | ssh other_server_ip "cat >> ~/.ssh/authorized_keys"
Đến đây bạn có thể SSH tự do vào server nguồn của bạn từ hệ thống đích bằng lệnh :
ssh other_server_ip
Bạn sẽ không được yêu cầu nhập password nếu bạn đã cấu hình đúng.
Tạo một danh sách các yêu cầu
Đây thực sự là phần đầu tiên bạn sẽ thực hiện phân tích sâu về hệ thống và các yêu cầu của bạn .
Trong quá trình hoạt động, các yêu cầu phần mềm của bạn có thể thay đổi. Đôi khi các server cũ có một số dịch vụ và phần mềm cần thiết tại một thời điểm, nhưng đã được thay thế.
Mặc dù các dịch vụ không cần thiết nên được tắt và gỡ cài đặt nếu hoàn toàn không cần thiết, điều này không phải lúc nào cũng xảy ra. Bạn cần khám phá những dịch vụ nào đang được sử dụng trên server nguồn của bạn và sau đó quyết định xem những dịch vụ đó có tồn tại trên server mới của bạn hay không.
Cách bạn khám phá các dịch vụ và cấp chạy phần lớn phụ thuộc vào loại hệ thống “init” mà server của bạn sử dụng. Hệ thống init chịu trách nhiệm khởi động và dừng các dịch vụ, theo lệnh của user hoặc tự động.
Khám phá các dịch vụ và cấp độ chạy trên Server System V
Hệ thống V là một trong những hệ thống init cũ vẫn được sử dụng trên nhiều server hiện nay. Ubuntu đã cố gắng chuyển sang hệ thống Upstart init và trong tương lai có thể sẽ chuyển sang hệ thống Systemd init.
Hiện tại, cả file init kiểu System V và file init Upstart mới hơn đều có thể được tìm thấy trên cùng một hệ thống, nghĩa là bạn sẽ có nhiều nơi để xem hơn. Các hệ thống khác cũng sử dụng Hệ thống V. Bạn có thể xem server của bạn có sử dụng Hệ thống V hay không bằng lệnh :
which service
/usr/sbin/service
Nếu lệnh trả về một đường dẫn hệ thống, như đã làm ở trên, bạn có Hệ thống V trên hệ thống của bạn .
Bạn có thể biết dịch vụ nào hiện đang chạy bằng lệnh vào:
service --status-all
[ ? ] acpid [ ? ] anacron [ + ] apache2 [ ? ] atd [ - ] bootlogd [ ? ] console-setup [ ? ] cron [ ? ] cryptdisks . . .
Điều này sẽ liệt kê tất cả các dịch vụ mà hệ thống System-V init biết về. Dấu “+” nghĩa là dịch vụ được bắt đầu, dấu “-” nghĩa là dịch vụ đã dừng và dấu “?” nghĩa là System-V không biết trạng thái của dịch vụ.
Nếu System-V không biết trạng thái của dịch vụ, có thể nó được điều khiển bởi một hệ thống init thay thế. Trên hệ thống Ubuntu, đây thường là Upstart.
Ngoài việc tìm ra dịch vụ nào đang chạy hiện tại, một thông tin hữu ích khác cần có là cấp độ chạy của dịch vụ đang hoạt động. Runlevels quy định dịch vụ nào nên được cung cấp khi server ở các trạng thái khác nhau. Bạn có thể cần trùng với cấu hình của server nguồn trên hệ thống mới.
Bạn có thể khám phá các runlevel mà mỗi dịch vụ sẽ hoạt động để sử dụng một số công cụ. Một cách là thông qua các công cụ như chkconfig
hoặc sysv-rc-conf
.
Trên hệ thống Ubuntu hoặc Debian, bạn có thể cài đặt và sử dụng chkconfig
để kiểm tra dịch vụ System V nào khả dụng ở các cấp chạy khác nhau như thế này. Hầu hết các hệ thống dựa trên RHEL đã được cài đặt phần mềm này:
apt-get update apt-get install chkconfig chkconfig --list
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off anacron 0:off 1:off 2:off 3:off 4:off 5:off 6:off apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off bootlogd 0:off 1:off 2:off 3:off 4:off 5:off 6:off console-setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off cron 0:off 1:off 2:off 3:off 4:off 5:off 6:off cryptdisks 0:on 1:off 2:off 3:off 4:off 5:off 6:off cryptdisks-early 0:on 1:off 2:off 3:off 4:off 5:off 6:off . . .
Một giải pháp thay thế khác là sysv-rc-conf
, có thể được cài đặt và chạy như sau:
apt-get update apt-get install sysv-rc-conf sysv-rc-conf --list
acpid anacron apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd bootlogd console-setu cron cryptdisks 0:on 6:on cryptdisks-e 0:on 6:on . . .
Nếu bạn muốn kiểm tra thủ công thay vì sử dụng công cụ, bạn có thể thực hiện việc đó bằng cách kiểm tra một số folder có dạng /etc/rc*.d/
. Dấu hoa thị sẽ được thay thế bằng số của cấp chạy.
Ví dụ: để xem những dịch vụ nào được System V kích hoạt trong runlevel 2, bạn có thể kiểm tra các file ở đó:
cd /etc/rc2.d ls -l
total 4 -rw-r--r-- 1 root root 677 Jul 26 2012 README lrwxrwxrwx 1 root root 18 Dec 28 2012 S20php5-fpm -> ../init.d/php5-fpm lrwxrwxrwx 1 root root 15 Apr 26 2012 S50rsync -> ../init.d/rsync lrwxrwxrwx 1 root root 14 Jun 21 2013 S75sudo -> ../init.d/sudo lrwxrwxrwx 1 root root 17 Dec 28 2012 S91apache2 -> ../init.d/apache2 . . .
Đây là các liên kết đến file cấu hình nằm trong /etc/init.d/
. Mỗi liên kết bắt đầu bằng chữ “S” nghĩa là nó được sử dụng để bắt đầu một dịch vụ. Các tập lệnh bắt đầu bằng ký tự “K” sẽ tắt các dịch vụ ở cấp chạy đó.
Khám phá các dịch vụ và cấp độ chạy trên server khởi động
Ubuntu và các server dựa trên Ubuntu là những server duy nhất thực hiện hệ thống Upstart init theo mặc định. Chúng thường được sử dụng làm hệ thống init chính, với Hệ thống V được cấu hình cho các dịch vụ kế thừa.
Để xem server của bạn có hệ thống khởi động lại hay không, hãy nhập:
which initctl
/sbin/initctl
Nếu bạn nhận được một đường dẫn đến file thực thi như ta đã làm ở trên, thì server của bạn có khả năng Upstart và bạn nên điều tra dịch vụ nào được kiểm soát bởi Upstart.
Bạn có thể xem dịch vụ nào được khởi động bởi Upstart bằng lệnh :
initctl list
mountall-net stop/waiting passwd stop/waiting rc stop/waiting rsyslog start/running, process 482 tty4 start/running, process 728 udev start/running, process 354 upstart-udev-bridge start/running, process 350 ureadahead-other stop/waiting . . .
Điều này sẽ cho bạn biết trạng thái hiện tại của tất cả các dịch vụ được quản lý Upstart. Bạn có thể biết dịch vụ nào đang được chạy hiện tại và có thể xem liệu có dịch vụ nào cung cấp cùng chức năng mà dịch vụ đã tiếp quản cho một dịch vụ kế thừa không còn được sử dụng hay không.
, bạn nên làm quen với những dịch vụ được cho là có sẵn ở mỗi cấp chạy.
Bạn có thể thực hiện việc này với lệnh initctl
bằng lệnh :
initctl show-config
mountall-net start on net-device-up passwd start on filesystem rc emits deconfiguring-networking emits unmounted-remote-filesystems start on runlevel [0123456] stop on runlevel [!$RUNLEVEL] rsyslog start on filesystem stop on runlevel [06] . . .
Điều này đưa ra rất nhiều thông tin cấu hình cho mỗi dịch vụ. Phần cần tìm là thông số kỹ thuật của runlevel.
Nếu bạn muốn thu thập thông tin này theo cách thủ công, bạn có thể xem các file nằm trong folder /etc/init
(lưu ý việc bỏ qua “.d” sau “init” ở đây).
Bên trong, bạn sẽ tìm thấy một số file cấu hình. Trong các file này, có các thông số kỹ thuật cấp chạy được cung cấp như sau:
start on runlevel [2345] stop on runlevel [!2345]
Bạn nên có một ý tưởng tốt về các cách khác nhau để khám phá các dịch vụ Upstart và runlevel.
Khám phá các dịch vụ và cấp độ chạy trên Server Systemd
Một phong cách init mới hơn đang ngày càng được các bản phân phối áp dụng là hệ thống init systemd.
Systemd khá khác biệt so với các loại hệ thống init khác, nhưng cực kỳ mạnh mẽ. Bạn có thể tìm hiểu về các dịch vụ đang chạy bằng lệnh :
systemctl list-units -t service
UNIT LOAD ACTIVE SUB DESCRIPTION atd.service loaded active running ATD daemon avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack colord.service loaded active running Manage, Install and Generate Color Profiles cups.service loaded active running CUPS Printing Service dbus.service loaded active running D-Bus System Message Bus dcron.service loaded active running Periodic Command Scheduler dkms.service loaded active exited Dynamic Kernel Modules System . . .
Systemd không sao chép chính xác khái niệm runlevels của các hệ thống init khác. Thay vào đó, nó thực hiện khái niệm "mục tiêu". Trong khi các hệ thống với hệ thống init truyền thống chỉ có thể ở một cấp độ chạy tại một thời điểm, một server sử dụng systemd có thể đạt được nhiều mục tiêu cùng một lúc.
Do đó, việc tìm ra những dịch vụ nào đang hoạt động sẽ khó hơn một chút.
Bạn có thể xem mục tiêu nào hiện đang hoạt động bằng lệnh :
systemctl list-units -t target
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems . . .
Bạn có thể liệt kê tất cả các mục tiêu có sẵn bằng lệnh :
systemctl list-unit-files -t target
UNIT FILE STATE basic.target static bluetooth.target static cryptsetup.target static ctrl-alt-del.target disabled default.target disabled emergency.target static final.target static getty.target static graphical.target disabled halt.target disabled . . .
Từ đây, ta có thể tìm ra những dịch vụ nào được liên kết với từng mục tiêu. Các mục tiêu có thể có các dịch vụ hoặc các mục tiêu khác dưới dạng phụ thuộc, vì vậy, ta có thể xem các policy mà mỗi mục tiêu triển khai bằng lệnh :
systemctl list-dependencies target_name.target
Ví dụ, bạn có thể nhập thông tin như sau:
systemctl list-dependencies multi-user.target
multi-user.target ├─atd.service ├─avahi-daemon.service ├─cups.path ├─dbus.service ├─dcron.service ├─dkms.service ├─gpm.service . . .
Thao tác này sẽ liệt kê cây phụ thuộc của mục tiêu đó, cung cấp cho bạn danh sách các dịch vụ và các mục tiêu khác sẽ bắt đầu khi đạt được mục tiêu đó.
Kiểm tra kỹ các dịch vụ thông qua các phương pháp khác
Trong khi hầu hết các dịch vụ sẽ được cấu hình thông qua hệ thống init, có thể có một số khu vực mà một quá trình hoặc dịch vụ sẽ vượt qua các vết nứt và được kiểm soát độc lập.
Ta có thể cố gắng tìm các dịch vụ và quy trình khác này bằng cách xem xét các tác dụng phụ của các dịch vụ này. Trong hầu hết các trường hợp, các dịch vụ giao tiếp với nhau hoặc với các thực thể bên ngoài theo một cách nào đó. Chỉ có một số cách cụ thể mà các dịch vụ có thể giao tiếp và việc kiểm tra các giao diện đó là một cách tốt để phát hiện các dịch vụ khác.
Một công cụ mà ta có thể sử dụng để khám phá các cổng mạng và socket Unix đang được các tiến trình sử dụng để giao tiếp là netstat
. Ta có thể đưa ra một lệnh như thế này để xem tổng quan về một số dịch vụ của ta :
netstat -nlp
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 762/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 832/apache2 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 918/sshd tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 799/php-fpm.conf) tcp6 0 0 :::22 :::* LISTEN 918/sshd Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 1526 1/init @/com/ubuntu/upstart unix 2 [ ACC ] SEQPACKET LISTENING 1598 354/udevd /run/udev/control unix 2 [ ACC ] STREAM LISTENING 6982 480/dbus-daemon /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 8378 762/mysqld /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 1987 746/acpid /var/run/acpid.socket
Các số cổng trong phần đầu tiên được liên kết với các chương trình ở ngoài cùng bên phải. Tương tự, phần dưới cùng tập trung vào các socket Unix đang được các chương trình sử dụng.
Nếu bạn thấy các dịch vụ ở đây mà bạn không có thông tin thông qua hệ thống init, bạn sẽ phải tìm hiểu lý do tại sao lại như vậy và loại thông tin nào bạn cần thu thập về dịch vụ đó.
Bạn có thể nhận được thông tin tương tự về các dịch vụ cổng đang cung cấp bằng cách sử dụng lệnh lsof
:
lsof -nPi
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 762 mysql 10u IPv4 8377 0t0 TCP 127.0.0.1:3306 (LISTEN) php5-fpm 799 root 6u IPv4 8195 0t0 TCP 127.0.0.1:9000 (LISTEN) php5-fpm 800 www-data 0u IPv4 8195 0t0 TCP 127.0.0.1:9000 (LISTEN) php5-fpm 801 www-data 0u IPv4 8195 0t0 TCP 127.0.0.1:9000 (LISTEN) php5-fpm 802 www-data 0u IPv4 8195 0t0 TCP 127.0.0.1:9000 (LISTEN) php5-fpm 803 www-data 0u IPv4 8195 0t0 TCP 127.0.0.1:9000 (LISTEN) apache2 832 root 3u IPv4 8210 0t0 TCP *:80 (LISTEN) sshd 918 root 3r IPv4 7738 0t0 TCP *:22 (LISTEN) . . .
Bạn có thể nhận được một số thông tin tuyệt vời từ lệnh ss
về những quy trình đang sử dụng cổng và socket nào:
ss -nlpaxtudw
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str LISTEN 0 0 @/com/ubuntu/upstart 1526 * 0 users:(("init",1,7)) u_str ESTAB 0 0 @/com/ubuntu/upstart 1589 * 0 users:(("init",1,10)) u_str ESTAB 0 0 * 1694 * 0 users:(("dbus-daemon",480,6)) u_str ESTAB 0 0 * 1695 * 0 users:(("dbus-daemon",480,7)) u_str ESTAB 0 0 * 1803 * 0
Thu thập các version gói
Sau tất cả khám phá đó, bạn nên có một ý tưởng tốt về những dịch vụ nào đang chạy trên máy nguồn của bạn mà bạn nên triển khai trên server mục tiêu của bạn .
Bạn nên có một danh sách các dịch vụ mà bạn biết rằng bạn cần phải thực hiện. Để quá trình chuyển đổi diễn ra suôn sẻ, điều quan trọng là phải cố gắng khớp các version khi nào có thể.
Rõ ràng là bạn sẽ không thể xem qua từng gói cài đặt trên hệ thống nguồn và cố gắng sao chép nó trên hệ thống mới, nhưng bạn nên kiểm tra các thành phần phần mềm quan trọng đối với nhu cầu của bạn và cố gắng tìm số version .
Bạn có thể cố gắng lấy số version từ chính phần mềm, đôi khi bằng cách chuyển cờ -v
hoặc --version
cho các lệnh, nhưng thông thường điều này dễ thực hiện hơn thông qua trình quản lý gói của bạn. Nếu bạn đang sử dụng hệ thống dựa trên Ubuntu / Debian, bạn có thể xem version gói nào được cài đặt từ trình quản lý gói bằng lệnh :
dpkg -l | grep package_name
Thay vào đó, nếu bạn đang sử dụng hệ thống dựa trên RHEL, bạn có thể sử dụng lệnh này để kiểm tra version đã cài đặt thay thế.
rpm -qa | grep package_name
Điều này sẽ cung cấp cho bạn một ý tưởng tốt về version chương trình bạn đang muốn cài đặt.
Giữ danh sách số version của các thành phần quan trọng mà bạn muốn cài đặt. Ta sẽ cố gắng lấy những thứ này trên hệ thống đích.
Bước tiếp theo
Đến đây bạn nên có một ý tưởng tốt về những quy trình và dịch vụ nào trên server nguồn của bạn cần được chuyển sang máy mới của bạn. Bạn cũng nên hoàn thành các bước sơ bộ để cho phép hai version server của bạn giao tiếp với nhau.
Cơ sở cho việc di chuyển của bạn hiện đã hoàn tất. Đến đây bạn có thể bắt đầu quá trình di chuyển trong bài viết tiếp theo với một ý tưởng tốt về những gì bạn cần làm.
Các tin liên quan
Cách di chuyển server Linux Phần 2 - Truyền dữ liệu cốt lõi2014-02-27
Cách di chuyển server Linux Phần 3 - Các bước cuối cùng
2014-02-27
Cách cài đặt và sử dụng LinuxBrew trên VPS Linux
2014-02-14
cách sử dụng role và môi trường trong Chef để kiểm soát cấu hình server
2014-02-04
Cách cài đặt Chef Server, Workstation và Client trên Phiên bản VPS Ubuntu
2014-01-30
Giới thiệu về Chuyển hướng I / O Linux
2014-01-23
Giới thiệu về Chuyển hướng I / O Linux
2014-01-23
Cách thiết lập server email Postfix với Dovecot: Dynamic Maildirs và LMTP
2013-12-17
Cách xem và cấu hình log Linux trên Ubuntu và Centos
2013-12-17
Cách cài đặt Linux Socket Monitor (LSM) trên CentOS 6.4
2013-11-26