Tạo một website bằng java

Mọi người ơi. Sau thời gian học tập thì em có tự viết được 1 website bán hàng sử dụng java, DB là MySQl.
Bây giờ e muốn đưa nó lên thành website thì phải cần chuẩn bị thêm những gì ạ. Lần đầu tiên nên vẫn còn nhiều thứ chưa biết nên mong mọi người giúp đỡ
Em đã có mua 1 domain rồi, giờ cần mua thêm 1 VPS hay sao ạ.
Em xin cảm ơn.

VPS:

  • Lên đăng ký gcloud engine, add credit card sẽ được Free 1 năm VPS + 300 credit.
  • Lên AWS đăng ký, add credit card sẽ được Free EC2 1 năm.

Thao tác:
Cần biết dùng terminal/ssh để cài đặt môi trường như DB, còn việc run java site (thường là spring boot) thông thường chỉ cần đẩy file jar đã build lên và run là được.

8 Likes

E mua VPS trên hawkhost ạ. Nhưng không biết cách để kết nối CSDL cũng như push project của mình lên

Tớ extend thêm câu trả lời tương đối đầy đủ của Hà Mã (phần thao tác) thôi :smiley:

Để đưa trang web của cậu lên online, cậu cần thêm các thao tác như thế này:

  1. Cài đặt web server.
    Nếu cậu dùng Spring Boot, cậu đã có sẵn Tomcat embedded web server -> cậu không cần cài đặt thêm, nhưng nếu cậu dùng JSP/Spring MVC/etc…, cậu cần cài đặt Web server để deploy web app của cậu (thường là Tomcat).
    Cậu cần tìm hiểu ssh để connect tới remote server, và các lệnh linux (nếu server của cậu dùng linux), và cách install & run web server.
  2. Cài đặt database server.
    Cậu dùng MySQL -> cần cài đặt và run MySQL trên server.
    Practically cậu nên cài nó ở server khác với server chứa application. Tuy nhiên, nếu cậu có resource giới hạn, cậu có thể cài MySQL trên cùng server với Web server.
    Cậu cũng cần ssh để connect tới remote server, và các lệnh linux (nếu server của cậu dùng linux), và hiển nhiên, cách cài đặt và chạy MySQL :smiley:
  3. Config các cổng của server (nếu cần).
    Tùy vào kiến trúc hệ thống của cậu, chức năng của web và platform cậu sử dụng để deploy app, cậu sẽ cần phải enable 1 số cổng. Nếu cậu dùng AWS, cậu có thể tùy ý mở các cổng cần thiết, và block tất cả các cổng còn lại, nhằm mục đích security.
    Ngoài các cổng cơ bản như cổng 22 để truy cập SSH, cổng 8080 cho HTTP protocol, nếu cậu tách riêng MySQL ra 1 server riêng, cậu cần mở cổng mà MySQL sử dụng để application có thể truy cập được (default 3306). Đồng thời, cậu cũng cần config để MySQL chấp nhận access từ website (thường thì không cần đâu, vì chỉ trong TH đặc biệt liên quan tới security, cậu cần giới hạn domain có thể truy cập được vào Database).
  4. Build the project
    Cậu cần phải build project java của cậu để deploy nó lên server. Kết quả file build sẽ thường là file war (hoặc đôi khi là jar file nếu cậu dùng Spring Boot), và cậu cần copy file war/jar đó lên trên server.
    Vì build project cần các tool khác với khi deploy & run web app (thường với Java cậu dùng ant/maven/gradle…), và cậu cần cả source code, nên practically build machine (máy dùng để buiild project) thường không đặt cùng với Deployment machine (máy dùng để chạy web app).
    Cậu có thể build project trên local machine, rồi dùng scp để chuyển nó lên server. Hoặc nếu cậu thấy deployment machine có dư giả resource quá, cậu có thể build trên đó luôn (tớ không khuyến khích điều này lắm, vì deployment machine chỉ nên cần web server thôi).
    Ngoài ra, cậu cần thay đổi DB config trước khi build (host/username/password/etc…). Nếu không, app của cậu không kết nối được tới database đâu.
  5. Deploy web application.
    Sau khi copy file war/jar lên server, cậu cần để nó vào trong web server (trong TH cậu dùng Tomcat, cậu cần bỏ nó vào /webapp), sau đó restart web server.
    Cậu cần học cách sử dụng web server - nơi deploy, cách start/stop/restart server.
    Trong TH cậu dùng Spring boot, cách deploy của cậu sẽ hơi khác (do cậu có Tomcat embedded rồi). Cậu cần phải học cách để deploy Spring Boot web app trong TH đó.
  6. Enjoy your website with beer :beer:

Tớ hi vọng những thông tin trên giúp ích cho cậu.

EDIT: Tớ bổ sung thêm phần Spring Boot project deployment note ở “Deploy web application”.
EDIT 2: Tớ bổ sung thêm phần “Config các cổng của server”.

9 Likes

A có thể cho e xin fb hoặc zalo để e ib hỏi thêm tí được không ạ

Tớ nghĩ sẽ tốt hơn nếu cậu hỏi ở trên diễn đàn, vì có thể có ai đó sẽ cần tham khảo cách giải quyết vấn đề của cậu, và cậu có cơ hội nhận được nhiều sự hỗ trợ hơn, khi mà không phải lúc nào tớ cũng available :smiley:
Thực ra tớ cũng available trên đây hơn là facebook hay zalo.

4 Likes

https://www.youtube.com/watch?v=wyIx9k36fsY Mình làm theo video này, còn phần kết nối DB vẫn chưa giải quyết được, a có thể giúp e giải thích thêm 1 tí nữa đc k :((

Cậu có thể nêu rõ vấn đề của cậu được không?

  • Phần kết nối DB cậu gặp vấn đề gì? Vấn đề của cậu xảy ra ở đâu?
    Cậu có thông tin gì - log, code, và cách để tái hiện lại vấn đề của cậu… để giúp bọn tớ hiểu được vấn đề của cậu không?
  • Cậu đã thử giải quyết vấn đề bằng cách nào rồi? Cậu đã thử google chưa? Cậu có thể tóm tắt nỗ lực tìm kiếm & giải quyết vấn đề của cậu được không?
    Nếu chưa thì cậu nên thử trước, cậu sẽ học được thêm nhiều hơn đó! :smiley:

Tớ không thể giải thích 1 tí nữa khi mà tớ không rõ cậu cần tớ giải thích gì Khanh à :smiley: Vậy nên, cậu giúp bọn tớ có thêm thông tin nhé! :smiley:

5 Likes

:clap: :clap: :clap: :clap:
Một câu trả lời chi tiết và xuất sắc :yum: :yum: :yum: :yum: :yum:

3 Likes

hawkhost Hà Mã Tím không có xài nên không rõ cpanel nó thế nào.
thông thường dưới máy bạn run như nào thì trên server cũng y như thế.
spring boot có phần run profile chỉ cần chỉnh sửa các properties ở production cho phù hợp là xong.
mà thực ra cũng không cần vì bạn có thể inject các properties đó ngay lúc run .jar file, ví dụ:

java -jar hamabeo.jar --database.url=jdbc:postgresql://localhost:5432/hamabeodb --server.port=80 --spring.profiles.active=staging
6 Likes

Hà Mã Tím đáng yêu update lại hiện tại gcloud chỉ cho dùng $300 credit trong 90 ngày thôi nha. Bạn nào dùng vps to béo mà còn liên kết trực tiếp với nồi cơm thì cẩn thận nha.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?