
# 部署弹性云服务器
- 配置JAVA环境
  1. 登录弹性云服务器。
  
  2. 运行如下命令查看是否已安装jdk-1.8.0。
     ```
     java -version
     ```
     如果显示如下示例内容，则表示已安装jdk-1.8.0，可以跳过该环境配置流程，如果不 是则执行下一步。
     ```
     [root@server ~]# java -version
     java version "1.8.0_65"
     Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
     Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
     ```
     
  
  3. 如果显示版本不是jdk-1.8.0版本，则需要执行如下命令a查看已安装的jdk的rpm包，并使用命令b卸载已安装的jdk。
     ```
     命令a：rpm -qa | grep jdk
     命令b：rpm -e [命令a的结果] --nodeps
     ```
     
  
  4. 运行如下命令通过yum安装jdk-1.8.0。
     ```
     yum -y install java-1.8.0-openjdk*
     ```
     
  
  5. 安装完jdk-1.8.0后再次运行如下命令。
     ```
     java -version
     ```
     如果显示如下示例内容，则表示安装jdk-1.8.0成功。
     ```
     [root@server ~]# java -version
     java version "1.8.0_65"
     Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
     Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
     ```
     
   
- 修改远程端口
  1. 运行如下命令查看防火墙状态。
     ```
     systemctl status firewalld
     ```
     如果显示如下示例内容中的Active状态为**active (running)**，则表示防火墙为正常启动 状态。
     ```
     [root@server ~]# systemctl status firewalld
     ● firewalld.service - firewalld - dynamic firewall daemon
        Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2022-08-20 22:14:55 CST; 4 days ago
          Docs: man:firewalld(1)
      Main PID: 713 (firewalld)
        CGroup: /system.slice/firewalld.service
                └─713 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopidmode)
     ```
     如果不是则运行如下命令a启动防火墙，运行命令b设置防火墙开机自启动。
     ```
     命令a：systemctl start firewalld
     命令b：systemctl enable firewalld
     ```
     ![](https://support.huaweicloud.com/msdcbsc-logistics/public_sys-resources/note_3.0-zh-cn.png)
     服务器防火墙开启后，所有未开放的端口将被禁止访问，请在"云服务器控制台-\>安全组-\>入方向规则"页面将22、8485等需要开放的端口提前添加到入方向规则中，然后再执行如下步骤，避免云服务器重新连接后无法远程连接。
     
  
  2. 防火墙启动后，运行如下命令开放22,8485端口。
     ```
     firewall-cmd --zone=public --add-port=22/tcp --permanent
     firewall-cmd --zone=public --add-port=8485/tcp --permanent
     ```
     
  
  3. 运行如下命令重载防火墙，使得添加的端口生效。
     ```
     firewall-cmd --reload
     ```
     
  
  4. 运行如下命令查看防火墙开放的端口。
     ```
     firewall-cmd --list-port
     ```
     
  
  5. 运行如下命令修改远程端口配置文件，将远程端口配置为8485。
     ```
     sed -i 's/#Port 22/Port 8485/g' /etc/ssh/sshd_config
     ```
     
  
  6. 运行如下命令重启ssh服务，使得配置文件生效。
     ```
     systemctl restart sshd
     ```
     
  
  7. 运行如下命令查看远程端口是否已修改。
     ```
     netstat -nultp | grep sshd
     ```
     如果显示如下示例内容，则表示远程端口已修改为8485。
     ```
     [root@server ~]# netstat -nultp | grep sshd
     Tcp     0      0  0.0.0.0:8485     0.0.0.0:*    LISTEN   1296/sshd           
     tcp6    0      0  :::8485          :::*        LISTEN   1296/sshd
     ```
     
   
- 部署nginx
  1. 运行如下命令下载官方nginx安装包。
     ```
     wget -C /opt/ http://nginx.org/download/nginx-1.18.0.tar.gz
     ```
     
  
  2. 运行如下命令到/opt目录下并解压nginx-1.18.0.tar.gz压缩包。
     ```
     cd /opt | tar -zxvf nginx-1.18.0.tar.gz
     ```
     
  
  3. 运行如下命令安装nginx运行环境。
     ```
     yum -y install gcc pcre-devel openssl openssl-devel
     ```
     
  
  4. 运行如下命令a进入nginx解压的目录，运行命令b安装nginx。
     ```
     命令a：cd nginx-1.18.0/
     命令b：./configure --prefix=/opt/nginx \
     --conf-path=/opt/nginx/conf/nginx.conf \
     --pid-path=/opt/nginx/conf/nginx.pid \
     --lock-path=/opt/nginx.lock \
     --error-log-path=/opt/nginx/logs/error.log \
     --http-log-path=/opt/nginx/logs/access.log \
     --with-http_gzip_static_module \
     --http-client-body-temp-path=/opt/nginx/client \
     --http-proxy-temp-path=/opt/nginx/proxy \
     --http-fastcgi-temp-path=/opt/nginx/fastcgi \
     --http-uwsgi-temp-path=/opt/nginx/uwsgi \
     --http-scgi-temp-path=/opt/nginx/scgi \
     --with-http_ssl_module \
     --with-stream_ssl_module
     ```
     
  
  5. 运行如下命令进行编译。
     ```
     make -j && make install
     ```
     如果编译执行完毕出现如下图所示结果，则表示编译成功。
     图1nginx编译结果   
     ![](https://support.huaweicloud.com/msdcbsc-logistics/zh-cn_image_0000001688943365.png) 
  
  6. 运行如下命令重命名nginx.conf文件，对nginx配置文件进行备份。
     ```
     mv /opt/nginx/conf/nginx.conf /opt/nginx/conf/nginx.conf.bak
     ```
     
  
  7. 运行如下命令编辑nginx配置文件。
     ```
     vi /opt/nginx/conf/nginx.conf
     ```
     配置文件nginx.conf示例如下：
     ```
     worker_processes auto;
     worker_rlimit_nofile  65535;
     user root;
     error_log    /opt/nginx/logs/error.log warn;
     events  {
         use epoll;
         worker_connections 65535;
         multi_accept on;
     }
      
     http {
         include mime.types;
         default_type application/octet-stream;
         charset utf-8;
         log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent" "$http_x_forwarded_for"';
         access_log  logs/access.log  main;
      
         server_names_hash_bucket_size 128;
         client_header_buffer_size 64k;
         client_max_body_size 100m; 
         client_body_buffer_size 1024k;
         large_client_header_buffers 4 64k;
         server_tokens off;
         sendfile on;
         tcp_nopush on;
         tcp_nodelay on;
         keepalive_timeout 120;
         ssl_session_cache shared:SSL:50m;
         ssl_session_timeout 5m;
         server_name_in_redirect off;
         proxy_connect_timeout 300;
         proxy_read_timeout 180;
         proxy_send_timeout 180;
         proxy_buffering    off;
         proxy_buffer_size 128k;
         proxy_buffers 100 128k;
         proxy_busy_buffers_size 128k;
         proxy_temp_file_write_size 128k;
         gzip on;
         gzip_min_length 1k;
         gzip_buffers 4 32k;
         gzip_comp_level 6;
         gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;
         open_file_cache max=204800 inactive=30s;
         open_file_cache_min_uses 2;
         open_file_cache_valid 30s;
         open_file_cache_errors on;
      
         limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ;
         limit_conn_log_level notice;
         limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m  rate=500r/s;
         limit_req_log_level notice;
         include vhosts/*.conf;
     }
     ```
     
  
  8. 运行如下命令测试nginx配置文件是否有误。
     ```
     /opt/nginx/sbin/nginx -t
     ```
     如果出现如下示例内容，则nginx测试无误。
     ```
     [root@server ~]# /opt/nginx/sbin/nginx -t
     nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
     nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
     ```
     
  
  9. 运行如下命令启动nginx。
     ```
     /opt/nginx/sbin/nginx
     ```
     
  
  10. 运行如下命令在服务器防火墙打开nginx的监听端口（默认为80），按照1.3.2.4 配置弹性云服务器中的流程在安全组添加入方向规则。
      ```
      firewall-cmd --zone=public --add-port=80/tcp --permanent
      ```
      运行如下命令重载防火墙，使得端口开放生效。
      ```
      firewall-cmd --reload
      ```
      
  
  11. 打开浏览器，在地址栏里输入"http://云服务器的公网IP地址:80/"。
  
  12. 如果访问成功，出现如下图所示nginx页面，说明nginx配置成功。
      图2nginx访问   
      ![](https://support.huaweicloud.com/msdcbsc-logistics/zh-cn_image_0000001640585570.png) 
   
 
