Install nginx + tomcat in Centos6.2x64

Source: Internet
Author: User
Tags sendfile openldap

Install nginx + tomcat in Centos6.2 _ x64

1. Website requirements:

Brief Introduction to website architecture:

Our company is an e-commerce company. Now, the online running environment is Load Balancing Based on a hardware F5, which uses nginx and tomcat as a proxy to access the old website, static data is handed over to 165 and 168 local nginx. when accessing dynamic data, it is handed over to 174 and 176 for processing. This is achieved through the nginx upstream function.

New website requirements:

Due to the high traffic volume, in order to better share the pressure on website access, we need to create a new linux server with the same Centos6.2 _ x64 bits, and then deploy nginx + tomcat to access dynamic website data, let the three servers share the Website access pressure to achieve better load balancing.

System Environment Introduction:

[root@Web-175 ~]# uname -a          Linux Web-175 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux[root@Web-175 ~]# cat /etc/issueCentOS release 6.2 (Final)Kernel \r on an \m


Required Software Version: (because the old environment was built online, the installation is consistent with the previous version to avoid problems due to different versions)

apache-tomcat-7.0.29.tar.gzjdk-6u25-linux-x64.binnginx-0.8.33.tar.gz


2. Build the nginx + tomcat Environment

1. Install the gcc compiler and related tools and dependent libraries:

[root@Web-175 ~]# yum -y install gcc gcc-c++ autoconf libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-develzlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncursesncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidnlibidn-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients nfs-utils make patch openldap-servers

2. Basic System Restrictions

Vim/etc/security/limits. conf (added at the End of the row) * soft noproc 10240 * hard noproc 10240 * soft nofile 65536 * hard nofile 65536 # End of file


Note: * represents all users

Noproc indicates the maximum number of processes.

Nofile indicates the maximum number of opened files.

(1) limits. conf description

The limits. conf file is actually the configuration file of pam_limits.so in Linux PAM (plug-in authentication module, Pluggable AuthenticationModules) and is only applicable to a single session

(2) How limits. conf works

Limits. conf is the configuration file of pam_limits.so, and the application under/etc/pam. d/calls the pam _ ***. so module. For example, when a user accesses the server, the service program sends the request to the PAM module. The PAM module sends the request to/etc/pam according to the service name. d. Select a corresponding service file under the directory, and then select a specific PAM module based on the content of the service file for processing.

3. Modify the login configuration file of the linux operating system.

Open/etc/pam. d/login this configuration file adds the last line of content session required/lib64/security/pam_limits.so # tail-1/etc/pam. d/loginsession required/lib64/security/pam_limits.so

4. Disable the firewall and selinux.

# /etc/init.d/iptables stop[root@Web-175 ~]# setenforce 0

5. Install jdk.

[root@Web-175 opt]#chmod +x jdk-6u25-linux-x64.bin[root@Web-175 opt]# ./jdk-6u25-linux-x64.bin[root@Web-175 opt]# tar -zxvf apache-tomcat-7.0.29.tar.gz[root@Web-175 opt]# mv apache-tomcat-7.0.29 tomcat3

6. Set system environment variables.

[Root @ Web-175 opt] # vim/etc/profile (add three lines of code at the end and set the system environment variable) exportCLASSPATH = ". :/opt/jdk1.6.0 _ 25/jre/lib/rt. jar:/opt/jdk1.6.0 _ 25/lib/dt. jar:/opt/jdk1.6.0 _ 25/lib/tools. jar "exportPATH = $ PATH: /opt/jdk1.6.0 _ 25/binexportJAVA_HOME = "/opt/jdk1.6.0 _ 25" [root @ Web-175 opt] # source/etc/profile make the variable take effect


7. Modify the tomcat server. xml file

(Modify the port to 9080 and add a memcache shared session)

[root@Web-175 conf]# vim /opt/tomcat3/conf/server.xml<Connector port="9080"protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="utf-8"redirectPort="8443"maxThreads="500"/><Context path=""docBase="/opt/newWebshop"useHttpOnly="false"><ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"copyCollectionsForSerialization="false"sessionBackupTimeout="100"sessionBackupAsync="false"sticky="false"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"memcachedNodes="n1:192.168.5.11:11211,n2:192.168.5.15:11211"/></Context>


8. Increase the maximum memory available for virtual machines

[root@Web-175 conf]# vim ../bin/catalina.sh +99

In line 99, add the following code

JAVA_OPTS="-server -Djava.awt.headless=true -Xms728m-Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"


Note: The jar package under the lib directory in tomcat must be the same as that on the 174 and 176 servers. If it is different, you can copy it directly from 174 or 176.

[Root @ Web-175 tomcat3] # ls .. /lib/annotations-api.jar ecj-3.7.2.jar memcached-session-manager-1.6.3.jar tomcat-coyote.jar tomcat-jdbc.jarcatalina-ant.jar el-api.jar memcached-session-manager-tc7-1.6.3.jar tomcat-dbcp.jar tomcat-util.jarcatalina-ha.jar jasper-el.jar servlet-api.jar jasper. jar spymemcached-2.8.4.jar tomcat-i18n-fr.jarcatalina-tribes.jar jsp-api.jar tomcat-api.jar tomcat-i18n-ja.jar [root @ Web-175 conf] # cd .. /webapps/[root @ Web-175 webapps] # Only three files can be deleted under lshost-manager ROOTwebapps.


9. Install nginx

Compile and install the pcre Library

PCRE (Perl Compatible RegularExpressions) is a Perl library that includes regular expressions Compatible with perl. Pcre is mainly used to enable nginx to support the HTTPrewrite module.

[root@Web-175 ~]# cd /opt/[root@Web-175 opt]# tar -zxvf pcre-7.6.tar.gz[root@Web-175 pcre-7.6]# ./configure[root@Web-175 pcre-7.6]# make && make install

Compile and install jpeg

Jpeg is a basic image compression method.

[root@Web-175 opt]# tar -zxvf jpegsrc.v7.tar.gz[root@Web-175 opt]# cd jpeg-7/[root@Web-175 opt]# ./configure --enable-shared --enable-static[root@Web-175 opt]# make && make install


Create nginx users and groups

useradd-s /sbin/nologin-M nginxgroupadd ngnix[root@Web-175 opt]# tar -zxvfnginx-upstream-jvm-route-0.2.tar.gz[root@Web-175 opt]# tar -zxvf nginx-0.8.33.tar.gz[root@Web-175 opt]# mv nginx-0.8.33 nginx5[root@Web-175 opt]# cd nginx5


Implement the Cookie-based Session Sticky Function

Patch-p0 </opt/nginx_upstream_jvm_route/jvm_route.patch: Compile and install nginx [root @ Web-175 nginx5] #. /configure -- prefix =/opt/nginx6 -- with-http_stub_status_module -- with-pcre =/opt/pcre-7.6 -- add-module = .. /nginx_upstream_jvm_route/-- with-openssl =/usr/bin/openssl [root @ Web-175 nginx5] # make & make install


For convenience, you can directly copy the nginx. conf configuration file on 174 or 176 and modify the proxy forwarding port.

[Root @ Web-175 nginx5] # catnginx6/conf/nginx. confuser nobody; worker_processes 4; # error_log logs/error. log; # error_log logs/error. log notice; # error_log logs/error. log info; # pid logs/nginx. pid; worker_rlimit_nofile 51200; events {use epoll; worker_connections 51200;} http {include mime. types; default_type application/octet-stream; # limit_zone one $ binary_remote_addr 10 m; server_names_hash_bucket_size 256; cli Limit 256 k; limit 4 256 k; limit; Limit 256 k; sendfile on; tcp_nopush on; tcp_nodelay on; send_timeout 3 m; keepalive_timeout 120; server_tokens off; gzipon; gzip_min_length 1 k; gzip_buffers 4 16 k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plainapplication/x-javascripttext/cssapplication/xmltext/jsp; gzip_vary on; # proxy_redi Rect off; proxy_set_header Host $ host; proxy_set_header X-Real-IP $ response; proxy_set_header X-Forwarded-For $ response; proxy_connect_timeout 90; proxy_send_timeout 90; Limit 90; # proxy_buffers 32 4 k; log_format main '$ remote_addr-$ remote_user [$ time_local] "$ request" ''$ status $ response" $ http_referer "'' "$ http_user_agent" "$ http_x_forwarded_for"'; proxy _ Temp_path/opt/proxy_temp_path; proxy_cache_path/opt/proxy_cache_pathlevels = keys_zone = cache_one: 500 m inactive = 1dmax_size = 30g; # access_log logs/access. log main; # sendfile on; # tcp_nopush on; # keepalive_timeout 0; # keepalive_timeout 65; # gzip on; upstream www.beyond.com {server 127.0.0.1: 9080; ip_hash;} server {listen 192.168.8.175: 80; server_name www.beyomd.com localhost 192.168.8.175; # charset GBK; # chars Et UTF-8; access_log logs/access_beyond.log main; if ($ host ~ Beyond.com) {rewrite ^ (.*) http://www.taokey.com $1 permanent;} if ($ host ~ 9h.com) {rewrite ^ (.*) http://www.beyond.com $1 permanent;} location ^ ~ /Zhuanti/{rewrite/zhuanti/(. * pai.html/html/zhuanti/$ 1.jsp;} location ^ ~ /Html/article/{rewrite/html/article/(\ d + )/(. *)\. html $/wineCulture/detail-%1%2%3%4.shtml;} location/{proxy_pass http://www.beyond.com ; Proxy_set_header X-Real-IP $ http_x_forwarded_for; index index.html index.shtml index. jsp login. jsp index.htm; # proxy_redirect off;} location ~ ^/Static/{root/opt/newWebshop/; access_log on; expires 12 h;} location ~ ^/Re-{proxy_pass http://www.beyond.com ; Proxy_set_header Host $ host; proxy_set_header X-Real-IP $ remote_addr;} location ~ ^/Pi-{proxy_pass http://www.beyond.com ; Proxy_set_header Host $ host; proxy_set_header X-Real-IP $ remote_addr;} location ~ ^/WineCulture /? $ {Rewrite ^/wineCulture /? $/WineCulture/content_cultureIndex.shtml;} location ~ ^/WineCulture/zuixinjiushili-(\ d + )/? $ {Rewrite/wineCulture/zuixinjiushili-(\ d + )/? /WineCulture/content_showArticleList.shtml? More = 3 & page = $1 last;} location ~ ^/WineCulture/hongjiuyujiankang-(\ d + )/? $ {Rewrite/wineCulture/hongjiuyujiankang-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 5 & seek = last;} location ~ ^/WineCulture/jiuyoutianxia-(\ d + )/? $ {Rewrite/wineCulture/jiuyoutianxia-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 6 & seek = last;} location ~ ^/WineCulture/hongjiuyishu-(\ d + )/? $ {Rewrite/wineCulture/hongjiuyishu-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 7 & seek = last;} location ~ ^/WineCulture/mingjiazhuanlan-(\ d + )/? $ {Rewrite/wineCulture/mingjiazhuanlan-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 8 & seek = last;} location ~ ^/WineCulture/hongjiutouzi-(\ d + )/? $ {Rewrite/wineCulture/hongjiutouzi-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 11 & seek = last;} location ~ ^/WineCulture/hongjiumeishi-(\ d + )/? $ {Rewrite/wineCulture/hongjiumeishi-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 13 & seek = last;} location ~ ^/WineCulture/hongjiuzhuangyuan-(\ d + )/? $ {Rewrite/wineCulture/hongjiuzhuangyuan-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 15 & seek = last;} location ~ ^/WineCulture/putaojiurumen-(\ d + )/? $ {Rewrite/wineCulture/putaojiurumen-(\ d + )/? /WineCulture/content_showArticleList.shtml? Page = $1 & pageSize = 9 & more = 19 & seek = last;} location ~ ^/WineCulture/zuixinjiushili /? $ {Rewrite/wineCulture/zuixinjiushili /? /WineCulture/content_showArticleList.shtml? More = 3 & pageSize = 9 last;} location ~ ^/WineCulture/hongjiuyujiankang /? $ {Rewrite/wineCulture/hongjiuyujiankang /? /WineCulture/content_showArticleList.shtml? More = 5 & pageSize = 9 last;} location ~ ^/WineCulture/jiuyoutianxia /? $ {Rewrite/wineCulture/jiuyoutianxia /? /WineCulture/content_showArticleList.shtml? More = 6 & pageSize = 9 last;} location ~ ^/WineCulture/hongjiuyishu /? $ {Rewrite/wineCulture/hongjiuyishu /? /WineCulture/content_showArticleList.shtml? More = 7 & pageSize = 9 last;} location ~ ^/WineCulture/mingjiazhuanlan /? $ {Rewrite/wineCulture/mingjiazhuanlan /? /WineCulture/content_showArticleList.shtml? More = 8 & pageSize = 9 last;} location ~ ^/WineCulture/hongjiutouzi /? $ {Rewrite/wineCulture/hongjiutouzi /? /WineCulture/content_showArticleList.shtml? More = 11 & pageSize = 9 last;} location ~ ^/WineCulture/hongjiumeishi /? $ {Rewrite/wineCulture/hongjiumeishi /? /WineCulture/content_showArticleList.shtml? More = 13 & pageSize = 9 last;} location ~ ^/WineCulture/hongjiuzhuangyuan /? $ {Rewrite/wineCulture/hongjiuzhuangyuan /? /WineCulture/content_showArticleList.shtml? More = 15 & pageSize = 9 last;} location ~ ^/WineCulture/putaojiurumen /? $ {Rewrite/wineCulture/putaojiurumen /? /WineCulture/content_showArticleList.shtml? More = 19 & pageSize = 9 last;} location ^ ~ /Html/culture {rewrite/html/culture/cultureIndex \. html/wineCulturepermanent;} location ~ ^/P-list/* {response http_502 http_504 error timeout invalid_header; proxy_cache cache_one; Response 200 304 12 h; Response $ host $ uri $ is_args $ args; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ remote_addr; proxy_pass http://www.beyond.com ; Expires 1 h;} location ~ ^/WineCulture/detail -. *\. shtml {proxy_next_upstream handle error timeout invalid_header; proxy_cache cache_one; Limit 200 304 12 h; proxy_cache_key $ host $ uri $ is_args $ args; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ remote_addr; proxy_pass http://www.beyond.com ; Expires 12 h;} location =/wineCulture/outputs {response http_502 http_504 error timeout invalid_header; proxy_cache cache_one; Response 200 304 12 h; Response $ host $ uri $ is_args $ args; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ remote_addr; proxy_pass http://www.beyond.com ; Expires 4 h;} location =/daogou/queues {response http_502 http_504 error timeout invalid_header; proxy_cache cache_one; Response 200 304 12 h; Response $ host $ uri $ is_args $ args; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ remote_addr; proxy_pass http://www.beyond.com ; Expires 12 h;} location ~. * \. (Jsp | do | shtml )? $ {Proxy_pass http://www.beyond.com ; Proxy_set_header X-Real-IP $ http_x_forwarded_for;} location ~. * \. (Gif | jpg | jpeg | png | bmp | swf) $ {root/opt/webshop/; access_log off; expires 30d;} location ~. * \. (Js | css | htm | html )? $ {# Proxy_pass http://www.beyond.com ; # Proxy_set_header X-Real-IP $ remote_addr; root/opt/webshop/; access_log off; expires 12 h;} location/html {root/opt/webshop /; index index.html index. jsp index.shtml login.jspindex.htm; access_log off; expires 12 h;} location ^ ~ /Bg {return404;} location ^ ~ /WEB-INF {return404;} error_page 404 http://www.beyond.com /404.jsp; error_page 500 502 503 504/50 x.html; location =/50x.html {root html;} server_name_in_redirect off;} Note: I have modified the website domain name. 10. mount old and new website data. website data is mounted through NFS # mkdir/opt/webshop # mkdir/opt/newWebshop # mount 192.168.8.180: /root/webshop/opt/webshop/-o nolock # mount 192.168.8.180:/opt/newWebshop/-o nolock

11. Enable nginx and tomcat

[root@Web-175 ~]# /opt/tomcat3/bin/startup.shUsing CATALINA_BASE: /opt/tomcat3Using CATALINA_HOME: /opt/tomcat3Using CATALINA_TMPDIR: /opt/tomcat3/tempUsing JRE_HOME: /opt/jdk1.6.0_25Using CLASSPATH: /opt/tomcat3/bin/bootstrap.jar:/opt/tomcat3/bin/tomcat-juli.jar[root@Web-175 ~]# /opt/nginx6/sbin/nginx -tthe configuration file/opt/nginx6/conf/nginx.conf syntax is okconfiguration file/opt/nginx6/conf/nginx.conf testissuccessful[root@Web-175 ~]# /opt/nginx6/sbin/nginx

12. Check whether enabled successfully

[root@Web-175 ~]# ps -ef | grep javaroot 3684 1 68 15:51 pts/000:01:04/opt/jdk1.6.0_25/bin/java-Djava.util.logging.config.file=/opt/tomcat3/conf/logging.properties -server-Djava.awt.headless=true-Xms728m -Xmx1024m -XX:PermSize=128m-XX:MaxPermSize=256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/opt/tomcat3/endorsed-classpath/opt/tomcat3/bin/bootstrap.jar:/opt/tomcat3/bin/tomcat-juli.jar-Dcatalina.base=/opt/tomcat3-Dcatalina.home=/opt/tomcat3-Djava.io.tmpdir=/opt/tomcat3/temporg.apache.catalina.startup.Bootstrap startroot 3745 3427 015:52 pts/000:00:00 grepjava[root@Web-175 ~]# ps -ef | grep nginxroot 3711 1 015:51 ? 00:00:00 nginx: masterprocess /opt/nginx6/sbin/nginxnobody 3712 3711 015:51 ? 00:00:00 nginx: worker processnobody 3713 3711 015:51 ? 00:00:00 nginx: workerprocessnobody 3714 3711 015:51 ? 00:00:00 nginx: workerprocessnobody 3715 3711 015:51 ? 00:00:00 nginx: workerprocessnobody 3716 3711 015:51 ? 00:00:00 nginx: cachemanager processroot 3747 3427 015:53 pts/000:00:00 grepnginx


Check tomcat logs.

[Root @ Web-175 ~] # Tail-f/opt/tomcat3/logs/catalina. out2013-10-16 15:51:48. 636 -- LoopQuerierServiceJoinImpl: 0 register, comment events, no need to handle. 15:51:48. 731 -- eventLog [130009] is handling byWeb-175 #02013-10-16 15:51:48. 918 -- eventLog [130008] is handling byWeb-175 #02013-10-16 15:51:48. 988 -- eventLog [130010] is handling byWeb-175 #02013-10-16 15:51:49. 056 -- these three records are processed by the thread Web-175 #0 2013-10-16 15: 51: 51com. sun. xml. ws. transport. http. servlet. WSServletContextListenercontextInitialized information: WSSERVLET12: The JAX-WS context listener is initializing 15: 51: 52com. sun. xml. ws. transport. http. servlet. WSServletDelegate <init> information: WSSERVLET14: JAX-WS servlet is initializing 15:51:57. 449 -- there are 0 order points and order records, which do not need to be processed. 15:52:21 org. apache. catalina. util. sessionIdGeneratorcreateSecureRandom information: Creation of SecureRandom instance forsession ID generation using [SHA1PRNG] took [29,220] milliseconds.2013-10-16 15: 52: 21de. javakaffee. web. msm. memcachedSessionService startInternal information: MemcachedSessionService starts initialization... (configured nodesdefinition n1: 192.168.8.170: 11211, n2: 192.168.8.169: 11211, failover Nodes null) 15:52:21. 724 INFOnet. spy. memcached. memcachedConnection: Added {QA sa =/192.168.8.170: 11211, # Rops = 0, # Wops = 0, # iq = 0, topRop = null, topWop = null, toWrite = 0, interested = 0} to connect queue2013-10-16 15:52:21. 725 INFO net. spy. memcached. memcachedConnection: Added {QA sa =/192.168.8.169: 11211, # Rops = 0, # Wops = 0, # iq = 0, topRop = null, topWop = null, toWrite = 0, interested = 0} to connectqueue20 13-10-16 15: 52: 21de. javakaffee. web. msm. requestTrackingHostValve <init> information: Setting ignorePattern. *\. (ico | png | gif | jpg | css | js) $15:52:21. 735 INFOnet. spy. memcached. memcachedConnection: Connection state changedforsun. nio. ch. selectionKeyImpl @ 1a6261c92013-10-16 15:52:21. 736 INFOnet. spy. memcached. memcachedConnection: Connection state changedforsun. nio. ch. selectionKeyImpl @ 33e1830b2013-10-16 1 5: 52: 21de. javakaffee. web. msm. memcachedSessionService setLockingMode information: Setting lockingMode to NONE2013-10-16 15: 52: 21de. javakaffee. web. msm. memcachedSessionService createTranscoderFactory information: Creating transcoder factoryde. javakaffee. web. msm. javaSerializationTranscoderFactory2013-10-16 15: 52: 21de. javakaffee. web. msm. memcachedSessionService startInternal information: MemcachedSessionService finished initializati On, sticky false, operation timeout 1000, with node ids [n1, n2] and failover node ids [] 15:52:23 org. apache. catalina. startup. hostConfigdeployDirectory information: Deploying web application directory/opt/tomcat3/webapps/host-manager2013-10-16 15:52:23 org. apache. tomcat. util. digester. digesterendElement warning: No rules found matching 'Context/Context/Manager '. 15:52:23 org. apache. tomcat. util. d Igester. digesterendElement warning: No rules found matching 'Context/context '. 15:52:23 org. apache. catalina. startup. hostConfigdeployDirectory information: Deploying web application directory/opt/tomcat3/webapps/manager2013-10-16 15:52:23 org. apache. tomcat. util. digester. digesterendElement warning: No rules found matching 'Context/Context/Manager '. 15:52:23 org. apache. tomcat. util. digester. digesterendEl Ement warning: No rules found matching 'Context/context '. 15:52:23 org. apache. coyote. abstractProtocol start information: Starting ProtocolHandler ["http-bio-9080"] 15:52:23 org. apache. coyote. abstractProtocol start information: Starting ProtocolHandler ["ajp-bio-8009"] 15:52:23 org. apache. catalina. startup. catalina start information: Server startup in58531 ms from the tomcat log, it is normal, it indicates that tomcat is enabled normally and runs normally.


So far, the nginx + tomcat environment has been set up.

Test:

If the test is normal, nginx is installed successfully with tomcat.

This article from the "years in the passage, the glory is still in" blog, please be sure to keep this source http://taokey.blog.51cto.com/4633273/1309877


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.