1. 环境准备与基础工具链安装

刚接触Anolis OS的朋友可能会遇到一个典型问题:安装常用服务时频繁报错,提示缺少make、gcc等基础工具。这就像装修房子时发现连锤子和螺丝刀都没有,后续工作根本无法开展。我去年在给客户部署测试环境时就踩过这个坑,当时花了两小时才搞明白问题根源。

首先需要确认基础编译环境是否完整。打开终端执行:

gcc -v
make -v

如果显示"command not found",说明你的系统像刚出厂的工作台——工具柜空空如也。别慌,Anolis的软件仓库里这些工具都有,只是默认没安装。

补全工具链只需要一条命令:

dnf groupinstall "Development Tools" -y

这个命令会安装包括gcc、make、autoconf在内的完整开发工具包,相当于给你的工具箱装上全套电动工具。我建议同时安装这些常用依赖:

dnf install -y openssl-devel zlib-devel pcre-devel wget

注意:生产环境建议先更新系统再安装,避免版本冲突。执行dnf update -y可以获取最新软件包。

安装完成后,再次验证工具链:

gcc --version
make --version

现在你应该能看到版本信息了。我遇到过有些特殊场景还需要额外配置环境变量,这时可以编辑~/.bashrc文件添加:

export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

保存后执行source ~/.bashrc立即生效。

2. JDK部署与排错指南

Java环境是运行Tomcat等应用的基础,但在Anolis上安装JDK经常遇到环境变量配置问题。上周帮团队新人排查时,发现他java -version报错就是因为PATH设置不全。

推荐从Oracle官网下载JDK8稳定版:

wget https://download.oracle.com/otn/java/jdk/8u361-b09/jdk-8u361-linux-x64.tar.gz

解压到/usr/java目录(需要先创建目录):

mkdir -p /usr/java
tar -zxvf jdk-8u361-linux-x64.tar.gz -C /usr/java

环境变量配置是重点也是易错点。编辑/etc/profile时要注意:

  1. 使用绝对路径
  2. 包含JRE路径
  3. 注意CLASSPATH的格式

这是我验证过的配置模板:

export JAVA_HOME=/usr/java/jdk1.8.0_361
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

常见坑点:修改profile后忘记执行source /etc/profile导致配置不生效。建议每次修改后立即执行,并用echo $JAVA_HOME验证。

如果遇到"Permission denied"错误,可能是解压后的文件权限问题。执行:

chmod -R 755 /usr/java/jdk1.8.0_361

3. Tomcat安装与自启动配置

有了JDK环境后,Tomcat的安装就简单多了。但很多人在配置服务自启动时会遇到systemctl报错,这里分享我的解决方案。

下载解压Tomcat:

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/

启动测试前需要确保:

  1. 端口8080未被占用
  2. 防火墙放行端口
  3. 文件权限正确

启动命令:

/usr/local/apache-tomcat-9.0.68/bin/startup.sh

配置systemd服务时,这个单元文件模板亲测有效:

[Unit]
Description=Tomcat 9
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_361"
ExecStart=/usr/local/apache-tomcat-9.0.68/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-9.0.68/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存为/etc/systemd/system/tomcat.service后,执行:

systemctl daemon-reload
systemctl enable tomcat

常见错误排查:

  • 如果启动失败,查看日志:journalctl -xe
  • 端口冲突时修改server.xml中的Connector配置
  • 内存不足可以调整catalina.sh中的JVM参数

4. Redis编译安装与优化

Redis的安装过程最容易出问题的就是编译阶段。记得有次服务器因为内存不足导致make失败,后来发现是swap空间没配置。

完整安装流程:

wget https://download.redis.io/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
make install

编译常见问题解决方案:

  1. 内存不足:添加swap空间
    dd if=/dev/zero of=/swapfile bs=1G count=4
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    
  2. 依赖缺失:安装必要库
    dnf install -y systemd-devel
    
  3. 测试失败:可以跳过测试
    make test
    

生产环境配置建议:

daemonize yes
protected-mode no
maxmemory 2gb
appendonly yes

配置systemd服务:

[Unit]
Description=Redis
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
Restart=always

[Install]
WantedBy=multi-user.target

5. Nginx编译安装与模块管理

Nginx的灵活之处在于可以按需编译模块,但这也增加了安装复杂度。我总结了一套标准化流程,能处理大多数场景。

先安装前置依赖:

dnf install -y gcc pcre-devel zlib-devel openssl-devel

下载源码并编译:

wget http://nginx.org/download/nginx-1.23.3.tar.gz
tar -zxvf nginx-1.23.3.tar.gz
cd nginx-1.23.3
./configure --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_realip_module \
            --with-http_stub_status_module
make && make install

关键配置项说明:

  • --with-http_ssl_module:启用HTTPS支持
  • --with-http_v2_module:支持HTTP/2
  • --with-stream:TCP/UDP代理功能

启动和常用命令:

/usr/local/nginx/sbin/nginx  # 启动
nginx -s reload  # 重载配置
nginx -t  # 测试配置

性能优化参数(在nginx.conf的events块添加):

worker_connections 10240;
multi_accept on;
use epoll;

6. 综合排错与系统调优

环境搭建完成后,还需要进行整体检查和优化。根据我的经验,80%的问题都出在环境变量和权限上。

系统资源检查清单:

  1. 内存和swap使用:free -h
  2. 端口监听情况:ss -tulnp
  3. 服务运行状态:systemctl list-units --type=service

日志查看技巧:

  • Nginx错误日志:tail -f /usr/local/nginx/logs/error.log
  • Tomcat日志:tail -f /usr/local/tomcat/logs/catalina.out
  • Redis日志:tail -f /var/log/redis_6379.log

安全加固建议:

  1. 为每个服务创建专用用户
  2. 限制数据库的bind地址
  3. 定期备份配置文件
  4. 设置适当的文件权限
chown -R nginx:nginx /usr/local/nginx
chmod 750 /usr/local/nginx

更多推荐