Web服務(Apache、Nginx、Tomcat、Jetty)與應用(LAMP、CMS-WordPress&Ghost、Jenkins、Gitlab)
Web服務和應用是目前資訊科技領域的熱門技術。如何使用Docker來執行常見的Web伺服器(包括Apache、Nginx、Tomcat等),以及一些常用應用(LAMP、CMS等)。包括具體的映象構建方法與使用步驟。
兩種建立映象的過程。其中一些操作比較簡單的映象使用Dockerfile來建立,而像Weblogic這樣複雜的應用,則使用commit方式來建立。
Apache
Apache是一個高穩定性的、商業級別的開源Web伺服器。目前Apache已經是世界使用排名第一的Web伺服器軟體。由於其良好的跨平臺和安全性,Apache被廣泛應用在多種平臺和作業系統上。作為Apache軟體基金會支援的專案,它的開發者社群完善而高效。自1995年釋出至今,一直以高標準進行維護與開發。Apache名稱源自美國的西南部一個印第安人部落:阿帕奇族,它支援類UNIX和Windows系統。
1.使用官方映象
官方提供了名為httpd的Apache映象,可以作為基礎Web服務映象。
編寫Dockerfile檔案,內容如下:
FROM httpd:2.4 COPY ./public-html /usr/local/apache2/htdocs/
建立專案目錄public-html,並在此目錄下建立index.html檔案:Hello, Docker!
構建自定義映象:$ docker build -t apache2-image .
構建完成後,使用docker run指令執行映象:$ docker run -it –rm –name apache-container -p 80:80 apache2-image
通過本地的80埠即可訪問靜態頁面。
也可以不建立自定義映象,直接通過對映目錄方式執行Apache容器:
$ docker run -it –rm –name my-apache-app -p 80:80 -v “$PWD”:/usr/local/apache2/htdocs/ httpd:2.4
再次開啟瀏覽器,可以再次看到頁面輸出。
2.使用自定義映象
首先,建立一個apache_ubuntu工作目錄,在其中建立Dockerfile檔案、run.sh檔案和sample目錄:
$ mkdir apache_ubuntu && cd apache_ubuntu
$ touch Dockerfile run.sh
$ mkdir sample
下面是Dockerfile的內容和各個部分的說明:
#設定繼承自使用者建立的sshd映象
FROM sshd:Dockerfile
#建立者的基本資訊
MAINTAINER docker_user (user@docker.com)
#設定環境變數,所有操作都是非互動式的
ENV DEBIAN_FRONTEND noninteractive
#安裝
RUN apt-get -yq install apache2&&
rm -rf /var/lib/apt/lists/*
RUN echo “Asia/Shanghai” > /etc/timezone &&
dpkg-reconfigure -f noninteractive tzdata
#注意這裡要更改系統的時區設定,因為在web應用中經常會用到時區這個系統變數,預設的ubuntu會讓你的應用程式發生不可思議的效果
#新增使用者的指令碼,並設定許可權,這會覆蓋之前放在這個位置的指令碼
ADD run.sh /run.sh
RUN chmod 755 /*.sh
#新增一個示例的web站點,刪掉預設安裝在apache資料夾下面的檔案,並將使用者新增的示例用軟連結,鏈到/var/www/html目錄下面
RUN mkdir -p /var/lock/apache2 && mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
COPY sample/ /app
#設定apache相關的一些變數,在容器啟動的時候可以使用-e引數替代
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_SERVERADMIN admin@localhost
ENV APACHE_SERVERNAME localhost
ENV APACHE_SERVERALIAS docker.localhost
ENV APACHE_DOCUMENTROOT /var/www
EXPOSE 80
WORKDIR /app
CMD [“/run.sh”]
此sample站點的內容為輸出Hello Docker!。然後在sample目錄下建立index.html檔案,內容如下:Hello, Docker!
run.sh指令碼內容也很簡單,只是啟動apache服務:
$ cat run.sh
#!/bin/bash exec apache2 -D FOREGROUND
下面,使用者開始建立apache:ubuntu映象:
使用docker build命令建立apache:ubuntu映象,注意命令最後的“.”。
$ docker build -t apache:ubuntu .
下面開始使用docker run指令測試映象。可以使用-P引數對映需要開放的埠(22和80埠):
$ docker run -d -P apache:ubuntu
64681e2ae943f18eae9f599dbc43b5f44d9090bdca3d8af641d7b371c124acfd
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64681e2ae943 apache:ubuntu “/run.sh” 2 seconds Up 1 0.0.0.0:49171->22/tcp, 0.0.0.0:49172->80/tcp naughty_poincare
在本地主機上用curl抓取網頁來驗證剛才建立的sample站點:
$ curl 127.0.0.1:49172
Hello Docker!
也可以在其他裝置上通過訪問宿主主機ip:49172來訪問sample站點。
在apache映象的Dockerfile中只用EXPOSE定義了對外開放的80埠,而在docker ps -a命令的返回中,卻看到新啟動的容器對映了兩個埠:22和80。
重要:但是實際上,當嘗試使用SSH登入到容器時,會發現無法登入。這是因為在run.sh指令碼中並未啟動SSH服務。這說明在使用Dockerfile建立映象時,會繼承父映象的開放埠,但卻不會繼承啟動命令。
因此,需要在run.sh指令碼中新增啟動sshd的服務的命令:
$ cat run.sh
#!/bin/bash /usr/sbin/sshd & exec apache2 -D FOREGROUND
再次建立映象:
$ docker build -t apache:ubuntu .
這次建立的映象,將預設會同時啟動SSH和Apache服務。
來看看如何對映本地目錄。可以通過對映本地目錄的方式,來指定容器內Apache服務響應的內容,例如對映本地主機上當前目錄下的www目錄到容器內的/var/www目錄:
$ docker run -i -d -p 80:80 -p 103:22 -e APACHE_SERVERNAME=test -v `pwd`/www:/var/www:ro apache:ubuntu
在當前目錄內建立www目錄,並放上自定義的頁面index.html。
在本地主機上可訪問測試容器提供的Web服務,檢視獲取內容為新配置的index.html頁面資訊。
Nginx
Nginx是一款功能強大的開源反向代理伺服器,支援HTTP、HTTPS、SMTP、POP3、IMAP等協議。它也可以作為負載均衡器、HTTP快取或Web伺服器。Nginx一開始就專注於高併發和高效能的應用場景。它使用類BSD開源協議,支援Linux、BSD、Mac、Solaris、AIX等類Unix系統,同時也有Windows上的移植版本。
1.使用官方映象
使用者可以使用docker run指令直接執行官方Nginx映象:
$ docker run -d -p 80:80 –name webserver nginx
34bcd01998a76f67b1b9e6abe5b7db5e685af325d6fafb1acd0ce84e81e71e5d
然後使用docker ps指令檢視當前執行的docker ps指令檢視當前執行的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
34bcd01998a7 nginx “nginx…” 2min ago Up 0.0.0.0:80->80/tcp, 443/tcp webserver
目前Nginx容器已經在0.0.0.0:80啟動,並對映了80埠,此時可以開啟瀏覽器訪問此地址,就可以看到Nginx輸出的頁面。
2.自定義Web頁面
同樣的,建立index.html檔案,並將index.html檔案掛載至容器中,即可看到顯示自定義的頁面。
$ docker run –name nginx-container -p 80:80 -v index.html:/usr/share/nginx/html:ro -d nginx
另外,也可以使用Dockerfile來構建新映象。Dockerfile內容如下:
FROM nginx COPY ./index.html /usr/share/nginx/html
開始構建映象my-nginx:
$ docker build -t my-nginx .
構建成功後執行docker run指令:
$ docker run –name nginx-container -d my-nginx
Tomcat
Tomcat是由Apache軟體基金會下屬的Jakarta專案開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和Java Server Page(JSP)的支援。同時,它提供了作為Web伺服器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由於Tomcat本身也內含了一個HTTP伺服器,也可以當作一個單獨的Web伺服器來使用。
首先,嘗試在Docker Hub上搜尋已有的Tomcat相關映象的個數:
$ docker search tomcat |wc -l
285
可以看到,已經有285個相關映象。如是個人開發或測試,可以隨意選擇一個映象,按照提示啟動應用即可。
下面以Tomcat 7.0為例介紹定製Tomcat映象的步驟:
1.準備工作
建立tomcat7.0_jdk1.6資料夾,從www.oracle.com網站上下載sun_jdk 1.6壓縮包,解壓為jdk目錄。
建立Dockerfile和run.sh檔案:
$ mkdir tomcat7.0_jdk1.6
$ cd tomcat7.0_jdk1.6/
$ touch Dockerfile run.sh
下載Tomcat,可以到官方網站下載最新的版本,也可以直接使用下面連結中給出的版本:
$ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.zip
$ ls
Dockerfile apache-tomcat-7.0.56 jdk run.sh
2.Dockerfile檔案和其他指令碼檔案
Dockerfile檔案內容如下:
#設定繼承自使用者建立的sshd映象
FROM sshd:Dockerfile
#下面是一些建立者的基本資訊
MAINTAINER docker_user (user@docker.com)
#設定環境變數,所有操作都是非互動式的
ENV DEBIAN_FRONTEND noninteractive
#注意這裡要更改系統的時區設定
RUN echo “Asia/Shanghai” > /etc/timezone &&
dpkg-reconfigure -f noninteractive tzdata
#安裝跟tomcat使用者認證相關的軟體
RUN apt-get install -yq –no-install-recommends wget pwgen ca-certificates &&
apt-get clean &&
rm -rf /var/lib/apt/lists/*
#設定tomcat的環境變數,若讀者有其他的環境變數需要設定,也可以在這裡新增。
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
#複製tomcat和jdk檔案到映象中
ADD apache-tomcat-7.0.56 /tomcat
ADD jdk /jdk
ADD create_tomcat_admin_user.sh /create_tomcat_admin_user.sh
ADD run.sh /run.sh
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh
EXPOSE 8080
CMD [“/run.sh”]
建立tomcat使用者和密碼指令碼檔案create_tomcat_admin_user.sh檔案,內容為:
#!/bin/bash if [ -f /.tomcat_admin_created ]; then echo "Tomcat `admin` user already created" exit 0 fi #generate password PASS=${TOMCAT_PASS:-$(pwgen -s 12 1)} _word=$( [ ${TOMCAT_PASS} ] && echo "preset" || echo "random" ) echo "=> Creating and admin user with a ${_word} password in Tomcat" sed -i -r `s/</tomcat-users>//` ${CATALINA_HOME}/conf/tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo " script,manager-jmx,admin-gui, admin-script"/>" >> ${CATALINA_HOME}/conf/ tomcat-users.xml echo `` >> ${CATALINA_HOME}/conf/tomcat-users.xml echo "=> Done!" touch /.tomcat_admin_created echo "========================================================================" echo "You can now configure to this Tomcat server using:" echo "" echo " admin:${PASS}" echo "" echo "========================================================================"
編寫run.sh指令碼檔案,內容為:
#!/bin/bash if [ ! -f /.tomcat_admin_created ]; then /create_tomcat_admin_user.sh fi /usr/sbin/sshd -D & exec ${CATALINA_HOME}/bin/catalina.sh run
3.建立和測試映象
通過下面的命令建立映象tomcat7.0:jdk1.6
$ docker build -t tomcat7.0:jdk1.6 .
啟動一個tomcat容器進行測試:
$ docker run -d -P tomcat7.0:jdk1.6
3cd4238cb32a713a3a1c29d93fbfc80cba150653b5eb8bd7629bee957e7378ed
通過docker logs得到tomcat的密碼aBwN0CNCPckw:
$ docker logs 3cd
=> Creating and admin user with a random password in Tomcat => Done! ======================================================================= You can now configure to this Tomcat server using: admin:aBwN0CNCPckw
檢視對映的埠資訊:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cd4238cb32a tomcat7.0:jdk1.6 “/run.sh” 4 seconds Up 3 seconds 0.0.0.0:49157->22/tcp, 0.0.0.0:49158->8080/tcp cranky_wright
在本地使用瀏覽器登入Tomcat管理介面,訪問本地的49158埠,即http://127.0.0.1:49158。(22埠是ssh的)
輸入從docker logs中得到的密碼,成功進入管理介面。
在實際環境中,可以通過使用-v引數來掛載Tomcat的日誌檔案、程式所在目錄、以及與Tomcat相關的配置。
Jetty
Jetty是一個優秀的開源Servlet容器,以其高效、小巧、可嵌入式等優點深得人心,它為基於Java的Web內容(如JSP和Servlet)提供執行環境。Jetty基於Java語言編寫,它的API以一組JAR包的形式釋出。開發人員可以將Jetty容器例項化成一個物件,可以迅速為一些獨立執行的Java應用提供Web服務。相對老牌的Tomcat,Jetty架構更合理,效能更優。尤其在啟動速度上,讓Tomcat望塵莫及。Jetty目前在國內外網際網路企業中應用廣泛。
DockerHub官方提供了Jetty映象,直接執行docker run指令即可:
$ docker run -d jetty
使用docker ps指令檢視正在執行中的jetty容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7f1d70f2773 jetty “/docker-entrypoint.b” x ago Up 8080/tcp lonely_poitras
當然,還可以使用-p引數對映執行埠:
$ docker run -d -p 80:8080 -p 443:8443 jetty
7bc629845e8b953e02e31caaac24744232e21816dcf81568c029eb8750775733
使用宿主機的瀏覽器訪問container-ip:8080,即可獲得Jetty執行頁面,由於當前沒有內容,會提示錯誤資訊。
LAMP
現在也有人用Nginx替換Apache,稱為LNMP或LEMP,但並不影響整個框架的選型原則,是彼此十分類似的技術棧。
可以使用自定義Dockerfile或者Compose方式執行LAMP,同時社群也提供了十分成熟的linode/lamp和tutum/lamp映象。
下面介紹後兩種方法。
1.使用linode/lamp映象
首先,執行docker run指令,直接執行映象,並進入容器內部bash shell:
$ docker run -p 80:80 -t -i linode/lamp /bin/bash
root@e283cc3b2908:/#
在容器內部shell啟動apache以及mysql服務:
$ root@e283cc3b2908:/# service apache2 start
* Starting web server apache2
$ root@e283cc3b2908:/# service mysql start
* Starting MySQL database server mysqld [ OK ]
* Checking for tables which need an upgrade, are corrupt or were not closed cleanly.
此時映象中apache、mysql服務已經啟動,可使用docker ps指令檢視執行中的容器:
$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMESe283cc3b2908 linode/lamp “/bin/bash” x ago Up x seconds 0.0.0.0:80->80/tcp trusting_mestorf
此時通過瀏覽器訪問本地80埠即可看到預設頁面。
2.使用tutum/lamp映象
首先,執行docker run指令,直接執行映象:
$ docker run -d -p 80:80 -p 3306:3306 tutum/lamp
容器啟動成功後,開啟瀏覽器,訪問demo頁面。
CMS
內容管理系統(Content Management System,CMS)指的是提供內容編輯服務的平臺程式。CMS可以讓不懂程式設計的使用者方便又輕鬆地釋出、更改和管理各類數字內容(主要以文字和影像為主)。以Wordpress和Ghost兩個流行的CMS軟體為例,介紹如何製作和使用對應的Docker映象。
WordPress
WordPress是風靡全球的開源內容管理系統,是部落格、企業官網、產品首頁等內容相關平臺的主流實現方案之一。類似專案還有Drupal、Joomla、Typo3等。
WordPress基於PHP和MySQL,架構設計簡單明瞭,支援主題,外掛和各種功能模組。更重要的是,WordPress擁有龐大的社群,線上資源非常豐富,並且在各大網路空間商和雲平臺中受到廣泛的支援。根據2013年8月的統計資料,流量排名前一千萬的網站中其使用率高達22%。
1.使用官方映象
首先,通過Docker Hub下載官方wordpress映象:
$ docker pull wordpress
然後,就可以建立並執行一個wordpress容器,並連線到mysql容器:
$ docker run –name some-wordpress –link some-mysql:mysql -d wordpress
同樣,使用者可以使用-p引數來進行埠對映:
$ docker run –name some-wordpress –link some-mysql:mysql -p 8080:80 -d wordpress
啟動成功後,可在瀏覽器中訪問http://localhost:8080來開啟WordPress頁面。
2.使用Compose搭建WordPress應用
可以使用Compose來一鍵搭建WordPress應用。
首先,新建docker-compose.yml檔案:
wordpress: image: wordpress links: - db:mysql ports: - 8080:80 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example
然後執行:
$ docker-compose up
如果提示沒有docker-compose命令,可以通過pip install docker-compose來線上安裝。
待服務啟動後,即可開啟瀏覽器訪問本地8080埠開啟WordPress配置介面。
Ghost
Ghost是一個廣受歡迎的開源部落格平臺,使用JavaScript編寫,以MIT協議釋出。它的設計非常簡約,使用起來體驗優異,非常適合做內容釋出,故而受到很多極客或技術工作者的喜愛。可以直接使用Docker Hub提供的官方Ghost映象。
直接使用docker run指令執行:
$ docker run –name ghost-container -d ghost
至此已經成功啟動了一個Ghost容器,內含Ghost例項並監聽預設的2368服務埠。
當然可以對服務進行埠對映,如下所示:
$ docker run –name ghost-container-1 -p 8080:2368 -d ghost
df116b7d570b3456950f4d7c22ff6911124427d16635080817e884922b491a2d
還可以掛載已有的內容到Ghost容器內:
$ docker run –name some-ghost -v /path/to/ghost/blog:/var/lib/ghost ghost
持續開發與管理
資訊行業日新月異,如何響應不斷變化的需求,快速適應和保證軟體的質量?持續整合(Continuous integration,CI)正是針對這類問題的一種開發實踐,它倡導開發團隊定期進行整合驗證。整合通過自動化的構建來完成,包括自動編譯、釋出和測試,從而儘快地發現錯誤。CI所描述的軟體開發是從原始需求識別到最終產品部署整個過程中,需求以小批量形式在團隊的各個角色間順暢流動,能夠以較短地週期完成需求的小粒度頻繁交付。整個過程中,需求分析、產品的使用者體驗和互動設計、開發、測試、運維等角色需要密切協作。
持續整合特點包括:從檢出程式碼、編譯構建、執行測試、結果記錄、測試統計等都是自動完成的,減少人工干預。需要有持續整合系統的支援,包括程式碼託管機制支援,以及整合伺服器等。
持續交付(Continuous delivery,CD)則是經典的敏捷軟體開發方法的自然延伸,它強調產品在修改後到部署上線的流程要敏捷化、自動化。甚至一些較小的改變也要今早的部署上線,這跟傳統軟體在較大版本更新後才上線的思想不同。
Jenkins
Jenkins是一個得到廣泛應用的持續整合和持續交付的工具。作為開源軟體專案,它旨在提供一個開放易用的持續整合平臺。Jenkins能實時監控整合中存在的錯誤,提供詳細的日誌檔案和提醒功能,並用圖表的形式形象地展示專案構建的趨勢和穩定性。Jenkins特點包括安裝配置簡單、支援詳細的測試報表、分散式構建等。
自2.0版本,Jenkis推出了Pipeline as Code,幫助Jenkins實現對CI和CD更好的支援。通過Pipeline,將原本獨立執行的多個任務連線起來,可以實現十分複雜的釋出流程。Jenkins官方在Docker Hub上提供了全功能的基於官方釋出版的Docker映象。
可以方便地使用docker run指令一鍵部署Jenkins服務,如下所示:
$ docker run -p 8080:8080 -p 50000:50000 jenkins
Jenkins容器啟動成功後,可以開啟瀏覽器訪問8080埠,檢視Jenkins管理介面。
目前執行的容器中,資料會儲存在工作目錄/var/jenkins_home中,這包括Jenkins中所有的資料,包括外掛和配置資訊等。
如果需要資料持久化,可以使用資料卷機制:
$ docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
以上指令會將Jenkins資料儲存於宿主機的/your/home目錄(需要確保/your/home目錄對於容器內的Jenkins使用者是可訪問的)下。
當然也可以使用資料卷容器:
$ docker run –name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins
Gitlab
Gitlab是一款非常強大的開源原始碼管理系統。它支援基於Git的原始碼管理、程式碼評審、issue跟蹤、活動管理、wiki頁面,持續整合和測試等功能。
基於Gitlab,使用者可以自己搭建一套類似Github的開發協同平臺。Gitlab官方提供了社群版本(Gitlab CE)的DockerHub映象。
可以直接使用docker run指令執行:
$ docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 23:23 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
dbae485d24492f656d2baf18526552353cd55aac662e32491046ed7fa033be3a
成功執行映象後,可以開啟瀏覽器,訪問Gitlab服務管理介面。
相關文章
- idea/eclipse下Maven工程整合web服務(tomcat、jetty)IdeaEclipseMavenWebTomcatJetty
- 使用 Jersey 和 Apache Tomcat 構建 RESTful Web 服務ApacheTomcatRESTWeb
- nginx服務企業應用Nginx
- LAMP平臺服務簡介、部署及應用LAMP
- nginx+LAMP(apache+php+mysql)NginxLAMPApachePHPMySql
- Nginx/Apache服務連線數梳理NginxApache
- RHEL 8 搭建 Apache Web 服務ApacheWeb
- apache對應的web服務預設根路徑ApacheWeb
- Nginx服務系列——靜態資源web服務NginxWeb
- RHEL 8 搭建 Nginx Web 服務NginxWeb
- OpenBSD WEB基本應用Apache + php4 + mysql + ftp + tomcat(轉)WebApachePHPMySqlFTPTomcat
- jenkins與gitlab整合JenkinsGitlab
- web應用服務端cache策略初探Web服務端
- WEB服務-Nginx之十-keepalivedWebNginx
- WEB 容器、WEB服務和應用伺服器的區別與聯絡Web伺服器
- Jetty - 在整合Spring的J2SE應用程式中嵌入Jetty的Web功能(應用和Web共用ApplicationContext)JettySpringWebAPPContext
- 領域服務與應用服務的職責
- 用Apache服務部署網站Apache網站
- Docker+Jenkins+Gitlab+Django應用部署實踐DockerJenkinsGitlabDjango
- 基於Docker快速搭建Gitlab與Gitlab CI/CD服務DockerGitlab
- Apache、Nginx、Tomcat、PHP的區別ApacheNginxTomcatPHP
- Apache配置與應用Apache
- XML Web 服務技術解析:WSDL 與 SOAP 原理、應用案例一覽XMLWeb
- centos7 搭建 nginx web服務 反代理CentOSNginxWeb
- Windows下Nginx+Web.py+FastCGI服務搭建WindowsNginxWebAST
- nginx配置web服務|反向代理|負載均衡NginxWeb負載
- 使用apache CXF開發第一個Web服務ApacheWeb
- 基於CAS的WEB單點登入(sso)服務端及其tomcat/nginx https配置Web服務端TomcatNginxHTTP
- 服務-tomcatTomcat
- nginx服務Nginx
- [Apache][Nginx]構建僅對團隊內部公開使用的web應用ApacheNginxWeb
- WCF 服務應用程式與 服務庫之間的區別
- Jetty 的工作原理以及與 Tomcat 的比較JettyTomcat
- 【譯】用maven使java web應用執行在內嵌的Jetty或TomMavenJavaWebJetty
- tomcat服務無響應堆疊分析Tomcat
- 將普通web專案(FWGL 服務管理)用idea 部署到tomcatWebIdeaTomcat
- DNS服務應用DNS
- nginx的web快取服務環境部署記錄NginxWeb快取