centos stream离线部署Java+vite项目
下载centos9镜像根据自己的电脑下载对应的文件虚拟机安装centos stream新建虚拟机虚拟机名称及安装位置自定义即可一直下一步完成即可配置虚拟机选择刚刚下载的centos9镜像文件网络选择NAT模式安装虚拟机这里将鼠标点击进入虚拟机桌面.按上键选择 install Centos Stream 9安装目标位置 --------------这里我们选择自动分区(点击进入之后直接点击完成就行,不需要有别的操作)点击软件选择 ---------------------选择第三个 Minimal Install ------点击完成点击选择 网络和主机名-------点击 “按钮” 打开就行接下来的操作很关键 --------------- 只需要创建 root 用户就可以, 普通用户暂时不用创建.权限太低在这里勾选上 “允许root用户使用 密码进行SSH 登录” 勾选 ssh登录的目的是为了 我们后面使用 Xshell 工具点击安装 安装完成后重启即可开启虚拟机在 localhost login : 这里输入用户名 root , 输入之后 按回车键盘在 Password : 这里输入 我们刚开始设置 的密码------注意!!!注意!!!注意!!!(这里输入的密码是不会不显示,不要怀疑自己直接安装回车键就行了)出现 下面这个界面就说明 登录成功了登录成功之后我们就开始查看 本台虚拟机的ip 是多少 ---------查看ip 的 命令 : ------ ip addr使用xshell连接虚拟机下载xshell连接虚拟机虚拟机用户名虚拟机密码点击 “接受并保存”出现同虚拟机一样的界面便连接成功依赖安装tar下载#进入到rpm包所在文件夹 rpm -ivh tar-1.34-1.oe2203.x86_64.rpmGCC下载解压GCC依赖#解压 tar -xzvf gcc-full.tar.gz cd gcc-packages rpm -ivh *.rpmmake下载解压make依赖cd /root/make-packages rpm -ivh *.rpmperlcpplrzsz我的安装包已经在u盘内了,查看u盘位置lsblk这里sdb 500G是我的u盘# 1. 创建挂载点 sudo mkdir -p /mnt/usb # 2. 直接挂载整个设备注意是 /dev/sdb不是 /dev/sdb1 sudo mount /dev/sdb /mnt/usb # 3. 查看是否挂载成功确认能看到 lrzsz-0.12.20.tar.gz ls -l /mnt/usb/ # 4. 拷贝文件到工作目录 cp /mnt/usb/lrzsz-0.12.20.tar.gz ~/project cd ~/project编译安装步骤# 解压 tar -zxvf lrzsz-0.12.20.tar.gz cd lrzsz-0.12.20 # 编译安装 ./configure make sudo make install # cd /usr/local/bin # 创建软链接 sudo ln -s /usr/local/bin/lrz rz sudo ln -s /usr/local/bin/lsz sz # 验证是否生效 which rz # 应该输出 /usr/local/bin/rz配置jdk上传解压jdk安装包创建存放jdk的文件夹 名称自定义mkdir project上传jdk压缩包下载jdk21进入存放jdk的文件夹输入rzcd project rz选择jdk21 linux的压缩包上传ls #查看当前目录的文件检查是否上传成功 tar -zxvf jdk-21_linux-x64_bin.tar.gz #解压压缩包到当前目录我的压缩包就是这个名字一定要对应好自己的压缩包名 ls #查看是否解压完成解压完成后会看到jdk的目录名 mv jdk-21.0.6/ jdk21 #将我解压后的目录改名为jdk21配置环境变量查看安装目录readlink -f jdk21 #查看安装目录编辑etc目录下的配置文件vi /etc/profile点击i进入编辑状态在文件末尾加上export JAVA_HOME/root/project/jdk21 export PATH${JAVA_HOME}/bin:$PATH输入完成后点击esc 输入:wq保存退出。然后重新加载profile文件source /etc/profile再次输入java -version查看jdk版本显示上边的官方版本那么就配置完成安装MySQL下载MySQL这里有个地方需要注意就是glibc版本 需要到自己的机器查看Oracle 帐户方便下载# 提醒为了大伙的方便请不要随便用该邮箱重新注册Oracle账号 账号yawoniu163.com 密码Oracle.123上传解压tar -Jxvf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz mv mysql-8.0.39-linux-glibc2.17-x86_64 mysql配置环境变量cd project vi /etc/profile 末尾添加 export PATH$PATH:/root/project/mysql/bin source /etc/profile cd mysql创建用户用户组groupadd mysql useradd -r -g mysql mysql创建数据目录mkdir -p /data/mysql8_data赋予权限chown -R mysql:mysql /data/mysql8_data chmod -R 750 /data/mysql8_data添加配置文件vi /root/project/mysql/my.cnf[mysql] # 默认字符集 default-character-setutf8mb4 [client] port 3306 #socket /tmp/mysql.sock [mysqld] port 3306 server-id 1 user mysql #socket /tmp/mysql.sock # 安装目录 basedir /root/project/mysql # 数据存放目录 datadir /data/mysql8_data/mysql log-bin /data/mysql8_data/mysql/mysql-bin innodb_data_home_dir /data/mysql8_data/mysql innodb_log_group_home_dir /data/mysql8_data/mysql # 日志及进程数据的存放目录 log-error /data/mysql8_data/mysql/mysql.log pid-file /data/mysql8_data/mysql/mysql.pid # 服务端字符集 character-set-serverutf8mb4 lower_case_table_names1 autocommit 1 ##### 以上涉及文件夹明注意修改 skip-external-locking key_buffer_size 256M max_allowed_packet 1M table_open_cache 1024 sort_buffer_size 4M net_buffer_length 8K read_buffer_size 4M read_rnd_buffer_size 512K myisam_sort_buffer_size 64M thread_cache_size 128 #query_cache_size 128M tmp_table_size 128M explicit_defaults_for_timestamp true max_connections 500 max_connect_errors 100 open_files_limit 65535 binlog_formatmixed binlog_expire_logs_seconds 864000 # 创建表时使用的默认存储引擎 default_storage_engine InnoDB innodb_data_file_path ibdata1:10M:autoextend innodb_buffer_pool_size 1024M innodb_log_file_size 256M innodb_log_buffer_size 8M innodb_flush_log_at_trx_commit 1 innodb_lock_wait_timeout 50 transaction-isolationREAD-COMMITTED [mysqldump] quick max_allowed_packet 16M [myisamchk] key_buffer_size 256M sort_buffer_size 4M read_buffer 2M write_buffer 2M [mysqlhotcopy] interactive-timeout初始化数据库mysqld --defaults-file/root/project/mysql/my.cnf --basedir/root/project/mysql --datadir/data/mysql8_data/mysql --usermysql --initialize-insecure参数说明–defaults-file指定配置文件要放在–initialize 前面–user 指定用户–basedir指定安装目录–datadir指定初始化数据目录–intialize-insecure初始化无密码否则生成随机密码启动并设置自启动启动/root/project/mysql/bin/mysqld_safe --defaults-file/root/project/mysql/my.cnf ps -ef|grep mysql你的 MySQL不是通过rpm或yum安装而是手动编译/二进制包安装因此没有自动注册systemd服务。systemctl stop mysql或systemctl stop mysqld会失败因为 systemd 不知道这个服务。创建 systemd 服务文件sudo vi /etc/systemd/system/mysqld.service写入以下内容根据你的路径调整[Unit] DescriptionMySQL Server Afternetwork.target [Service] Usermysql Groupmysql ExecStart/root/project/mysql/bin/mysqld_safe --defaults-file/root/project/mysql/my.cnf ExecStop/root/project/mysql/bin/mysqladmin -u root -p shutdown Restarton-failure RestartSec5s [Install] WantedBymulti-user.target重新加载 systemd 并启动sudo systemctl daemon-reload sudo systemctl start mysqld #启动mysql sudo systemctl stop mysqld #停止mysql sudo systemctl enable mysqld # 开机自启检查状态sudo systemctl status mysqld设置密码登录MySQLmysql -u root -p 直接回车 ALTER USER 用户名localhost IDENTIFIED BY 新密码;创建数据库基本语法CREATE DATABASE 数据库名 CHARACTER SET 字符集 COLLATE 排序规则;验证创建SHOW DATABASES;运行sql文件#退出mysql重新登录 mysql -u root -p 数据库名 #sql文件的路径 source /root/project/xxx.sql; mysqlSHOW TABLES IN 数据库名;查看 CentOS 版本cat /etc/os-release安装Redis5下载Redis5解压安装Redis5tar -zxvf redis-5.0.14.tar.gz重命名文件夹mv redis-5.0.14 redis5进入Redis5文件夹cd redis5/编译源码# 执行编译 make安装可执行文件# 将编译好的 Redis 程序安装到系统目录 sudo make install配置Redis开机启动Systemd 服务配置创建服务配置文件sudo vim /etc/systemd/system/redis.service[Unit] DescriptionRedis 5 In-Memory Data Store Afternetwork.target [Service] Userroot Grouproot Typeforking # 可执行文件路径不变因为 make install 已安装到 /usr/local/bin # 但配置文件路径改为你的实际位置 ExecStart/usr/local/bin/redis-server /root/project/redis5/redis.conf ExecStop/usr/local/bin/redis-cli shutdown ExecReload/usr/local/bin/redis-cli reload Restartalways RestartSec5 [Install] WantedBymulti-user.target修改的配置项vim /root/project/redis5/redis.conf# 1. 让 Redis 以后台守护进程方式运行必须为 yes配合 systemd 的 Typeforking daemonize yes # 2. 日志文件路径建议放在 /var/log/ 下 logfile /var/log/redis.log # 3. 数据持久化文件存放目录RDB 快照和 AOF 文件 # 确保此目录存在且有写入权限 dir /var/lib/redis创建数据目录并授权# 创建 Redis 数据存储目录 sudo mkdir -p /var/lib/redis # 因为以 root 运行root 有完全权限但生产环境建议创建 redis 用户 # 如果以 root 运行这步不是必须的但为了规范可以执行 sudo chown root:root /var/lib/redis启动和验证步骤重载 Systemd 配置sudo systemctl daemon-reload启动 Redissudo systemctl start redis检查启动状态sudo systemctl status redis设置开机自启sudo systemctl enable redisnginx配置安装所需依赖检查编译环境# 检查必要工具是否已安装 gcc --version make --version perl --version挂载 U 盘并拷贝文件# 创建挂载点 sudo mkdir -p /mnt/usb # 挂载 U 盘设备名请根据实际调整可能是 /dev/sdb 或 /dev/sdb1 sudo mount /dev/sdb /mnt/usb # 拷贝源码包到工作目录 mkdir -p /root/project cp /mnt/usb/*.tar.gz /root/project/ cd /root/project # 查看拷贝结果 ls -la *.tar.gz编译安装 OpenSSL解压并配置tar -zxvf openssl-3.0.13.tar.gz cd openssl-3.0.13 ./config --prefix/usr/local/openssl --openssldir/usr/local/openssl shared make -j$(nproc) sudo make install sudo ldconfig /usr/local/openssl/bin/openssl version ls -la /usr/local/openssl/lib64/ # 注意库在 lib64 目录编译安装 zlibcd /root/project tar -zxvf zlib-1.3.1.tar.gz cd zlib-1.3.1 ./configure --prefix/usr/local/zlib make -j$(nproc) sudo make install ls -la /usr/local/zlib/lib/ ls -la /usr/local/zlib/include/编译安装 PCREcd /root/project tar -zxvf pcre-8.45.tar.gz cd pcre-8.45 ./configure --prefix/usr/local/pcre --disable-cpp make -j$(nproc) sudo make install ls -la /usr/local/pcre/lib/ ls -la /usr/local/pcre/include/配置动态链接库路径# 添加 PCRE 库路径 sudo sh -c echo /usr/local/pcre/lib /etc/ld.so.conf.d/pcre.conf # 添加 OpenSSL 库路径 sudo sh -c echo /usr/local/openssl/lib64 /etc/ld.so.conf.d/openssl.conf # 更新缓存 sudo ldconfig # 验证 ldconfig -p | grep -E pcre|ssl|crypto预期结果能看到libpcre.so.1、libssl.so.3、libcrypto.so.3。下载nginx上传到虚拟机同上解压安装包并删除原文件重命名tar -zxf nginx-1.28.0.tar.gz rm nginx-1.28.0.tar.gz mv nginx-1.28.0 nginx进入到解压后的文件夹并初始化nginxcd nginx ./configure \ --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-cc-opt-I/usr/local/pcre/include -I/usr/local/openssl/include -I/usr/local/zlib/include \ --with-ld-opt-L/usr/local/pcre/lib -lpcre -L/usr/local/openssl/lib64 -lssl -lcrypto -L/usr/local/zlib/lib -lz -ldl make make install cd .. cd nginx ll启动nginxmkdir -p /root/project/nginx/logs #创建日志文件夹 cd sbin ll 总用量 3764 -rwxr-xr-x. 1 root root 3850912 7月 23 11:20 nginx ./nginx ps -aux|grep nginx root 39257 0.0 0.1 4640 1264 ? Ss 11:21 0:00 nginx: master process ./nginx nobody 39258 0.0 0.7 14204 5616 ? S 11:21 0:00 nginx: worker process root 39261 0.0 0.3 6640 2304 pts/1 S 11:23 0:00 grep --colorauto nginx停止nginx[rootlocalhost sbin]# ./nginx -s stop [rootlocalhost sbin]# ps -aux|grep nginx root 39265 0.0 0.3 6640 2304 pts/1 S 11:25 0:00 grep --colorauto nginx修改配置文件并刷新[rootcentoshost nginx]# pwd /root/project/nginx [rootcentoshost nginx]# vi ./conf/nginx.conf [rootcentoshost nginx]# ./sbin/nginx [rootcentoshost nginx]# ./sbin/nginx -s reload这个是我的nginx文件http { include mime.types; default_type application/octet-stream; #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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name 192.168.213.129; # 改为localhost或保持IP # 全局root定义删除location中的重复定义 root /root/project/nginx/html; index index.html index.htm; location / { try_files $uri $uri/ 404; } error_page 500 502 503 504 /50x.html; location /50x.html { root /root/project/nginx/html; # 修正为完整路径 } } }检查nginx是否启动检查80端口是否占用sudo ss -tulnp | grep :80\b如果什么都没有则没有被占用如果有sudo killall nginx # 强制停止所有 nginx 进程手动创建 Nginx 服务文件sudo vi/etc/systemd/system/nginx.service [Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork.target [Service] Typeforking PIDFile/root/project/nginx/logs/nginx.pid ExecStartPre/root/project/nginx/sbin/nginx -t ExecStart/root/project/nginx/sbin/nginx ExecReload/root/project/nginx/sbin/nginx -s reload ExecStop/bin/kill -s QUIT $MAINPID TimeoutStopSec5 KillModemixed Restarton-failure [Install] WantedBymulti-user.target EOFSELinux限制CentOS/RHELsudo setenforce 0 # 临时关闭 sudo restorecon -Rv /root/project/nginx永久关闭编辑 SELinux 配置文件/etc/selinux/configsudo vi /etc/selinux/config SELINUXenforcing 改为 SELINUXdisabled重新启动 systemd 服务sudo systemctl daemon-reload sudo systemctl start nginx sudo systemctl status nginx curl -I http://localhost检查 Nginx 进程ps aux | grep nginx正常输出应包含nginx: master process主进程通常以 root 用户运行nginx: worker process工作进程通常以nobody或www-data用户运行如果只有grep nginx这一行说明 Nginx未运行。测试本地访问curl -v http://localhost/index.html如若出现一下则之后不必进行强制刷新权限# 确保所有父目录可访问 sudo chmod x /root /root/project /root/project/nginx # 重置网页文件权限 sudo chown -R nobody:nobody /root/project/nginx/html sudo find /root/project/nginx/html -type d -exec chmod 755 {} \; sudo find /root/project/nginx/html -type f -exec chmod 644 {} \;SELinux 修复CentOS/RHEL# 标记目录为Web内容 sudo semanage fcontext -a -t httpd_sys_content_t /root/project/nginx/html(/.*)? sudo restorecon -Rv /root/project/nginx/html # 临时测试生产环境慎用 sudo setenforce 0 curl -I http://localhost/index.html sudo setenforce 1测试配置并重载[rootlocalhost nginx]# ./sbin/nginx -s reload验证请求# 测试IP访问根据server_name配置 curl -v http://192.168.213.129/index.html # 或测试本地访问 curl -v http://localhost/index.html外部浏览器访问查看当前防火墙状态# CentOS/RHEL sudo firewall-cmd --list-all sudo systemctl status firewalld # Ubuntu/Debian sudo ufw status放行HTTP端口# CentOS/RHEL sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --reload # Ubuntu/Debian sudo ufw allow 80/tcp sudo ufw enable直接放行端口通用sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT sudo service iptables save # 保存规则CentOS 6在其他电脑的浏览器中访问http://服务器IP # 如 http://192.168.213.129设置开机启动sudo systemctl enable nginx # 设置开机自启部署java项目上传jar包[rootlocalhost project]# java -jar tz_java-1.0.0-SNAPSHOT.jar检查防火墙是否放行端口sudo firewall-cmd --list-ports sudo firewall-cmd --add-port8070/tcp --permanent sudo firewall-cmd --reload应当显示jar包运行端口临时关闭防火墙测试sudo ufw disable # Ubuntu/Debian sudo systemctl stop firewalld # CentOS/RHEL设置开机启动jar包创建服务文件sudo vi /etc/systemd/system/myapp.service编辑服务文件内容根据你的实际情况修改[Unit] DescriptionMy Java Application Aftersyslog.target network.target [Service] Userroot WorkingDirectory/root/project ExecStart/root/project/jdk21/bin/java -jar /root/project/tz_java-1.0.0-SNAPSHOT.jar EnvironmentPATH/root/project/jdk21/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin EnvironmentJAVA_HOME/root/project/jdk21 SuccessExitStatus143 Restartalways RestartSec10 [Install] WantedBymulti-user.targetsudo systemctl daemon-reload #重新加载 systemd 配置 sudo systemctl enable myapp.service #启用服务开机自启 sudo systemctl start myapp.service #启动服务 sudo systemctl status myapp.service #检查服务状态重启sudo reboot

相关新闻

最新新闻

日新闻

周新闻

月新闻