• LAMP环境搭建,防火墙开启,数据库挂载在逻辑卷


    具体要求:

    1、 源码部署 LAMP 环境, 和生产保持一致 2、 静态资源文件同步生产环境 3、 需要同时部署 2 个 web 网站

    步骤:

    一、 需要的安装包、 提前准备好。

    apr-util-1.5.4.tar.bz2 httpd-2.4.12.tar.bz2 php-5.6.11.tar.xz mysql-5.6.25.tar.gz

    二、 更改主机名和 IP 地址, 把主机名和 ip 地址绑定在一块, 关闭防火墙和 selinux

    三、 安装前环境准备

    在自己的虚拟机上清空环境, 把 mysql 和 httpd 等和此次 LAMP 环境的搭建不相关的软件 清空, 目的是为了后面相同的软件版本不同, 会造成冲突, 为了减少不必要的麻烦, 我们提 前清空这些软件。 由于整个环境会涉及比较多的依赖关系包, 所以我们先将一些依赖包装上。(根据不同的 环境可能不仅限于这些包。

    清空环境、 安装相应的软件包
    # yum groupinstall "Development tools" -y 开发工具包
    # yum groupinstall "Desktop Platform Development" -y 桌面开发工具包(图
    形化相关包)
    # yum install cmake
    # yum install ncurses-devel
    # yum -y install pcre-devel
    准备相应的软件: 将所需要的软件包放到虚拟机里。 自己创建一个目录, 放在里面。

    准备相应的软件: 将所需要的软件包放到虚拟机里。 自己创建一个目录, 放在里面。

    LAMP环境的搭建:

    1、 安装 MYSQL:

    1.1、官方网站下载相应的软件包

    mysql-5.6.25.tar.gz

    1.2、解压软件包

    [root@jia soft]# tar xf mysql-5.6.25 mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz mysql-5.6.25.tar.gz

    [root@jia soft]# tar xf mysql-5.6.25 mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz mysql-5.6.25.tar.gz

    [root@jia soft]# tar xf mysql-5.6.25.tar.gz -C /usr/src/

    [root@jia soft]# cd /usr/src/mysql-5.6.25/

    [root@jia mysql-5.6.25]# ls

    3、安装

    前期工作:

    1) 创建相应的用户。

    [root@jia mysql-5.6.25]# useradd mysql -r -s /sbin/nologin

    [root@jia mysql-5.6.25]# id mysql uid=496(mysql) gid=493(mysql) groups=493(mysql)

    2) 根据需求配置

    [root@jia mysql-5.6.25]# vim cmake.sh

    [root@jia mysql-5.6.25]# chmod +x cmake.sh

    [root@jia mysql-5.6.25]# ./cmake.sh

    不要直接./configure 而是要根据需求写出一个 cmake.sh 的脚本文件来执行它。 在执行 之前对脚本进行一个权限设置, 让它有执行权限, 指令: chmod +x cmake.sh, 再去执行 它指令: ./cmake.sh

    如若在执行 cmake.sh 的脚本时有报错, 要分析原因, 是不是还有依赖关系的软件包没 有安装, 或者脚本写错还是别的什么原因, 分析问题后再去解决。

    3) 编译, 安装 [root@jia mysql-5.6.25]# make && make install

    后期配置

    初始化 mysql 数据库

    [root@jia mysql-5.6.25]# cd /usr/local/mysql/

    [root@jia mysql]# scripts/mysql_install_db --user=mysql

    Installing MySQL system tables...2018-09-18 14:29:58 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timesta

    [root@jia mysql]# ll data/

    进入到 mysql 的安装路径里, 执行指令: scripts/mysql_install_db --user=mysql 切换 到 mysql 的数据目录里会有一些文档出来, 如: ibdata1、 ib_logfile0、 ib_logfile1、 mysql、performance_schema、 test 这样就说明初始化成功了。

    1) 把 mysql 的启动脚本, 拷贝到/etc/init.d 这个目录里

    [root@jia mysql]# cd /usr/local/mysql/

    [root@jia mysql]# ls

    [root@jia mysql]# cp support-files/mysql.server /etc/init.d/mysql25 源码安装的启动脚本和我们平时启动 mysql 的启动脚本不一样, 我们需要找 mysql 的启 动脚本, 把它的启动脚本拷贝到, 系统的启动脚本中。

    2) 启动 mysql 服务

    [root@jia mysql]# cp support-files/mysql.server /etc/init.d/mysql25 [root@jia mysql]# service mysql25 start Starting MySQL. SUCCESS!

    1) 在启动服务时, 可能会有报错, 如以下内容 : Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/lamp.itcast.cc.pid). 分 析 : 根 据 mysql 的 错 误 日 志 来 分 析 问 题 。 在 错 误 日 志 里 发 现 /usr/local/mysql/bin/mysqld: Can't create/write to file '/tmp/ibvzrCcS' (Errcode: 13 - Permission denied) 解决: 考虑可能是/tmp 目录权限不够导致, 查看/tmp 的目录权限, 给/tmp/目录进行 权限修改, 给它全部权限 777。

    2) 再次启动服务, 如若没有报错怎成功

    3) 给 mysql 数据库的管理员 root 设置密码。

    [root@jia mysql]# ./bin/mysqladmin -u root -h jia password '123'

    4) 登录 mysql 的数据库

    [root@jia mysql]# /usr/local/mysql/bin/mysql -uroot -p123 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or g.

    [root@jia mysql]# source /etc/profile

    [root@jia mysql]# . /etc/profile

    登录之前把 mysql 的环境变量设置一下, 添加到系统的环境变量中

    2、 Apache 的安装:

    1、 在安装 Apache 之前先安装一些 Apache 的依赖包 apr(官方文档查询得知)。

    安装 apr 软件:

    [root@jia soft]tar xf apr-1.5.2.tar.bz2 -C /usr/src/

    [root@jia apr-1.5.2]cd /usr/src/apr-1.5.2

    [root@jia apr-1.5.2] ./configure

    [root@jia apr-1.5.2]make && make instaall

    安装 apr-util 软件:

    [root@jia soft]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/src/

    [root@jia soft]# cd /usr/src/apr-util-1.5.4/

    [root@jia apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config

    [root@jia apr-util-1.5.4]# make && make install

    2、 将库文件的指定安装路径加入到 ldconfig 命令的搜索列表 [root@jia apr-util-1.5.4]# echo "/usr/local/apr/lib/" >> /etc/ld.so.conf

    [root@jia apr-util-1.5.4]# ldconfig

    编译安装 httpd:

    [root@jia soft]# tar xf httpd-2.4.12.tar.bz2

    [root@jia soft]# cd httpd-2.4.12

    [root@jia httpd-2.4.12]# vim apache.sh

    [root@jia httpd-2.4.12]# chmod +x apache.sh 确认安装成功 [root@jia httpd-2.4.12]# ls /usr/local/apache2/

    bin build cgi-bin conf error htdocs icons include logs man manual modules

    3、 安装 php:

    解压: [root@jia httpd-2.4.12]# cd /soft/

    [root@jia soft]# tar xf php-5.6.11.tar.xz

    配置:

    [root@jia soft]# cd php-5.6.11

    [root@jia php-5.6.11]# vim php.sh

    [root@jia php-5.6.11]# chmod +x php.sh

    [root@jia php-5.6.11]# ./php.sh

    报错:

    configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/ [root@jia php-5.6.11]# make && make install make: *** No targets specified and no makefile found. Stop.

    解决:

    [root@jia php-5.6.11]# yum -y install libcurl-devel

    编译、 安装:

    [root@jia php-5.6.11]# make && make install

    确认安装 PHP 成功:

    [root@jia php-5.6.11]# ls /usr/local/apache2/modules/libphp5.so /usr/local/apache2/modules/libphp5.so

    对 apache 和 php php 和本地数据库之间建立联系

    3.1、 配置 apache 和 PhP 之间的联系

    1) 在 apache 的主配置文件中修改以下内容

    [root@jia ~]# vim /usr/local/apache2/conf/httpd.conf

    //语言配置 LoadModule negotiation_module modules/mod_negotiation.so 此模块打开# 注释 Include conf/extra/httpd-languages.conf 打开此选项 //打开对虚拟主机的支持 Include conf/extra/httpd-vhosts.conf 打开#注释 //加载 php 模块解析 php 页面,添加两行, 告诉 httpd 把.php 文件交给模块 去编译 LoadModule php5_module modules/libphp5.so 找到这一句, 在这 句下面加上两句 //添加以下两行意思是以.php 结尾的文件都认为是 php 程序文件, 注意两句 话的.php 前面都是有一个空格的 AddHandler php5-script .php AddType text/html .php

    3.2、 打开 apache 的子配置文件

    [root@jia~]#vim /usr/local/apache2/conf/extra/httpd-languages.conf DefaultLanguage zh-CN 打开#注释 LanguagePriority zh-CN en ca cs da 添加 zh-CN

    3.3、 php 支持连接本地数据

    [root@jia ~]# cd /soft/php-5.6.11

    [root@jia php-5.6.11]# cp php.ini-production /usr/local/lib/php.ini [root@jia php-5.6.11]# vim /usr/local/lib/php.ini

    [MySQL]
    mysql.default_port = 3306 改成对应的 mysql 的端口
    mysql.default_socket = /tmp/mysql.sock 对应的 socket 文件地址
    [MySQLi]
    mysqli.default_port = 3306
    mysqli.default_socket = /tmp/mysql.sock
    3.4、 测试是否支持 PHP

    [root@jia php-5.6.11]# cd /usr/local/apache2/htdocs/

    [root@jia htdocs]# ls

    index.html

    [root@jia htdocs]# rm -f index.html

    [root@jia htdocs]# vim /usr/local/apache2/htdocs/index.php [root@jia htdocs]# cat /usr/local/apache2/htdocs/index.php

    <?php phpinfo(); ?>

    3.5、 启动 apache

    [root@jia docs]# service apache restart AH00112:Warning:DocumentRoot[/usr/local/apache2/docs/dummy-host.example.com] does not exist AH00112:Warning:DocumentRoot[/usr/local/apache2/docs/dummy-host2.example.com] does not exist AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.5.2. Set the 'ServerName' directive globally to suppress this message

    解决办法:

    在apacehe 的主配置文件中修改之前打开对虚拟主机的注释, 重新添加上#注释, 此操作会 把前两个问题解决掉; 对于最后一个问题需要在 apache 的主配置文件中修改#ServerName www.example.com:80 修改为自己主机名和 ip 绑定的 ip 地址, 即: ServerName 192.168.5.2:80 并且前面的注释 # 打开, 再次重启 apache 就不会报错了。

    3.6、 测试验证:

    在浏览器里输入: http://192.168.5.2.就会看到 PHP 的测试页 当最测试的时候在网页上出现, Forbidden You don't have permission to access / on this server.

    解决办法:

    需要修改以下内容:

    [root@lamp myblog]# /usr/local/apache2/conf/httpd.conf

    <Directory /> 目录
    AllowOverride none
    # Require all denied
    Require all granted 要求所有人都同意
    </Directory>

     

    根据需求部署 web 应用:

    1、 创建相应的数据目录

    [root@jia ~]# mkdir /www/{admin,myblog} -p

    [root@jia ~]# cd /www/

    [root@jia www]# ls admin myblog

    2、 将两个网站相关的程序文件解压拷贝到指定的目录里

    [root@jia soft]# unzip phpMyAdmin-4.4.11-all-languages.zip [root@jia soft]# cp -a phpMyAdmin-4.4.11-all-languages/* /www/admin/

    [root@jia soft]# tar xf wordpress-4.7.3-zh_CN.tar.gz

    [root@jia soft]# cp -a wordpress/* /www/myblog/

    3、 修改网站数据所在目录的属主和属组

    [root@jia soft]# chown -R daemon. /www/

    [root@jia soft]# ll /www/

    4、 配置虚拟机

    在主配置文件进行修改:

    # Real-time info on requests and configuration #Include conf/extra/httpd-info.conf # Virtual hosts

    Include conf/extra/httpd-vhosts.conf 打开对虚拟主机的支持 打开#注释 在配置文件的最后面, 多添加以下内容:



    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/www/admin"
    ServerName www.admin.cc 要发布的网站
    ServerAlias www.admin.cc
    ErrorLog "logs/admin-error_log" 错误日志
    CustomLog "logs/admin-access_log" common
    </VirtualHost>
    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com5修改每个网站各自连接 mysql 数据库的配置文件
    DocumentRoot "/www/myblog"
    ServerName www.myblog.net
    ErrorLog "logs/myblog-error_log"
    CustomLog "logs/myblog-access_log" common
    </VirtualHost>

    5、 修改每个网站各自连接 mysql 数据库的配置文件

    1) mysql 的 web 管理网站 phpMyAdmin 相关文件

    [root@jia extra]# cd /www/admin/

    [root@jia admin]# cp config.sample.inc.php config.inc.php

    2) myblog 网站 wordpress 进入到 myblog 数据库里创建一个 myblog 库

    [root@jia myblog]# cd /usr/local/apache2/conf/extra/

    [root@jia myblog]# mysql -uroot -p123 mysql> create database myblog; Query OK, 1 row affected (0.00 sec)

    [root@jia myblog]#cp wp-config-sample.php wp-config.php [root@jia myblog]#vim wp-config.php

    ...
    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
    /** WordPress 数据库的名称 */
    define('DB_NAME', 'myblog');
    /** MySQL 数据库用户名 */
    define('DB_USER', 'root');
    /** MySQL 数据库密码 */
    define('DB_PASSWORD', '123');
    /** MySQL 主机 */
    define('DB_HOST', '127.0.0.1');
    /** 创建数据表时默认的文字编码 */
    define('DB_CHARSET', 'utf8');
    /** 数据库整理类型。 如不确定请勿更改 */
    define('DB_COLLATE', '');

    6、 启动 apache 服务

    [root@jia myblog]# service apache restart [root@jia myblog]# netstat -nltp |grep 80

     

    7、测试验证:

    在 windows 下输入 ip 地址, 或者网址, 如果不行在 linux 下进行测试

     

    迁移 mysql 数据库:

    1) 添加一块硬盘

    [root@jia ~]# lsblk

    2) 创建物理卷

    [root@jia ~]# pvcreate /dev/sdb

    Physical volume "/dev/sdb" successfully created

    3) 创建卷组

    [root@jia ~]# vgcreate vg 01 /dev/sdb

    4) 创建逻辑卷

    [root@jia ~]# lvcreate -n lv-mysql -l 100%free vg01

    5) 格式化 ext4 文件系统

    [root@jia ~]# mkfs.ext4 /dev/vg01/lv-mysql

    6) 把逻辑卷挂载到 u01 下

    a、创建一个空的挂载点/u01

    [root@jia init.d]# umount /u01/

    b 、把/dev/vg01/lv-mysql 挂载到/u01 下

    [root@jia ~]# mount /dev/vg01/lv-mysql /u01/

    [root@jia ~]# lsblk

    7) 停止前端的 web 服务

    [root@jia init.d]# service apache start

    [root@jia init.d]# service mysql25 start

    Starting MySQL. SUCCESS!

    8) 把 mysql 的数据库本份一份到另一台备份机上

    [root@jia init.d]# rsync -av/usr/local/mysql/192.168.5.1: /myysql-backup

    9) 将 mysql 数据库里的文件同步到逻辑卷上, 即/u01 目录里

    [root@jia init.d]# rsync -av/usr/local/mysql/ /u01

    检查同步是否完成:

    [root@jia init.d]# du -sh /u01

    10) 卸载逻辑卷

    [root@jia init.d]# umount /u01/

    11) 删除 MYSQL 数据库里的所有文件

    [root@jia init.d]# rm -rf /usr/local/mysql/*

    12) 挂载逻辑卷到 mysql 的安装目录里

    [root@jia init.d]#mount /dev/vg01/lv-mysql /usr/local/mysql/

    13) 启动数据库, 启动 web 服务

    [root@jia init.d]#service apache start

    [root@jia init.d]#service mysql25 start

    14) 测试验证

    在浏览器输入 ip 地址, 或者网站即可访问

    开启防火墙, 看是否能够访问网页

    [root@jia ~]#service iptables start

    在网页访问测试, 访问不了

    添加防火墙规则

    开启防火墙后, 默认规则, 额外添加下面的规则

    [root@jia ~]# iptables -I INPUT -p tcp --dport 80 -jACCEPT

    再次在网页进行访问 访问成功

    坚持这种真诚,那么总归能遇到良人。
  • 相关阅读:
    STM32 HAL库I2C的使用以AT24C02为例
    思科ASA防火墙实现双机热备
    Kafka笔记:基础概念和原理 山上下了雪
    OpenCV(一)之图片&视频的加载和显示
    MySql数据库的基本语法
    python 将二进制文件转为文本文件
    Windows安装MySQL及常见报错处理
    Laravel实现mysql的OR
    Laravel实现FIND_IN_SET
    Laravel打印完整SQL
  • 原文地址:https://www.cnblogs.com/jiaxiaozia/p/12270839.html
Copyright © 2020-2023  润新知