2024年鲲鹏云技术开发与应用技能大赛 赛前练习题-实验操作-

目录

**模块一:鲲鹏应用移植分析**-

**任务一:安装Dependency Advisor分析扫描工具**

**任务二:分析PostgreSQL可移植性**

**模块二:鲲鹏应用移植**-

**任务一:安装Porting Advisor工具**

**任务二:分析PostgreSQL移植条件**

**任务三:迁移PostgreSQL**

**模块三:鲲鹏web部署**-

**任务一:创建web应用的数据库**

**任务二:搭建web运行环境,设置web运行参数**

**任务三:应用nginx实现负载均衡**

**模块四:鲲鹏性能调优**-

**任务一:鲲鹏性能分析**

**任务二:系统和应用调优**


**模块一:鲲鹏应用移植分析**
-


**任务一:安装Dependency Advisor分析扫描工具**


 -------步骤一:关闭防火墙和selinux

1、关闭防火墙

 systemctl stop firewalld
 systemctl disable firewalld

2、关闭selinux

set enforce 0
sudo set -i 's/^SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config

-------步骤二:将鲲鹏分析扫描工具Dependency Advisor软件包解压到/home目录下


1、解压Dependency Advkor软件包

 tar  -zxvf  /kp-soft/Dependency-advisor-Kunpeng-linux-2.1.1.SPC100.tar.gz -C /home

( -C指定解压的路径)

或者用下载链接,下载安装包后再解压:

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpengHCIA/Dependency-advisor-Kunpeng-linux-2.1.1.SPC100.tar.gz

-------步骤三:执行以下命令,进入解压后的华为鲲鹏分析扫描工具安装包目录,安装web模式


2、安装Dependency Advkor工具

cd  /home/Dependency-Kunpeng-linux-2.1.1.SPC100
sh install.sh web

一路默认回车-安装完成
ip:默认系统所有ip
https端口:默认8082
tool端口:7996

------步骤四:等待安装完成
------步骤五:进入主机2,访问https://主机1IP:8082

**任务二:分析PostgreSQL可移植性**


-------步骤一:进入主机1的/opt/depadv/depadmin/目录,将PostgreSQL源码包postgresql-11.3.tar.gz解压到改目录下
1、解压PostgreSQL源码包

cd /opt/depadv/depadmin
tar -zxvf  /kp-soft/postgresql-11.3.tar.gz -C ./ 

 (./  表示当前目录。本命令即将源码包解压到当前目录)


-------步骤二:在主机2中访问https://主机1IP:8082
分析源码路径后面加斜杠:postgresql-11.3/
编译器版本选择GCC 7.3目标操作系统选择openEuler 20.03
注意:选择完之后先不要点分析,先截图!!!
扫描信息配置页面,截图(1-1-1)

分析完之后再截一个图,这个图缩放一下浏览器把上面的也截全
分析后截图(1-2-1)

**模块二:鲲鹏应用移植**
-


**任务一:安装Porting Advisor工具**


-------步骤一:执行以下命令,将华为鲲鹏代码迁移工具安装包Porting-advisor-Kunpeng-linux-2.1.1.spc100.tar.gz解压到/home下


1、解压Porting Advisor 软件

 cd  /home
 tar -zxvf /kp-soft/Porting-advisor-Kunpeng-linux-2.1.1.spc100.tar.gz -C  ./

或者用源码链接:

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpengHCIA/postgresql-11.3.tar.gz


-------步骤二:执行以下命令,进入解压后的华为鲲鹏代码迁移工具安装包目录,安装web模式


2、安装Porting Advisor 工具

cd  Porting-advisor-Kunpeng-linux-2.1.1.spc100/
sh  install.sh  web

一路默认回车-安装完成
ip:默认系统所有ip
https端口:默认8084
tool端口:7996

**任务二:分析PostgreSQL移植条件**


-------步骤一:进入服务器1的/opt/portadv/portadmin/目录,解压PostgreSQL源代码包postgresql-11.3.tar.gz到该目录下

1、解压PostgreSQL源代码包

cd  /opt/portadv/portadmin/
tar -zxvf /kp-soft/postgresql-11.3.tar.gz  -C  ./

或者用源码包链接:

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpengHCIA/Porting-advisor-Kunpeng-linux-2.1.1.SPC100.tar.gz

-------步骤二:将解压后的压缩包中所有文件的权限设置为777


2、设置PostgreSQL中所有文件权限为777

chmod -R 777 postgresql-11.3/
ll  postgresql-11.3/

-------步骤三:进入主机2,访问https://主机1IP:8084
-------步骤四:登录后,并修改密码
-------步骤五:配置分析参数页面,然后截图(2-1-1)
-------步骤六:分析结果中截图(2-2-1)

**任务三:迁移PostgreSQL**


-------步骤一:安装PostgreSQL依赖包
1、安装PostgreSQL依赖包

yum   -y   install gcc gcc-c++   automake  zlib  zlib-devel  bzip2  bzip2-devel  bzip2-libs  readline readline-devel  bison  ncurses  ncurses-devel  libaio-devel openssl
openssl-devel  gmp gmp-devel  mpfr  mpfr-devel  libmpc libmpc-devel


-------步骤二:编辑并执行以下命令,将主机1上/opt/portadv/portadmin/中的PostgreSQL源码包拷贝至/home目录下


2、拷贝PostgreSQL源码包至/home

cp -r  /opt/portadv/portadmin/postgresql-11.3  /home/

或者用源码包链接:

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpengHCIA/postgresql-11.3.tar.gz

-------步骤三:执行以下命令,进入解压后的源码目录,创建安装目录/home/pgsql


3、创建安装目录/home/pgsql

cd  /home/postgresql-11.3
mkdir /home/pgsql

-------步骤四:执行以下命令,生成Makefile文件


4、生成Makefile文件

./configure  -prefix=/home/pgsql   

(生成makefile文件,将软件安装到/home/pgsql目录下)

-------步骤五:执行以下命令,编译并安装PostgreSQL


5、编译并安装PostgreSQL

make  -j4
make   install

-------步骤六:执行以下命令,创建postgres用户和用户组


6、创建postgres用户和用户组

/usr/sbin/groupadd   -g   1002  postgres
/usr/sbin/useradd   -u  1002  -m  -g  postgres  postgres

-------步骤七:执行以下命令,设置postgres 用户密码


7、设置postgres 用户密码

passwd  postgres

-------步骤八:执行以下命令,切换到postgres用户,并且初始化数据库


8、切换到postgres用户,并且初始化数据库

chmod  -R  777  /home/pgsql/
su - postgres   
/home/pgsql/bin/initdb  -D  pgsql/

------步骤九:执行以下命令,启动PostgreSQL数据库


9、启动PostgreSQL数据库

/home/pgsql/bin/pg_ctl   -D   pgsql/  -l  logfile  start

-------步骤十:执行以下命令,验证PostgreSQL数据库进程是否正常启动


10、验证PostgreSQL数据库进程是否正常启动

ps  -ef  |   grep  postgres

查看进程后,截图(2-3-1)

11、验证登陆PostgreSQL数据库

/home/pgsql/bin/psql   -U  postgres


**模块三:鲲鹏web部署**
-


**任务一:创建web应用的数据库**


------步骤一:在PostgreSQL数据库环境中,输入“create database oasys encoding='UTF-8';”,新建数据库

1、创建数据库oasys,然后退出PostgreSQL数据库

create   database  oasys  encoding='UTF-8';
\q    (退出数据库)

-------步骤二:执行以下命令,编辑配置文件pg_hba.conf


2、编辑配置文件pg_hba.conf

cd  /home/postgres/pgsql/
vim  pg_hba.conf

进入后添加以下内容(第86行)IPV4下面:

host  all     all      0.0.0.0/0      trust  

  (允许非本地访问PostgreSQL数据库)

-------步骤三:执行以下命令,编辑配置文件postgresql.conf


3、编辑配置文件postgresql.conf

vim  postgresql.conf

进入后配置(第59行):
        用*代替localhost
        配置完后wq保存退出,截图(3-1-1)

-------步骤四:配置完成后,执行以下命令,返回上级目录,重启数据库,使配置文件生效


4、重启数据库服务

cd ..
/home/pgsql/bin/pg_ctl   -D  pgsql/   stop
/home/pgsql/bin/pg_ctl   -D  pgsql/   start


5、导入表结构

/home/pgsql/bin/psql  -U  postgres  -d  oasys   -a   -f   /kp-data/oasys-pgsql-table.sql

或者表结构源码包链接:

wget https://gitee.com/github-5407963/oasys_postgresql/raw/master/oasys-pgsql-table.sql


6、导入数据

/home/pgsql/bin/psql  -U  postgres   -d   oasys   -a   -f   /kp-data/oasys-pgsql-data.sql

或者用数据源码包链接:

wget https://techsaas-experiment-resources.obs.cn-north-4.myhuaweicloud.com/kunpengHCIA/oasys-pgsql-data.sql


**任务二:搭建web运行环境,设置web运行参数**


-------步骤一:执行以下命令,创建Maven安装目录并切换到该目录下


1、创建Maven安装目录并切换到该目录下

exit

(如果提示:There are stopped jobs.    输入fg后用\q退出即可。fg :将停止的作业带回到前台并恢复运行。)

mkdir   /usr/local/maven
cd /usr/local/maven

-------步骤二:执行以下命令,解压Maven二进制包到当前目录


2、解压Maven二进制包

tar  -xvzf  /kp-soft/apache-maven-3.6.3-bin.tar.gz   -C   ./

源码包链接:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

上面不能用用下面的:

wget https://repo.huaweicloud.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

-------步骤三:执行以下命令,打开环境变量配置文件,进行编辑


3、打开环境变量配置文件

vim  /etc/profile

进入后在末尾添加:

MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export  PATH=$PATH:$MAVEN_HOME/bin
export  MAVEN_HOME


4、生效环境变量(执行以下命令,使新增配置生效)

source  /etc/profile


5、验证Maven安装

mvn   -v


6、进入Maven配置文件目录

cd  /usr/local/maven/apache-maven-3.6.3/conf/


7、打开配置文件

vim  settings.xml

在<mirrors>和</mirrors>中间(第159行),插入以下代码:

    <mirror>
            <id>mirror</id>
            <mirrorOf>*</mirrorOf>
            <name>cmc-cd-mirror</name>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    </mirror>


8、clone项目源码到本地

cd /home
git  clone  https://gitee.com/github-5407963/oasys_postgresql.git


9、进入配置文件目录

cd  /home/oasys_postgresql/src/main/resources/


10、打开应用配置

vim  application.properties


进入后修改配置(第5行):
                将url,username,password改为kp-001的内网IP地址、PostgreSQL登录用户名和密码

11、把文件中的CLASSPATH内容写入配置文件

cat  /kp-data/classpath.txt  >>  /etc/profile

或者文件源码包链接:

wget https://hcia.obs.cn-north-4.myhuaweicloud.com/v1.5/classpath.txt

连接不能用的话,classpath.txt的内容如下:

export CLASSPATH=.:/home/oasys_postgresql/target/classes:/home/oasys_postgresql/src/main/resources/lib/postgresql-42.2.11.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/1.5.6.RELEASE/spring-boot-starter-data-jpa-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.6.RELEASE/spring-boot-starter-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.5.6.RELEASE/spring-boot-starter-logging-1.5.6.RELEASE.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.1.11/logback-core-1.1.11.jar:/root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar:/root/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar:/root/.m2/repository/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-aop/1.5.6.RELEASE/spring-boot-starter-aop-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring-aop/4.3.10.RELEASE/spring-aop-4.3.10.RELEASE.jar:/root/.m2/repository/org/aspectj/aspectjweaver/1.8.10/aspectjweaver-1.8.10.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/1.5.6.RELEASE/spring-boot-starter-jdbc-1.5.6.RELEASE.jar:/root/.m2/repository/org/apache/tomcat/tomcat-jdbc/8.5.16/tomcat-jdbc-8.5.16.jar:/root/.m2/repository/org/apache/tomcat/tomcat-juli/8.5.16/tomcat-juli-8.5.16.jar:/root/.m2/repository/org/springframework/spring-jdbc/4.3.10.RELEASE/spring-jdbc-4.3.10.RELEASE.jar:/root/.m2/repository/org/hibernate/hibernate-core/5.0.12.Final/hibernate-core-5.0.12.Final.jar:/root/.m2/repository/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar:/root/.m2/repository/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar:/root/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/root/.m2/repository/org/jboss/jandex/2.0.0.Final/jandex-2.0.0.Final.jar:/root/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/root/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1.Final.jar:/root/.m2/repository/org/hibernate/hibernate-entitymanager/5.0.12.Final/hibernate-entitymanager-5.0.12.Final.jar:/root/.m2/repository/javax/transaction/javax.transaction-api/1.2/javax.transaction-api-1.2.jar:/root/.m2/repository/org/springframework/data/spring-data-jpa/1.11.6.RELEASE/spring-data-jpa-1.11.6.RELEASE.jar:/root/.m2/repository/org/springframework/data/spring-data-commons/1.13.6.RELEASE/spring-data-commons-1.13.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring-orm/4.3.10.RELEASE/spring-orm-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/spring-tx/4.3.10.RELEASE/spring-tx-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/spring-beans/4.3.10.RELEASE/spring-beans-4.3.10.RELEASE.jar:/root/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/root/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar:/root/.m2/repository/org/springframework/spring-aspects/4.3.10.RELEASE/spring-aspects-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-freemarker/1.5.6.RELEASE/spring-boot-starter-freemarker-1.5.6.RELEASE.jar:/root/.m2/repository/org/freemarker/freemarker/2.3.26-incubating/freemarker-2.3.26-incubating.jar:/root/.m2/repository/org/springframework/spring-context-support/4.3.10.RELEASE/spring-context-support-4.3.10.RELEASE.jar:/root/.m2/repository/eu/bitwalker/UserAgentUtils/1.20/UserAgentUtils-1.20.jar:/root/.m2/repository/com/github/stuxuhai/jpinyin/1.1.8/jpinyin-1.1.8.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-mail/1.5.6.RELEASE/spring-boot-starter-mail-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring-context/4.3.10.RELEASE/spring-context-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/spring-expression/4.3.10.RELEASE/spring-expression-4.3.10.RELEASE.jar:/root/.m2/repository/com/sun/mail/javax.mail/1.5.6/javax.mail-1.5.6.jar:/root/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/root/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-starter/1.3.0/mybatis-spring-boot-starter-1.3.0.jar:/root/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-autoconfigure/1.3.0/mybatis-spring-boot-autoconfigure-1.3.0.jar:/root/.m2/repository/org/mybatis/mybatis/3.4.4/mybatis-3.4.4.jar:/root/.m2/repository/org/mybatis/mybatis-spring/1.3.1/mybatis-spring-1.3.1.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.6.RELEASE/spring-boot-starter-web-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.6.RELEASE/spring-boot-starter-tomcat-1.5.6.RELEASE.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.16/tomcat-embed-core-8.5.16.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.16/tomcat-embed-el-8.5.16.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.16/tomcat-embed-websocket-8.5.16.jar:/root/.m2/repository/org/hibernate/hibernate-validator/5.3.5.Final/hibernate-validator-5.3.5.Final.jar:/root/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/root/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.9/jackson-databind-2.8.9.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.9/jackson-core-2.8.9.jar:/root/.m2/repository/org/springframework/spring-web/4.3.10.RELEASE/spring-web-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/spring-webmvc/4.3.10.RELEASE/spring-webmvc-4.3.10.RELEASE.jar:/root/.m2/repository/org/springframework/spring-core/4.3.10.RELEASE/spring-core-4.3.10.RELEASE.jar:/root/.m2/repository/com/github/pagehelper/pagehelper-spring-boot-starter/1.0.0/pagehelper-spring-boot-starter-1.0.0.jar:/root/.m2/repository/com/github/pagehelper/pagehelper-spring-boot-autoconfigure/1.0.0/pagehelper-spring-boot-autoconfigure-1.0.0.jar:/root/.m2/repository/com/github/pagehelper/pagehelper/5.0.0/pagehelper-5.0.0.jar:/root/.m2/repository/com/github/jsqlparser/jsqlparser/0.9.5/jsqlparser-0.9.5.jar:/root/.m2/repository/com/squareup/retrofit2/converter-gson/2.3.0/converter-gson-2.3.0.jar:/root/.m2/repository/com/squareup/retrofit2/retrofit/2.3.0/retrofit-2.3.0.jar:/root/.m2/repository/com/squareup/okhttp3/okhttp/3.8.0/okhttp-3.8.0.jar:/root/.m2/repository/com/squareup/okio/okio/1.13.0/okio-1.13.0.jar:/root/.m2/repository/com/google/code/gson/gson/2.8.1/gson-2.8.1.jar:/root/.m2/repository/com/alibaba/fastjson/1.2.36/fastjson-1.2.36.jar:/root/.m2/repository/org/hibernate/hibernate-jpamodelgen/5.0.12.Final/hibernate-jpamodelgen-5.0.12.Final.jar:/root/.m2/repository/org/jboss/logging/jboss-logging/3.3.1.Final/jboss-logging-3.3.1.Final.jar:/root/.m2/repository/commons-fileupload/commons-fileupload/1.3.2/commons-fileupload-1.3.2.jar:/root/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar:/root/.m2/repository/org/springframework/boot/spring-boot-devtools/1.5.6.RELEASE/spring-boot-devtools-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot/1.5.6.RELEASE/spring-boot-1.5.6.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.6.RELEASE/spring-boot-autoconfigure-1.5.6.RELEASE.jar


12、生效环境变量

source  /etc/profile


13、本地安装Maven

cd  /home/oasys_postgresql/
mvn  install


14、编译项目应用

javac src/main/java/cn/gson/oasys/OasysApplication.java   -d   ./


15、运行项目应用

java  cn.gson.oasys.OasysApplication


完成后进入2主机,http://主机1IP:8088,登陆OA,成功登陆后截图(3-2-1)

**任务三:应用nginx实现负载均衡**


1、下载nginx源码包

cd  /root
wget  http://repo.openeuler.org/openEuler-20.03-LTS/source/Packages/nginx-1.16.1-2.oel.src.rpm
ls

2、解压源码包

rpm2cpio nginx-1.16.1-2.oel.src.rpm | cpio -div

3、生成rpmbulid目录

yum  install  rpmdevtools  -y

rpmdev-setuptree

ls

4、移动源码包

mv  nginx*   404.html   50x.html  CVE*  index.html   poweredby.png   README.dynamic   UPGRADE* ./rpmbuild/SOURCES/

#或者用mv ./* rpmbuild/SOURCES/

ls  rpmbuild/SOURCES/

5、生成nginx.spec

cd  rpmbuild/SPECS/
rpmdev-newspec  nginx
ls

6、编写配置nginx.spec文件

vim  nginx.spec

在/kp-date/目录下有需要的源码包,可以先把当前的nginx.spec删掉,然后复制一份过来

rm -f nginx.spec

cp -r /kp-date/nginx.spec ./

或者nginx.spec文件中的内容为:

%global  _hardened_build     1
%global  nginx_user          nginx
%undefine _strict_symbol_defs_build
%bcond_with geoip
%global with_gperftools 1
%global with_mailcap_mimetypes 1
%global with_aio 1
Name:              nginx
Epoch:             1
Version:           1.16.1
Release:           2
Summary:           A HTTP server, reverse proxy and mail proxy server
License:           BSD
URL:               http://nginx.org/
Source0:           https://nginx.org/download/nginx-%{version}.tar.gz
Source10:          nginx.service
Source11:          nginx.logrotate
Source12:          nginx.conf
Source13:          nginx-upgrade
Source14:          nginx-upgrade.8
Source100:         index.html
Source101:         poweredby.png
Source102:         nginx-logo.png
Source103:         404.html
Source104:         50x.html
Source200:         README.dynamic
Source210:         UPGRADE-NOTES-1.6-to-1.10
Patch0:            nginx-auto-cc-gcc.patch
Patch2:            nginx-1.12.1-logs-perm.patch
Patch3:           CVE-2019-20372.patch
BuildRequires:     gcc openssl-devel pcre-devel zlib-devel systemd gperftools-devel
Requires:          nginx-filesystem = %{epoch}:%{version}-%{release} openssl pcre
Requires:          nginx-all-modules = %{epoch}:%{version}-%{release}        
%if 0%{?with_mailcap_mimetypes}
Requires:          nginx-mimetypes
%endif
Requires(pre):     nginx-filesystem
Requires(post):    systemd
Requires(preun):   systemd
Requires(postun):  systemd
Provides:          webserver
%description
NGINX is a free, open-source, high-performance HTTP server and reverse proxy, 
as well as an IMAP/POP3 proxy server.

%package all-modules
Summary:           Nginx modules
BuildArch:         noarch
%if %{with geoip}
Requires:          nginx-mod-http-geoip = %{epoch}:%{version}-%{release}
%endif
Requires:          nginx-mod-http-image-filter = %{epoch}:%{version}-%{release}
Requires:          nginx-mod-http-perl = %{epoch}:%{version}-%{release}
Requires:          nginx-mod-http-xslt-filter = %{epoch}:%{version}-%{release}
Requires:          nginx-mod-mail = %{epoch}:%{version}-%{release}
Requires:          nginx-mod-stream = %{epoch}:%{version}-%{release}
%description all-modules
NGINX is a free, open-source, high-performance HTTP server and reverse proxy, 
as well as an IMAP/POP3 proxy server.
This package is a meta package that installs all available Nginx modules.
%package filesystem
Summary:           Filesystem for the Nginx server
BuildArch:         noarch
Requires(pre):     shadow-utils
%description filesystem
NGINX is a free, open-source, high-performance HTTP server and reverse proxy, 
as well as an IMAP/POP3 proxy server.
The package contains the basic directory layout for the Nginx server.
%if %{with geoip}
%package mod-http-geoip
Summary:           HTTP geoip module for nginx
BuildRequires:     GeoIP-devel
Requires:          nginx GeoIP
%description mod-http-geoip
The package is the Nginx HTTP geoip module.
%endif
%package mod-http-image-filter
Summary:           HTTP image filter module for nginx
BuildRequires:     gd-devel
Requires:          nginx gd
%description mod-http-image-filter
Nginx HTTP image filter module.
%package mod-http-perl
Summary:           HTTP perl module for nginx
BuildRequires:     perl-devel perl(ExtUtils::Embed)
Requires:          nginx  perl(constant)
Requires:          perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%description mod-http-perl
Nginx HTTP perl module.
%package mod-http-xslt-filter
Summary:           XSLT module for nginx
BuildRequires:     libxslt-devel
Requires:          nginx

%description mod-http-xslt-filter
Nginx XSLT module.
%package mod-mail
Summary:           mail modules for nginx
Requires:          nginx
%description mod-mail
Nginx mail modules
%package mod-stream
Summary:           stream modules for nginx
Requires:          nginx
%description mod-stream
Nginx stream modules.
%package_help
%prep
%autosetup -n %{name}-%{version} -p1
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} .
%build
export DESTDIR=%{buildroot}
nginx_ldopts="$RPM_LD_FLAGS -Wl,-E"
if ! ./configure \
    --prefix=%{_datadir}/nginx --sbin-path=%{_sbindir}/nginx --modules-path=%{_libdir}/nginx/modules \
    --conf-path=%{_sysconfdir}/nginx/nginx.conf --error-log-path=%{_localstatedir}/log/nginx/error.log \
    --http-log-path=%{_localstatedir}/log/nginx/access.log \
    --http-client-body-temp-path=%{_localstatedir}/lib/nginx/tmp/client_body \
    --http-fastcgi-temp-path=%{_localstatedir}/lib/nginx/tmp/fastcgi \
    --http-proxy-temp-path=%{_localstatedir}/lib/nginx/tmp/proxy \
    --http-scgi-temp-path=%{_localstatedir}/lib/nginx/tmp/scgi \
    --http-uwsgi-temp-path=%{_localstatedir}/lib/nginx/tmp/uwsgi \
    --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx \
    --user=%{nginx_user} --group=%{nginx_user} \
%if 0%{?with_aio}
    --with-file-aio \
%endif
    --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module \
    --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic \
%if %{with geoip}
    --with-http_geoip_module=dynamic \
%endif
    --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module \
    --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module \
    --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module \
    --with-http_perl_module=dynamic --with-http_auth_request_module \
    --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic \
    --with-stream_ssl_module --with-google_perftools_module --with-debug \
    --with-cc-opt="%{optflags} $(pcre-config --cflags)" --with-ld-opt="$nginx_ldopts"; then
  : configure failed
  cat objs/autoconf.err
  exit 1
fi

%make_build


%install
%make_install INSTALLDIRS=vendor

find %{buildroot} -type f -empty -exec rm -f '{}' \;
find %{buildroot} -type f -name .packlist -exec rm -f '{}' \;
find %{buildroot} -type f -name perllocal.pod -exec rm -f '{}' \;
find %{buildroot} -type f -iname '*.so' -exec chmod 0755 '{}' \;

pushd %{buildroot}
install -p -D -m 0644 %{_builddir}/nginx-%{version}/nginx.service .%{_unitdir}/nginx.service
install -p -D -m 0644 %{SOURCE11} .%{_sysconfdir}/logrotate.d/nginx
install -p -d -m 0755 .%{_sysconfdir}/systemd/system/nginx.service.d
install -p -d -m 0755 .%{_unitdir}/nginx.service.d
install -p -d -m 0755 .%{_sysconfdir}/nginx/conf.d
install -p -d -m 0755 .%{_sysconfdir}/nginx/default.d
install -p -d -m 0700 .%{_localstatedir}/lib/nginx
install -p -d -m 0700 .%{_localstatedir}/lib/nginx/tmp
install -p -d -m 0700 .%{_localstatedir}/log/nginx
install -p -d -m 0755 .%{_datadir}/nginx/html
install -p -d -m 0755 .%{_datadir}/nginx/modules
install -p -d -m 0755 .%{_libdir}/nginx/modules
install -p -m 0644 %{_builddir}/nginx-%{version}/nginx.conf .%{_sysconfdir}/nginx
install -p -m 0644 %{SOURCE100} .%{_datadir}/nginx/html
install -p -m 0644 %{SOURCE101} %{SOURCE102} .%{_datadir}/nginx/html
install -p -m 0644 %{SOURCE103} %{SOURCE104} .%{_datadir}/nginx/html

%if 0%{?with_mailcap_mimetypes}
rm -f .%{_sysconfdir}/nginx/mime.types.default
%endif

install -p -D -m 0644 %{_builddir}/nginx-%{version}/man/nginx.8 .%{_mandir}/man8/nginx.8
install -p -D -m 0755 %{SOURCE13} .%{_bindir}/nginx-upgrade
install -p -D -m 0644 %{SOURCE14} .%{_mandir}/man8/nginx-upgrade.8
popd

for i in ftdetect indent syntax; do
    install -p -D -m644 contrib/vim/${i}/nginx.vim %{buildroot}%{_datadir}/vim/vimfiles/${i}/nginx.vim
done

%if %{with geoip}
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_geoip_module.so";' \
    > %{buildroot}%{_datadir}/nginx/modules/mod-http-geoip.conf
%endif

pushd %{buildroot}
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_image_filter_module.so";' \
    > .%{_datadir}/nginx/modules/mod-http-image-filter.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_perl_module.so";' \
    > .%{_datadir}/nginx/modules/mod-http-perl.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so";' \
    > .%{_datadir}/nginx/modules/mod-http-xslt-filter.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_mail_module.so";' \
    > .%{_datadir}/nginx/modules/mod-mail.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_stream_module.so";' \
    > .%{_datadir}/nginx/modules/mod-stream.conf
popd

%pre filesystem
getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user}
getent passwd %{nginx_user} > /dev/null || useradd -r -d %{_localstatedir}/lib/nginx -g %{nginx_user} \
    -s /sbin/nologin -c "Nginx web server" %{nginx_user}
exit 0

%post
%systemd_post nginx.service

%if %{with geoip}
%post mod-http-geoip
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi
%endif

%post mod-http-image-filter
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi

%post mod-http-perl
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi

%post mod-http-xslt-filter
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi

%post mod-mail
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi

%post mod-stream
if [ $1 -eq 1 ]; then
    systemctl reload nginx.service >/dev/null 2>&1 || :
fi

%preun
%systemd_preun nginx.service

%postun
%systemd_postun nginx.service
if [ $1 -ge 1 ]; then
    /usr/bin/nginx-upgrade >/dev/null 2>&1 || :
fi

%files
%defattr(-,root,root)
%license LICENSE
%config(noreplace) %{_sysconfdir}/nginx/*
%config(noreplace) %{_sysconfdir}/logrotate.d/nginx
%exclude %{_sysconfdir}/nginx/conf.d
%exclude %{_sysconfdir}/nginx/default.d
%if 0%{?with_mailcap_mimetypes}
%exclude %{_sysconfdir}/nginx/mime.types.default
%endif
%{_bindir}/nginx-upgrade
%{_sbindir}/nginx
%dir %{_libdir}/nginx/modules
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx/tmp
%{_unitdir}/nginx.service
%{_datadir}/nginx/html/*
%{_datadir}/vim/vimfiles/ftdetect/nginx.vim
%{_datadir}/vim/vimfiles/syntax/nginx.vim
%{_datadir}/vim/vimfiles/indent/nginx.vim
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/log/nginx

%files all-modules

%files filesystem
%dir %{_sysconfdir}/nginx
%dir %{_sysconfdir}/nginx/{conf.d,default.d}
%dir %{_sysconfdir}/systemd/system/nginx.service.d
%dir %{_unitdir}/nginx.service.d
%dir %{_datadir}/nginx
%dir %{_datadir}/nginx/html

%if %{with geoip}
%files mod-http-geoip
%{_libdir}/nginx/modules/ngx_http_geoip_module.so
%{_datadir}/nginx/modules/mod-http-geoip.conf
%endif

%files mod-http-image-filter
%{_libdir}/nginx/modules/ngx_http_image_filter_module.so
%{_datadir}/nginx/modules/mod-http-image-filter.conf

%files mod-http-perl
%{_libdir}/nginx/modules/ngx_http_perl_module.so
%{_datadir}/nginx/modules/mod-http-perl.conf
%dir %{perl_vendorarch}/auto/nginx
%{perl_vendorarch}/nginx.pm
%{perl_vendorarch}/auto/nginx/nginx.so

%files mod-http-xslt-filter
%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so
%{_datadir}/nginx/modules/mod-http-xslt-filter.conf

%files mod-mail
%{_libdir}/nginx/modules/ngx_mail_module.so
%{_datadir}/nginx/modules/mod-mail.conf

%files mod-stream
%{_libdir}/nginx/modules/ngx_stream_module.so
%{_datadir}/nginx/modules/mod-stream.conf

%files help
%defattr(-,root,root)
%doc CHANGES README README.dynamic
%{_mandir}/man3/nginx.3pm*
%{_mandir}/man8/nginx.8*
%{_mandir}/man8/nginx-upgrade.8.gz


            
7、rpmbuild生产nginx的rpm包

yum  install  -y  gd-devel  gperftools-devel  libxslt-devel  openssl-devel  pcre-devel  zlib-devel  gdb*

rpmbuild  -ba  nginx.spec

ls  /root/rpmbuild/RPMS/aarch64/

8、创建nginx账号

useradd  -s   /sbin/nologin   -M   nginx
id  nginx

9、安装nginx,并查询安装结果

cd  /root
rpm  -ivh  rpmbuild/RPMS/aarch64/nginx-1.16.1-2.aarch64.rpm   --nodeps   --force
rpm  -q   nginx

10、启动nginx     

cd  /usr/sbin
./nginx


完成后进入主机2,http://主机1IP
        
--------------步骤三:配置ngnix负载均衡


11、修改ngnix配置文件

cd  /etc/nginx
vim  nginx.conf


进入后配置(第37行)添加:

upstream  upstream_name{
       server  虚拟机ip:开启端口;
       server  虚拟机ip:开启端口;
}

将44行中server_name 后面加值:本机IP
修改location信息内容(在location中添加):

  proxy_pass  http://upstream_name;
  proxy_set_header  Host  $host;
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;


12、重启nginx

nginx  -s  reload

---------步骤四:运行OA系统项目,测试负载均衡。


13、重新构建OA项目

cd  /home/oasys_postgresql/
mvn  install

14、编译项目应用

cd  /home/oasys_postgresql/
javac  src/main/java/cn/gson/oasys/OasysApplication.java  -d  ./

15、运行项目应用

java  cn.gson.oasys.OasysApplication  --server.port=8089 & java  cn.gson.oasys.OasysApplication

完成后,进入主机2,http://主机IP访问OA,然后截图(3-3-1)

**模块四:鲲鹏性能调优**
-


**任务一:鲲鹏性能分析**

-----步骤一:解压性能分析工具安装包

1、切换目录并解压HyperTuner工具

cd  /home
tar  --no-same-owner  -zxvf  /kp-soft/Hyper-Tuner_23.0.RC2_linux.tar.gz  -C  ./
ls

-----步骤二:安装性能分析工具

2、切换目录并安装HyperTuner工具

cd  Hyper_tuner
./install.sh

完成后进入主机2,https://主机1IP:8086。然后点击系统性能分析新建任务全景分析确认
然后点击CPU利用率并截图(4-1-1)

**任务二:系统和应用调优**


------步骤一:系统优化

1、修改配置文件内容

vim  /etc/security/limits.conf

在配置中修改:

*  soft nofile  102400
*  hard nofile  102400

重启

reboot

------步骤二:配置内核参数

2、调整内核参数

vim  /etc/sysctl.conf

进入后调整参数:手册上有不列出了

3、生效配置

/sbin/sysctl  -p

生效后截图(4-2-1)

------步骤二:优化nginx应用

4、当前nginx应用的cpu的核心

cd  /usr/sbin

./nginx

ps  -eo  pid,args,psr  |  grep [n]ginx

5、编辑nginx.conf

vim  /etc/nginx/nginx.conf

进入后,在nginx.cong文件的头部加入

worker_cpu_affinity 0000000000000001  0000000000000010;

截图(4-2-2)


6、最后使用

nginx  -s  reload  

重启命令,即可完成绑核操作

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值