部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

  • A+
所属分类:日志

实现php和sap对接,java和sap对接,服务器里同时配置php和java环境。

前期准备

  1. 思考硬盘规划,端口,软件安装,负载,备份策略等规划。
  2. 软件版本

CentOS-7-x86_64-DVD-1511.iso

jdk-8u102-linux-x64.rpm

jetty-distribution-9.3.11.v20160721.zip

Jco为Linux 64bit.

http://lnmp.org (MYSQL:5.7.11,PHP:7,NGINX:1.3)

准备安装iso

下载CentOS7安装介质、准备一个最小8GB空间的优盘、用UltraISO制作启动优盘。

http://buildlogs.centos.org/rolling/7/isos/x86_64/

点击部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)进行倒序排序。

服务器安装请使用Minimal.iso包。

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

准备一个4GB左右的优盘,下载UltraISO刻录启动优盘:

  1. 文件-->打开-->选择CentOS的iso镜像(根据实际情况需要)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

2.启动-->写入硬盘映像

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

安装CentOS

分区

名称 作用 大小
/swap 缓存,一般为内存的两倍 16GB
/ 类似于Windows的C盘(分区时选中此分区安装Linux系统) 80GB
/ourdata 数据盘(数据库、我们的程序等) 剩余所有空间

系统约定:

软件源代码包存放位置:/usr/local/src

源码包编译安装位置:/usr/local/软件名字

rpm包按默认位置安装(RPM包如果强行修改安装路径可能会导致问题)

选择的软件包:

选择最小化安装,保证安全;

安装界面选择的自定义包:

wKiom1Q-_iHjK72aAAHV2vJ33hU274.jpg

wKioL1Q-_liyDf9rAAFTfC0ugDw262.jpg

安装过程中注意设置主机名、时区、启用网络、选择软件包等信息;

如果是Vmware安装,按照vnware向导配置之后不要立刻启动,人为删除autoinstall.iso文件,否则会自动安装,不能满足定制的需要。

安装完重启后第一件事,设置网卡并启动网络:

注意:给Linux设置IP的时候一定要和公司局域网络的设置一致,如局域网络是dhcp,则Linux必须设为dhcp,且不要人为设置IP,否则使用yum会报no router错误。

centos下网络配置方法(网关、dns、ip地址配置)

1.配置DNS

vi /etc/resolv.conf

加入:

nameserver 192.168.0.1

nameserver 8.8.8.8

nameserver 8.8.4.4

2.vi /etc/sysconfig/network

加入:

GATEWAY=192.168.0.1

完整的如下:

NETWORKING=yes

HOSTNAME=localhost.localdomain

GATEWAY=192.168.0.1

3,配置ip地址:

cd /etc/sysconfig/network-scripts/

vi /etc/sysconfig/network-scripts/ifcfg-eth0 注意,这个文件不同的系统可能结尾的eth编号会不同

内容如下:

DEVICE=”eth0″

HWADDR=”00:0C:29:6C:BB:E6″

NM_CONTROLLED=”yes”

ONBOOT=”no”

NETMASK=255.255.255.0

IPADDR=192.168.0.8

GATEWAY=192.168.0.1

BOOTPROTO=static 注意,此处要根据公司的网络情况来定,如果公司是DHCP就最好填DHCP

ONBOOT=yes

PEERDNS=yes

4./etc/init.d/network restart

或使用命令:

service network restart

或:

ifdown eth0 and ifup eth0

配置完成后,ping一下网关,检查是否能ping通或在用ifconfig eth0,检查下实际配置的ip地址。

然后

必须关闭firewall,否则 linux无法访问外网、用户也无法访问java服务:

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd –state (关闭后显示notrunning,开启后显示running)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

修改/etc/sysconfig/selinux文件:

selinux=enforcing

SELINUX=disabled

停止MySQL,重启服务器。

可以通过sestatus命令查看当前selinux状态;

注意:如果是虚拟机测试,网络连接类型为桥接模式时可能无法访问外网,改为NAT模式即可。

安装Oracle官方JDK

注意,由于jco的使用,不要使用linux默认带的openjdk!

卸载openjdk

rpm -qa|grep *jdk*

rpm -qa|more

rpm -q tar

rpm -qa|grep java

yum -y remove java*

rpm -e –nodeps java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64

安装Java SE

wget –no-check-certificate –no-cookies –header “Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.rpm

如果下载不了,直接用迅雷之类的工具下载。

rpm -ivh jdk-8u102-linux-x64.rpm

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

注意,千万不要用—prefix指定路径,有很多后续问题!

whereis java

ll /usr/java/jdk1.8.0_102

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

配置JAVA_HOME(临时):

export JAVA_HOME=/usr/java/jdk1.8.0_102

配置JAVA_HOME(永久):

vi /etc/profile

在最后面加入下面的句子,保存,执行source /etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_102

CLASSPATH=.:$JAVA_HOME/lib.tools.jar:/usr/java/jdk1.8.0_102/lib/sapjco3.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

export LD_LIBRARY_PATH=/usr/java/jdk1.8.0_102/lib/amd64

配置Java-SAP的Jco

安装步骤:

1、可以用xftp将libsapjco3.so复制到JDK目录安装目录路径:/usr/java/jdk1.8.0_102/lib/amd64及/usr/java/jdk1.8.0_102/lib两个文件夹下;

2、 复制sapjco3.jar到/usr/java/jdk1.8.0_102/lib/sapjco3.jar;

3、 把目录/usr/java/jdk1.8.0_102/lib/amd64添加到LD_LIBRARY_PATH环境变量;

4、 把目录/usr/java/jdk1.8.0_102/lib/sapjco3.jar添加到CLASSPATH环境变量;

export CLASSPATH=.:$JAVA_HOME/lib.tools.jar:/usr/java/jdk1.8.0_102/lib/sapjco3.jar

或者直接修改/etc/profile

修改之后要刷新一下profile文件,命令为source /etc/profile

测试是否安装成功:

java -jar /usr/java/jdk1.8.0_102/lib/sapjco3.jar | more

注意:

同时,需要将sapjco3.jar和libsapjco3.so复制一份到jetty目录下的lib文件夹子中。

同时,如果是Windows下开发的应用,打包后要将JCO和SO文件替换 为Linusx版本的!

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

安装Jce Policy

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。

如果安装了JRE,将两个jar文件放到%JRE_HOME% \lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

Linux系统优化

pstree

free -g

fdisk -l

yum list installed

卸载出现的java、mysql、php、nginx、httpd等不需要的软件(如果是用Minimal安装是不会有这些的)。

yum remove mysql* php* httpd* nginx*

然后

下面的命令要一条一条的执行,全部复制进去的话系统只会执行第一条哦。

yum groupinstall "Compatibility libraries" "Base" "Development tools"

yum groupinstall "debugging Tools" "Dial-up Networking Support"

注意:yum –y groupinstall是错误的语法,系统不认!

yum -y install tree nmap sysstat lrzsz dos2unix gcc* g++ tinyxml kernel wget net-tools psmisc screen vim links pcre pcre-devel zlib zlib-devel openssl openssl-devel cmake make zip unzip gzip bzip2* uuidd bc qt time ed perl ntp kernel-devel ntpdate libcurl libcurl-devel

ntpdate time.windows.com

hwclock --systohc

echo -e "0 1 * * * root /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null" >> /etc/crontab

service crond restart

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum clean all

yum makecache

yum install epel-release

yum install cjkuni-ukai-fonts

yum search fonts

wget http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2014.2.15.tgz

tar -xvf ntfs-3g_ntfsprogs-2014.2.15.tgz

cd ntfs-3g_ntfsprogs-2014.2.15

./configure && make && make install

yum -y update && yum -y upgrade

之后就可以挂载NTFS格式的分区了(根据需要),具体操作百度一下即可。

然后

vi /etc/crontab

加上一句:

00 0 1 * * root ntpdate -s time.windows.com

然后

检查/设置时区:date -s “20160914 14:20:00” &&hwclock –systohc

检查/设置主机名:

hostnamectl set-hostname newhostname

reboot

然后

chkconfig acpid off

chkconfig atd off

chkconfig autofs off

chkconfig bluetooth off

chkconfig cpuspeed off

chkconfig firstboot off

chkconfig gpm off

chkconfig haldaemon off

chkconfig hidd off

chkconfig ip6tables off

chkconfig isdn off

chkconfig messagebus off

chkconfig nfslock off

chkconfig pcscd off

chkconfig portmap off

chkconfig rpcgssd off

chkconfig rpcidmapd off

chkconfig yum-updatesd off

chkconfig sendmail off

然后

chkconfig crond on

chkconfig kudzu on

chkconfig network on

chkconfig readahead_early on

chkconfig sshd on

chkconfig syslog on

然后

sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/g" '/etc/inittab'

telinit q

然后

yum update

yum upgreade

然后

cat /dev/null > /etc/issue

然后

reboot

安装LNMP

注意:为了方便管理,jetty,nginx的工作目录最好放在同一个地方,例如:

nginx:/ourdata/nginx/phpweb

jetty:/ourdata/jetty/javaweb

注意:安装前先修改自动部署脚本中的路径为我们希望的路径!!

安装完MySQL之后记得删除test数据库!

我们用LNMP.ORG的部署方案:

http://lnmp.org/ 下载好安装包(提前在网速比较快的地方下载好)

rz上传安装包

tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full

vi lnmp.conf修改默认路径

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

yum install screen

screen -S lnmp

screen教程:https://www.vpser.net/manage/run-screen-lnmp.html

./install.sh lnmp

其他备选方案(

https://oneinstack.com/

如果采用此方案,用这个链接下载比较快:http://mirrors.linuxeye.com/oneinstack-full.tar.gz

或者

https://www.apachefriends.org/zh_cn/index.html

或者自己编译安装

http://www.osyunwei.com/archives/9757.html

注意:装好之后执行一遍yum -y update

注意,MySQL安装之后必须配置或者检查/etc/my.cnf,必须配置字符集

分别配置如下两段,然后重启mysql才能建表,否则 会乱码或者前端无缘无故查询不到数据:

(下面的编码设置不同版本的mysql可能支持不同,比如mysql5.7默认就是utf8mb4)

[mysqld]

character-set-server = utf8

[mysql]

default-character-set = utf8

或者

[mysqld]

character-set-server = utf8mb4

[mysql]

default-character-set = utf8mb4

注意:网站根目录权限遵循:

文件644 文件夹755 权限用户和用户组www

如出现文件权限问题时,请执行下面3条命令:

chown -R www:www /ourdata/ nginx /

find /ourdata/nginx/ -type d -exec chmod 755 {} \;

find /ourdata/nginx/ -type f -exec chmod 644 {} \;

安装Jetty

由于WAR包里不能存放上传的附件(上传的附件是存在/tmp里的,重启jetty就消失了),所以我们一般将项目打包成war之后再解压出来放到jetty下,这样附件就会直接存放在项目中了,所以建议jetty程序和文件安装在一起。而不是向mysql或者lnmp一样,程序在/usr下,文件在/home下。

wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.5.v20141112.tar.gz

解压并移动下载的包到/opt:

tar zxvf jetty-distribution-9.2.5.v20141112.tar.gz -C /ourdata/jetty

重命名文件夹名为jetty:

mv /ourdata/jetty -distribution-9.2.5.v20141112/ /ourdata/jetty

创建一个jetty用户:

useradd -m jetty

改变jetty文件夹的所属用户:

chown -R jetty:jetty /ourdata/jetty/

为jetty.sh创建一个软链接到 /etc/init.d directory 来创建一个启动脚本文件:

ln -s /ourdata/jetty/bin/jetty.sh /etc/init.d/jetty

添加脚本:

chkconfig –add jetty

是jetty在系统启动时启动:

chkconfig –level 2345 jetty on

使用你最喜欢的文本编辑器打开 /etc/default/jetty 并修改端口和监听地址:

vi /etc/default/jetty

内容:

JETTY_HOME=/ourdata/jetty

JETTY_USER=jetty

JETTY_PORT=8080

JETTY_HOST=127.0.0.1

JETTY_LOGS=/ourdata/jetty/logs/

然后,cd /ourdata/jetty

mkdir work

chown -R jetty:jetty /ourdata/jetty/

我们完成了安装,现在可以启动jetty服务了:

(注意:如果jco还没有放进来,先放进来一下再启动jetty。)

service jetty start

现在你可以在 http://<你的 IP 地址>:8080 中访问了

配置PHP-SAP RFC服务

  1. 下载sap nw rfc sdk

登录sap下载网站,需要oss账号

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

下载后的到两个文件,SAPCAR和SDK文件,用CMD解压SDK出来一个文件夹

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

将上面两个文件放到同一个目录,然后CD到对应目录,进行解压

sapcar_712-80000938.exe -xvf *.sar

  1. 安装SAP NW RFC SDK library

Linux下

mkdir -p /usr/sap/nwrfcsdk

(上面的命令被word改变格式后复制到linux里可能不能识别,-号自己敲一遍就好了。)

将上面解压出来的文件上传到该目录

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

配置动态链接库

vi /etc/ld.so.conf.d/nwrfcsdk.conf

输入/usr/sap/nwrfcsdk/lib

保存。

执行ldconfig

Windows下

下载对应的windows版本

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

sapcar解压

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

配置一下path

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

  1. 编译php7-sapnwrfc扩展

项目地址:https://github.com/gkralik/php7-sapnwrfc

帮助文档:https://github.com/gkralik/php7-sapnwrfc/blob/master/docs/installing_nwrfcsdk.md

注意,下面的phpize命令和php-config都要使用安装的php的绝对路径中的文件,否则会报各种错,千万不要使用yum install php-devel安装新的phpize、无法编译完成!!!!

git clone https://github.com/gkralik/php7-sapnwrfc.git

cd php7-sapnwrfc

/usr/local/php/bin/phpize

./configure --with-sapnwrfc=/usr/sap/nwrfcsdk --with-php-config=/usr/local/php/bin/php-config

make

sudo make install

ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/

删除

  1. 修改php.ini添加saprfc扩展

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

vi php.ini

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

Linux下

extension=sapnwrfc.so

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

重启php

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

验证saprfc扩展是否安装成功

phpinfo函数

http://192.168.1.103/lnmp/p.php

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

Windows下

作者已经编译好dll文件,直接下载即可

https://github.com/gkralik/php7-sapnwrfc/releases

例如我的版本

https://github.com/gkralik/php7-sapnwrfc/releases/download/1.1.1/php_sapnwrfc-1.1.1-7.0-vc14-nts-x64.dll

下载完之后放到php的dll目录下

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

先切换一下php version到php7

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

注意,要找到php7对应的ini文件编辑才行

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

然后添加扩展

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

重启appserv

检测。

配置iptables服务(可选)

yum方式安装iptables

# yum install iptables-services

编辑防火墙配置文件

vi /etc/sysconfig/iptables

添加下面三句话到默认的22端口这条规则的下面(注意,要删除原来的几条规则)

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

最后重启防火墙使配置生效

# systemctl restart iptables.service

设置防火墙开机启动

# systemctl enable iptables.service

#/usr/libexec/iptables/iptables.init restart #重启防火墙

最终形成这样的配置:

部署LNMP&SAP RFC + Jetty&Java&Jco环境(PHP连接SAP)

注意:如果MySQL通过客户端访问报2003的错误,执行下面的操作:

必须关闭firewall,否则 linux无法访问外网、用户也无法访问java服务:

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd –state (关闭后显示notrunning,开启后显示running)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

修改/etc/sysconfig/selinux文件:

selinux=enforcing

SELINUX=disabled

停止MySQL,重启服务器。

可以通过sestatus命令查看当前selinux状态;

注意:如果是虚拟机测试,网络连接类型为桥接模式时可能无法访问外网,改为NAT模式即可。

创建虚拟主机

cd ~

cd lnmp

lnmp vhost add

vi /usr/local/nginx/conf….

确定备份策略

参考:databackup.sh。

安装和上述步骤完全一样的备胎机

安装另外一台备胎机(完全参照第一台的安装方式安装,如果第一台出问题了立刻启动备胎,这样可以保证服务的不间断),配置第一台机器和第二台机器之间的备份策略(例如:第一台每隔3小时将WEB文件和SQL通过FTP等方式传到第二台对应的目录下)。

注意:

linux下传汉字命名的文件用winscp比较可行,xftp会乱码!!

此外,linux共享不需要做任何配置,默认系统安装好之后的22断口就支持共享了,需要接收共享文件的人用winscp就能下载需要的文件。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • ag

      https://github.com/gkralik/php7-sapnwrfc/releases/