Vọc vạch cách deploy java web lên heroku
TIL
720
Java
155
beginner
3
White

Lê Vũ viết ngày 05/10/2018

Vọc vạch cách deploy java web lên heroku

Hôm nay rảnh rỗi, lướt qua fan page của kipalog. Kéo lên kéo xuống thì thấy được bài viết về Today I Learn (hay còn gọi TIL). Nên hôm nay mình viết lại hôm qua mình đã học được những gì. Hi vọng lần đầu tiên viết bài không bị phạm phải nội quy nào của kipalog.

Mình thì chú tâm vào php và java, hôm qua có viết trên blog mình chia sẻ về việc deploy một java web lên heroku. Hôm nay chia sẻ những thứ mình đã làm và những điều mình đã học được.

Bài viết sẽ theo trình tự sau:

  1. Những kiến thức mình đã học được.
  2. Các link trong bài viết.
  3. Tạo project.
  4. Sửa file pom.xml.
  5. Cấu hình run project với tomcat trên localhost.
  6. Cấu hình webapp-runner
  7. Push project lên github và deploy trên heroku.
  • Bài viết được viết bởi một người chưa có nhiều kinh nghiệm về mặt chuyên môn và tuổi nghề khá thấp. Mọi sai sót và thắc mắc anh em có thể comment bên dưới để mình cải thiện hơn nhé.
  • Ngoài ra, mình cũng đã tham khảo khá kỹ quy định tại https://kipalog.com/tos để tránh trường hợp đáng tiếc ngoài mong muốn.
  • Bài viết mang tính chất chia sẻ và học hỏi. Không mang ý nghĩa nhiều về mặt hướng dẫn.

I. Những kiến thức mình đã học được:

  • Biết cách tìm kiếm maven và cách sử dụng.
  • Biết cách sử dụng github.
  • Đã hiểu được webapp-runner là gì và cách cài đặt.

II. Trích dẫn Nội Dung trong bài viết:

III. Tạo project:

Đầu tiên, mình mở eclipse lên, click lần lượt FILE -> NEW PROJECT -> MAVEN PROJECT
alt
Chọn folder lưu file tùy ý mình và chọn next. Tiếp theo mình chọn webapp như hình dưới và nhấn next tiếp
alt
Chọn ArtifactID tùy ý mình, rồi finish để kết thúc phần tạo project.

IV.Sửa file pom.xml

Đầu tiên vào file pom.xml và thêm các maven plugin vào.

Đầu tiên, mình tìm google với từ khóa “Tomcat Maven Plugin” rồi click vào website của mvnrepository.com. Trong đó mình chọn phiên bản tomcat 7 và version 2.2. Chọn phiên bản khác cũng được, sau khi click vào phiên bản mình muốn, mình copy dòng sau.
alt
Sau đó mở file pom.xml lên, gõ ở trong cặp thẻ <build> , nằm dưới cặp thẻ <finalName> như sau:

<plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
</plugin>

Trong cặp thẻ <artifactitem> anh em sẽ thấy tương tự như phần maven mình copy lúc nãy (xem hình phía trên)

Tiếp theo, mình thêm webapp-runner vào để có thể deloy trên heroku. Mình search google với từ khóa “webapp-runner maven” và click vào website mvnrepository.com, sau đó chọn phiên bản, với cá nhân mình thì vẫn trung thành với bản 8.0.30.2. Thấy hồi giờ chạy không làm sao cả nên làm biếng nâng cấp lên. Vẫn tiếp tục copy như sau nhé.
alt
Tiếp tục phía dưới đoạn code lúc nãy mình thêm vào.

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-dependency-plugin</artifactId>
   <version>2.3</version>
   <configuration>
      <failOnMissingWebXml>false</failOnMissingWebXml>
   </configuration>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>copy</goal>
         </goals>
         <configuration>
            <artifactItems>
               <artifactItem>
                  <groupId>com.github.jsimone</groupId>
                  <artifactId>webapp-runner</artifactId>
                  <version>8.0.30.2</version>
                  <destFileName>webapp-runner.jar</destFileName>
               </artifactItem>
            </artifactItems>
         </configuration>
      </execution>
   </executions>
</plugin>

Tương tự đoạn code plugin tomcat, nhưng chỉ khác có thêm cặp thẻ <execuptions>. Bởi vì mình cần tự động download file webapp-runner.jar vào thư mục target. Phần việc cuối cùng đối với file pom.xml là thêm javax.servlet-api, cũng tìm kiếm google với từ khóa javax.servlet-api, các bước tương tự như trên, sau này anh em cần tìm một maven nào đó thì cách làm tương tự nhé. Sau khi sửa file pom.xml hoàn chỉnh sẽ ra code như sau :

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>javachallenged</groupId>
   <artifactId>javachallenged</artifactId>
   <packaging>war</packaging>
   <version>0.0.1-SNAPSHOT</version>
   <name>javachallenged Maven Webapp</name>
   <url>http://maven.apache.org</url>
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.1.0</version>
         <scope>provided</scope>
      </dependency>
   </dependencies>
   <build>
      <finalName>javachallenged</finalName>
      <plugins>
         <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <configuration>
               <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>copy</goal>
                  </goals>
                  <configuration>
                     <artifactItems>
                        <artifactItem>
                           <groupId>com.github.jsimone</groupId>
                           <artifactId>webapp-runner</artifactId>
                           <version>8.0.30.2</version>
                           <destFileName>webapp-runner.jar</destFileName>
                        </artifactItem>
                     </artifactItems>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

V. Cấu hình run project với tomcat trên localhost

Mình chuột phải vào project -> run as – > run configuration, sau đó cấu hình như hình sau:
alt
Sau đó nhấn run và chờ đợi, với lần chạy đầu tiên, thì chờ khá là lâu đấy.

VI. Cấu hình webapp-runner

Việc cấu hình mình chẳng cần làm gì nhiều, chỉ việc chuôt phải vào project, chọn new file, đặt tên file là Procfile và không có đuôi. Sau đó thêm dòng sau vào file:
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

VII. Push project lên github và deploy trên heroku.

Sau khi thực hiện các bước trên, mình chạy project trên localhost đã, xem có lỗi gì không, nếu không có lỗi gì, mình push lên kho github của mình.

Sau đó lên heroku, tạo app và và bắt deloy thôi.
alt
alt
alt
Sau khi deploy thành công, sẽ hiển nút view bên dưới, mình bấm vào đó sẽ ra app của mình nhé.
alt

Goodbye

Vậy là bài viết đã xong, sau bài viết nàymình có thể tự tạo kho github của mình và deloy lên heroku rồi.

Ở bài sau mình sẽ tiếp tục vọc vạch về jsp và servlet, các ví dụ sẽ được đưa toàn bộ lên github và heroku hết nhé.

Xin chào.
TuanVuMustache 05-10-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lê Vũ

1 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
0 0
Tài liệu JS for beginners có bài tập tự luyện Cho ae nào cần: Tài liệu JavaScript cơ bản có bài tập tự luyện https://bit. ly/2IRzvuH(bỏ dấu khoản...
Trần Trung viết 4 tháng trước
0 0
White
5 3
This is my first blog post on Kipalog. I'm a freshman in Wollonong University, Australia and currently studying Bachelor of Computer Science. I've ...
Duy Tùng viết 7 tháng trước
5 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!