购买阿里云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包的安装方法总结:

  1. cd /usr/local/
  2.  rz 
  3. tar -zxvf /usr/local/jdk-8u261-linux-i586.tar.gz
  4. mv /usr/local/jdk1.8.0_261   /usr/local/java
  5. 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

 
            cat /etc/passwd | grep mysql
      如果执行上述命令无结果则代表无mysql用户,请执行以下命令
            groupadd mysql
            useradd -r -g mysql mysql        #useradd -r参数表示mysql用户是系统用户,不可用于登录系统
          7.更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
             chown -R mysql:mysql /usr/local/mysql
             chmod -R 755 /usr/local/mysql
          8.编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
             cd /usr/local/mysql/bin
            ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
            补充说明:
            此步骤可能会出现错误:
           
          
           网上的解决办法亲测有效
           
      
          我将以上修复命令贴出
          rpm -qa|grep libaio 
          yum install libaio-devel.x86_64
         我是到这一步就成功了
       9.运行初始化命令成功后,最后一行提示 [Note] A temporary password is generated for root@localhost: edDl*4RzoykP 
          务必该edDl*4RzoykP此字符串为mysql管理员临时登录密码。
       10.vi /etc/my.cnf      #编辑配置文件my.cnf,添加配置如下【此处配置有问题,因为此处配置问题导致了不必要得错误所以请先跳到12步阅读一下再回来,这是粘的                                                                                                      别人的配置啊,因为不理解配置的意思,导致下面的错误实属不应该, 如果下次搭建还是会出现同样的问                                                                                                    题,还是不知道为什么,那么每次安装的效率相当低下,并且安装过程  对学习没有任何帮助】
            
[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

话音未落又出现如下错误

解决办法:
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 密码为上面说了要记住得临时密码
好吧又出现了如下错误

解决办法: alias mysql=/usr/local/mysql/bin/mysql
重新登录时又出现了如下错误:

网上也能搜到解决办法但是做到这一步就要想为什么接二连三出现问题,就要考虑配置文件是否配错了,不能闷头一直错下去,这不是学习得好方法,理解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

             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/loca/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 是一个开放源代码的软件库包,这个包广泛被应用在互联网的网页服务器上,实现了基本的加密功能,实现了 SSLTLS 协议。

  查看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 的配置详解。  

        

    

       

 

     

      

      









原文地址:https://www.cnblogs.com/missmeng/p/13475419.html