云计算实验

本文最后更新于:2022年7月6日 上午

云计算实验

一、获取服务器

1.使用机房服务器

windows系统下登录机房服务器(校园网环境下):

  1. 下载安装xshell和xftp;
  2. xshell中输入ssh IP(分配给每个学生的IP),比如ssh 10.64.26.1
  3. 用户名是root,初始密码是123456,登录之后最好修改密码;

​ 可通过命令passwd,阿里云服务器可在实例里修改

2.使用阿里云服务器

购买阿里云服务器,登录操作与机房服务器类似。通过校园网可能无法连接阿里云服务器,通过手机热点能够连接阿里云服务器。

尝试了一下,显示connection closed by foreign host. Disconnected from remote host

查询资料,发现可能原因: 使用校园网联网,多位同学同时连接各自的阿里云服务器,由于局域网的ip地址多次访问,阿里云会认为这是恶意访问,故而阻止此段ip访问服务器。

  • 解决方法:在阿里云服务器里,设置白名单,允许此ip访问通过。
  1. 点击控制台

  2. 进入控制台后,选择安骑士

  3. 不管弹出的内容,直接ESC,点击安全配置

  4. 安全设置中,选择点击设置,进入添加白名单界面

  5. 点击添加

  6. 源ip设为0.0.0.0(表示允许所有ip访问),并将下方右边服务ip添加到左边,确定

  7. 重新进入xshell-ssh访问服务器,出现密码框,访问成功

二、配置服务器环境

1.服务器安装jdk

  • 官网下载openjdk-11+28_linux-x64_bin.tar.gz

  • xshell登录Linux服务器

  • 上传 openjdk-11+28_linux-x64_bin.tar.gz 到 /usr/local/java下

    怎样上传:xshell连接成功后,点击工具栏里面的图标

​ 如果已经安装了xftp,此时就会打开xftp

左侧是windows系统下的文件,右侧是linux系统下的文件。想要将windows里的文件上传,只需要将左侧文件拖到右侧的文件夹即可

  • 解压:tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
  • 设置环境变量:vi /etc/profile

再拷贝下方内容到/etc/profile文件中:

1
2
3
4
5
6
7
8
9
10
11
###set java

JAVA_HOME=/usr/local/java/jdk-11

JRE_HOME=/usr/local/java/jdk-11/jre

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$JAVA_HOME/bin:$PATH

export PATH JAVA_HOME CLASSPATH
  • 刷新环境变量:source /etc/profile
  • 查看java环境:java -version

2.服务器安装tomcat

  1. 首先需要在服务器安装好jdk

  2. 官网下载apache-tomcat-9.0.63.tar.gz

  3. 解压安装包:tar -zxvf apache-tomcat-9.0.63.tar.gz

  4. 启动Tomcat:./startup.sh(在bin目录下)

    如果使用的是阿里云服务器,则不需要进行第5、6步,但需要在“实例”—>“安全组”—>“配置规则”里面增加一条安全组规则,也就是增加8080端口,示意图如下:

  5. 打开防火墙的8080端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent

  6. 重启防火墙:systemctl restart firewalld.service

  7. 在windows的浏览器访问:IP 端口,例如:10.64.26.250:8080

3.服务器安装maven

  1. 官网下载apache-maven-3.8.5-bin.tar.gz

  2. 解压安装包:tar -zxvf apache-maven-3.8.5-bin.tar.gz

  3. 配置环境变量:vi /etc/profile

    再拷贝下方内容到/etc/profile文件中(注意路径用自己的,这里的路径只是例子):

    1
    2
    export MAVEN_HOME=/usr/local/java/apache-maven-3.8.5
    export PATH=$MAVEN_HOME/bin:$PATH
  4. 刷新环境变量:source /etc/profile

  5. 验证安装结果:mvn -v

此时可能报错:-bash: /usr/local/java/apache-maven-3.8.5/bin/mvn: 权限不够

或者:-bash: /usr/local/java/apache-maven-3.8.5/bin/mvn: Permission denied

这个主要是权限问题

修改权限:chmod a+x /usr/local/java/apache-maven-3.8.5/bin/mvn

此时正确显示maven版本

4.服务器安装mysql

  1. 官网下载mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

  2. 解压tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

  3. 查找并删除mariadb:

    rpm -qa|grep mariadb

    rpm -e --nodeps mariadb-server-5.5.56-2.el7.x86_64

    (这个地方出现的三个我全删除了,因为后面安装mysql时mysql与mariadb冲突报错)

  4. 安装mysql:依次执行以下操作:

    1
    2
    3
    4
    5
    rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
    rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm

    过程中存在报错,依赖检测失败Failed dependencies

    解决方法,命令末尾加上--nodeps --force

    如果是阿里云,需要在此处加一个yum install libaio

rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm

  1. 初始化mysql:mysqld --initialize --console

    • 用阿里云出现报错,机房服务器没有:mysqld:error while loading shared libraries: livssl.so.10: cannot open shared object file: No such file or directory
    • 解决方法:
      • 去下载地址https://centos.pkgs.org/8/centos-appstream-x86_64/compat-openssl10-1.0.2o-3.el8.x86_64.rpm.html
      • 下载compat-openssl10-1.0.2o-3.el8.x86_64.rpm
      • rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm
      • 问题解决
  2. 给mysql授权:chown -R mysql:mysql /var/lib/mysql/

  3. 启动mysql服务:systemctl start mysqld

  4. 查询mysql初始密码:cat /var/log/mysqld.log|grep localhost

​ 大家一看就知道什么是初始密码了

  1. 登录mysql:mysql -uroot -p
  2. 修改mysql密码:alter user 'root'@'localhost' identified by '123456';(分号不要省)

5.服务器安装ngnix

  1. 下载安装包:

    http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz

    http://zlib.net/zlib-1.2.11.tar.gz

    http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

    https://nginx.org/en/download.html页面里下载ngnix-1.6.3(注意不要下载windows版本的)

  2. 将安装包通过xftp上传到服务器的/usr/local/src文件夹

  3. 解压:

    tar -zxvf openssl-fips-2.0.10.tar.gz

    tar -zxvf zlib.net/zlib-1.2.11.tar.gz

    tar -zxvf pcre-8.35.tar.gz

    tar -zxvf nginx-1.6.3.tar.gz

  4. 安装:

    安装ssl:

    cd /usr/local/src/openssl-fips-2.0.10

    ./config && make && make install

    安装zlib:

    cd /usr/local/src/zlib-1.2.11

    ./configure && make && make install

    安装pcre:

    cd /usr/local/src/pcre-8.35

    ./configure && make && make install

    安装nginx:

    cd /usr/local/src/nginx-1.6.3

    这行命令有点长:

    ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-openssl=/usr/local/src/openssl-fips-2.0.10 --with-pcre=/usr/local/src/pcre-8.35

    make

    • 使用阿里云服务器时报错:(系统缺少C++环境)

      You need a C++ compiler for C++ support

    ​ 解决方法:

    yum install -y gcc gcc-c++

    • 后面又报错(原因:将警告当成错误处理)

    src/core/ngx_murmurhash.c:37:11: 错误:``this statement may fall through [-Werror=implicit-fallthrough=]

    ​ 解决办法:

    ​ 1. 打开文件Makefile

    vim objs/Makefile

    ​ 2. 找到有以下内容的这行:

    CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g

    ​ -Werror: gcc将所有的警告当成错误进行处理把这行内容中的Werror去掉

    • 后面又报错

      1
      2
      3
      src/os/unix/ngx_user.c: In function ‘ngx_libc_crypt’:
      src/os/unix/ngx_user.c:35:7: error: ‘struct crypt_data’ has no member named ‘current_salt’
      cd.current_salt[0] = ~salt[0];

      原因:源代码问题

      解决方法:

      vim src/os/unix/ngx_user.c

      注释掉代码:

      问题解决

    make install

  5. 查看nginx版本:/usr/local/webserver/nginx/sbin/nginx -v

  6. 配置ngnix:

    cd /usr/local/webserver/nginx/conf

    /usr/sbin/groupadd www

    /usr/sbin/useradd -g www www

    在xftp中打开/usr/local/webserver/nginx/conf/nginx.conf,将文件里的内容替换为ngnix.txt里面的内容

    ngnix.txt中内容

    user www www;
    worker_processes 2; #设置值和CPU核心数一致
    error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
    pid /usr/local/webserver/nginx/nginx.pid;
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 65535;
    events
    {
      use epoll;
      worker_connections 65535;
    }
    http
    {
      include mime.types;
      default_type application/octet-stream;
      log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" $http_x_forwarded_for';
      
    #charset gb2312;
         
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 8m;
         
      sendfile on;
      tcp_nopush on;
      keepalive_timeout 60;
      tcp_nodelay on;
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      fastcgi_buffer_size 64k;
      fastcgi_buffers 4 64k;
      fastcgi_busy_buffers_size 128k;
      fastcgi_temp_file_write_size 128k;
      gzip on; 
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_http_version 1.0;
      gzip_comp_level 2;
      gzip_types text/plain application/x-javascript text/css application/xml;
      gzip_vary on;
     
      #limit_zone crawler $binary_remote_addr 10m;
     #下面是server虚拟主机的配置
     server
      {
        listen 8090;#监听端口
        server_name localhost1;#域名
        index index.html index.htm index.php;
        root /usr/local/webserver/nginx/html;#站点目录
          location / {
    	proxy_pass http://10.64.26.118:8080;
         }
          location ~ .*\.(php|php5)?$
        {
          #fastcgi_pass unix:/tmp/php-cgi.sock;
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
        {
          expires 30d;
      # access_log off;
        }
        location ~ .*\.(js|css)?$
        {
          expires 15d;
       # access_log off;
        }
        access_log off;
      }
    
    }
    
    
  7. 检查配置文件nginx.conf的正确性:/usr/local/webserver/nginx/sbin/nginx -t

  8. 打开8090端口:

    firewall-cmd --zone=public --add-port=8090/tcp --permanent

    出现报错:

    FirewallD is not running

    解决方法:

    1. 执行systemctl status firewalld查看防火墙状态
    2. 需要开启防火墙即可
      1. 开启防火墙:systemctl start firewalld
      2. 关闭防火墙:systemctl stop firewalld
      3. 查看防火墙状态:systemctl status firewalld
  9. 重启防火墙:systemctl restart firewalld.service

  10. 启动ngnix:/usr/local/webserver/nginx/sbin/nginx

  11. 浏览器访问ngnix:IP+端口,比如10.64.26.250:8090

  12. 关闭ngnix:/usr/local/webserver/nginx/sbin/nginx -s stop


云计算实验
http://example.com/2022/06/12/云计算实验/
作者
dogNew
发布于
2022年6月12日
许可协议