第一部分
大家好,我就读于机械专业,寒假在家想学习Linux操作,为接下来找互联网工作做准备。试用了2~3个服务器后,发现阿里云服务器提供的功能最多、社区最完善、试用时长最久。正值冬奥前,我参加了《上云第一课,冬季实战营》活动,分别有《从零到一上手玩转云服务器》、《Linux操作系统实战入门》、《MySQL数据库进阶实战》、《零基础容器技术实战》、以及《轻松入门学习大数据》。
第二部分——阿里云ECS使用攻略
1、通过XShell远程登录云服务器,可以方便地操作服务器;
2、通过filezilla软件建立本地电脑与服务器之间的连接,可以方便传输文件,提高了部署效率;
3、如果使用服务器编写C/C++程序,可以用VSCode通过SSH远程服务器的环境,实现在本地电脑编写程序,程序文件保存到云服务器,并在服务器执行,极大提高了开发效率。
4、服务器部署过程
4.1nginx安装
http://nginx.org/en/linux_packages.html#RHEL-CentOS
Install the prerequisites:
sudo yum install yum-utils
To set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo with the following contents:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:
sudo yum-config-manager --enable nginx-mainline
To install nginx, run the following command:
sudo yum install nginx
When prompted to accept the GPG key, verify that the fingerprint matches 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62, and if so, accept it.
4.2JDK安装
参考博客:https://blog.csdn.net/qq_31011649/article/details/103348671
1、查看本机是否自带java:rpm -qa|grep java
2、有则卸载:rpm -e --nodeps java*
3、查看yum中jdk版本:yum search jdk
发现有java11,列出java11:yum list |grep java-11
4、只需要java-11-openjdk-headless、java-11-openjdk和java-11-openjdk-devel
yum install -y java-11-openjdk-11.0.14.0.9-1.el7_9.x86_64 java-11-openjdk-devel-11.0.14.0.9-1.el7_9.x86_64 java-11-openjdk-headless-11.0.14.0.9-1.el7_9.x86_64
各个centos版本的jdk版本不一样,输入完yum install -y后挨个用鼠标选择包名后按shift+ins键就可以复制到命令行了,避免手打打错字。
5、java -version就可以出现版本信息
6、将java版本信息提前保存,也就是这个信息,java-11-openjdk-11.0.14.0.9-1.el7_9.x86_64
7、配置环境变量
安装完之后,默认的安装目录是在: /usr/lib/jvm/
编辑配置文件,设置环境变量:
vi /etc/profile
在profile文件中添加如下内容
set java environment
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.14.0.9-1.el7_9.x86_64
JRE_HOME=$JAVA_HOME
CLASS_PATH=.:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
保存退出:
Esc
:wq
回车
让修改生效:
source /etc/profile
8、验证
java -version
javac -version
cd $JAVA_HOME
4.3MySQL安装
1、先安装wget
yum -y install wget
2、官网查询最新的版本
https://dev.mysql.com/downloads/file/?id=508941
点击No thanks, just start my download.
复制文件名mysql80-community-release-el7-5.noarch.rpm
使用如下命令,若有更新的版本,可用刚刚的文件名进行替换
cd /usr/src
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
3、之后安装yum源,注意版本要对应
安装yum源
yum localinstall mysql80-community-release-el7-5.noarch.rpm
更新yum源
yum clean all
yum makecache
开始安装MySQL,漫长的等待
yum install mysql-community-server
启动MySQL
systemctl start mysqld
启动成功后可以查看初始化密码随机生成的
cat /var/log/mysqld.log | grep password
登录MySQL修改mysql用户密码
mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
远程设置
mysql> use mysql;
mysql> update user set host='%' where user='root';
授权用户名的权限,赋予任何主机访问数据的权限
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;#8.0后会报错
mysql> FLUSH PRIVILEGES;
如果第24条命令报错,就用这个方法
update user set host = '%' where user = 'root';
如果还报错
update user set host = '%' where user = 'root' and host='localhost';
再次给用户授权
GRANT ALL ON . TO 'root'@'%';
刷新
flush privileges;
4、如果用navicat连接还是报错:Client does not support authentication protocol requested by server; 则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
5、如果用navicat去远程链接我虚拟机中的MySQL失败,就在虚拟机中查看网络端口信息:
netstat -ntpl
查看防火墙的状态,查看3306端口
iptables -vnL
如果3306是drop状态,或者根本无3306端口,说明3306端口设置问题
解决办法:
先启动服务,
service mysqld start;
然后开放防火墙端口,添加需要监听的端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
开启3306端口监听,开启后如下图
就能连上了
如果还不行,参考下面的文章。
授权用户名权限的解决方法
https://blog.csdn.net/mxskymx/article/details/88765072
windows下用navicat链接虚拟机MySQL数据库的过程和问题解决
https://www.cnblogs.com/brankoliu/p/10845491.html
6、navicat连接服务器里的数据库
新建一个数据库,数据库名字与项目使用的数据库名字一致,例如student_management,字符集是utf-8mb4,排序规则为utf8mb4_unicode_ci
然后导入sql命令,即可
4.4nginx配置
1、首先启动nginx,直接输入nginx启动
nginx
2、查看虚拟机是否开放了80端口
iptables -vnL
如果没开放,或者没有80端口,则开启80端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
3、进入nginx文件夹
cd /etc/nginx
使用ls查看,有conf.d文件夹和nginx.conf文件
cd进入conf.d,里面有defaul.conf文件
nginx.conf和defaul.conf的关系是,include /etc/nginx/conf.d/*.conf;
即nginx.conf 文件会引用 conf.d文件夹下的所有配置文件,包括defaul.conf
4、设置nginx.conf
在nginx.conf 文件中,只需要设置user
user的格式为:user 用户名 组名,例如user root root
如果用户名组名相同,就只写一个
5、设置defaul.conf
1)设置前端location /
location / {
root /usr/share/nginx/www/vuestudent/vuestudent;
try_files $uri $uri/ /index.html last;
index index.html index.htm;
}
root 那行填vue项目文件夹的路径
try_files 是新加的,照写,目的是刷新的时候不会404
2)设置后端location
加上location /api这个块,与前端location /块在同一级别,/api是根据前端vue.config.js中跨域配置中的拦截器来设置的
location /api {
proxy_pass http://localhost:9091/;
}
proxy_pass后面就是后端的地址
保存退出后,重启nginx配置
nginx -s reload
4.5运行后端
使用后台运行,不会弹出日志
nohup java -jar jar包名称.jar &
若出现nohup: 忽略输入并把输出追加到"nohup.out"则是正常的
若nohup: 忽略输入重定向错误到标准输出端
则使用下面的命令
nohup java -jar jar包名称.jar >/dev/null 2>&1
然后查看是否运行成功
tail -f nohup.out
如果运行成功,此时按ctrl+c,后端服务也不会结束。
4.6结束后端
先查找后端项目的进程id,由于后端项目运行在9091端口,因此
netstat -nlp|grep 9091
9091是系统启动访问的端口, 由此可得到9578 是java运行的pid,
如果要结束就用kill命令
kill 9578
注意:
命令结尾没有 “&” ,则变成 “java -jar XXX.jar ” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗口,则程序直接退出
命令结尾添加 “&” ,则变成 “java -jar XXX.jar &” ,表示在当窗口关闭时,程序才会中止运行。&代表让该命令在后台执行。
4.7部署到阿里云的注意事项
1、需要在安全组开放22端口,否则使用SSH传输文件夹时可能会崩
2、需要在安全组开放80端口,否则无法访问服务器
3、需要在安全组开放3306端口,否则无法访问数据库
4、图片未显示。图片使用了中文名称,改成英文
4.8数据库命名规范
1、sql中,表名、字段名通通小写加下划线
2、后端中,表名采用小写加下划线,字段名(属性)采用驼峰命名
第三部分——收获总结,展望未来
首先感谢阿里云这个平台为我们提供了优质且免费的云服务器实验环境,在学习理论的同时,能立即通过服务器进行操作,一步一步地拨开云服务器的奥秘。在此之前我还在网上搜索免费的云服务器,但只是试用的,而且申请了服务器后就不知道要往哪方面进行学习。后来我发现了阿里云冬季实战营活动和“高校学生在家实践”获得,既能免费使用一段时间的云服务器资源又能在这段时间内学习云服务器的知识和技能,完美解决了我这个云小白的烦恼。最后,祝阿里云越来越好!