目录
**任务一:安装Dependency Advisor分析扫描工具**
**模块一:鲲鹏应用移植分析**
-
**任务一:安装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
重启命令,即可完成绑核操作