PHP项目部署
一、项目环境
虚拟机:Oracle VirtualBox
linux系统:Centos7
appache服务
数据库:mariadb
jdk:1.8+
php:7.1+
远程操作虚拟机工具:XShell 6或SSH Secure Shell Client或Cygwin Terminal
上传文件工具:Xftp 6
二、安装Oracle VirtualBox
Oracle官网下载地址
https://download.virtualbox.org/virtualbox/6.0.4/VirtualBox-6.0.4-128413-Win.exe
三、安装centos7+
参考阿里开源镜像站下载
https://mirrors.aliyun.com/centos/
虚拟机网络配置
1、桥接网络模式
第一步在->设置->网络 中将连接方式改为桥接网卡,界面名称选择
Intel(R) Dual Band Wireless-AC 3165
第二步在系统中修改网络配置,
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
添加如下配置
修改: BOOTPROTO=static
修改: ONBOOT=yes
IPADDR=192.168.1.2 (设置系统的IP,网段最好跟本物理机一致)
NETMASK=255.255.255.0(设置子网掩码)
GATEWAY=192.168.1.1(设置网关)
DNS1=8.8.8.8 (设置DNS 域名解析)
DNS2=8.8.4.4
编辑后重启网络
systemctl restart network
最好 ip addr 查看网关ip
四、安装Apache
1、下载appache
yum -y install httpd
2、开启apache服务
systemctl start httpd.service
3、设置apache开机自启
systemctl enable httpd.service
4、设置系统防火墙
Centos7默认防火墙是firewalld;如果需要外网访问到appache主目录,需要设置如下:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
5、验证是否安装apache成功
apache默认端口是80;在本机浏览器输入虚拟机的ip地址,即可测试是否安装成功;
或者systemctl status httpd 查看apache的服务状态。
五、Mariadb
1、下载mariadb
1.1:先检查是否已经存在mariadb的包
rpm -qa|grep mariadb
1.2:有则删除
批量删除 rpm -e --nodeps mariadb-*
或单个删除 rpm -e --nodeps 包名
若报未安装错误则 rpm -e 包名
1.3:下载
yum install mariadb
1.4:安装mariadb的依赖包
yum install mariadb*
2、启动服务并添加到开机自启
systemctl start mariadb.service
systemctl enable mariadb.service
3、安全设置及修改登录密码
mysql_secure_installation
=>Enter current password for root (enter for none):空格ENTER直接进入下一步
设置新密码为root;这里的登录密码必须设置为root,因为php项目中的数据库登录是root,不然无法登录报错
后面的这四步全部 N
=>Remove anonymous users? [Y/n]
=>Disallow root login remotely? [Y/n]
=>Remove test database and access to it? [Y/n]
=>Reload privilege tables now?[Y/n]
4、设置远程连接
4.1:登录数据库
mysql -uroot -proot
4.2:创建用户并授权
=>MariaDB [(none)]> create user 'root'@'%' identified by 'root';
=>MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
4.3:刷新权限
=>MariaDB [(none)]> flush privileges;
4.4:查看当前的用户信息
=>MariaDB [(none)]> select host,user,password from mysql.user;
当有这么一行就说明远程添加成功了,password是内部加密的。
host user password
% root *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
4.5:开启3306防火墙
先退出mariadb数据库
=>MariaDB [(none)]> exit
再设置防火墙,开放3306端口
firewall-cmd --zone=public --permanent --add-port=3306/tcp
重新加载防火墙,使设置生效
firewall-cmd --reload
5、扩展
1、创建一个用户格式:
create user 用户名@主机IP identified by '密码';
例如创建一个只允许特定IP访问数据库
create user 'root'@'192.168.1.1' identified by 'root';
创建一个所有Ip都可以访问的
create user 'root'@'%' identified by 'root';
2、授权格式
grant all privileges on 数据库类型 to 用户名@ip identified by '密码' with grant option;
例如给root用户授可以访问所有数据库的权限
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
授root用户只能有test数据库的所有权限
grant all privileges on test.* to 'root'@'%' identified by 'root' with grant option;
3、防火墙
查看所有已打开的端口
firewall-cmd --zone=public --list-ports
添加端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
删除端口
firewall-cmd --zone=public -remove-port=80/tcp --permanent
六、安装PHP7+
1、在centos7中先切换yum安装源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
以上如出错则可尝试下面的,
yum install epel-release -y
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
更新完成后为防止冲突,先删除可能存在的php包
yum -y remove php*
2、安装PHP
yum install -y php71w
3、安装PHP依赖
yum install -y php71w-fpm php71w-opcache php71w-cli php71w-gd php71w-imap php71w-mysqlnd php71w-mbstring php71w-mcrypt php71w-pdo php71w-pecl-apcu php71w-pecl-mongodb php71w-pecl-redis php71w-pgsql php71w-xml php71w-xmlrpc php71w-devel mod_php71w
安装完成后可查看PHP版本信息
php -v
4、将mysql与php关联
yum -y install php-mysql --skip-broken
5、执行SQL
使用远程的连接工具执行sql;
数据库名称为 : binyplatformphp
字符集选择 : utf8
校验规则 : utf8_general_ci
然后将sql脚本导入执行。
七、部署项目代码
1、上传源码
将 binyplatformphp.zip 压缩文件上传到centos7中的/var/www/html下(其它目录也行);然后解压到该目录下
解压zip格式命令: unzip binyplatformphp.zip
注:mini最小安装可能没有unzip命令,需要安装
yun install -y unzip zip 安装解压zip和压缩zip文件命令
2、设置用户/组/权限
进入到项目目录下,
cd /var/www/html/binyplatformphp
修改runtime的组和权限
chown -R apache:apache runtime/
chmod -R 777 runtime/
然后设置SELinux,编辑配置文件
vi /etc/selinux/config
按 i 插入,修改SELINUX
SELINUX=disabled
修改后按ESC +冒号:+wq。保存退出
注: 修改后需要重启系统
3、配置apache
在目录 /etc/httpd/conf.d目录下,添加vhost.conf文件,并添加配置内容
进入到该目录下
vi vhost.conf
按 i 键插入,编辑如下内容
<VirtualHost *:80>
ServerName binyplatformphpclient.vm.com
ServerAlias binyplatformphpadmin.vm.com binyplatformphpapp.vm.com binyplatformphppython.vm.com
DocumentRoot /var/www/html/binyplatformphp/public
<Directory "/var/www/html/binyplatformphp/public">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注:binyplatformphp*.vm.com域名为自定义域名,外网无法访问。
4、配置域名映射
进入到项目目录/var/www/html/binyplatformphp/application下
cd /var/www/html/binyplatformphp/application/
编辑域名路由映射
vi route.php
Route::domain( 'binyplatformphpclient' , 'client' ) ;
Route::domain( 'binyplatformphpadmin' , 'admin' ) ;
Route::domain( 'binyplatformphpapp' , 'app' ) ;
Route::domain( 'binyplatformphppython' , 'python' ) ;
Route::domain('192.168.1.66', 'client') ;
编辑后保存退出。
注: Route::domain(‘192.168.1.66’, ‘client’) ;其中的IP为虚拟机中PHP项目所在的系统IP。
5、宿主机配置
在本地电脑中找到host文件,在C:\Windows\System32\drivers\etc中编辑hosts文件;
添加域名映射(项目所在服务器IP:域名)
192.168.1.66 binyplatformphpclient.vm.com
192.168.1.66 binyplatformphpadmin.vm.com
八、安装JDK和java驱动
这里选择安装jdk1.8
1、下载JDK
先查看是否存在openjdk
rpm -qa | grep jdk
若存在openjdk的包则删除
rpm -e --nodeps jdk包名
或者 yum -y remove *-openjdk-*
卸载后java或java -version不被识别。
然后上传JDK文件(如:jdk-8u191-linux-x64.tar.gz)到/usr/local下;解压到指定的安装目录下,先在/usr/local创建java文件夹
mkdir java
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/local/java
2、配置jdk环境变量
进入环境变量编辑
vi /etc/profile
按 i 键插入;
#java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
注:JAVA_HOME的jdk版本根据实际来定,不一定是jdk1.8.0_191;centos6是JAVAHOME;centos7之后是JAVA_HOME
编辑后按ESC键,然后按出冒号:在按wq。就保存并退出了
最后需要重启配置文件使之生效
source /etc/profile
3、配置java驱动程序
1、上传驱动文件
在虚拟机系统中新建文件夹来存储驱动文件javalib文件夹和driver文件夹
将javalib和driver文件夹上传到biny目录下
mkdir /var/biny/
2、配置环境变量
vi /etc/profile
添加(javalib的目录根据实际存放位置)
for k in /var/biny/javalib/*jar
do
CLASSPATH=$CLASSPATH:$k
done
export CLASSPATH
3、修改配置文件
进入目录 /var/biny/driver/binyplatformphp/下
编辑config.properties
vi config.properties
[tcp_server]
## tcp监听事件;嵌入式程序和驱动之间的TCP端口
tcpListenPort=6000
## tcp socket 超时事件
socketTimeout=5000
## 重连时间
reconnectSyncTime=5
[http_server]
#WEB应用和驱动之间的http端口,端口号和php项目中application/client/conf.php中一致
httpListenPort=6010
[web_server]
### web服务器地址,需要与php项目中application/route.php中配置的域名一致
webServerDomain=http://binyplatformphppython.biny.com/
[web_socket]
webSocketPort=30050
开放6000端口
firewall-cmd --zone=public --permanent --add-port=6000/tcp
firewall-cmd --reload
4、创建启动驱动程序脚本
进入项目 /driver下
vi startup.sh
按 i 进入编辑;添加如下(目录根据实际定)
#!/bin/bash
killall -9 java
cd /var/biny/driver/binyplatformphp
nohup java BinyDriverMain &
保存退出;设置脚本开机启动;编辑系统配置
vi /etc/rc.d/rc.local
添加(脚本目录根据实际而定)
source /etc/profile
/var/biny/driver/startup.sh
最后
chmod +x /var/biny/driver/startup.sh
chmod +x /etc/rc.d/rc.local
成功后需重启系统。
5、创建定时任务
目的是定时清除指定期间内的日志文件。
创建脚本(如在 /var/biny/ 目录下)
mkdir crontab
在该文件下创建脚本
vi cleanLog2DebugError.sh
添加如下,定时清理前30天产生的日志信息(注意文件目录):
#!/bin/sh
find /var/biny/driver/binyplatformphp/ -mtime +30 -name "biny_debug.log.*" -exec rm -rf {} \;
find /var/biny/driver/binyplatformphp/ -mtime +30 -name "biny_error.log.*" -exec rm -rf {} \;
find /var/www/html/binyplatformphp/runtime/log -mtime +30 -name "*" -exec rm -rf {} \;
find /var/www/html/binyplatformphp/runtime/cache/binyplatformphp -mtime +30 -name "*" -exec rm -rf {} \;
find /var/www/html/binyplatformphp/runtime/temp -mtime +30 -name "*.php" -exec rm -rf {} \;
保存退出,再设置脚本权限
chown 777 cleanLog2DebugError.sh
设置脚本执行时间
crontab -e
添加
#例如每2分钟执行一次脚本
#*/2 * * * * /var/biny/crontab/cleanLog2DebugError.sh
#每月2日的10:00执行一次脚本
0 10 1 * * /var/biny/crontab/cleanLog2DebugError.sh
重启crond服务
systemctl restart crond
------>完成PHP的安装部署
注:该网络是桥接模式;如更换网络IP,则需要修改三处地方,
1、修改项目所在虚拟机系统的IP /etc/sysconfig/network-scripts/ifcfg-enp0s3
2、修改项目路由映射 /var/www/html/binyplatformphp/application/route.php
3、修改本地物理地址的IP域名映射。C:\Windows\System32\drivers\etc\hosts
常用命令:
netstat -lntp 查看当前所有在使用的tcp端口
(mini版需要安装netstat,yum install net-tools)
netstat -lnup 查看当前在使用的udp端口
查看某一端口使用情况
netstat -lntp|grep 端口号
ps aux|grep 端口号
杀死进程
kill -9 PID号
查看已开放了哪些端口
firewall-cmd --list-ports
开放某一端口,如:6000。
firewall-cmd --zone=public --permanent --add-port=6000/tcp
开放后需要重启防火墙
firewall-cmd --reload
–如有问题,欢迎评论指出.