这篇文章是基于 狂神说,Eric和张卡卡mg的服务器安装 MySQL 8.0的总结,仅供个人学习和复习用。
防火墙设置
确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!
# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service
关闭端口: firewall-cmd --zone=public --remove-port=80/tcp --permanent
添加指定ip端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="******" port protocol="tcp" port="6379" accept"
删除指定ip端口 firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="11300" accept"
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
jdk
事先确保服务器开启了以下端口
- nginx:80,443
- jenkins:8080
- mysql:3306
1.下载jdk
首先进入官网下载jdk8 选择linux64,因为现在官网下载jdk需要oracle账号,所以这里提供一个
帐号:2337594954@qq.com 密码:Woaifengbeibei12
下载好安装包后运用xftp将文件传输入服务器。
# 在服务器中事先创建一个个人目录,用于暂时存放下载的安装包。
[root@zsky233333 /]# cd home
[root@zsky233333 home]# mkdir zsky233333
2.安装java环境
# 检查当前是否存在java环境! java -version
# 如果有的话需要卸载
# rpm -qa|grep jdk #检测JDK版本信息
# rpm -e --nodeps jdk #卸载命令
# 安装
# rpm -ivh 包
安装完毕执行 java -version 命令查看jdk。
注意
通过rpm安装的rpm包是不需要配置环境变量的,若通过其他命令安装需要自己手动配置环境变量。如下
vi /etc/profile
# 在最后位置进入编辑模式,加入如下几行:
JAVA_HOME=/usr/java/jdk1.8.0_144
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
# 保存退出:wq
# 执行以下文件:
source /etc/profile
# 不报错就行,这个会让你所选的文件立即生效;
# java -version可以查看到JAVA的安装及环境配置;
Tomcat
下载Tomcat
Tomcat下载地址 http://tomcat.apache.org/download-80.cgi
安装Tomcat
将Tomcat移到 /usr/local/ 目录下
mv apache-tomcat-9.0.43.tar.gz /usr/local/
解压
# tar -zxvf apache-tomcat-9.0.43.tar.gz
启动Tomcat
# cd /usr/local/apache-tomcat-9.0.43/bin
# ./startup.sh 开启Tomcat
# ./shutdown.sh 关闭Tomcat
# ps -ef|grep java 查看Tomcat是否开启
注意这里遇到一个坑Tomcat执行shutdown时报错:java.net.ConnectException: Connection refused (Connection refused)
可参考这篇文章 https://blog.csdn.net/ccy212220734/article/details/104468522
docker
1.官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/
2.确定你是CentOS7版本(因为8以上版本很多命令都改了)
[root@***** /]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
3.yum安装gcc相关(需要确保服务器可以联网)
yum在线安装 -y 表示所有提示都为yes
# yum -y install gcc
# yum -y install gcc-c++
4.卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
# 官网版本 (上下两条命令任选一条)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5.安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
6.设置stable镜像仓库
# =推荐使用国内的
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7.更新yum软件包索引
yum makecache fast
8.安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
9.启动docker
systemctl start docker #没有报错代表启动成功 这条金句大部分情况下在linux中通用
10.测试
docker version
docker run hello-world
docker images
mysql
删除服务器自带数据库
# 查看一下
rpm -qa | grep mariadb
# 删掉
yum -y remove mari*
rm -rf /var/lib/mysql/*
# 查看残留mysql文件
find / -name mysql
# 删掉!
find / -name mysql|xargs rm -rf
安装mysql(8版本)
1.在根目录下执行下载Mysql源安装包
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
2.执行安装源命令
yum localinstall mysql80-community-release-el7-1.noarch.rpm
3.安装Mysql,安装之前可以先检查一下源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
4.安装MySQL
yum install mysql-community-server
启动MySql
1.启动
service mysqld start
2.查看MySQL的运行状态
service mysqld status
3.设置开机自启动
systemctl enable mysqld
systemctl daemon-reload
修改登录密码
1.找到root默认密码
grep 'temporary password' /var/log/mysqld.log
2.登录本地MySQL (密码为刚刚找到的默认密码)
mysql -uroot -p
3.修改密码,密码命名要大写字母,小写字母,特殊字符,数字
ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';
添加远程登录用户
1.输入use mysql,连接数据库
use mysql
2.查看数据库当前 root 用户的相关信息
select host, user from user;
3.设置远程访问
update user set host='%' where user ='root';
重新查询root相关信息发现多一条数据
4.刷新
flush privileges;
Redis 安装
下载
下载地址:https://redis.io/
将安装包拖拽进服务器个人目录
解压
首先将程序移动到 /usr/local/目录然后解压安装
cd home/zsky233333/
ls
mv redis-6.0.6.tar.gz /usr/local/
cd /usr/local/
ls
tar -zxvf redis-6.0.6.tar.gz
基本环境安装
1.安装gcc环境 redis6.0版本以上有点小问题可参考文章: https://blog.csdn.net/weixin_44519874/article/details/112285537
[root@zsky233333 redis-6.0.6]# gcc -v # 查看gcc版本
[root@zsky233333 redis-6.0.6]# yum -y install centos-release-scl # 升级到9.1版本
[root@zsky233333 redis-6.0.6]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@zsky233333 redis-6.0.6]# scl enable devtoolset-9 bash
2.执行make命令配置文件
[root@zsky233333 redis-6.0.6]# make install
成功如下
可以进入/usr/local/bin目录查看
3.将redis.cofig文件复制到bin目录下
[root@zsky233333 local]# cd bin
[root@zsky233333 bin]# mkdir redisconfig
[root@zsky233333 bin]# cp /usr/local/redis-6.0.6/redis.conf redisconfig
修改配置文件
redis默认不是后台启动的,需要修改配置文件!
[root@zsky233333 redisconfig]# vim redis.conf
启动Redis服务
切换到 /usr/local/bin目录下
[root@zsky233333 bin]# redis-server redisconfig/redis.conf
[root@zsky233333 bin]# redis-cli -p 6379
查看redis的进程
[root@zsky233333 bin]# ps -ef|grep redis
关闭Redis服务
shutdown
exit
Fedora系统环境下配置部署
本篇文章由Eric提供的技术支持并完成的文章。感谢大佬!此篇笔记仅供自己学习和记录所用。
jdk安装
# 安装 JDK 1.8.0、MySQL 社区版、nodejs16
sudo dnf -y install java-1.8.0-openjdk community-mysql-server nodejs16
redis安装
参考链接https://developer.fedoraproject.org/tech/database/redis/about.html
sudo dnf install redis # Install redis cli and server
sudo systemctl start redis # Initialize redis server
# redis启动执行
sudo systemctl enable redis
# 测试redis服务
redis-cli ping # pong 代表成功
redis-cli -p 6379
# 修改redis配置
sudo nano /etc/redis/redis.conf
# 重启redis
sudo systemctl restart redis
#卸载命令
sudo dnf remove redis
daemonize yes 修改为yes
绑定 Redis 监听的网络接口,如果服务器有多个 IP,可限定 Redis server 监听的 IP;通过 Redis 配置项 bind,可同时绑定多个 IP。
bind 127.0.0.1 192.168.13.12
程序运行尽量避免使用熟知端口,降低被初级扫描的风险。
port 6666
开启 Redis 密码认证,并设置高复杂度密码,找到注释#requirepass 换行输入:
requirepass 你的密码
MySQL 配置
# 更换 MySQL 端口
## 首先查看 MySQL 配置文件路径
rpm -ql community-mysql-server | grep .cnf
## 查到路径为: /etc/my.cnf.d/community-mysql-server.cnf
# 我们新增一行端口设置为 3307
echo 'port=3307' | sudo tee -a /etc/my.cnf.d/community-mysql-server.cnf
# 将 mysqld 服务开机自启,并即刻启动服务
sudo systemctl enable --now mysqld
# MySQL 初始密码为空,为了安全考虑我们需要设置个密码
# 如: uoJ#%4cUQQvwEv
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'uoJ#%4cUQQvwEv';
# 允许远程登录
use mysql
update user set host='%' where user ='root';
flush privileges;
select host, user from user;
exit
# 首次使用前配置 MySQL,按照你的喜好回答安全问题(如果只是测试用,可以跳过)
sudo mysql_secure_installation
exit
# 卸载 MySQL
# sudo rpm -e --nodeps mysql-community-libs mysql-community-common mysql-community-server
# 启动 firewalld 服务
sudo systemctl enable --now firewalld
# 开放 mysql 端口
sudo firewall-cmd --permanent --add-port=3307/tcp
sudo firewall-cmd --reload
前后端打包
- springboot 打包
Maven -> Lifecycle -> package -> Run Maven Build
target 目录找到
*.jar
文件
- vue 打包
vue 目录执行
npm run build
dist 目录即为打包好的目录
参考链接
Nginx 配置
Nginx 相关回退操作
# ⚠️ 仅供撤回 Nginx 的相关操作
# 查看java进程
ps -ef | grep java
# 停止 java 进程
kill -9 $(ps -ef | grep java | grep -v grep | awk '{ printf $2 }')
# 禁用 nginx 服务自启,并停止运行
sudo systemctl disable --now nginx
# 删除证书和密钥
sudo rm /etc/pki/tls/certs/zsky233.xyz.crt /etc/pki/tls/private/zsky233.xyz.key /etc/pki/tls/certs/authenticated_origin_pull_ca.pem
# 删除 Nginx 的 web root
sudo rm -rf /var/www
# 移除 selinux 上下文 记录
sudo semanage fcontext -d "/var/www/zsky233.xyz(/.*)?"
sudo setsebool -P httpd_can_network_connect 0
# 删除 Nginx 的配置文件
sudo rm -rf /etc/nginx
# 卸载 nginx
sudo dnf -y remove nginx
逐步尝试: Nginx 默认配置启动
# 重装 Nginx
sudo dnf -y install nginx
# 测试 nginx 默认配置是否可用
sudo nginx -t
# 如 successful,则 自启 并 启动 nginx 服务
sudo systemctl enable --now nginx
# 查看 Nginx 默认域名
## 结果为: 'server_name _;'
grep server_name /etc/nginx/nginx.conf
# A Default “Catch All” Server Block
# This is just an invalid value which will never trigger on a real host
# source: https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/#a-default-catch-all-server-block
# ---
# 意思是 定义了一个无效的服务器名称
# 在没有匹配的情况下,nginx 将选择第一个server{}块并使用它
# soure: https://serverfault.com/a/946623
# 查看 Nginx 默认的 web root
## 结果为: /usr/share/nginx/html
grep root /etc/nginx/nginx.conf
# selinux 安全上下文相关配置
sudo dnf -y install policycoreutils-python-utils
# 如果提示已定义 already defined,并无大碍
sudo semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html(/.*)?"
sudo restorecon -Rv /usr/share/nginx/html/
sudo setsebool -P httpd_can_network_connect 1
# 本地 curl 测试默认页面 或 域名,可行,但外部浏览器无法访问(因为防火墙未放行端口)
curl 101.123.42.163
# curl zsky233.xyz
#查看 Nginx 当前监听端口
# 查看结果为仅监听 80 端口,输出为:
# listen 80;
# listen [::]:80;
grep listen /etc/nginx/nginx.conf
# 放行 80 端口,检查外部浏览器应该可以访问了
# ip: 101.123.42.163
# 域名: http://zsky233.xyz
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
逐步尝试: Nginx 自定义页面启动
# 创建个域名对应的 web root(路径非强制和域名对应)
sudo mkdir -p /var/www/zsky233.xyz/
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/zsky233.xyz(/.*)?"
sudo restorecon -Rv /var/www/zsky233.xyz/
# 随便一个静态页面
cd /var/www/zsky233.xyz/
sudo git clone https://github.com/zskyz233333/zskyz233333.github.io.git
sudo mv zskyz233333.github.io/* .
sudo rm -rf zskyz233333.github.io
sudo chmod -R 755 /var/www
# 修改 Nginx 配置的 默认 server{} 块
# server_name zsky233.xyz www.zsky233.xyz;
# root /var/www/zsky233.xyz;
sudo vim /etc/nginx/nginx.conf
# 重启 Nginx,测试下
# ip: 101.123.42.163
# 域名: http://zsky233.xyz
sudo systemctl restart nginx
逐步尝试: 申请证书、使用 https 和 443 端口
# An ACME Shell script: acme.sh
# 免费获取证书的工具
# project: https://github.com/acmeshofficial/acme.sh
# 安装依赖 socat
sudo dnf -y install socat
# 切换 root 用户
sudo su
# 安装 acme.sh,邮箱会用于申请证书
curl https://get.acme.sh | sh -s email=zskyz233@outlook.com
# 创建符号链接,方便执行命令
ln -s ~/.acme.sh/acme.sh /usr/bin/acme.sh
# 暂时停止 nginx 服务,因为 acme.sh 会临时占用 80 端口,用于验证身份
systemctl stop nginx
# 做好域名解析后,就可以给域名颁发证书
acme.sh --issue -d zsky233.xyz -d www.zsky233.xyz --standalone --keylength ec-256 --force
# 安装证书到指定位置
acme.sh --install-cert -d zsky233.xyz -d www.zsky233.xyz --ecc \
--key-file /etc/pki/tls/private/zsky233.xyz.key \
--fullchain-file /etc/pki/tls/certs/zsky233.xyz.crt \
--reloadcmd "systemctl reload-or-restart nginx"
# 退出 root 用户
exit
# 新增 Nginx 的 server{} 块
# Nginx 配置文件有 https 443 端口 的模板,取消注释即可使用
# 需要修改以下字段
# server_name zsky233.xyz www.zsky233.xyz;
# root /var/www/zsky233.xyz;
#
# ssl_certificate "/etc/pki/tls/certs/zsky233.xyz.crt";
# ssl_certificate_key "/etc/pki/tls/private/zsky233.xyz.key";
sudo vim /etc/nginx/nginx.conf
# 重启 Nginx
sudo systemctl restart nginx
# 放行 443 端口,检查外部浏览器应该可以访问了
# ip: 101.123.42.163
# 域名: https://zsky233.xyz
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
前后端分离项目部署
路由问题
注意
vue项目的路由如果history模式的话,nginx需要如下配置:
location / {
try_files $uri $uri/ /index.html =404 ;
}
静态资源打不开或页面空白
放到服务器中启动的vue项目可能会出现一些静态资源找不到或者打开一片空白的情况,需要如下调整:
utils.js
–>在build目录下的utils.js
config/index.js
—>在config目录下的index.js
vue.config.js
—>与src为同级目录
//打包配置文件
module.exports = {
assetsDir: 'static',
parallel: false,
/*
下方配置需要注意!
如果你的项目中引用了静态文件比如图片路径是 ./ 或者../
打包时候需要求改为 ./ 如果没有人用任何非网络路径的就默认 / 就ok了
*/
publicPath: './',
}
反向代理
可能由于https问题会导致无法请求到后端请求,所以采用一个反向代理的方式:
axios.js
axios.defaults.baseURL="/api" //设置前后端传输时的默认前缀
nginx.conf
需要在nginx的配置文件中配置,/api为自定义须与前端接口对应起来
location /api {
proxy_pass http://127.0.0.1:8889;
# 去除本地接口 /api 前缀, 否则会出现 404
rewrite ^.+api/?(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
完整nginx配置
naginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name zsky233.xyz www.zsky233.xyz;
root /var/www/zsky233.xyz;
location / {
return 301 https://$host$request_uri;
}
}
# Settings for a TLS enabled server.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name zsky233.xyz www.zsky233.xyz;
root /var/www/zsky233.xyz;
ssl_certificate "/etc/pki/tls/certs/zsky233.xyz.crt";
ssl_certificate_key "/etc/pki/tls/private/zsky233.xyz.key";
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.html =404 ;
}
location /api {
proxy_pass http://127.0.0.1:8889;
# 去除本地接口 /api 前缀, 否则会出现 404
rewrite ^.+api/?(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
将 vue 打包好的文件复制到 Nginx 配置文件里的 Web root: /var/www/zsky233.xyz
sudo cp -r ~/vue-dist/* /var/www/zsky233.xyz/
# 测试下 Nginx 的配置文件语法
sudo nginx -t
# 重启 nginx 服务
sudo systemctl restart nginx
将jar包移动到/home/zsky2333/bin目录下
java -jar ~/bin/demo-0.0.1-SNAPSHOT.jar > ~/bin/temp.txt
浏览器访问https://zsky233.xyz