云计算实验
本文最后更新于:2024年11月2日 上午
云计算实验
一、获取服务器
1.使用机房服务器
windows系统下登录机房服务器(校园网环境下):
- 下载安装xshell和xftp;
- xshell中输入ssh IP(分配给每个学生的IP),比如
ssh 10.64.26.1
; - 用户名是root,初始密码是123456,登录之后最好修改密码;
可通过命令passwd
,阿里云服务器可在实例里修改
2.使用阿里云服务器
购买阿里云服务器,登录操作与机房服务器类似。通过校园网可能无法连接阿里云服务器,通过手机热点能够连接阿里云服务器。
尝试了一下,显示connection closed by foreign host. Disconnected from remote host
查询资料,发现可能原因: 使用校园网联网,多位同学同时连接各自的阿里云服务器,由于局域网的ip地址多次访问,阿里云会认为这是恶意访问,故而阻止此段ip访问服务器。
- 解决方法:在阿里云服务器里,设置白名单,允许此ip访问通过。
-
点击控制台
-
进入控制台后,选择安骑士
-
不管弹出的内容,直接ESC,点击安全配置
-
安全设置中,选择点击设置,进入添加白名单界面
-
点击添加
-
源ip设为0.0.0.0(表示允许所有ip访问),并将下方右边服务ip添加到左边,确定
-
重新进入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 |
|
- 刷新环境变量:
source /etc/profile
- 查看java环境:
java -version
2.服务器安装tomcat
-
首先需要在服务器安装好jdk
-
官网下载apache-tomcat-9.0.63.tar.gz
-
解压安装包:
tar -zxvf apache-tomcat-9.0.63.tar.gz
-
启动Tomcat:
./startup.sh
(在bin目录下)如果使用的是阿里云服务器,则不需要进行第5、6步,但需要在“实例”—>“安全组”—>“配置规则”里面增加一条安全组规则,也就是增加8080端口,示意图如下:
-
打开防火墙的8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
-
重启防火墙:
systemctl restart firewalld.service
-
在windows的浏览器访问:IP 端口,例如:10.64.26.250:8080
3.服务器安装maven
-
官网下载apache-maven-3.8.5-bin.tar.gz
-
解压安装包:
tar -zxvf apache-maven-3.8.5-bin.tar.gz
-
配置环境变量:
vi /etc/profile
再拷贝下方内容到/etc/profile文件中(注意路径用自己的,这里的路径只是例子):
1
2export MAVEN_HOME=/usr/local/java/apache-maven-3.8.5
export PATH=$MAVEN_HOME/bin:$PATH -
刷新环境变量:
source /etc/profile
-
验证安装结果:
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
-
官网下载mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
-
解压
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
-
查找并删除mariadb:
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-server-5.5.56-2.el7.x86_64
(这个地方出现的三个我全删除了,因为后面安装mysql时mysql与mariadb冲突报错)
-
安装mysql:依次执行以下操作:
1
2
3
4
5rpm -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
-
初始化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
- 问题解决
- 去下载地址
- 用阿里云出现报错,机房服务器没有:
-
给mysql授权:
chown -R mysql:mysql /var/lib/mysql/
-
启动mysql服务:
systemctl start mysqld
-
查询mysql初始密码:
cat /var/log/mysqld.log|grep localhost
大家一看就知道什么是初始密码了
- 登录mysql:
mysql -uroot -p
- 修改mysql密码:
alter user 'root'@'localhost' identified by '123456';
(分号不要省)
5.服务器安装ngnix
-
下载安装包:
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版本的)
-
将安装包通过xftp上传到服务器的/usr/local/src文件夹
-
解压:
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
-
安装:
安装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
3src/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
-
-
查看nginx版本:
/usr/local/webserver/nginx/sbin/nginx -v
-
配置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; } }
-
检查配置文件nginx.conf的正确性:
/usr/local/webserver/nginx/sbin/nginx -t
-
打开8090端口:
firewall-cmd --zone=public --add-port=8090/tcp --permanent
出现报错:
FirewallD is not running
解决方法:
- 执行systemctl status firewalld查看防火墙状态
- 需要开启防火墙即可
- 开启防火墙:
systemctl start firewalld
- 关闭防火墙:
systemctl stop firewalld
- 查看防火墙状态:
systemctl status firewalld
- 开启防火墙:
-
重启防火墙:
systemctl restart firewalld.service
-
启动ngnix:
/usr/local/webserver/nginx/sbin/nginx
-
浏览器访问ngnix:IP+端口,比如10.64.26.250:8090
-
关闭ngnix:
/usr/local/webserver/nginx/sbin/nginx -s stop