Java项目部署服务器(简单版)

时间流逝,又是一年毕业季,还是学生时期让人向往

  • 一个简单版的单机部署没事试着玩的
  • 一、java环境
  • 二、数据库
    • 1.mysql(包含数据定时备份)
    • 2.redis
  • 三、nginx(可配证书)
  • 总结


前言

提示:可自行选择符合自己需求的版本

例如:我这里选择的是openjdk1.8  mysql5.7  redis6.0  nginx1.24 (可以对照官网选择合适相对应的版本安装)


提示:以下是本篇文章正文内容,下面案例可供参考

一、java环境

安装:yum install java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64

可以有很多方式可自行谷歌百度

默认路径:/usr/lib/

可用命令查找:find / -name java

配置环境变量:vim  /etc/profile   编辑    添加内容 保存   生效环境变量: source  /etc/profile

在下方添加内容:

JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOMW/lib
export JAVA_HOME JRE_HOME CLASS_PATH PATH

如图:

查看是否生效:

二、数据库

1.mysql数据库的安装以及数据定时备份

下载:

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

解压:

tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz 

这里需要注意的可以下载解压到自己习惯的路径下  个人习惯usr/local  解压完 记得改文件夹名哈 我这里是mysql     路径是usr/local/mysql

创建mysql用户组并将mysql添加:

groupadd mysql
useradd -r -g mysql mysql

在该文件夹下创建数据目录 日志目录并给权限

mkdir data
chown mysql:mysql -R /usr/local/mysql/data/
mkdir logs
chown mysql:mysql -R /usr/local/mysql/logs/

配置mysql: vim /etc/my.cnf

代码如下(示例):

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#开启慢sql日志
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log
# 设置慢查询的阈值(例如,设置为2秒)
long_query_time = 2
#启用错误日志
log_error = /usr/local/mysql/logs/error.log
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb

初始化mysql: 

这里执行这个按照自己的文件夹来(可能会报缺少文件之类的  直接建一个就OK)

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --initialize

执行成功后  密码会在最后 root@localhost 显示  可能会没有密码展示  我们可以去日志里找 

sudo tail /var/log/mysql.log
#找到root@localhost 后面的就是密码

接下俩就是启动mysql:

#找到usr/local/mysql/support-files下的mysql.server 直接启动
./mysql.server start 
#然后登录mysql  进入bin目录 修改密码
mysql -u root  -p
# 设置密码
SET PASSWORD = PASSWORD('你的密码');
# 设置用户的访问密码用不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
#开启远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';
#刷新权限
FLUSH PRIVILEGES;

配置mysql环境变量:

设置mysql开机自启:

在/etc/systemd/system下建mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=simple
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.conf $MYSQLD_OPTS
# EnvironmentFile=/etc/sysconfig/mysql
LimitNOFILE=65535
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false

交于systemctl管理:

可执行命令:

加载 systemctl文件

systemctl daemon-reload
启动 MySQL

systemctl start mysqld

设置开机自启

systemctl enable mysqld

数据库定时备份:

编写脚本:在usr/local/mysql 下backup.sh

#!/bin/bash
#备份路径
BACKUP=/home/cs/cs  你的备份地址
#当前时间
DATETIME=$(date +%Y-%m-%d)
LOG_FILE=/usr/local/mysql/logs/$DATETIME".log"
echo "===备份开始:$(date +"%Y-%m-%d %H:%M:%S")===" | tee -a ${LOG_FILE}

#数据库名称
DATABASE=cd
#数据库地址
HOST=127.0.0.1
#数据库用户名
DB_USER=root 你的用户名
#数据库密码
DB_PW='你的密码'
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
[ ! -d "${LOG_FILE}" ] && touch "${LOG_FILE}"
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql" | tee -a ${LOG_FILE}
#开始备份
echo "===备份文件开始===" | tee -a ${LOG_FILE}
/usr/local/mysql/bin/mysqldump --verbose  -h localhost  -u${DB_USER} -p${DB_PW}  ${DATABASE} >${BACKUP}/$DATETIME/$DATABASE-$DATETIME.sql 2>> $LOG_FILE
echo "===备份文件结束===" | tee -a ${LOG_FILE}
#压缩成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#备份到另一台服务器
#scp $DATABASE-$DATETIME.sql root@ip:/home/cs
#删除备份目录
rm -rf ${BACKUP}/$DATETIME
#删除7天(不含)前备份的数据,这边可以自行更改
find $BACKUP -mtime +7 -name "*.tar.gz" -exec rm -rf {} \;
echo "===数据库备份到服务器成功==="

添加机器定时任务:crontab -e
#添加指令 下方是每晚3点执行
00 03 * * * /bin/sh /usr/local/mysql/backup.sh

2.redis数据库

下载自己需要的redis压缩包 我这里是6.0.19

wget http://download.redis.io/releases/redis-6.0.19.tar.gz

tar -xvf redis-6.0.19.tar.gz    

因编译需要make 安装gcc  make工具:

yum -y install gcc automake autoconf libtool make

yum install gcc gcc-c++

安装

make install 

新建文件目录 redis  将解压出来的 配置文件放到新的文件目录中

  • cp /home/redis-6.0.19/src/redis-server /usr/local/redis/
  • cp /home/redis-6.0.19/redis.conf /usr/local/redis/

修改usr/local/redis下的redis.conf

  1. 注释 69行 bind 127.0.0.1
  2. 修改 88行 protected-mode=yes 改为 no
  3. 修改 225行。daemonize no 改为 yes
  4. 设置密码:789行 requirepass 你想设置的密码 去掉前面注释

执行usr/local/redis下的   ./redis-server redis.conf  启动

当然也可以配置成syetemctl 管理很灵活

三、nginx

1.下载  解压

       wget https://nginx.org/download/nginx-1.24.0.tar.gz

       tar -zxvf nginx-1.24.0.tar.gz

       rm -rf nginx-1.24.0.tar.gz

       mv nginx-1.24.0 nginx

注意我这里的安装目录也是在usr/local/ 下  个人习惯

2.编译  启动 

 编译需要 安装openssl等 相关依赖

yum install gcc c++ pcre pcre-devel zlib zlib-devel openssl openssl--devel

添加ssl模块 默认是不添加的

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 

初次添加 执行make  install   非初次  执行 make  (注意如果不是初次  执行了make install 会导致nginx重新编译)

编译完成后如图:

可以去在sbin目录下 执行./nginx  就可以启动了  检查是否启动成功

3.配置证书相关信息 

在nginx目录下创建cert 文件目录用于放证书

在nginx/conf下创建sites-enabled(名字自己定)文件目录 用于放相关配置

这里解释下因为我的项目是前后端分离的 在nginx.conf下配置看着乱就单独分出来了 

我这里就是两个配置 一个前端的 一个后端的

强调一下如果这么配置  nginx.conf  还是要修改一下的  加载指定配置 如图:

证书申请下载这里就不说了  可自行谷歌百度  将证书上传到 /usr/local/nginx/cert/  目录下

我这里直接贴配置了  这是我的api.conf,你也可按照你的路径 域名  等等去配置这些

server {
    listen 443 ssl;
    server_name 你的服务域名;
    ssl_certificate /usr/local/nginx/cert/你的服务域名.pem;
    ssl_certificate_key /usr/local/nginx/cert/你的服务域名.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    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_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Url-Scheme $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Access-Control-Allow-Origin '*';
	proxy_set_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
	proxy_set_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
	proxy_pass http://127.0.0.1:你自己的服务端口;
    }
}

server {
    client_max_body_size 102401m;
    listen 80;
    server_name 你的服务域名;

    rewrite ^(.*)$ https://$host:443$1 permanent;
}

下面是页面的配置:

server {
    listen 443 ssl;
    server_name 你的页面域名;
    ssl_certificate /usr/local/nginx/cert/你的页面域名.pem;
    ssl_certificate_key /usr/local/nginx/cert/你的页面域名.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    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_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Url-Scheme $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        root    /usr/local/nginx/html/oa/; 注意这里替换成你自己的页面路径
        index   index.html;
    }
}

server {
    client_max_body_size 102401m;
    listen 80;
    server_name 你的页面域名;

    rewrite ^(.*)$ https://$host:443$1 permanent;
}

这样我们的配置都就配完了 

接下来回到usr/local/nginx/sbin目录下 执行

./nginx -s reload

到这一个简单的java服务部署就完成了  注意云服务器的端口记得放开比如  443  80 等 如果数据库也想要外部访问 也得把端口放开哈 

# 启动并启用firewalld

sudo systemctl start firewalld

sudo systemctl enable firewalld

# 放行TCP的80端口

sudo firewall-cmd --permanent --add-port=80/tcp

# 重新载入firewall规则以应用更改

sudo firewall-cmd --reload

云服务器的安全组管理端口放行之类的 自己可以去单独配置 这里就不贴了

 完成后打页面地址浏览一下  


 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值