近日,兴趣驱动,参照阿里云、腾讯云官方文档,以及前辈的经验,尝试在centos上搭建PHP+JAVA服务器。整理此文档,一方面为自己备忘后用,另一方面,为后来者提供借鉴,也期望大家各抒己见,完善文档。
软件版本说明
-操作系统:CentOS 7.2 64 位
-Tomcat 版本:Tomcat 8.5.23
-JDK 版本:JDK 1.8.0_141
-MySQL:5.7.17
-PHP:5.6.23
主要思路
通过nginx作为中转服务器,将需要php处理的请求中转到php服务器上,将需要java处理的请求中转到java服务器(本例中为tomcat)上。
小常识:
Linux:自由和开放源码的类UNIX操作系统。*
Nginx:轻量级网页服务器、反向代理服务器。*
MySQL:关系型数据库管理系统。*
PHP:主要适用于Web开发领域的一种脚本语言。*
Tomcat:Java服务器。*
基本流程
第一步、安装前准备:关闭防火墙
第二步、搭建 Java 开发环境:安装 JDK,部署 Tomcat服务器
第三步、安装nginx
第四步、安装mysql
第五步、安装php-fpm
第六步、配置nginx中转服务器
具体步骤
第一步、安装前准备
CentOS 7.2 系统默认开启了防火墙。您可以关闭防火墙,也可以参考官网文档在防火墙里添加规则,放行 80、443 或 8080 端口入方向规则。
关闭防火墙:
#systemctl stop firewalld.service
关闭防火墙开机自启动功能:
#systemctl disable firewalld.service
第二步、搭建 Java 开发环境
这一部分,参考阿里云和腾讯云部署JavaEE环境文档,阿里云采用手动部署安装,腾讯云使用yum工具一键自动安装,各有优势,大家随意使用,个人比较推荐手动安装。
一、yum工具自动安装(腾讯云)
1.安装 JDK
JDK 是开发Java程序必须安装的软件,我们查看一下yum源里面的 JDK:
#yum list java*
选择适合本机的JDK,并安装:
#yum install java-1.7.0-openjdk* -y
安装完成后,查看是否安装成功:
#java -version
2.安装 Tomcat
Tomcat 是一个应用服务器,是开发和调试 jsp 程序的首选,可以利用它来响应 HTML 页面的访问请求。
进入本地文件夹
#cd /usr/local
到官网找到 Tomcat 的下载链接,并下载到服务器中, 这里提供了一个快速下载 Tomcat 的地址:
#wget https://mc.qcloudimg.com/static/archive/fa66329388f85c08e8d6c12ceb8b2ca3/apache-tomcat-7.0.77.tar.gz
解压这个文件夹:
#tar -zxf apache-tomcat-7.0.77.tar.gz
重命名这个文件:
#mv apache-tomcat-7.0.77 /usr/local/tomcat7
进入 bin 文件夹
#cd /usr/local/tomcat7/bin
给这个文件夹下的所有 shell 脚本授予权限:
#chmod 777 *.sh
开启tomcat服务:
#./startup.sh
3.安装 MySQL(centos7安装会报错,腾讯有相应的解决方法)
#yum install -y mysql-server mysql mysql-devel
安装完成后,启动 MySQL 服务:
#service mysqld restart
设置 MySQL 账户 root 密码:
#/usr/bin/mysqladmin -u root password 'pWEvga53'
访问 Tomcat
此时,访问http://ip:8080可访问到刚才启动的 Tomcat 的内置示例页面
二、手动下载安装(阿里云)
1.为tomcat创建一般用户 www
创建一般用户 www
#useradd www
创建网站根目录:
#mkdir-p/data/wwwroot/default
开放权限给www:
#chown-R www.www/data/wwwroot
2.安装 JDK
a.下载源代码
#wget http://mirrors.linuxeye.com/jdk/jdk-8u141-linux-x64.tar.gz
说明:源代码版本会不断升级。您可以在http://mirrors.linuxeye.com/jdk/目录下获取合适的安装包地址。
b.新建一个目录:
#mkdir/usr/java
c.解压 jdk-8u141-linux-x64.tar.gz 到 /usr/java。
#tar xzf jdk-8u141-linux-x64.tar.gz-C/usr/java
d.设置环境变量:
编辑 /etc/profile:
#vi /etc/profile。
按i键进入编辑模式。
在 /etc/profile 文件中添加以下信息:
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_141
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
按Esc键退出编辑模式,输入:wq保存并关闭文件。
f.加载环境变量:
#source /etc/profile。
g.查看 jdk 版本。当出现 jdk 版本信息时,表示 JDK 已经安装成功。
##java-version
java version"1.8.0_141"
Java(TM)SERuntimeEnvironment(build1.8.0_141-b15)
JavaHotSpot(TM)64-BitServerVM(build25.141-b15,mixed mode)
3.安装 Tomcat
a.下载源码
#wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
b.依次运行以下命令解压 apache-tomcat-8.5.23.tar.gz,重命名 Tomcat 目录,并设置用户权限。
#tar xzf apache-tomcat-8.5.23.tar.gz
#mv apache-tomcat-8.5.23/usr/local/tomcat/
#chown-R www.www/usr/local/tomcat/
说明:
在 /usr/local/tomcat/ 目录里:
bin 目录中存放 Tomcat 的一些脚本文件,包含启动和关闭 Tomcat 服务脚本。
conf:存放 Tomcat 服务器的各种全局配置文件,其中最重要的是 server.xml 和 web.xml。
webapps:Tomcat 的主要 Web 发布目录,默认情况下把 Web 应用文件放于此目录。
logs:存放 Tomcat 执行时的日志文件。
c.配置 server.xml 文件:
i.切换到 /usr/local/tomcat/conf/ 目录:
#cd /usr/local/tomcat/conf/。
ii.重命名 server.xml 文件:
#mv server.xml server.xml_bk。
iii.创建一个新的 server.xml 文件:
1⃣️.运行命令
vi server.xml。
2⃣️.按i键进入编辑模式。
3⃣️.添加以下内容:
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml"/>
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="1000"
minSpareThreads="20"
acceptCount="1000"
maxHttpHeaderSize="65536"
debug="0"
disableUploadTimeout="true"
useBodyEncodingForURI="true"
enableLookups="false"
URIEncoding="UTF-8"/>
resourceName="UserDatabase"/>
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
d.设置 JVM 内存参数:
i.运行以下命令, 创建 /usr/local/tomcat/bin/setenv.sh。
#vi /usr/local/tomcat/bin/setenv.sh
ii.按i键进入编辑模式。
iii.添加以下内容:
JAVA_OPTS=’-Djava.security.egd=file:/dev/./urandom-server-Xms256m-Xmx496m-Dfile.encoding=UTF-8’
iv.按Esc键退出编辑模式,输入:wq保存并退出文件。
e.设置 Tomcat 自启动脚本。
i.下载脚本:
#wget https://github.com/lj2007331/oneinstack/raw/master/init.d/Tomcat-init
ii.重命名 Tomcat-init。
#mv Tomcat-init /etc/init.d/tomcat
iii.添加执行权限:
#chmod +x /etc/init.d/tomcat
iv.设置启动脚本 JAVA_HOME:
#sed -i 's@^export JAVA_HOME=.*@export JAVA_HOME=/usr/java/jdk1.8.0_141@' /etc/init.d/tomcat
f.设置自启动。
#chkconfig--add tomcat
#chkconfig tomcat on
g.启动 Tomcat。
#service tomcat start
h.新建 Tomcat 测试页面:
#echoTomcattest>/data/wwwroot/default/index.jsp
i.在浏览器地址栏中输入http://ip:8080进行访问。出现如图所示页面时表示安装成功。
第三步、安装nginx
一、yum自动安装
1、安装nginx,根据提示,输入Y安装即可成功安装
#yum install nginx
2、 启动
#service nginx start
3、设为开机启动
#chkconfig nginx on
4、 重启
#/etc/init.d/nginx restart
(ngin默认测试目录:/usr/share/nginx/html/)
二、手动下载安装
1、添加运行nginx服务进程的用户
# groupadd -r nginx
# useradd -r -g nginx nginx
2、下载源码包解压编译。
# wget http://nginx.org/download/nginx-1.10.2.tar.gz
# tar xvf nginx-1.10.2.tar.gz -C /usr/local/src
# yum groupinstall "Development tools"
# yum -y install gcc wget gcc-c++ automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl-devel
# cd /usr/local/src/nginx-1.10.2
# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
- -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_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
- -with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
# make && make install
# mkdir -pv /var/tmp/nginx/client
3、添加SysV启动脚本。
# vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
./etc/rc.d/init.d/functions
# Source networking configuration.
./etc/sysconfig/network
# Check that networking is up.
["$NETWORKING"="no"]&&exit0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[-f/etc/sysconfig/nginx]&&./etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start(){
[-x $nginx]||exit5
[-f $NGINX_CONF_FILE]||exit6
echo-n $"Starting $prog: "
daemon $nginx-c $NGINX_CONF_FILE
retval=$?
echo
[$retval-eq0]&&touch $lockfile
return$retval
}
stop(){
echo-n $"Stopping $prog: "
killproc $prog-QUIT
retval=$?
echo
[$retval-eq0]&&rm-f $lockfile
return$retval
killall-9nginx
}
restart(){
configtest||return$?
stop
sleep1
start
}
reload(){
configtest||return$?
echo-n $"Reloading $prog: "
killproc $nginx-HUP
RETVAL=$?
echo
}
force_reload(){
restart
}
configtest(){
$nginx-t-c $NGINX_CONF_FILE
}
rh_status(){
status $prog
}
rh_status_q(){
rh_status>/dev/null2>&1
}
case"$1"in
start)
rh_status_q&&exit0
$1
;;
stop)
rh_status_q||exit0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q||exit7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q||exit0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force- reload|configtest}"
exit2
esac
4、赋予脚本执行权限。
# chmod +x /etc/init.d/nginx
5、添加至服务管理列表,设置开机自启。
# chkconfig --add nginx
# chkconfig nginx on
6、启动服务。
# service nginx start
7、浏览器访问可看到默认欢迎页面。
第四步、安装mysql
1.依次执行以下命令检查系统中是否存在使用 rpm 安装的 MySQL 或者 MariaDB。
#rpm-qa|grep mysql
#rpm-qa|grep mariadb
如果已经安装,则运行以下任一个命令删除。
rpm-e软件名 #注意:这里的软件名必须包含软件的版本信息,如rpm -e mariadb-libs-5.5.52-1.el7.x86_64。一般使用此命令即可卸载成功。
rpm-e--nodeps软件名#卸载不成功时使用此命令强制卸载
卸载后,再用rpm -qa|grep mariadb或者rpm -qa|grep mysql查看结果。
2.依次运行以下命令安装 MySQL。
#yum install-y libaio-*#安装依赖
#mkdir-p/usr/local/mysql
#cd/usr/local/src
#wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/mysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
#tar-xzvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
#mv mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql/
3.依次运行以下命令建立 mysql 组和用户,并将 mysql 用户添加到 mysql 组。
#groupadd mysql
#useradd-g mysql-s/sbin/nologin mysql
4.运行命令初始化 MySQL 数据库。
#/usr/local/mysql/bin/mysqld--initialize-insecure--datadir=/usr/local/mysql/data/--user=mysql
5.更改 mysql 安装目录的属性:
#chown -R mysql:mysql /usr/local/mysql。
6.依次运行以下命令设置开机自启动。
#cd/usr/local/mysql/support-files/
#cp mysql.server/etc/init.d/mysqld
#chmod+x/etc/init.d/mysqld# 添加执行权限
#vim/etc/rc.d/rc.local
在 rc.local 文件中添加以下内容。
/etc/init.d/mysqld start
7.设置环境变量。
i.打开文件,按i进入编辑模式。
#vi /root/.bash_profile
ii.将PATH=$PATH:$HOME/bin修改为
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib。
iii.按Esc键退出编辑模式,输入:wq保存并关闭文件。
iv.运行以下命令,重新执行文件。
#source /root/.bash_profile
8.启动 MySQL 数据库。
#/etc/init.d/mysqld start
出现如下截图所示信息,表示 MySQL 启动成功。
启动成功
9.修改 MySQL 的 root 用户密码:初始化后 MySQL 为空密码可直接登录,为了保证安全性需要修改 MySQL 的 root 用户密码。
#mysqladmin-u root password密码
10.测试登录 MySQL 数据库。
#mysql-uroot-p密码#-p和密码之间无空格
第五步、安装php-fpm
1.安装依赖包。
# yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel
2.下载安装包
#wget http://cn2.php.net/distributions/php-5.6.23.tar.gz
3.解压官网下载的源码包,编译安装。
# tar xvf php-5.6.23.tar.gz -C /usr/local/src
# cd /usr/local/src/php-5.6.23
# ./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/etc/php.d \
--with-config-file-path=/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-openssl \
-enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-bz2
# make && make install
4.添加php和php-fpm配置文件。
# cp /usr/local/src/php-5.6.23/php.ini-production /etc/php.ini
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# sed -i 's@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@' php-fpm.conf
5.添加php-fpm启动脚本。
# cp /usr/local/src/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
6、添加php-fpm至服务列表并设置开机自启。
# chkconfig --add php-fpm
# chkconfig --list php-fpm
# chkconfig php-fpm on
7.启动服务。
# service php-fpm start
此处centos7启动会报如下错误,解决方法在后。
WARNING: Nothing matches the include pattern ‘/usr/local/etc/php-fpm.d/*.conf’ from /usr/local/etc/php-fpm.conf at line 125.
ERROR:. No pool defined at least one pool section must be specified in config file
ERROR: failed to post process the configuration
ERROR: FPM initialization failed
解决办法:
cd php-fpm.d/
cp www.conf.default www.conf
重新启动即可
第六步、配置nginx中转服务器
1.添加nginx对fastcgi的支持,首先备份默认的配置文件。
# cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
2.编辑/etc/nginx/nginx.conf,在所支持的主页面格式中添加php格式的主页,类似如下:
location/{
root/usr/local/nginx/html;
index index.php index.html index.htm;
}
取消以下内容前面的注释:
location~\.php${
root/usr/local/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME/usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
3.增加以下内容,中转Java请求
location /data/wwwroot/default{
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
4.重新载入nginx的配置文件。
# service nginx reload
5.在/usr/local/nginx/html/新建index.php的测试页面,内容如下。
phpinfo();
?>
浏览器访问测试,如访问成功则表示PHP+JAVA的服务器构建完成。
参考文献:
初次接触服务器部署,有不当之处,深望各位看官海涵、多留言指正。