CentOS 7 下LAMP实现及基于https的虚拟化主机

系统环境:

CentOS 7
Apache 2.4
php 5.4
MariaDB 5.5

项目需求:

创建3个虚拟主机,分别架设phpMyadmin,wordpress,Discuz

其中phpMyadmin提供https服务.

一、使用yum安装环境所需组件

  httpd,php,php-mysql,mariadb-server

  # yum install httpd php php-mysql mariadb-server

二、关闭SELINUX并配置防火墙

  1.为了测试方便,先关闭selinux

    临时关闭:

    setenforce 0

    永久关闭:

    vim /etc/sysconfig/selinux
    SELINUX=disabled

  2.在CentOS 7自带防火墙中添加80,443,3306端口

    查看firewall运行状态

    # firewall-cmd --state

    添加端口

    # firewall-cmd --add-port=80/tcp --permanent
    # firewall-cmd --add-port=443/tcp --permanent
    # firewall-cmd --add-port=3306/tcp --permanent

    重载firewall配置

    # firewall-cmd --reload

    查看已有规则

    # iptables -L -n

三、测试一下各软件是否正常

  1.启动httpd并测试访问:

    # systemctl start httpd

    没什么意外的话,此时浏览器访问测试页应该是成功的.

  2.测试数据库

    启动MariaDB

    # systemctl start mariadb

    能进入MariaDB命令行即可

    # mysql

  3.查看php版本,我的版本是5.4.16

    # php -v

四、配置Apache

  1.新建所需文件夹

    在/web/vhosts下创建三个虚拟主机分别需要的文件夹 ,pma,wp,dz

    # mkdir -p /web/vhosts/{pma,wp,dz}

  2.赋予Apache用户对整个/web目录的访问权:

    # chown -R apache:apache /web

  3.创建测试页面

    # vim /web/vhosts/pma/index.php

    内容为: 

 <?php
    echo "this is pma"
    ?>
    # vim /web/vhosts/wp/index.php
    内容为:
    <?php
    echo "this is wp"
    ?>
    # vim /web/vhosts/dz/index.php
    内容为:
    <?php
    echo "this is dz"
    ?>

  4.取消欢迎页,否则会有干扰

    # mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak

  5.添加三个虚拟主机

    创建一个叫vhosts.conf配置文件

    # vim /etc/httpd/conf.d/vhosts.conf

    内容:

  <VirtualHost *:80>
    DocumentRoot /web/vhosts/pma
    ServerName pma.buybybuy.com
    ErrorLog logs/pma.err
    CustomLog logs/pma.access combined
    </VirtualHost>
    <Directory "/web/vhosts/pma">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    <VirtualHost *:80>
    DocumentRoot /web/vhosts/wp
    ServerName wp.buybybuy.com
    ErrorLog logs/wp.err
    CustomLog logs/wp.access combined
    </VirtualHost>
    <Directory "/web/vhosts/wp">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    <VirtualHost *:80>
    DocumentRoot /web/vhosts/dz
    ServerName dz.buybybuy.com
    ErrorLog logs/dz.err
    CustomLog logs/dz.access combined
    </VirtualHost>
    <Directory "/web/vhosts/dz">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>

  6.重新载入httpd配置:

    # systemctl reload httpd

  7.测试一下三个虚拟主机:

    

    

  测试成功!

五、配置mariaDB

  1.刚安装完mariaDB后先初始化安全设置

    运行安全初始化脚本

    # /usr/bin/mysql_secure_installation

    以下给出我自己的选项作为参考

    1)是否设置root用户密码? (是)

    2)是否删除匿名用户? (是)

    3)禁止root用户远程登录吗? (否,但如果生产环境推荐禁止)

    4)要删除测试数据库吗? (否,如果将来有测试需求就保留)

    5)重载授权表吗? (是,刚刚的设置立即生效)

  2.附上root用户改密码命令

 # mysql
    SET PASSWORD FOR 'root'@'localhost'=PASSWORD('123456');
    SET PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('123456');

六.安装程序包

  1.安装phpmyadmin,Discuz,wordpress

    下载安装包到家目录

    可以用wget或者使用ftp工具,我这里因为用了Xshell连接服务器,所以直接使用了配套的Xftp将控制机中的安装包直接扔进家目录.

  2.确保已安装必要的压缩/解压缩工具

    我这里缺少bzip2,zip和unzip,所以

    # yum -y install bzip2 zip unzip

    分别解压缩  

# unzip Discuz_X3.2_SC_UTF8.zip -d Discuz_X3.2_SC_UTF8
    # tar -xf wordpress-4.5.3-zh_CN.tar.gz
    # tar -xf phpMyAdmin-4.4.15.8-all-languages.tar.bz2

  3.分别复制到定义好的虚拟主机目录下,注意只复制需要的文档   

 # cp -a phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/
    # cp -a wordpress/* /web/vhosts/wp/
    # cp -a Discuz_X3.2_SC_UTF8/upload/* /web/vhosts/dz/

七、调试网站

  1.配置phpmyadmin

    #cd /web/vhosts/pma

    找到默认配置文件并重命名为标准名称

    # cp config.sample.inc.php config.inc.php

    编辑配置文件
    大概17行找到

    $cfg['blowfish_secret'] = '';

    这里需要加入一个随机字串,可以在bash下用以下命令生成:
    # tr -d 'a-zA-Z0-9' < /dev/urandom | head -30 | md5sum

    比如生成的字串为

    e2d8e1132dc737b3dc1f05cd44c0cc9e

    将生成的字串加入到上面的参数的引号中.如图:

    保存退出.

    访问pma.buybybuy.com的时候发现程序报错:

    意思是需要mbstring模块支持,mbstring是一个多语言包.

    所以要安装这个包

    # yum install php-mbstring

    重载httpd以便配置生效

    # systemctl reload httpd

    重新访问pma.buybybuy.com,页面成功打开

    此时可以使用之前配置的mysql的root用户登陆.

  2.创建所需数据库

    为了安装wordpress和Discuz,可以先使用phpMyadmin来为他们创建数据库.

    新增->填写数据库名称->选择排序编码->建立

    另外我们希望每个网站可以使用单独的数据库用户进行访问,所以这里为每个数据库创建自己的用户并绑定到对应的数据库.

    回到首页->用户->添加用户

    为了方便,我将数据库名与对应的用户名保持一致,可以按下图来创建

    

    因为已经提前创建数据库,所以红色下划线的命令会跳过创建数据库的步骤,后面蓝色下划线的命令会把用户绑定给这个数据库.

  3.配置wordpress

    进入wp目录
    # cd /web/vhosts/wp
    复制一个配置文件并重命名为配置文件的标准名称
    # cp wp-config-sample.php wp-config.php
    编辑配置文件
    # vim /web/vhosts/wp/wp-config.php

    修改对应的值.

    访问wp.buybybuy.com和dz.buybybuy.com,会显示安装界面.分别使用之前设定的参数安装即可.

八、给pma.buybybuy.com配置https

  1.确保OpenSSL已安装,因为要使用OpenSSL生成自签名证书

    # httpd -M | grep ssl

    如果没有则安装

    # yum install mod_ssl openssl

  2.配置CA服务器

    我的方法是先配置一台CA服务器 (CentOS A),之后再让当前这台服务器(CentOS B)向CentOS A申请认证.

  3.配置CA服务器(CentOS A)

    3.1 初始化CA服务,创建所需要的文件

      # cd /etc/pki/CA/
      # touch index.txt //创建索引文件
      # echo 01 > serial //创建序列号文件

    3.2 CA自签证书

      生成私钥

      # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

      使用私钥生成签名证书

      # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

  4.申请证书(CentOS B):

    4.1 创建一个存放证书的目录
      # mkdir /etc/httpd/ssl
      # cd /etc/httpd/ssl

    4.2 生成秘钥

      # (umask 007;openssl genrsa -out httpd.key 1024)

    4.3 生成请求文件

      # openssl req -new -key httpd.key -out httpd.csr

    4.4 填表,按照自己情况写

      Country Name (2 letter code) [XX]:CN
      State or Province Name (full name) []:Beijing
      Locality Name (eg, city) [Default City]:Beijing
      Organization Name (eg, company) [Default Company Ltd]:Quintin Ltd
      Organizational Unit Name (eg, section) []:Ops
      Common Name (eg, your name or your server's hostname) []:pma.buybybuy.com
      Email Address []:admin@buybybuy.com

    4.5 把生成的文件发送到CA服务器 CentOS A,这里我使用scp命令:

      # scp httpd.csr root@192.168.3.67:/tmp/

    4.6 按照提示操作成功之后,httpd.csr 应该已经在CentOS A的/tmp/目录中.

  5.签署证书(CentOS A):

    5.1 签署,有效期十年
      # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/pma.buybybuy.com.crt -days 3650
    5.2 将生成的crt传回CentOS B
      # scp /etc/pki/CA/certs/pma.buybybuy.com.crt root@192.168.3.77:/etc/httpd/ssl/
    5.3 按照提示操作成功之后,pma.buybybuy.com.crt 应该已经在CentOS B的/etc/httpd/ssl/目录中.

  6.配置ssl(CentOS B):

    6.1 事先备份

      # cd /etc/httpd/conf.d/
      # cp ssl.conf{,.bak}

    6.2 编辑ssl.conf

      # vim ssl.conf

      以下为修改项

      <VirtualHost _default_:443>
      =>
      <VirtualHost *:443>

      基本设置

      DocumentRoot "/web/vhosts/pma"
      ServerName pma.buybybuy.com:443

      证书位置

      SSLCertificateFile /etc/pki/tls/certs/localhost.crt
      =>
      SSLCertificateFile /etc/httpd/ssl/pma.buybybuy.com.crt

      私钥位置

      SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
      =>
      SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

      保存退出.

    6.3 检查配置文件语法错误:

      # httpd -t

    6.4 重启httpd:

      # systemctl restart httpd

    6.5 查看443端口是否已开启:

      # ss -tnl

    6.6 去浏览器访问格式:

      https://pma.buybybuy.com

      看见https字样就对了.但会提示无效,添加信任即可. 

以上所述是小编给大家介绍的CentOS 7 下LAMP实现及基于https的虚拟化主机,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 微信小程序 后台https域名绑定和免费的https证书申请详解

    微信小程序 后台https域名绑定和免费的https证书申请详解 微信小程序在11月3号发布了,这是一个全新的生态,没有赶上微信公众号红利的开发者,运营者可别错过这趟车了. 但是微信的后台需要全https,之前我还不相信,后台注册了后进后台才发现,服务器配置如下图 从后台的服务器配置可以看出 (1)微信小程序后台只支持https,如果公司后台还没支持https的,赶紧要升级了 (2)API请求,文件上传,socket 文件上传和下载,必须是在后台配置的,否则微信不允许你下载       另外,h

  • java 出现问题javax.servlet.http.HttpServlet was not found解决方法

    javax.servlet.http.HttpServlet was not found:          最近做项目发现这个javax.servlet.http.HttpServlet was not found错误问题,经过上网查询解决了,这里记录下,可能能帮助到有需要的朋友. 1.我们遇到的错误显示如下: 2.我们右击有错误提示的文件夹,如下: 3.我们点击"配置构建路径",如下: 4.我们再点击"添加库",如下: 5.我们选中上图中标出的选项,再点击下一步

  • java发送HttpClient请求及接收请求结果过程的简单实例

    一. 1.写一个HttpRequestUtils工具类,包括post请求和get请求 package com.brainlong.framework.util.httpclient; import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.HttpResponse; import org.apache.http.client.methods.Htt

  • php发送http请求的常用方法分析

    本文实例讲述了php发送http请求的常用方法.分享给大家供大家参考,具体如下: http请求有get,post. php发送http请求有三种方式[我所知道的有三种,有其他的告诉我]. 1. file_get_contents();详情见:http://www.jb51.net/article/41833.htm 2. curl发送请求. 3. fsocket发送. 下面说使用curl发送. 首先环境需要配置好curl组件. 在windows中让php支持curl比较简单: 在php.ini中

  • 网络传输协议(http协议)

    概述:指服务器和客户端间进行通信时的约束和规范,客户端与服务端的数据交互并不是杂乱无章的,需要遵照(基于)一定的规范进行 常见的协议: a) HTTP.HTTPS 超文本传输协议 b) FTP 文件传输协议 c) SMTP 简单邮件传输协议 本文主要介绍http超文本传输协议. 1.HTTP协议 即超文本传输协议,网站是基于HTTP协议的,例如网站的图片.CSS.JS等都是基于HTTP协议进行传输的.HTTP协议是由从客户机到服务器的请求(Request)和从服务器到客户机的响应(Respons

  • php实现的http请求封装示例

    本文实例讲述了php的http请求封装.分享给大家供大家参考,具体如下: /** * 发送HTTP请求方法,目前只支持CURL发送请求 * @param string $url 请求URL * @param array $params 请求参数 * @param string $method 请求方法GET/POST * @return array $data 响应数据 */ protected function http($url, $params, $method = 'GET', $hea

  • CentOS 7.2配置Apache服务httpd(上)

    一.Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性(尽管不断有新的漏洞被发现,但由于其开放源代码的特点,漏洞总能被很快修补.因此总合来说,其安全性还是相当高的.).被广泛使用,是最流行的Web服务器软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 软件图标 二.安装Apache httpd 安装httpd以配置

  • java 发送带Basic Auth认证的http post请求实例代码

    构造http header private static final String URL = "url"; private static final String APP_KEY = "key"; private static final String SECRET_KEY = "secret"; /** * 构造Basic Auth认证头信息 * * @return */ private String getHeader() { String

  • CentOS 7.2配置Apache服务httpd(下)

    一.Perl + mod_perl 安装mod_perl使Perl脚本速度快 [1] 安装mod_perl # 从EPEL安装 [root@linuxprobe ~]# yum --enablerepo=epel -y install mod_perl [2] 配置PerlRun模式,总是将Perl解释器放在RAM上. [root@linuxprobe ~]# vi /etc/httpd/conf.d/perl.conf # line 15: 取消注释 ( check codes and out

  • HTTP 错误 500.19 - Internal Server Error解决办法详解

    HTTP 错误 500.19 - Internal Server Error 最近做项目出现了这个错误,经过同事之间的讨论未能解决,之后百度一下找到了解决方法,这里就说下希望大家遇到这种错误可以顺利解决. 无法访问请求的页面,因为该页的相关配置数据无效.如下图:  解决方法,到站点目录的属性,安全标签,添加用户(Everyone),并给修改权限: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • python自带的http模块详解

    挺久没写博客了,因为博主开始了今年另一段美好的实习经历,学习加做项目,时间已排满:很感谢今年这两段经历,让我接触了golang和python,学习不同语言,可以跳出之前学习c/c++思维的限制,学习golang和python的优秀特性以及了解在不同的场景,适用不同的语言:而之前学习linux和c/c++,也使我很快就上手golang和python; 我学习的习惯,除了学习如何使用,还喜欢研究源码,学习运行机制,这样用起来才会得心应手或者说,使用这些语言或框架,就和平时吃饭睡觉一样,非常自然:因为

  • PHP模拟http请求的方法详解

    本文实例讲述了PHP模拟http请求的方法.分享给大家供大家参考,具体如下: 方法一:利用php的socket编程来直接给接口发送数据来模拟post的操作. 建立两个文件post.php,getpost.php post.php内容如下: <?php $flag = 0; $params = ''; $errno = ''; $errstr = ''; //要post的数据 $argv = array( 'var1'=>'abc', 'var2'=>'how are you , my f

  • java获取http请求的Header和Body的简单方法

    在http请求中,有Header和Body之分,读取header使用request.getHeader("..."); 读取Body使用request.getReader(),但getReader获取的是BufferedReader,需要把它转换成字符串,下面是转换的方法. public class TestController { @RequestMapping("/a") protected void doPost(HttpServletRequest requ

  • HTTP基本认证(Basic Authentication)的JAVA实例代码

    大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证. 下面来看看一看这个认证的工作过程: 第一步: 客户端发送http request 给服务器,服务器验证该用户是否已经登录验证过了,如果没有的话, 服务器会返回一个401 Unauthozied给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息. 如下图. 第三步: 服务器将Authorizati

随机推荐