在Centos上搭建PHP+JAVA的服务器(整理)

近日,兴趣驱动,参照阿里云、腾讯云官方文档,以及前辈的经验,尝试在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

说明:源代码版本会不断升级。您可以在https://mirrors.aliyun.com/apache/tomcat/tomcat-8/目录下获取合适的安装包地址。

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⃣️.添加以下内容:


 





  


  
  
    
      
    
    
      
      
    
  


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的测试页面,内容如下。


浏览器访问测试,如访问成功则表示PHP+JAVA的服务器构建完成。

参考文献:

1.https://help.aliyun.com/document_detail/51376.html?spm=5176.doc52864.6.742.0HDQuF

2.http://www.jianshu.com/p/4406e9f7b40c

3.http://blog.csdn.net/csdn_yasin/article/details/52655268

初次接触服务器部署,有不当之处,深望各位看官海涵、多留言指正。

你可能感兴趣的:(在Centos上搭建PHP+JAVA的服务器(整理))