วิธีการเปลี่ยนพอร์ตของ Tomcat จาก 8080 เป็น 80?


คำตอบ:


215

1) ไปที่confโฟลเดอร์ในไดเรกทอรีการติดตั้ง tomcat

 e.g. C:\Tomcat 6.0\conf\

2) แก้ไขแท็กต่อไปนี้ในserver.xml ไฟล์

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

3) เปลี่ยนport=8080ค่าเป็นport=80

4) บันทึกไฟล์

5) หยุด Tomcat ของคุณและเริ่มต้นใหม่


14
นอกจากนี้ตรวจสอบให้แน่ใจว่าได้หยุดและรีสตาร์ท Tomcat แค่พูด. :)
AllieCat

3
ฉันทำสิ่งนี้และฉันได้รับข้อผิดพลาด 404! มีอะไรอีกบ้างที่ฉันควรทำ?
Saturnian

15
ในetc/default/tomcat7ชุดAUTHBIND=yesเพื่อหลีกเลี่ยงข้อผิดพลาด PermissionDenied สำหรับพอร์ต 80
Markus Pscheidt

1
ดูคำตอบของ Rose สำหรับสภาพแวดล้อม Linux!
Marko

คำตอบนี้ไม่มีข้อมูล / etc / authbind ให้ดูคำตอบจาก Rose ด้านล่าง
jorfus

119

Ubuntu 14.04 LTS ใน Amazon EC2 ขั้นตอนต่อไปนี้แก้ไขปัญหานี้ให้ฉัน:

1. แก้ไข server.xml และเปลี่ยนพอร์ต = "8080" เป็น "80"

sudo vi /var/lib/tomcat7/conf/server.xml

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2. แก้ไขไฟล์ tomcat7 (หากไม่ได้สร้างไฟล์คุณต้องสร้างมันขึ้นมา)

sudo vi /etc/default/tomcat7

ไม่แสดงข้อคิดเห็นและเปลี่ยน # AUTHBIND = ไม่ใช่เป็นใช่

3. ติดตั้ง authbind

sudo apt-get install authbind

4. เรียกใช้คำสั่งต่อไปนี้เพื่อระบุ tomcat7 read + execute บนพอร์ต 80

sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80

5. รีสตาร์ท Tomcat:

sudo /etc/init.d/tomcat7 restart

1
อันนั้นใช้ได้ผล คน Linux อย่างน้อยก็ใช้ได้กับฉันด้วย Ubuntu 14.04.2 LTS
Rodrigo Gurgel

3
Autobind เป็นคำตอบที่ถูกต้อง แต่โปรดทราบว่าคุณสามารถข้าม autobind ได้ในกรณีที่คุณใช้ 'sudo startup.sh' เนื่องจากพอร์ต 80 จะถูกมอบให้กับผู้ใช้ที่เพิ่มขึ้น
Marcio Jasinski

1
ขอบคุณ !! ฉันรู้เกี่ยวกับการเปิดใช้งาน authbind ในการกำหนดค่าเซิร์ฟเวอร์ แต่ไม่รู้ว่าฉันต้องสร้างไฟล์ใน authbind สำหรับพอร์ตที่ลงทะเบียน! ฉันหวังว่า OP ได้เปลี่ยนวิธีการตอบรับเป็นคำตอบ! (ฉันเห็นว่าคุณเกือบ 3 ปีในการตอบ: P)
Fr0zenFyr

1
มันทำงานร่วมกับ Tomcat 9 บน Lubuntu 18.0.4 โดยไม่ต้องติดตั้งauthbindเพียงเพิ่มการตั้งค่า
Marco Sulla

107

บน Linux Debian (รวมถึง Ubuntu ด้วย) คุณต้องไปที่ให้/etc/default/tomcat7ยกเลิกการใส่เครื่องหมาย#AUTHBIND=noบรรทัดและตั้งค่าเป็น 'ใช่' เพื่อให้เซิร์ฟเวอร์เชื่อมต่อกับพอร์ตที่มีสิทธิพิเศษ


2
สวัสดีฉันไม่มีไฟล์นั้นโดยเฉพาะ
nmkyuppie

Tomcat รุ่นใด คุณใช้ระบบปฏิบัติการอะไร
Pioneer Skies

7
ใช้งานไม่ได้กับ Tomcat หากติดตั้งโดย zip / tar.gz เนื่องจากไม่ได้สร้างไฟล์ใน / etc / defaults /
Gorkamorka

9
เส้นทางข้างต้นควรเป็น: / etc / default / tomcat7 (โปรดสังเกตว่าการขาด 's' เป็นค่าเริ่มต้น)
Tristan Reid

1
Tomcat 9 มีค่าเท่ากันหรือไม่
katu

29

บนระบบ Ubuntu และ Debian จำเป็นต้องใช้หลายขั้นตอน:

  1. ใน server.xml เปลี่ยนสายที่จะมี<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>port="80"

  2. ติดตั้งแพคเกจ authbind แนะนำ (ไม่จำเป็น) ด้วยคำสั่งเช่น:

    sudo apt-get install authbind

  3. เปิดใช้งาน authbind ในไฟล์ server.xml (อย่างใดอย่างหนึ่ง/etc/tomcat6หรือ/etc/tomcat7) โดยไม่แสดงข้อคิดเห็นและตั้งค่าบรรทัดดังนี้:

    AUTHBIND=yes

จำเป็นต้องใช้ทั้งสามขั้นตอน


5
ใช้ไม่ได้กับ Tomcat (หากติดตั้งโดย zip / tar.gz) ใน 13.10
Gorkamorka

4
หากต้องการให้มันทำงานจาก zip / tar.gz ทำตามขั้นตอนที่ 1 และ 2 ข้างต้นเพิ่ม AUTHBIND = ใช่ไปที่ bin / setenv.sh (สร้างถ้าไม่มี) และเริ่มจากรูท ทำงานร่วมกับ LTS 12.04 ควรทำงานด้วย 13.10
karl

ในกรณีของฉันมันล้มเหลว (โดยไม่มีข้อความแสดงข้อผิดพลาดใน catalina.out) โดยไม่ต้องใช้แพคเกจ authbind ทำงานหลังจากติดตั้งแล้ว
golimar

คุณช่วยชี้ไปที่เอกสารเกี่ยวกับ AUTHBIND = ใช่ได้ไหม ฉันพบว่ามันไม่มีที่ไหนเลย
ARX

ฉันไม่สามารถพูดถึงการตั้งค่า AUTHBIND เป็นส่วนหนึ่งของการกำหนดค่าองค์ประกอบเซิร์ฟเวอร์ในเอกสารประกอบ TOMCAT ได้เช่นกัน แปลก.
Peter N. Steinmetz

22

ฉันพยายามเปลี่ยนพอร์ตจาก8080เป็น80เป็นserver.xmlแต่ไม่ได้ผลสำหรับฉัน จากนั้นฉันพบทางเลือกอัปเดตiptablesว่าฉันมั่นใจว่ามีผลกระทบต่อประสิทธิภาพหรือไม่

ฉันใช้คำสั่งต่อไปนี้:

sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo /sbin/service iptables save

http://www.excelsior-usa.com/articles/tomcat-amazon-ec2-advanced.html#port80


วิธีการคืนค่านี้
SAI GIRI CHARY AOUSULA

รันคำสั่งต่อไปนี้เพื่อลบการจัดเส้นทาง: iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT - to-port 8080
casol

17

เนื่องจากคำตอบก่อนหน้านี้ใช้งานไม่ได้ดี (มันดี แต่ไม่เพียงพอ) สำหรับฉันบนเซิร์ฟเวอร์ Ubuntu 14.04 ฉันพูดถึงคำแนะนำเหล่านี้ (นี่เป็นคำพูด)

แก้ไข: ทราบว่าเป็น @ jason-เฟาสต์กล่าวว่าในความคิดเห็นที่เกี่ยวกับ 14.04 ซึ่งเป็นauthbindแพคเกจที่มาพร้อมกับมันไม่สนับสนุน IPv6 ในขณะนี้ดังนั้นสิ่งที่ชอบ IPv4 ไม่จำเป็นอีกต่อไป

1) Install authbind
2) Make port 80 available to authbind (you need to be root):

  touch /etc/authbind/byport/80
  chmod 500 /etc/authbind/byport/80
  chown tomcat7 /etc/authbind/byport/80

3) Make IPv4 the default (authbind does not currently support IPv6).
   To do so, create the file TOMCAT/bin/setenv.sh with the following content: 

   CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"

4) Change /usr/share/tomcat7/bin/startup.sh

  exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
  # OLD: exec "$PRGDIR"/"$EXECUTABLE" start "$@"

หากคุณมีsetenv.shแฟ้มใน/usr/share/tomcat7/binด้วยCATALINA_OPTSคุณต้องใช้งาน:

export CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true"

ตอนนี้คุณสามารถเปลี่ยนพอร์ต80เป็นที่บอกในคำตอบอื่น ๆ


2
ฉันจะเพิ่มว่าไฟล์ startup.sh ตั้งอยู่ที่: /usr/share/tomcat7/bin/startup.sh - มันไม่ค่อยชัดเจนสำหรับมือใหม่เรา;)
ConMan

@ConMan อัปเดตพา ธ นั่นเป็นความคิดที่ดีในการบันทึกการค้นหาอื่น ๆ ฉันยอมรับว่าการรู้สถานที่แห่งนี้ไม่ชัดเจนในตอนแรก
smonff

1
ขอบคุณมันใช้งานได้ดีฉันคุ้นเคยกับ centos ดังนั้นนี่จึงเป็นประโยชน์กับฉันซึ่งนี่ไม่ใช่ปัญหาสำหรับฉัน
med116

1
ฉันเพิ่งติดตามสิ่งนี้ในวันที่ 14.04 แพ็คเกจ authbind ที่มาพร้อมกับมันรองรับ IPv6 ตอนนี้ดังนั้นสิ่งที่ชอบ IPv4 ไม่จำเป็นอีกต่อไป
Jason Faust

ฉันก็ทำเช่นนั้น: chmod 755
/usr/share/tomcat7/bin/setenv.sh

5

บน linux ที่ทันสมัยวิธีที่ดีที่สุด (สำหรับฉัน) คือการใช้ xinetd

1) สร้าง /etc/xinet.d/tomcat-http

service http
{
        disable = no
        socket_type = stream
        user = root
        wait = no
        redirect = 127.0.0.1 8080
}

2) สร้าง /etc/xinet.d/tomcat-https

service https
{
        disable = no
        socket_type = stream
        user = root
        wait = no
        redirect = 127.0.0.1 8443
}

3) chkconfig xinetd บน

4) /etc/init.d/xinetd เริ่มต้น


วิธีอื่นคือการคอมไพล์และใช้ jsvc แต่ xinetd นั้นง่ายกว่าแน่นอน
cgdave

5

หากใครบางคนกำลังมองหาวิธีการเปลี่ยนหมายเลขพอร์ต Tomcat ในผู้ใช้ Eclipse IDE ต่อไปนี้เป็นขั้นตอน

1. ในมุมมองเซิร์ฟเวอร์ดับเบิลคลิกที่ชื่อเซิร์ฟเวอร์: ป้อนคำอธิบายรูปภาพที่นี่

2. จะเปิดหน้าการกำหนดค่าสำหรับ Tomcat ดังต่อไปนี้: ป้อนคำอธิบายรูปภาพที่นี่

3. ประกาศหมายเลขพอร์ตที่แสดงในตารางด้านขวา คลิกเพื่อแก้ไขตัวอย่างเช่น: ป้อนคำอธิบายรูปภาพที่นี่

4. จะเปลี่ยนหมายเลขพอร์ตสำหรับ HTTP จาก 8080 เป็น 80 กด Ctrl + S เพื่อบันทึกการเปลี่ยนแปลงและรีสตาร์ทเซิร์ฟเวอร์ เราสามารถสังเกตเห็นการเปลี่ยนแปลงของหมายเลขพอร์ตในมุมมองคอนโซล: ป้อนคำอธิบายรูปภาพที่นี่

เนื้อหาทั้งหมดนี้นำมาจากลิงค์ด้านล่างโปรดอ้างอิงลิงค์นั้นสำหรับข้อมูลเพิ่มเติมขอบคุณ http://www.codejava.net/servers/tomcat/how-to-change-port-numbers-for-tomcat-in-eclipse


4

การเรียกใช้คำสั่งด้านล่างทำงานด้วย พยายามเปลี่ยนแปลงserver.xmlและไฟล์ conf แต่ทั้งคู่ใช้งานไม่ได้

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

/sbin/iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

3

บนเซิร์ฟเวอร์ linux คุณสามารถใช้คำสั่งนี้เพื่อกำหนดค่า Tomcat ใหม่เพื่อฟังบนพอร์ต 80:

sed -i 's|port="8080"|port="80"|g' /etc/tomcat?/server.xml
sed -i 's|#AUTHBIND=no|AUTHBIND=yes|g' /etc/default/tomcat?
service tomcat8 restart

2

หากคุณกำลังใช้ eclipse และการแก้ไข server.xml ไม่ทำงานสำหรับคุณให้ลองบทความต่อไปนี้ .. พวกเขามีขั้นตอนในการปรับเปลี่ยนพอร์ตหากคุณใช้ IDE เช่น eclipse


1

แค่ข้ามโฟลเดอร์ conf ของ Tomcat

เปิดไฟล์ server.xml

ไปที่หนึ่งในโหนดตัวเชื่อมต่อซึ่งมีลักษณะดังต่อไปนี้

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />

เพียงเปลี่ยนพอร์ต

บันทึกและรีสตาร์ท Tomcat


1
บน Windows เท่านั้นใช่ไหม
smonff

1

นี่คือขั้นตอน:

-> ติดตามเส้นทาง: {ไดเรกทอรี tomcat> / conf -> ค้นหาบรรทัดนี้:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

เปลี่ยนหมายเลขพอร์ตจาก "8080" เป็น "80"

-> บันทึกไฟล์

-> รีสตาร์ทเซิร์ฟเวอร์ :)


0

อย่าลืมแก้ไขไฟล์ เปิดไฟล์/etc/default/tomcat7และเปลี่ยนแปลง

#AUTHBIND=no

ถึง

AUTHBIND=yes

จากนั้นรีสตาร์ท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.