Bài này cũng khá cũ rồi nhỉ. Nhưng mình không muốn tạo thêm chủ để mới, với cả hướng dẫn cũng chỉ nhằm mục đích cho các bạn test thôi, nên cũng chả quan trọng để tạo topic mơi.
Để cài và chạy nodejs lên hosting thì trước hết bạn phải có quyền truy cập ssh đối với hosting. Và mình sẽ cài nodejs thông qua nvm
.
Bạn truy cập vào hosting với ssh console (Mình thường dùng ZOC Terminal).
Chạy lệnh sau để cài đặt nvm
:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
Tiếp theo bạn cần tắt console và kết nối lại SSH để có thể dùng nvm
.
Kiểm tra nvm
cài đặt thành công với lệnh:
command -v nvm
nếu in ra nvm
thì đã cài thành công. Tiếp theo các bạn cài nodejs
bằng lệnh sau:
nvm install node
Bạn có thể kiểm tra nodejs
và npm
đã được cài đặt như thông thường với 2 lệnh: node -v
và npm -v
.
Tiếp theo, vào thư mục gốc để chứa mã nguồn web, thường thì là public_html
cd public_html
Tại đây các bạn có thể up code của các bạn lên như bình thường. Còn mình sẽ tạo một file mã nguồn đơn giản với ví dụ kinh điển là in ra trình duyệt dòng chữ Hello world
. Nội dung file `app.js của mình:
var http = require("http");
http.createServer(function (request, response) {
// Send the HTTP header
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// Send the response body as "Hello World"
response.end('Hello World\n');
}).listen(65500);
// Console will print the message
console.log('Server running!/');
Sau đó tạo file .htaccess
để có thể truy cập từ port 80 của domain về port của node server:
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:65500/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:65500/$1 [P,L]
Các bạn vào lại SSH console để chạy node server:
node app.js
Truy cập vào domain và xem thành quả nhé
Các bạn còn máu me nữa có thể cài thêm cả forever
và nodemon
để server tiếp tục chạy kể cả khi tắt SSH console và tự khởi động lại khi code có thay đổi nhé.
npm install forever nodemon -g
forever start --minUptime 1000 --spinSleepTime 1000 --killSignal=SIGTERM -c "nodemon --exitcrash" app.js
Mình không biết trên share host có dùng được cách này không, vì ip của share host là ip share chung, mình cũng chưa thử, chỉ mới thử trên business host vì nó có IP riêng và quyền giao tiếp SSH.
Thường thì Share host ít có quyền giao tiếp với SSH, còn Business host thì giá thấp lắm cũng phải từ 150k trở lên, đăt hơn dùng VPS. Nên mình nghĩ cái này vọc vạch thì ngon chứ để dùng thì chắc VPS hoặc Platform tốt hơn.