时间流逝,又是一年毕业季,还是学生时期让人向往
- 一个简单版的单机部署没事试着玩的
- 一、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
启动 MySQLsystemctl 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
注释 69行 bind 127.0.0.1
修改 88行 protected-mode=yes 改为 no
修改 225行。daemonize no 改为 yes
设置密码: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
云服务器的安全组管理端口放行之类的 自己可以去单独配置 这里就不贴了
完成后打页面地址浏览一下