购买阿里云ECS到部署搭建项目运行环境,jdk,redis,mysql,nginx,域名,及linux命令、遇到的坑大合集~~
写这篇文章的初衷是今天领导让搭建一个测试环境,发现之前搭过又忘记了,又得重新找别人的帖子,该踩的雷一个不落下,本贴花了两天时间搭建加码字...啊文字整理原来还挺麻烦的,感谢无私奉献的优质博主整理帖子发出来共享...
项目背景 springBoot + vue
一、如何购买一台服务器
1.如何选型?
2.操作步骤
二、linux命令
阿里云ECS购买完毕默认是没有密码的,需要在网站页面上修改密码,修改完毕服务器会自动调起服务器重启操作,等待几秒钟。即可使用secureCRT 或者xshell 远程登录linux系统,这里不再赘述。
首先查看linux和centos版本
命令
查看linux系统版本 lsb_release -a //适用所有linux发行版 cat /etc/redhat-release //仅适用readhat系统的linux 查看linux内核版本 cat /proc/version
1.问题:bash: sz: command not found 原因:Linux系统中如果没有安装 lrzsz这个包,就会报rz、sz命令找不到,安装即可解决。
命令:
yum install lrzsz
三、搭建开发环境
1.开始安装java环境
查看是否已经安装 java -version
开始安装
方法一:官网下载 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
找到对应版本下载后这里选择 jdk-8u261-linux-i586.tar.gz
【参考帖子】https://blog.csdn.net/u010993514/article/details/82926514 (帖子写的很好很详细)
tar包的安装方法总结:
- cd /usr/local/
- rz
-
tar -zxvf /usr/local/jdk-8u261-linux-i586.tar.gz
-
mv /usr/local/jdk1.8.0_261 /usr/local/java
-
vi /etc/profile 文件最后一行添加如下信息
export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JRE_HOME=$JAVA_HOME/jre
6.source /etc/profile
7.java -version 查看是否安装成功
我在这一步执行查看出现了如下错误:
-bash: /usr/local/java/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
解决方案:sudo yum install glibc.i686 这个命令即可解决此问题。
2.开始安装mysql
方法一、自行下载mysql tar包 下载地址:https://dev.mysql.com/downloads/mysql/5.6.html#download
我的linux系统是centos的,但是网上的教程都是选择的linux-generic 这个,查了区别
【转】https://www.cnblogs.com/thrillerz/p/3888783.html
centos下如何选择选择mysql的linux版本:
centos , 本质上和red hat 是一个公司的,差别不大。你可以选择 red hat那个,或者选择 linux-generic这个,后者这个是通用的。
其实内部差别不大。2个任选一个都可。
参考了别人的贴子,找到几个比较有用的,结合自己的经验给出如下步骤
【转】https://blog.csdn.net/yye894817571/article/details/88701037
https://www.jianshu.com/p/276d59cbc529 【很详细】
https://blog.csdn.net/lch520baby/article/details/89081306
下面我们以以下版本为例进行步骤分解:
下载完毕后
rpm -qa | grep mysql //检查是否安装 此步省略 因为我是新买的裸机 有需要的可以看一下 如果已经安装了选择卸载
1. cd /usr/local/
2.rz //上传mysql文件
3.tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz //解压
4.mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql //将文件名改为mysql
5. mkdir /usr/local/mysql/data //在mysql目录下创建data 存放数据库记录目录
6.添加系统mysql组和mysql用户
检查mysql组和用户是否存在,如无创建
cat /etc/group | grep mysql
![](https://img2020.cnblogs.com/blog/1536696/202008/1536696-20200812154024396-2112645948.png)
![](https://img2020.cnblogs.com/blog/1536696/202008/1536696-20200812154308369-1107361652.png)
[root@localhost bin]# vi /etc/my.cnf [mysqld] datadir=/usr/local/mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=600 innodb_file_per_table=1 lower_case_table_names=1
11./usr/local/mysql/support-files/mysql.server start #测试启动mysql服务器
此处报错:
因为没有路径也没有权限,所以创建此路径并授权给mysql用户
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
# 用户组及用户
chown -R mysql:mysql /var/log/mariadb/
/usr/local/mysql/support-files/mysql.server start
话音未落又出现如下错误
![](https://img2020.cnblogs.com/blog/1536696/202008/1536696-20200812160749098-815960396.png)
解决办法:
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
出错原因:
根据报错解释得没有文件目录 /var/lib/mysql socket得作用主要是,socket实在my.cnf中有配置,可以打开看一下就明白了
Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都具有访问权限
12.mysql -u root -p //登录mysql 密码为上面说了要记住得临时密码
好吧又出现了如下错误
![](https://img2020.cnblogs.com/blog/1536696/202008/1536696-20200812162434078-1291797031.png)
解决办法: alias mysql=/usr/local/mysql/bin/mysql
重新登录时又出现了如下错误:
![](https://img2020.cnblogs.com/blog/1536696/202008/1536696-20200812162750699-2008400708.png)
网上也能搜到解决办法但是做到这一步就要想为什么接二连三出现问题,就要考虑配置文件是否配错了,不能闷头一直错下去,这不是学习得好方法,理解my.cnf中每一项配置都是什么意思
请粘贴此处配置:
[mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] port=3306 socket=/var/lib/mysql/mysql.sock
13. set password for root@localhost = password('yourpass'); //修改密码
14.flush privileges;
15.大公告成,接下来就可以正常使用数据库啦
使用navicat连接报错问题:113--host...is not allowed to connect to this mysql server
https://blog.csdn.net/dabao87/article/details/80571877
3.开始安装redis
1.首先检测是否有安装redis-cli和redis-server,如果没有任何输出代表没有安装redis
whereis redis-cli
whereis redis-server
redis-server --version #进入redis目录 如果不知道目录的可以使用命令 find / -name redis-server 该命令屡试不爽
2.下载安装包
第一种方式:官网下载,地址 https://redis.io/download
下载完解压即可,现在已经更新到6.0了,真是太快了,因为线上使用的是低版本,我这里暂时不使用此版本
历史版本也可以从这里找 http://download.redis.io/releases/ 注意小数点后一位为偶数才是稳定版
第二种方法:这里试一下其他wget方式安装 参考帖子【转】https://www.cnblogs.com/happywish/p/10944253.html
【转】https://www.jianshu.com/p/94626a2066ff 这篇写的也不错哦
这里使用wget方式下载,以 4.0版本为例
1)wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2) tar xzvf redis-4.0.8.tar.gz
3) 安装
cd redis-4.0.8
make //这里如果报错可以参考https://blog.csdn.net/to_real/article/details/109029774
cd src
make install PREFIX=/usr/local/redis //指定安装目录
4)移动配置文件到安装目录下
cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc //将解压的配置文件挪到安装目录中
5)vi /usr/local/redis/etc/redis.conf // 配置redis为后台启动 将daemonize no改成daemonize yes
6)将redis加入到开机启动 此步可略过最后将所有服务统一添加 防止服务器重启带来的麻烦
vi /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)
7)/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf #开启redis
8)将redis-cli,redis-server拷贝到bin下,让redis-cli指令可以在任意目录下直接使用,直接输入指令redis-cli 即可,不要加./redis-cli
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/
9) set get 值进行测试
10) 此时就大公告成了
默认是没有密码的,加就放在后面说了按照上诉步骤即可完成一个linux版redis安装,相对mysql是不是简单太多了
4.开始安装 nginx
参考帖子【转】https://www.cnblogs.com/xxoome/p/5866475.html
查看nginx版本号:进入nginx安装目录,如果系统有配置全局使用nginx程序,就输入命令 nginx -v
第一种方法:下载安装包: http://nginx.org/download/ 下载自己想用得版本这里以nginx-1.16 版本为例
0)准备: 在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。
检查命令:yum list installed | grep "gcc" 其他的按需修改"gcc"即可
未安装执行安装命令:yum -y install gcc pcre-devel zlib-devel openssl openssl-devel ##取自己需要安装的部分 yum即可
1)cd /usr/local/
2)tar -zxvf nginx-1.16.1.tar.gz
3)cd nginx-1.16.1
4)./configure --prefix=/usr/local/nginx ## 配置的安装目录nginx目录会自动创建 一般安装的软件都是安装在这里
5)make
6)make install
7)cd /usr/local/nginx/sbin
8) ./nginx -t ## 测试是否安装成功
9)此步可省略 vim /etc/rc.d/rc.local ## 配置nginx开机自启动
将 /usr/local/nginx/sbin/nginx 追加文件末尾
10)./nginx #启动nginx 此处介绍一个查看此端口对应的进程 lsof -i :80 如果提示没有这个命令 执行安装 yum install lsof
11)验证 浏览器输入ipp地址访问得到ngin欢迎页 恭喜你大功告成
5. 打包部署后台代码
因为前面也介绍了,我们的项目是springBoot的,所以不用安装tomcat了
java -jar ****.jar
##xshell关闭就该程序就会停掉
nohup java -jar ****.jar & ## 后台运行 会默认将程序的所有日志打到jar包所在目录的nohup.out文件中
nohup java -jar ****.jar > aaa.log 2>&1 & ##指定打印日志的目录
nohup java -jar ****.jar --server.port=9091 & ##后台运行指定端口
nohup java -jar ***.jar --server.port=9091 >/dev/null 2>&1 & ##后台运行指定端口将日志打到黑洞中
idea如何打包:
找到target文件在的jar,上传至服务器,启动测试
6.打包部署前端程序
linux服务器下搭建vue开发环境
【转】https://blog.51cto.com/13718210/2141533 这个文章的文字描述可以参考一下有助于理解搭建每一步的作用
【转】https://blog.51cto.com/13718210/2141533
这两篇文章足够了,但是我们是把linux作为线上测试服务器的,不需要安装vue环境的,只需要在本机编译好后,结合nginx就能使用啦。
【转】http://www.manongjc.com/detail/13-elbfidmjfsxyijw.html
【转】https://www.jianshu.com/p/4d25574e2fc0
上述两篇文章即可搞定,因为咱们上面已经安装好了nginx,这里不做赘述,直接配置上传编译后的vue文件和配置nginx即可。
1)npm run build ##本地执行命令,在idea终端或者cmd后进入项目目录执行都可
2)压缩文件为 dist.zip
3) 上传dist.zip文件
4) unzip dist.zip ## 解压
5) 添加配置文件
location /host{ alias /home/server/vue/dist/; #dist在linux的位置 index index.html; try_files $uri $uri/ /index.html last; }
配置的位置:
6) 切换到nginx sbin目录重启nginx ./nginx -s reload
7)浏览器访问 http://ip/host
以上部署完毕后就可以进行项目测试了,但是因为我们的项目还有小程序,而小程序又需要https支持,所以这里再说一下域名和https的配置。
7.阿里云域名和ssl证书问题
什么是openSSL?
OpenSSL 是一个开放源代码的软件库包,这个包广泛被应用在互联网的网页服务器上,实现了基本的加密功能,实现了 SSL 与 TLS 协议。
查看openSSL版本命令: openssl version
什么是CA证书?
【转】https://baijiahao.baidu.com/s?id=1653402538679672349&wfr=spider&for=pc
此篇文章给了比较能理解的说明,简而言之就是CA是一个机构,它办法的证书都可以统称为CA证书,而SSL证书是CA证书的一种,ssl证书是其中一种类型,是属于数字证书。
阿里云免费的ssl证书和收费版都有什么区别?
【转】https://zhidao.baidu.com/question/1499760152392530499.html?sort=11&rn=5&pn=0#wgt-answers
阿里云注册域名,免费个人版和收费版区别?
简而言之收费的肯定是好的,主要是用来抵御QPS攻击,至于选哪种根据自己的实际用途选择。
如何配置阿里云的二级域名?
【转】https://developer.aliyun.com/ask/135395?spm=a2c6h.13159736
添加完毕后官方有检测生效工具,可以测试一下是否解析成功。
如何申请免费的ssl证书?并配置到二级域名下。
根据上述截图申请完ssl证书后,等待签发列有一个申请,按要求填写需要绑定的域名即可。等待签发,一般10分钟就可以审核成功。
签发后,下载证书待用。
已签发列的操作栏点击下载,右侧会弹出让我们下载的类型,我们这里下载nginx的。
8.Linux下 nginx配置ssl证书实现https访问
1.申请证书 :先准备SSL证书,获取的途径很多(阿里云的服务(阿里云每个域名都可以免费申请ssl证书的使用一年,但是安全级别低,所以不花钱,普通的展示信息的网站使用足够了),
第三方服务购买)、或者使用openSSL生成一个证书
使用openSSL工具获取证书【转】 https://aoeii.com/posts/how_to_use_openssl_to_creat_10-year-selfsigned-certs_on_centos_6_and_7
nginx配置ssl证书实现https访问参考文章【转】 https://blog.csdn.net/Jioho_chen/article/details/81516581 //这个帖子生成的证书是用openSSL工具生成的,我这里下载的阿里云免费的证书是这样的
后缀是.key .pem,但是步骤都是一样的。
1)cd /usr/local/nginx/sbin ##进入nginx的安装目录
2)./ngin -V ##查看 nginx 是否安装 http_ssl_module
模块 注意是大写V(configure arguments:后面表示当前已经安装的nginx模块)
3)cd /usr/local/nginx-1.16.1 ##目录切换到我们的源码包安装位置
4) ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module ## 执行语句,重新安装ssl模块
5)make ## 编译我们的配置
6)cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak ##备份原有已安装好的nginx
7) ps -ef|grep nginx kill -quit 进程号 ##关闭nginx(因为要把新的模块覆盖旧的nginx))
8)cp ./objs/nginx /usr/local/nginx/sbin/ ## 将刚刚编译好的nginx覆盖掉原有的nginx,这个时候nginx要停止状态
9) /usr/local/nginx/sbin/nginx -V ##查看http_ssl_module是否安装成功
10)cd /usr/local/nginx/conf ##开始配置文件的修改
11) cp nginx.conf nginx.conf.bak ##备份配置文件防止配置错误回退回去
12) cd /usr/local/nginx/sbin/ #先切换到sbin目录
13) ./nginx -t ##测试配置文件是否正确 如果错误会提示行号 按行号查看 cat -n 【转】https://www.cnblogs.com/devil-91/archive/2012/07/25/2608992.html 其他命令也可以看这个文档
14)/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ##启动nginx
nginx配置详解
nginx配置安全策略
未完待续.......
此篇文章主要是安装步骤的讲解,如果想真正的理解就必须解读配置文件,之后会整理出来 my.cnf redis.conf nginx.conf 的配置详解。