在阅读本教程之前,各位萌新如果不想自己手动部署服务器环境,有两种方法可以快速上手:
更换时,根据自己的需要选择更换类型–镜像市场,提交即可完成更换系统盘;操作系统更换大概需要10分钟。
注意
(2.1)实例会被分配一块系统盘,磁盘ID会更新,历史系统盘快照不能用于回滚新的系统盘。原系统盘被释放,建议操作前创建快照备份数据或手动备份数据。
(2.2)系统盘的云盘类型不变。实例的IP地址和MAC地址不变。
(2.3)手动创建的快照不受影响,旧系统盘的自动快照会自动删除
以上就是搭建环境的懒人方法啦!不过还是比较推荐自己动手来搭建环境,毕竟相比使用别人的东西,靠自己一步步搭建的东西会更有成就感,同时能让自己更加深入去了解系统的原理,命令和运行机制,从而加深印象,在更高级的diy时能够得心应手。
本文将详细演示如何完整地将一个项目部署到云服务器
开发IDE:IDEA
jdk:11
数据库:mysql-8.0(window),-5.6.39(linux)
前端框架:springboot,spring,mybatis
后端框架:vue.js
前端服务器:nigix-1.902(window),-1.6.2(linux)
后端服务器:Tomcat(springboot自带,不需要单独配置)
云服务器:阿里云(centos8.2)
这里说明一下
SSH:允许远程使用SSH登陆主机
HTTPS:允许使用https连接传输(我这里暂时没有备案)
Mysql:允许远程连接SQL数据库
redis:允许远程连接redis缓存数据库(本文暂时未使用redis)
RCP:启用终端服务(RDP 远程桌面)
HTTP:允许使用http连接传输
下载xshell远程连接工具(百度直接搜)
安装完成之后启动
自己可以到官网(https://www.oracle.com/java/technologies/javase-downloads.html)下载打包到linux上,我这里直接使用yum安装
我这里安装的是jdk11,其他版本可自行选择(注意:centos7及以下最多只能支持到jdk8)
属于yum命令安装jdk
# 搜索安装包
yum search java-11-openjdk
# 安装
yum install -y java-11-openjdk
# 检查是否安装成功
[root@iZwz996kn383d1o4hdv3snZ ~]# java -version
openjdk version "11.0.9" 2020-10-20 LTS
ls -lr $(which java)
ls -lrt /etc/alternatives/java
vim /etc/profile
在文件末尾添加的环境变量配置
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.4.11-1.el7_7.x86_64/bin/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 刷新配置
[root@iZwz996kn383d1o4hdv3snZ ~]# source /etc/profile
# 检查配置是否生效,注意JAVA_HOME全部大写
[root@iZwz996kn383d1o4hdv3snZ ~]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.4.11-1.el7_7.x86_64/bin/java
官网下载(地址:https://downloads.mysql.com/archives/community/)
(MySQL-5.6.39下载直链:https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz),我这里安装是社区版的MySQL-5.6.39
下载到本地文件夹后,利用上传工具将压缩包放到服务器**/usr/local/**目录下,这里推荐使用winscp,可以直接拖拽很方便
嫌下载麻烦可直接用xshell自带的ftp传输
直接关闭即可
使用put命令直接将文件upload的远程服务器
sftp:/root> cd /usr/local
sftp:/usr/local> put D:\xshell6\传输安装文件\mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
CentOS默认安装的数据库是Maria DB,我们要先将他卸载掉之后再安装MySQL。
# rpm -qa|grep maria*
查询出来已经安装了的Maria DB
# rpm -e --nodeps 文件名
注:文件名为上面查询出来的文件名,如果有多个执行多次即可。然后再重新执行一下第1步的查询命令确认是否都卸载完成。
删除etc目录下的my.cnf
# rm /etc/my.cnf
创建MySQL用户组
# groupadd mysql
添加MySQL用户并添加到MySQL用户组
# useradd -g mysql mysql
将下载好的压缩包移动到/usr/local/ 目录下,如果已经在目录下则不用处理
# mv mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz /usr/local/
解压安装包
# tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
如果是xz包(后缀为tar.xz),则命令为
# tar -xJf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
将解压后的文件夹重命名为mysql
# mv mysql-5.6.39-linux-glibc2.12-x86_64 mysql
将/usr/local/mysql/support-files路径下的my-default.cnf文件拷贝到/etc/my.cnf命名为my.cnf
[root@localhost support-files]# cp my-default.cnf /etc/my.cnf
配置/etc目录下的my.cnf文件,直接在末尾添加
# vim /etc/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M
安装Data:Dumper模块
# yum -y install autoconf
进入到mysql文件目录下,执行如下命令
# cd /usr/local/mysql
修改当前目录拥有者为mysql用户
# chown -R mysql:mysql ./
安装数据库
# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
修改当前data目录的拥有者为mysql用户
# chown -R mysql:mysql data
授予my.cnf最大权限
# chown 777 /etc/my.cnf
设置MySQL自启动,复制启动脚本到资源目录(目的想实现mysqld -install这样开机自动执行效果,/etc/init.d/ 目录等效于注册表)
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
将mysqld服务加入到系统服务
# chkconfig --add mysqld
检查mysqld服务是否已经生效
# chkconfig --list mysqld
出现如下结果说明生效
创建/var/lib/mysql文件,由于MySQL服务不具备目录 /var/lib/mysql 的写入权限,无法生成mysql.sock文件,服务启动时会无法找到该文件。所以要给目录 /var/lib/mysql 付予写入权限或者最大权限
# mkdir /var/lib/mysql
# chmod 777 /var/lib/mysql
将mysql的bin目录加入PATH环境变量,编辑 ~/.bash_profile文件
# vim ~/.bash_profile
在文件最后添加如下信息:指定环境变量启动程序位置,如果已经存在export命令,可以先删除掉相关内容,直接替换成下面的命令。
export PATH=$PATH:/usr/local/mysql/bin
执行下面的命令使修改的内容立即生效
# source ~/.bash_profile
启动mysqld服务
# service mysqld start
以root账户登录mysql,默认是没有密码的,要输入密码的时候直接回车即可。
# mysql -u root -p
设置root账户密码为root(也可以修改成你要的密码)
mysql>use mysql
mysql>update user set password=password('root') where user='root' and host='localhost';
mysql>flush privileges;
设置远程主机登录,使用下面命令查看和添加,注意下面的your username 和 your password改成你需要设置的用户和密码
-查看用户
select Host,User,Password from mysql.user;
+-------------------------+------+-------------------------------------------+
| Host | User | Password |
+-------------------------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| izwz996kn383d1o4hdv3snz | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| izwz996kn383d1o4hdv3snz | | |
+-------------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)
(嫌麻烦以下步骤可省略)
创建用户
create user test identified by '123456';
分配权限
grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option;
刷新
flush privileges ;
修改指定用户密码
update mysql.user set password=password('111111') where User="test" and Host="localhost";
删除用户
delete from user where User='test' and Host='localhost';
这里推荐Navicat,超级好用,具体下载方法自己搜吧
选择连接
选择ssh连接,填写相关内容后测试连接,成功后确定
成功后就能够在侧边栏看到所连接的远程数据库啦
如果还是拒绝访问,有可能是你的防火墙没有关闭或部分端口没开启,可以进行如下配置:
查看已开放的端口(默认不开放任何端口)
[root@localhost ~]#firewall-cmd --list-ports
查询端口号80是否开启!
查询端口号
[root@localhost ~]#firewall-cmd --query-port=80/tcp
开启80端口
[root@localhost ~]#firewall-cmd --zone=public --add-port=80/tcp --permanent
用同样的方法开启3306端口
重启防火墙
[root@localhost ~]#firewall-cmd --reload
停止防火墙
[root@localhost ~]#systemctl stop firewalld.service
禁止防火墙开机启动
[root@localhost ~]#systemctl disable firewalld.service
还有别忘了在云服务器安全组策略设置开放3306端口哦(查看第一节)
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
或者直接一句命令
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel zlib zlib-devel openssl openssl-devel
cd /usr/local
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar zxvf nginx-1.6.2.tar.gz
cd /usr/local/nginx-1.16.2
./configure
在/usr/local/nginx-1.16.2下执行以下命令
make
make install
这步要注意,高版本linux系统安装会出现一些报错!!
我的版本是centos8.2,安装是出现如下报错,然后并没有找到sbin目录的启动文件
解决方法:
在nginx安装文件夹(即/usr/local/nginx-1.6.2)下输入
vim src/os/unix/ngx_user.c
在末行模式下/cd.current找到如下红框,注释掉它
然后进入解压目录的objs文件夹下下,编辑Makefile文件,将-Werror删除
vim /usr/local/nginx-1.6.2/objs/Makefile
# make
# make install
# whereis nginx
nginx: /usr/local/nginx
会发现不报错,而且在/usr/local目录下创建了nginx文件夹,此时也有sbin目录了
这是我安装是会出现的问题,折腾了不少时间,如果你没有出现这些问题,恭喜你,这步可以不看
测试配置文件
注意,该路径非/usr/local/nginx-1.6.1
# cd /usr/local/nginx
# sbin/nginx -t
出现以下提示说明配置成功
常用命令
//启动命令
安装路径下的/nginx/sbin/nginx
//停止命令
安装路径下的/nginx/sbin/nginx -s stop
或者 : nginx -s quit
//重启命令
安装路径下的/nginx/sbin/nginx -s reload
//查看进程命令
ps -ef | grep nginx
至此nginx安装结束
修改本地config配置,不然访问静态资源会出错
在config/index修改如下:
如果使用了element控件,则在build/utils修改如下:
在文件目录下用terminal或命令行运行
npm run build
待其构建打包好之后会在根目录生成dist文件,如图
将dist文件上传到服务器springboot的jar包同目录下,方法略
打包方式有两种,一种是打包成war包,这个时候需要在云服务器中部署tomcat才能够运行。
第二种是打包成jar包,这种由于springboot内置了tomcat,所以只需要服务器上有jdk就可以了。需要注意的是springboot最低需要jdk1.8及以上版本。
我们之前已经安装了jdk11,现在我们打成jar包,省去了安装Tomcat的麻烦
首先在pom.xml最外层中加入依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
<resources>
<resource>
<directory>${basedir}/src/main/webappdirectory>
<targetPath>META-INF/resourcestargetPath>
<includes>
<include>**/**include>
includes>
resource>
<resource>
<directory>${basedir}/src/main/resourcesdirectory>
resource>
resources>
build>
<packaging>jarpackaging>
如图
配置端口和主机名,防止有可能发生本地访问但发布到服务器却访问不了的情况
在其自动下载加载完之后,点击package打包
打包完会在target目录下出现jar包,如图
在部署到服务起之前,先试着本地访问
进入jar包所在目录下cmd运行
java -jar 包名.jar
将jar包通过发送到服务器中(略过)
查看端口使用情况,防止被占用
//netstat -anp | grep <端口号>
netstat -anp | grep 8082
如果被占用了,(没被占用的时候不显示任何东西),查看占用端口的PID
sudo lsof -i:8800 //sudo lsof -i:<端口号>
kill掉占用的进程,再执行netstat -anp | grep <端口号>看是否还占用
sudo kill -9 进程号
进入jar包所在的目录下touch创建一个start.sh和log.txt脚本文件。
向其中添加字段 : java -jar 包名.jar > log.txt
目的是让打印的信息重定向到log.txt中去
给这个start.sh 提权,然后用nohup指令不间断地运行
# chmod 777 start.sh //赋予最高权限
# nohup ./start.sh & //不间断运行文件内的指令
进入配置文件
cd /usr/local/nginx/conf
vim nginx.conf
/nginx/sbin/nginx
进入jar所在的目录,运行我们刚才配置的脚本
./start.sh
查看日志文件log.txt,正常即可顺利启动
这个时候就可以尝试使用浏览器查看整体部署情况啦!!
配置后台时当时可是踩了不少坑,
[root@iZwz996kn383d1o4hdv3snZ nginx]# mysql -u root -p
Enter password:
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password('root') where user='root' and host='127.0.0.1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
注意:所有配置文件修改之后都要重启,不然会不生效
持续更新…
总的来说,这次配置服务器是我一步一个坑走过来的,每一步都是相对比较细致、从0开始的配置流程,跟着步骤走肯定能配置成功,希望这篇服务器配置教程对你有所帮助,如果你能从中有所收获,希望给作者留个赞鼓励一下:)。