一、 安装JDK
1. 更新软件包列表
sudo apt-get update
2. 安装 openjdk-8-jdk
sudo apt-get install openjdk-8-jdk
3. 验证安装结果
$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
二、安装和配置MySQL8
安装
sudo apt-get install mysql-server
安装的MySQL版本
mysql -V
mysql Ver 8.0.26-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
登录mysql
mysql -uroot -p
输入密码
等等,密码是什么?
不知道密码?MySQL在以下文件保存了默认用户名和密码,输入以下命令查看:
sudo vi /etc/mysql/debian.cnf
类似这样:
user = debian-sys-maint
password = xxxxxxxxxxxxxx
使用密码重新登录MySQL
$ mysql -udebian-sys-maint -p
Enter password: #输入文件中密码
修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
设置密码永久有效
alter user 'root'@'localhost' password expire never;
刷新权限缓存
FLUSH PRIVILEGES;
添加远程访问使用root访问数据库的权限并刷新权限
update mysql.user set host='%' where user='root';
FLUSH PRIVILEGES;
创建远程只读用户
create user 'userread'@'%' identified by '你的密码';
赋予查询权限
grant select on *.* to 'userread'@'%';
刷新权限缓存
flush privileges;
修改加密方式,MySQL8 使用mysql_native_password加密
ALTER USER 'userread'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
修改MySQL配置文件
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1,这样才可以远程连接
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
重启服务
$ service mysql restart
查看端口状态
netstat -an|grep 3306
返回以下结果表示远程权限开启。
如果依然无法远程连接,考虑防火墙拦截掉了。
查看服务器火墙,查看云服务提供商控制台火墙。
打开相应端口。
三、安装maven (项目编译打包使用)
方式一:手动安装
1. 下载Maven到 /usr/local目录
Maven – Welcome to Apache Maven
下载命令
sudo wget https://archive.apache.org/dist/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz
2. 解压下载的文件
sudo tar -zxvf apache-maven-3.8.2-bin.tar.gz
3. 配置环境变量
sudo vi /etc/profile
末尾追加以下内容:
export M2_HOME=/usr/local/apache-maven-3.8.2
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin
4. 执行命令使之生效
source /etc/profile
5. 验证
$ mvn -v
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: /usr/local/apache-maven-3.8.2
Java version: 1.8.0_292, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-80-generic", arch: "amd64", family: "unix"
6.切换国内源,阿里云
在settings.xml文件中,<mirrors>标签内添加以下代码:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
方式二:Ubuntu命令自动安装
sudo apt-get install maven
四、安装nginx 1.18
1. 更新apt资源
sudo apt update
2. 安装nginx
sudo apt install nginx
3. 查看nginx配置是否正确
sudo nginx -t
4. 修改nginx配置
sudo vi /etc/nginx/sites-enable/default
转发该域名请求到8080端口
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
access_log /var/log/nginx/access.log;
}
5. 重新加载配置
sudo nginx -s reload
五、安装FTP Server
ubuntu下安装和配置vsftp_大奖状的博客-CSDN博客_ubuntu安装vsftp
六、 配置SSL证书
1. 上传证书文件
注册完证书后会得到两个证书文件(xxx.crt, xxx.key)
使用FTP工具上传证书文件到Nginx目录(我的目录:/etc/nginx/cert/)
2.修改默认配置文件 /etc/nginx/sites-available/default
追加以下内容:
#配置80端口,把80端口请求转到443
server {
listen 80;
listen [::]:80;
server_name 你要转发的域名;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
access_log /var/log/nginx/access.log;
}
server {
#SSL 访问端口号为 443
listen 443 ssl;
listen [::]:443;
#填写绑定证书的域名
server_name 你的域名;
#证书文件名称 相对路径开始位置为nginx根目录
ssl_certificate cert/xxxx.xxx.crt;
#私钥文件名称 相对路径开始位置为nginx根目录
ssl_certificate_key cert/xxx.xxx.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
# 转发配置
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
access_log /var/log/nginx/access443.log;
}
3. 重新加载配置
sudo nginx -s reload
4. 重新访问域名URL进行验证,记得清一下浏览器缓存。
实际遇到的问题
浏览器访问https地址没有问题,使用curl、wget等命令访问却显示错误:
TLSv1.2 (OUT), TLS alert, unknown CA (560):
SSL certificate problem: unable to get local issuer certificate
curl https://域名 -v
* Trying 123.1.1.1:443...
* TCP_NODELAY set
* Connected to www.xx.xxx (123.1.1.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/curlssl/cacert.pem
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
一开始以为是本地客户端缺少整数所致,后来发现访问其他https域名却没有问题,才开始怀疑是服务端证书设置有问题。
原nginx证书配置:
#证书文件名称 相对路径开始位置为nginx根目录
ssl_certificate cert/xxxx.xxx.crt;
#私钥文件名称 相对路径开始位置为nginx根目录
ssl_certificate_key cert/xxx.xxx.key;
从SSL证书颁发机构下载的证书目录:
ca-bundle文件似乎没有用到,难道没有用吗?
经查资料,crt一个证书文件是不完全的,crt和ca-bundle文件合并才是完成的证书,这不是坑么!!!
使用以下命令合并文件,并修改nginx配置指向新文件
cat xxx.crt xxx.ca-bundle > new.crt #crt和ca-bundle文件位置填对
重新加载配置文件:
sudo nginx -s reload
再次测试:
OK,结果就不贴了。
问题根源还是学艺不精,看来什么技术不能浅尝辄止,一定要弄清楚明白。否则就会出现各种问题,各种误人子弟的资料更是一个坑接着一个坑,不要盲从。
七、部署好SpringBoot,端口设置8080,启动服务。
访问域名验证服务是否正常。
完成。