February 4, 2016

Cài đặt Discourse trên VPS Ubuntu 14.04 / Debian 8


Hôm nay mình sẽ hướng dẫn các bạn cài đặt Discourse trên VPS Ubuntu 14.04 và Debian 8.
Discourse là một mã nguồn mở để tạo trang web dạng hỏi đáp cũng như diễn đàn rất chuyên nghiệp. Với giao diện hiện đại, tốc độ nhanh Discourse đang được rất nhiều các trang web lớn lựa chọn. Qua sử dụng, mình đánh giá Discourse là một mã nguồn rất tuyệt vời về cả tính năng, giao diện vì rất dễ sử dụng. Discourse cũng cấp tất cả các chức năng trong một trang admin và bạn chỉ cần vài giờ là có thể làm chủ Discourse.
Xem demo Discourse tại đây 
Việc cài đặt Discourse có rất nhiều cách như cài đặt môi trường Ruby On Rails, PosgresSQL và tải mã nguồn Discourse về cài đặt hoặc cài đặt qua Docker. Tuy  nhiên việc cài đặt Discourse từ mã nguồn khá phức tạp và chỉ khi bạn đã có kinh nghiệm bởi vì kể cả bạn đã setup được một môi trường Rails cho Discourse thì cũng chưa chắc nó sẽ hoạt động hiệu quả do đó mình sẽ hướng dẫn các bạn cài đặt qua Docker chỉ khoảng 20 phút là xong và chỉ việc copy và paste thôi :D
Docker là gì ? Docker là một giải pháp cho phép bạn đóng gói phần mềm (bao gồm tất cả thành phần của phần mềm) tại chỗ và sau khi đóng gói nó có chạy ở bất cứ nển tảng nào miễn là hỗ trợ Docker. Và Discourse đã được các chuyên gia cài đặt (setup Rails, PosgresSQL, Redis, source) trên hệ thống của họ và sau đó họ đóng gói lại chúng ta có thể sử dụng nó mà không mất công cài đặt lại nữa.
Để sử dụng Discourse bạn cần VPS tối thiểu 1GB RAM (theo lời của Discourse) và khuyến cáo là 2GB. Mình đã thử cài trên VPS 512MB Ram thì vẫn chạy bình thường nhưng chỉ dành cho mục đích test thôi. Mình sẽ cài đặt trên Ubuntu 14.04 còn trên Debian thì tương tự.

Cài đặt Swap (bắt buộc nếu bạn chỉ có 1GB RAM, 2GB thì không cần)

  1. Tạo một file swap rỗng:
     sudo install -o root -g root -m 0600 /dev/null /swapfile
  2. Ghi 1GB ổ cứng vào file swap:
    dd if=/dev/zero of=/swapfile bs=1k count=1024k
  3. Nói với Linux đây là file swap:
    mkswap /swapfile
  4. Kích hoạt swap:
    swapon /swapfile
  5. Tự động tạo swap sau khi reboot hệ thống:
    echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
  6. Cài đặt swappiness để chỉ sử dụng swap trong trường thiếu ram:
    sudo sysctl -w vm.swappiness=10
Cài đặt Git:
sudo apt-get install git
Cài đặt Docker:
wget -qO- https://get.docker.io/ | sh

Cài đặt Discourse:

  1. Tạo thư mục chứa Docker Image:
    mkdir /var/discourse
  2. Download Docker Image từ Github:
    git clone https://github.com/discourse/discourse_docker.git /var/discourse
  3. Chuyển tới thư mục chứa Docker:
    cd /var/discourse
  4. Copy file cấu hình :
     cp samples/standalone.yml containers/app.yml

Cấu hình Discourse

  1. Sửa file app.yml trong /var/discourse/containers/: nano /var/discourse/containers/app.yml
  2. Thay đổi email admin ( Để sau khi bạn tạo tài khoản bằng email này nó sẽ tự thành Admin): Sửa  trường DISCOURSE_DEVELOPER_EMAILS thành email của bạn.
  3. Sửa DISCOURSE_HOSTNAME thành domain của bạn
  4. Tiếp bạn cần cấu hình Email để Discourse có thể gửi email cho các thành viên như email kích hoạt tài khoản,… Nếu bạn chưa setup mail server thì đơn giản nhất là dùng SMTP bên ngoài. Bạn đăng ký một tài khoản Mandrill sau đó vào Setitings của Mandrill để lấy các thông tin và nhập vào đây, hoặc dùng gmail SMTP
1
2
3
4
5
6
7
DISCOURSE_SMTP_ADDRESS: smtp.mandrill.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USERNAME: abc@gmail.com
DISCOURSE_SMTP_PASSWORD: 1ST#4GTjsuZioW6
5. Nếu bạn chỉ có 1GB RAM thì sửa UNICORN_WORKERS = 2 và db_shared_buffers = 128MB\
6. Lưu lại và thoát (Ctrl+ O và Ctrl +X)
Trong quá trình chỉnh sửa file app.yml ở trên, bạn chú ý ở mỗi dòng bạn chỉnh nếu có dấu “#” thì phải bỏ đi nhé, như thế mới có hiệu lực.

Bootstrap Discourse

Chạy lệnh
./launcher bootstrap app 
nếu được hỏi thì cứ enter hoặc yes nhé
Chờ khoảng  8 phút hoặc hơn đến khi quá trình Bootstrap Discourse thành công
Khi xong, chạy tiếp lệnh:
./launcher start app
Như vậy là bạn đã cài đặt xong Discourse trên Unbuntu qua Docker
Truy cập vào tên miền bạn đã cài đặt trong file app.yml và bạn sẽ thấy giao diện quen thuộc của Discourse
Nếu bạn gặp lỗi 502 Nginx Bad Gateway thì chờ 30s sau vào lại nhé, chắc chắn sẽ được
Sau đó hãy tạo một tài khoản với email bạn đã nhập ở trên nhé, nó sẽ tự thành admin
end!
nguồn: https://www.crazytut.com/cai-dat-discourse-tren-vps-ubuntu-14-04-debian-8/

February 1, 2016

Hướng dẫn remote mysql [đặt 1 code ở 1 VPS, data ở VPS khác]

kết nối code ở 1 VPS với 1 data ở 1 VPS khác. Cả 2 đều chạy VPSSIM (nginx, mysql chạy mariadb và PHP như chúng ta đã biết). Hôm nay mình hướng dẫn các bạn coi như là 1 TUT cho những ai cần nhé.

Cách làm khá đơn giản, các bạn có thể áp dụng cho mọi VPS và Hosting (có hỗ trợ tính năng remote mysql).
1, Trước tiên làm sao để biết VPS hay Host có hỗ trợ remote mysql (trên VPS or Host chứa data thôi nhé còn bên VPS/Host chứa code thì không cần):
  • Trên VPS chứa data: các bạn xem trong file /etc/my.cnf (file này trên VPSSIM thì nó ở /etc/my.cnf.d/server.cnf nếu có chứa dòng sau thì các bạn xóa nó đi nhé:
    bind-address = 127.0.0.1 (xóa dòng này đi)
  • Trên Hosting (ở đây mình ví dụ là Directadmin còn trên CP11 thì mình ko rõ là có như vậy ko vì chưa làm trên CP11 bao giờ) thì các bạn ấn vào Mysql Management


Nếu Host cho phép remote thì khi các bạn ấn vào tên data cần remote từ bên khác sang, các bạn sẽ thấy chức năng Add Host như hình dưới đây:


2, Các bước làm như sau:
a, Nếu các bạn sử dụng 1 VPS chứa data.
- Hãy truy cập vào phpmyadmin (trên VPS ko cài phpmyadmin thì mình chắc là các bạn tự biết cách làm tương tự ) và vô phần User, tạo 1 user mới bằng cách nhấn vào Add userngay bên dưới như hình dưới đây:


  • Hãy điền các thông số User Name, Host, Password và Re-type của password. Chú ý mục Host hãy chọn Use text field sau đó điền ip của VPS/Host chứa code như hình dưới:

Các mục khác các bạn không làm gì cả rồi ấn Go dưới cùng.
  • Rồi giờ thì hãy add user đó vào data mà các bạn muốn remote bằng cách quay lại phần User và chọn Edit Previleges :

  • Sau đó click vào Database:


Click chọn 1 database mà các bạn muốn remote rồi ấn Go nó sẽ đưa bạn đến mục Database-specific privileges, hãy Check all rồi ấn Go tiếp:


  • Vậy là xong bên VPS chứa data, qua bên VPS/Host chứa code, các bạn mở file config data lên, thay vì điền localhost hãy điền ip của bên VPS chứa data, thông tin khác thì cũng điền cho khớp với bên VPS chứa data.
  • Rồi tận hưởng thành quả thôi!!!
b, Nếu các bạn sử dụng Host để chứa data:
- Các bạn chỉ cần vô Host, vào Mysql Management, click vào tên data muốn remote, bên dưới các bạn điền ip của bên VPS/Host chứa code và ấn Add Host như hình dưới đây:


  • Vậy là xong bên VPS chứa data, qua bên VPS/Host chứa code, các bạn mở file config data lên, thay vì điền localhost hãy điền ip của bên Host chứa data, thông tin khác thì cũng điền cho khớp với bên Host chứa data.
Nhìn thì có vẻ phức tạp nhưng nói thật là làm chỉ mất mấy phút là xong. Bài viết này được mình tự tay biên soạn, nếu copy, xin hãy ghi rõ nguồn nhé. Xin cảm ơn.

nguồn: http://diendan.w4vn.net/t/topic/28