alibaba cloud linux+JDK+TOMCAT+NGINX+PHP+MYSQL配置实践

        CentOs要停止维护了,一直在服务器上用的CentOs7也最迟到2024年6月了,这次给公司新购一台备用服务器,在选择操作系统的时候,考虑了一下,决定试用一下阿里云的alibaba cloud linux。

        alibaba cloud linux分为2和3版本,虽然从文档描述上,2与CentOs7更为兼容,但鉴于2的EOL是2024-03-31,比CentOs7还要早,所以,直接上3。

        在选择的时候,发现还有一个alibaba cloud linux等保2.0三级版,这个是针对操作系统上等保设置使用的,如果给客户作用,直接选择后配置相关策略倒可省去不少麻烦,可作为公司备用服务器,按等保要求设置后难免会要求定期更改密码等操作,这实际用起来确实麻烦,所以,暂时就不选了。

        在阿里云购买实例创建后,远程连接进入系统。

        我因为创建实例时并未选填密码,所以得进入阿里云后台先重置一下密码。

        这个中间出了点小差错,我重置密码时,是将原来text文档中的密码直接复制到重置界面的窗口中的,但我用SecureCRT连接服务器时,复制同样的密码却没登录进去,显示的是创建本地什么角本失败还是什么的。于是我到阿里云后台通过远程连接的方式登录,在远程连接中选择密码登录,结果登录失败,大概是显示了类似下面的界面:

        一脸懵的我查看阿里云文档,提示说:该问题是由SSH服务对应配置文件/etc/ssh/sshd_config中的参数PasswordAuthentication被设置为no,表示禁止以密码方式登录ECS实例,需要修改为yes

        阿里云系统默认禁用密码方式登于录?无奈使用VNC连接服务器,在界面中用root登录时发现,始终登录不上,密码校验不过。我奇了个怪了,输数次都不行只好再一次重置了密码。然后……再次直接用密码登录,直接登录成功了,再试试SecureCRT,也登录上了。……,难道重置密码复制的时候我多复制或少复制了什么内容?不得解。但登录不上提示的原因却是:服务器删除了密码登录方式,是不是也太让人困扰了??

       开始配置系统,我的系统一般配置JDK+TOMCAT+NGINX+PHP+MYSQL,首先从JDK开始。

        虽然JDK21已经发布了,但因为项目原因,JDK8还占主场,所以还是安装JDK8。

        安装步骤仍然参照本人之前的步骤:

CentOS 7.4 64位 搭建Jdk8+Tomcat8+Nginx+Mysql+PHP环境_mysql+nginx+jdk8-优快云博客

        YUM安装,一路到底,与centOS确实无差别。

        TOMCAT仍用版本8,仍然是解压方式安装,参照上述文件。

        NGINX安装,无需更新rpm包,因为默认的nginx已经是1.20了,这个版本可以了。

        到了PHP的安装,rpm版本直接是7.4了,可以用yum list php*列一下看有没有自己的版本,比如说5.6的,如果有,直接安装,如果没有,执行

        rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

       会提示与阿里云冲突,不管它,直接执行下一句:
       rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

       再yum list php*一下,应该就会看到其它版本了。

       可安装的时候又报错:

Error:

 Problem: conflicting requests

  - nothing provides libmysqlclient.so.18()(64bit) needed by php56w-mysql-5.6.40-1.w7.x86_64

  - nothing provides libmysqlclient.so.18(libmysqlclient_18)(64bit) needed by php56w-mysql-5.6.40-1.w7.x86_64

(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

       这应该是mysql的一个库缺失了,考虑到我们还没安装mysql,那不如先安装mysql吧。阿里云服务器上直接mysql的版本是8.0,而我这次打算安装8.0,直接安装就可以了。

       yum install mysql-community-server

       然后就是更改密码之一系列操作,参照之前的文章。

       Mysql安装完毕,回头再装php,发现还是一样的问题。

       参照网上的解决方案试一试。

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

       执行后再执行

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64

       果然可以安装了。

       安装完成后再安装

yum install php56w-fpm

systemctl start php-fpm.service

       启动时却出现错误:

/usr/sbin/php-fpm: error while loading shared libraries: libssl.so.10: cannot open shared object

       下载相关包:

wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm

rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm

       再执行:

systemctl start php-fpm.service

      成功了。


      systemctl enable php-fpm.service设为服务。

       其他配置按原来服务器参照文档。

<think>我们正在处理一个复杂的部署任务,涉及多个组件。根据用户需求,需要将基于若依微服务的Java项目打包为WAR文件,并在Linux CentOS系统上部署。同时需要安装和配置多个环境:TomcatJDK1.8+MySQL5.7+、Redis3.0+、Maven3.0+、Node12+、Nacos2.0.4+(或1.4.x)和Sentinel1.6.0+。 由于若依微服务版(RuoYi-Cloud)通常使用Spring Cloud Alibaba,其部署方式与传统的WAR包部署有所不同。但是,用户明确要求打包为WAR文件,因此我们需要调整部署方式。注意:微服务项目通常打包为JAR,但也可以打包为WAR并部署到Tomcat。 步骤概述: 1. 准备CentOS服务器(假设已经具备) 2. 安装基础环境:JDK、Maven、Node(用于前端构建)、MySQL、Redis、Nacos、Sentinel 3. 配置各个服务(数据库、Redis、Nacos等) 4. 打包项目:分别构建后端微服务(WAR)和前端(静态资源) 5. 部署:将WAR包部署到Tomcat,前端静态资源部署到Nginx(或Tomcat) 6. 启动并验证 注意:若依微服务版包含多个微服务模块(如认证服务、系统模块、业务模块等),每个模块都需要单独打包为WAR。同时,还需要一个前端项目(Vue)需要构建。 详细步骤: 一、服务器环境准备(CentOS 7+) 二、安装JDK 1.8+ 参考引用[1][2][3]中JDK安装步骤,这里使用yum安装: 1. 查看可安装版本:`yum list java*` 2. 安装:`yum install -y java-1.8.0-openjdk-devel` 3. 验证:`java -version` 三、安装Maven 3.0+ 1. 下载Maven:`wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz` 2. 解压:`tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local` 3. 配置环境变量:编辑`/etc/profile`,添加: ```bash export MAVEN_HOME=/usr/local/apache-maven-3.8.6 export PATH=$PATH:$MAVEN_HOME/bin ``` 4. 使配置生效:`source /etc/profile` 5. 验证:`mvn -v` 四、安装Node 12+(用于构建前端) 1. 使用nvm安装(推荐): ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 12 ``` 2. 验证:`node -v` 和 `npm -v` 五、安装MySQL 5.7+ 参考引用[1][2][3]中MySQL安装,这里使用yum安装MySQL5.7: 1. 添加MySQL Yum源:`rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm` 2. 安装:`yum install -y mysql-community-server` 3. 启动:`systemctl start mysqld` 4. 查看临时密码:`grep 'temporary password' /var/log/mysqld.log` 5. 安全设置:`mysql_secure_installation` 6. 创建数据库:根据若依微服务项目中的SQL脚本创建数据库(通常有多个数据库,如ry-cloud, ry-config等) 六、安装Redis 3.0+ 1. 安装:`yum install -y redis` 2. 启动:`systemctl start redis` 3. 设置开机启动:`systemctl enable redis` 七、安装Nacos 2.0.4+(或1.4.x) 1. 下载:`wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.tar.gz` 2. 解压:`tar -zxvf nacos-server-2.0.4.tar.gz -C /usr/local` 3. 进入bin目录:`cd /usr/local/nacos/bin` 4. 启动(单机模式):`sh startup.sh -m standalone` 5. 验证:访问`http://服务器IP:8848/nacos`(默认账号nacos/nacos) 八、安装Sentinel 1.6.0+ 1. 下载:`wget https://github.com/alibaba/Sentinel/releases/download/1.8.5/sentinel-dashboard-1.8.5.jar` 2. 启动:`java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.5.jar` 3. 后台运行:使用nohup或screen 九、安装Tomcat(用于部署WAR包) 参考引用[1][2][3][4]中Tomcat安装步骤: 1. 下载:`wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.81/bin/apache-tomcat-8.5.81.tar.gz` 2. 解压:`tar -zxvf apache-tomcat-8.5.81.tar.gz -C /usr/local` 3. 重命名:`mv /usr/local/apache-tomcat-8.5.81 /usr/local/tomcat` 4. 配置环境变量(可选):编辑`/etc/profile`,添加: ```bash export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin ``` 5. 使配置生效:`source /etc/profile` 6. 启动:`$CATALINA_HOME/bin/startup.sh` 十、项目打包 1. 克隆若依微服务项目(或使用用户自己的项目): ```bash git clone https://gitee.com/y_project/RuoYi-Cloud.git ``` 2. 修改项目配置: - 在Nacos控制台导入配置(若依项目中有提供SQL脚本,在`ruoyi-cloud.sql`中,需要导入到MySQL的ry-config数据库) - 修改各个微服务模块的`bootstrap.yml`,确保Nacos地址、MySQL、Redis等配置正确 3. 构建后端: - 进入项目根目录:`cd RuoYi-Cloud` - 由于需要打包为WAR,需要修改每个微服务模块的pom.xml,将打包方式改为war,并排除内嵌的Tomcat(避免冲突): ```xml <packaging>war</packaging> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` - 同时,每个微服务模块的启动类需要继承`SpringBootServletInitializer`并重写`configure`方法: ```java @SpringBootApplication public class RuoYiAuthApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(RuoYiAuthApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(RuoYiAuthApplication.class); } } ``` - 使用Maven打包:`mvn clean package -DskipTests` - 打包后,每个微服务模块的target目录下会生成WAR文件(如auth-server.war, system-server.war等) 4. 构建前端: - 进入前端目录:`cd ruoyi-ui` - 安装依赖:`npm install` - 构建:`npm run build:prod` - 构建后,生成dist目录(静态资源) 十一、部署 1. 后端部署: - 将各个微服务的WAR包复制到Tomcat的webapps目录下:`cp auth-server.war system-server.war ... /usr/local/tomcat/webapps/` - Tomcat会自动解压WAR包。注意:由于多个微服务部署在同一个Tomcat中,需要确保每个微服务的上下文路径(context path)不同。可以通过重命名WAR文件来改变上下文路径(如auth.war解压后访问路径为/auth)。 - 或者,在Tomcat的server.xml中配置Context(不推荐,建议使用默认解压路径)。 2. 前端部署: - 将dist目录下的所有文件复制到Tomcat的webapps目录下的ROOT目录(覆盖原有ROOT)或者新建一个目录(如webapps/ruoyi-ui)。或者使用Nginx部署(推荐,但用户要求用Tomcat,这里用Tomcat): ```bash # 在Tomcat的webapps下新建目录(如ruoyi-ui) mkdir /usr/local/tomcat/webapps/ruoyi-ui # 将dist目录内容复制到ruoyi-ui cp -r dist/* /usr/local/tomcat/webapps/ruoyi-ui/ ``` - 这样前端访问路径为`http://服务器IP:8080/ruoyi-ui` 十二、启动与验证 1. 确保MySQL、Redis、Nacos、Sentinel都已启动。 2. 启动Tomcat:`$CATALINA_HOME/bin/startup.sh` 3. 查看日志:`tail -f $CATALINA_HOME/logs/catalina.out` 4. 访问前端页面,验证功能。 注意事项: 1. 若依微服务项目默认使用JAR包运行,改为WAR包部署需要修改每个微服务模块的pom.xml和启动类。 2. 每个微服务模块的端口在WAR包部署时由Tomcat管理,因此需要避免端口冲突(通过不同的上下文路径访问)。 3. 配置中心(Nacos)的配置需要正确设置,尤其是数据库连接和Redis连接。 4. 前端部署也可以使用Nginx,这样更高效。 由于步骤复杂,建议用户按照若依官方文档进行适当调整。 生成相关问题: 1. 如何将Spring Boot项目打包为WAR文件? 2. 在同一个Tomcat中部署多个微服务需要注意什么? 3. 如何配置Nacos作为微服务的配置中心? 4. 若依微服务项目如何修改数据库配置? 5. 如何为若依微服务项目配置Redis? 6. 如何构建和部署若依的前端项目? 7. 如何验证若依微服务项目是否部署成功? 8. 部署过程中遇到端口冲突如何解决? 9. 如何配置Sentinel以监控微服务? 10. 如何优化Tomcat以支持多个微服务?</think>### 若依微服务项目部署指南(CentOS环境) #### 一、环境安装与配置 1. **JDK 1.8+安装** ```bash # 查看可用版本 yum list java-1.8* # 安装JDK yum install -y java-1.8.0-openjdk-devel # 验证安装 java -version ``` 2. **MySQL 5.7+安装** ```bash # 添加MySQL源 rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm # 安装MySQL yum install -y mysql-community-server # 启动服务 systemctl start mysqld # 获取初始密码 grep 'temporary password' /var/log/mysqld.log # 安全配置 mysql_secure_installation ``` 3. **Redis 3.0+安装** ```bash yum install -y epel-release yum install -y redis systemctl start redis ``` 4. **Tomcat 8/9安装** ```bash wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz tar -zxvf apache-tomcat-9.0.68.tar.gz -C /usr/local mv /usr/local/apache-tomcat-9.0.68 /usr/local/tomcat ``` 5. **Nacos 2.0.4+安装** ```bash wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.tar.gz tar -zxvf nacos-server-2.0.4.tar.gz -C /usr/local # 单机模式启动 sh /usr/local/nacos/bin/startup.sh -m standalone ``` 6. **Sentinel 1.6.0+安装** ```bash wget https://github.com/alibaba/Sentinel/releases/download/1.8.5/sentinel-dashboard-1.8.5.jar nohup java -Dserver.port=8718 -jar sentinel-dashboard-1.8.5.jar > sentinel.log & ``` --- #### 二、项目打包为WAR 1. **修改pom.xml** 在微服务模块的`pom.xml`中添加: ```xml <packaging>war</packaging> <!-- 修改打包格式 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 排除内嵌Tomcat --> </dependency> ``` 2. **修改启动类** 继承`SpringBootServletInitializer`: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 3. **构建WAR包** ```bash mvn clean package -DskipTests # 在项目根目录执行 ``` 生成的WAR文件位于:`target/*.war` --- #### 三、部署到Tomcat 1. **部署WAR文件** ```bash cp ruoyi-auth.war /usr/local/tomcat/webapps/ # 复制所有微服务WAR /usr/local/tomcat/bin/shutdown.sh # 关闭Tomcat /usr/local/tomcat/bin/startup.sh # 启动Tomcat ``` 2. **配置Nacos** - 访问 `http://服务器IP:8848/nacos` - 导入配置文件(`ruoyi-cloud/src/main/resources`中的YAML) - 修改数据库连接信息指向部署的MySQL 3. **验证服务** ```bash tail -f /usr/local/tomcat/logs/catalina.out # 查看启动日志 ``` --- #### 四、关键配置项 | 组件 | 配置文件 | 关键配置项 | |------------|-----------------------------|--------------------------------| | **MySQL** | `application-dev.yml` | `url: jdbc:mysql://IP:3306/ry-cloud` | | **Redis** | `application-redis.yml` | `host: 服务器IP` `port: 6379` | | **Nacos** | `bootstrap.yml` | `server-addr: IP:8848` | | **Sentinel**| `application-dashboard.yml`| `dashboard: IP:8718` | > **注意**:所有微服务模块(如`ruoyi-auth`、`ruoyi-gateway`等)均需独立打包为WAR并部署到Tomcat[^3]。 --- ### 常见问题解决 1. **数据库连接失败** - 检查MySQL用户权限:`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';` - 关闭防火墙:`systemctl stop firewalld` 2. **Nacos配置未生效** - 确保`bootstrap.yml`中`spring.cloud.nacos.config.namespace`与Nacos控制台匹配 3. **端口冲突** - 修改Tomcat端口:`/usr/local/tomcat/conf/server.xml`中`<Connector port="8080">` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值