Centos7/RHEL服务器搭建Apache、MySQL、PHP、TomCat和Node.js环境

搭建一个具备基本生产环境的服务器也是一个繁琐的事情,好在网上有很多一键搭建脚本和控制面板(kloxo等)可以选择,这样的确方便了不少。不过最近还是自己手动搭建好了这些服务器环境,编译源码太麻烦,有方便的yumrpm为啥不用呢?所以这里主要使用yum来安装,先记下免得下次忘了。

导航目录

  1. 安装Apache
  2. 安装MySQL和PHP
  3. 安装TomCat
  4. 配置Apache虚拟机绑定域名,分别整合PHP和TomCat到Apache
  5. 安装Node.js和Mongodb

安装Apache

首先安装Apache,查看系统是否安装httpdaprapr-util并卸载

#rpm -qa|grep apr
apr-util-1.5.2-6.el7.x86_64
apr-1.4.8-3.el7.x86_64
#rpm -e --nodeps --allmatches apr-util-1.5.2-6.el7
#rpm -e --nodeps --allmatches apr-1.4.8-3.el7
#rpm -qa httpd
httpd-2.4.6-31.el7.centos.x86_64
# rpm -e --nodeps --allmatches httpd-2.4.6-31.el7.centos

重新安装httpdaprapr-util

#yum install httpd apr apr-util

Apache扩展模块

#yum install httpd-manual mod_ssl mod_perl mod_auth_mysql

安装MySQLMariaDB)和PHP

因为Mysql目前现状,Centos7已经默认使用Mariadb代替了Mysql,当你yum install musql时你会发现真正安装的却是mariadb,MariaDB是MySQL的一个独立分支,其目的是代替MySQL使得MySQL摆脱Oracle公司的束缚,所以MariaDB是完全兼容MySQL的,包括其API和命令行,你可以像使用MySQL一样使用它,使用下面命令安装php和mysql以及连接组件:

#yum install php mariadb mariadb-server php-mysql

安装PHP扩展组件

#yum install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc

安装MySQL扩展组件

#yum install mysql-connector-odbc mariadb-devel libdbi-dbd-mysql

启动MySQL,注意Centos7使用systemctl整合了以前使用的chkconfigservice,具体可以查看Centos7的systemctl使用,还要注意服务名称是mariadb

#systemctl start mariadb.service

设置MySQL管理员密码

#mysqladmin -uroot password 12345678

客户端登陆MySQL

#mysql -uroot -p 12345678

安装TomCat

安装TomCat之前首先你得安装JDK不是么,官网下个jdk的rpm包,我这里是jdk-8u40-linux-x64.rpm,然后安装该包:

#yum localinstall jdk-8u40-linux-x64.rpm

或者

#rpm -ivh jdk-8u40-linux-x64.rpm

好像还要配置环境变量的哟,编辑配置文件/etc/profile(这是全局配置文件,只想配置当前用户JDK环境可以编辑~/.bash_profile文件),使用vi编辑器:

#vi /etc/profile

在文件最后添加下面的内容,根据你的JDK安装位置改变JAVA_HOME的值

#set java runtime enviroament
export JAVA_HOME=/usr/java/jdk1.8.0_40
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

然后开始安装Tomcat咯

#yum install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp tomcat-javadoc

现在启动Tomcat吧

#systemctl start tomcat.service

设置开机启动

#systemctl enable tomcat.service

绑定域名,分别整合PHP和TomCat到Apache

现在PHP和Tomcat都用了,怎么同时使用呢?这里使用apache虚拟机绑定不同的域名php.jim0.comtomcat.jim0.com,当访问前者时直接解释虚拟机指定目录的PHP脚本,访问后者时转发请求给tomcat处理。

开始先确定几个模块是否成功加载,运行httpd -M 查看是否有php5_module(share)proxy_module(share)proxy_ajp_module(share)

#httpd -M|grep -E "(proxy|php5|proxy_ajp)_module"
proxy_module (shared)
proxy_ajp_module (shared)
php5_module (shared)

打开/etc/httpd/conf/httpd.conf文件,看到最后有下面一段话:

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

也就是说任何/etc/httpd/conf.d/目录下的以.conf结尾的配置文件都会被加载并解析配置,所以我在该目录下建立一个my-httpd-vhosts.conf文件,用于配置apache不同虚拟主机绑定不同的域名和配置。

新建一个my-httpd-vhosts.conf文件并添加内容:

#vi /etc/httpd/conf.d/my-httpd-vhosts.conf

在vi编辑器命令模式中敲i,进入插入模式,输入一下配置内容:

<VirtualHost *:80>
DocumentRoot "/var/www/php.jim0.com"
ServerName php.jim0.com
ServerAlias *.php.jim0.com
    DirectoryIndex index.html news.html index.htm index.php
    ErrorLog "/etc/httpd/logs/php-error_log"
    CustomLog "/etc/httpd/logs/php-access_log" common
    <Directory "/var/www/php.jim0.com">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/tomcat.jim0.com"
    ServerName tomcat.jim0.com
    ServerAlias *.tomcat.jim0.com
    DirectoryIndex index.html news.html index.htm index.jsp
    ErrorLog "/etc/httpd/logs/tomcat-error_log"
    CustomLog "/etc/httpd/logs/tomcat-access_log" common
    ProxyPass / ajp://localhost:8009/
    ProxyPassReverse / ajp://localhost:8009/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

就像其单词意思一样,一个VirtualHost标签对应一个虚拟主机,*:80表示该虚拟主机处理从所有ip发送至80端口的请求,DocumentRoot的值指定Web服务器根目录,ServerName指定处理通过访问那个域名发来的请求,这里通过不同的ServerName的值映射到不同的虚拟主机配置,ErrorLogCustomLog配置日志文件路径,ProxyPassProxyPassReverse配置代理转发给tomcat模块的8009端口进行处理,可以使用httpd -S命令验证配置文件:

#httpd -S

这时,通过php.jim0.com域名访问的将是/var/www/php.jim0.com目录的PHP环境服务器,通过tomcat.jim0.com域名访问的请求将转发给tomcat处理,所以此时工作还没结束,还得配置tomcat的访问目录。

编辑/etc/tomcat/server.xml配置文件,在</Host>结束标签下一行插入:

<Host name="tomcat.jim0.com" appBase="/var/www/tomcat.jim0.com">
    <!-- <Context path="" docBase="."/> -->
</Host>

配置工作完成,这时验证一下是否配置正确,分别在/var/www/php.jim0.com/var/www/tomcat.jim0.com新建一个index.php和一个index.jsp文件,再分别输入下面内容:

<?php phpinfo(); ?>

<% out.println("Hello World!"); %>

此时访问php.jim0.com将输出php信息,访问tomcat.jim0.com将显示hello world页面,访问不了?是不是没有打开80端口,看这里如何配置防火墙。再不行?那就自己再慢慢摸索一会吧。

安装Node.js和MongoDB,整合到Apache

Node.js真心方便快捷,于是乎这里也整合进来,你可以下载源码编译安装Node.js,但是我还是比较懒的,所以直接yum也是可以的,前提是你要配置epel第三方源

Centos/RHEL 7(x86_64)安装epel:

#rpm -ivh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm

Centos/RHEL 6(x86_64)安装epel:

#rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

我之前已经配置了epel源,这时直接yum安装nodejsnpm

#yum install nodejs npm --enablerepo=epel

使用node -vnpm -v可查看到相应安装版本

#node -v
v0.10.33
#npm -v
1.3.6

可以使用前面整合tomcat的方法整合nodejs和apache,假如某个node脚本监听3000端口,你可以映射某个域名到一个Apache虚拟主机,同时在虚拟主机配置代理转发到3000端口。

Nodejs一般喜欢配合NoSQL使用,这里安装Mongodb

#yum install mongodb mongodb-server

使用systemctl运行Mongodb:

#systemctl start mongod.service

停止Mongodb:

#systemctl stop mongod.service

设置Mongodb为自启动服务

#systemctl enable mongod.service

运行Mongodb客户端:

#mongo

好了,现在所有搭建配置工作都完成了!

标签: apache, nodejs, mysql, php, tomcat

已有 2 条评论

  1. Myu Myu

    大神,求个联系方式,apache部署node需要帮助

    1. littlejim littlejim

      FYI,
      http://www.jim0.com/server/nodejsproxy.html

添加新评论