MENU

Linux笔记11-LAMP服务架构

• 2019 年 05 月 11 日 • 92 人围观 • 笔记

[TOC]

1.什么是LAMP服务架构

LAMP即Linux操作系统+Apache+MySQL/MariaDB/MongoDB+PHP/Python/Perl

数据库可以单独使用一台服务器,但是Apache和PHP必须在同一台服务器使用

2.源码编译安装MySQL数据库

  1. 查看系统版本

    uname -a
  2. 安装常用命令及MySQL依赖包

    yum -y install wget vim xz lrzsz
    yum -y install libaio-devel numactl-devel
  3. 下载MySQL并解压到/usr/local/目录

    wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
  4. 进入/usr/local/目录并将解压后的文件重命名为mysql

    cd /usr/local/
    mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
  5. 创建MySQL数据库以及日志存放目录

    mkdir -p /data/mysql/{data,tmp,binlog,log}
    touch /data/mysql/log/mysqld-error.log
  6. 创建MySQL用户并给MySQL目录授权

    useradd mysql -s /sbin/nologin -M
    chown -R mysql.mysql /data/mysql
    chown -R mysql.mysql /usr/local/mysql
  7. 添加MySQL的环境变量

    export PATH=$PATH:/usr/local/mysql/bin 
    echo "export  PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
  8. 初始化MySQL数据库(若echo $?输出0,则初始化成功,否则初始化失败)

    mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql
    echo &?

参数含义

    • --initialize 生成随机密码,官方推荐使用
    • --initialize-insecure 生成空密码,root用户密码默认为空
    • --basedir MySQL的安装目录,一般放在/usr/local/mysql/
    • --datadir 数据库的存放路径, 放在比较安全的目录
    • --user 指定用户去初始化MySQL
    1. 创建MySQL配置文件

      vim /etc/my.cnf
      

    修改内容为

    [mysqld]
    port=3306
    user=mysql
    basedir=/usr/local/mysql
    datadir=/data/mysql/data
    socket=/tmp/mysql.sock
    symbolic-links=0
    [mysqld_safe]
    log-error=/data/mysql/log/mysqld-error.log
    pid-file=/data/mysql/mysqld.pid

    1. 启动MySQL、查看服务是否启动、端口是否监听

      mysqld_safe --user=mysql &
      ps -aux | grep mysql
      netstat -anput | grep mysql
      
    2. 使用MySQL自带启动脚本启动MySQL并加入开机自启动

      cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysql.server
      sed -i "45,~50s#basedir=#basedir=/usr/local/mysql#g"   /etc/init.d/mysql.server
      sed -i "45,~50s#datadir=#datadir=/data/mysql/data#g"  /etc/init.d/mysql.server
      
    确认一下我们是否修改成功
    
    grep -E '^datadir=|^basedir=' /etc/init.d/mysql.server
    
    若输出`basedir=/usr/local/mysql`
    `datadir=/data/mysql/data`则修改成功
    
    修改权限、启动服务、设置开机自启动
    
    chmod  +x /etc/init.d/mysql.server
    service mysql.server start
    chkconfig  mysql.server on
    
    1. 管理MySQL用户

      打开MySQL客户端
      
      mysql
      
    修改'root'@'localhost' 密码
    
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    
    创建'root'@'127.0.0.1' 
    
    CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root_password';
    
    给'root'@'127.0.0.1' 授权
    
    grant all privileges on *.* to 'root'@'127.0.0.1' ;
    
    刷新MySQL权限
    
    flush privileges;
    

    3.源码编译安装Apache服务

    1. 进入/usr/src/目录

      cd /usr/src/
      
    2. 下载依赖apr和apr-util,下载httpd软件包

      wget https://mirrors.cnnic.cn/apache/apr/apr-1.7.0.tar.gz
      wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
      wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.39.tar.gz
      

    文件在清华大学开源软件镜像站下载,若下载链接失效,前往网站寻找下载链接

    1. 解压下载的软件包

      ls
      tar -xvf apr-1.7.0.tar.gz
      tar -xvf apr-util-1.6.1.tar.gz
      tar -xvf httpd-2.4.39.tar.gz
      
    2. 设置apr安装路径,进行编译和编译安装

      cd apr-1.7.0
      ./configure --prefix=/usr/local/apr
      make && make install
      
    3. 设置apr-util安装路径,进行编译和编译安装

      cd ../apr-util-1.6.1
      yum install -y expat-devel
      ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
      make && make install
      
    4. 设置httpd安装路径和模块,进行编译和编译安装

      cd ../httpd-2.4.39
      yum groupinstall "Development Tools" "Server Platform Development"
      yum install -y pcre-devel
      yum install -y openssl-devel
      ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
      make && make install
      
    5. 进入/usr/local/apache2.4/目录,并查看文件内容

      cd /usr/local/apache2.4/
      ls
      
      • bin/httpd是启动Apache的文件
      • conf目录是配置文件所在目录
      • htdocs目录用于存放默认的网站页面
      • logs目录是存放日志的目录
      • modules目录是存放扩展模块的目录
    6. 添加httpd的全局变量

      vim /etc/profile.d/httpd.sh
      . /etc/profile.d/httpd.sh
      

    添加内容为export PATH=/usr/local/apache2.4/bin:$PATH

    1. 启动Apache服务

      apachectl start
      

    4.源码编译安装PHP5.6

    1. 安装依赖、扩展库、扩展模块

      yum -y install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel jemalloc jemalloc-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel
      
    2. 进入/usr/src/目录

      cd /usr/src/
      
    3. 下载PHP5.6版本源码编译安装包(暂时没有找到下载速度比较快的镜像站)

      wget http://cn2.php.net/get/php-5.6.40.tar.bz2/from/this/mirror
      
    4. 解压源码包

      tar -xvf mirror
      
    5. 进入php-5.6.40/目录并进行配置,若echo $?输出0,则配置成功,否则配置失败

      cd php-5.6.40
      ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
      echo $?
      
    6. 进行编译和编译安装,时间较长(与CPU和内存性能相关),若echo $?输出0,则编译安装成功,否则编译安装失败

      make && make install
      echo $?
      
    7. PHP核心二进制文件在/usr/local/php/bin/目录下,PHP与Apache的结合通过/usr/local/apache2.4/modules/libphp5.so文件实现的
    8. 添加PHP的全局变量

      vim /etc/profile.d/php.sh
      

    添加内容为export PATH=/usr/local/php/bin:$PATH

    source /etc/profile.d/php.sh
    
    1. 配置好全局变量后,可以使用php -m查看PHP加载的模块
    2. 运行/usr/local/php/bin/php | less时没有加载php.ini配置文件,需要复制php.ini-production配置文件到/usr/local/php/etc/目录下

      cp php.ini-production /usr/local/php/etc/php.ini
      

    5.源码编译安装PHP7.2

    1. 进入/usr/src/目录

      cd /usr/src/
      
    2. 下载解压PHP7.2.3源码包,并进入php-7.2.3/目录

      wget http://cn2.php.net/get/php-7.2.3.tar.gz/from/this/mirror
      tar -vxf mirror
      cd php-7.2.3
      
    3. 进行参数设置和扩展模块设置,若echo $?输出0,则配置成功,否则配置失败

      ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-apxs2=/usr/local/apache2.4/bin/apxs --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-icony-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
      echo $?
      
    4. 进行编译和编译安装,时间较长(与CPU和内存性能相关),若echo $?输出0,则编译安装成功,否则编译安装失败

      make && make install
      echo $?
      
    5. 将PHP7添加到全局变量

      vim /etc/profile.d/php7.sh
      

    添加内容为export PATH=/usr/local/php7/bin:$PATH

    source /etc/profile.d/php7.sh
    
    1. 在生成环境中PHP5和PHP7会产生冲突,如果不想使用PHP5或PHP7版本,可以在httpd.conf配置文件注释,大约在162行

      vim /usr/local/apache2.4/conf/httpd.conf
      

    #LoadModule php5_module modules/libphp5.so
    LoadModule php7_module modules/libphp7.so

    6.源码编译安装Python

    6.1源码编译安装Python3..6

    1. 安装Python依赖包

      yum -y install openssl-devel readline-devel unzip gcc-c++ wget
      
    2. 下载解压Python源码包,并进入Python-3.6.5/目录

      wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
      tar -vxf Python-3.6.5.tgz
      cd Python-3.6.5
      
    3. 进行编译配置,并编译安装

      ./configure --prefix=/usr/local/python36
      echo $?
      make && make install
      echo $?
      
    4. 配置pip命令,pip默认使用官方源,在国内速度较慢,需要更改为国内原

      vim /etc/pip.conf
      

    添加内容为

    [gloabl]
    index-url = http://pypi.douban.com/simple
    trusted-host = pypi.douban.com
    [list]
    format=columns

    6.2 安装Python扩展MySQL数据库

    1. Python默认调用SQLite数据库,不支持MySQL数据库,需要手动安装MySQL数据库并进行配置

      wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
      rpm -ivh mysql-community-release-el7-5.noarch.rpm
      yum -y install mysql mysql-server mysql-devel zlib-devel
      systemctl start mysqld.service
      
    2. 调用python/bin/virtualenv,在目录下生产python36env配置文件

      pip install virtualenv
      virtualenv ./python36env
      
    3. 进入python36env环境

      source python36env/bin/activate
      
    4. 使用pip命令安装MySQL数据库,安装后使用pip list命令查看是否安装成功

      pip install pymysql
      pip list
      
    5. 退出python36env环境,并编辑MySQL主配置文件

      deactivate
      vim /etc/my.cnf
      

    添加内容为

    [mysqld]
    default-storage-engine = innodb
    innodb_file_per_table
    collation-server = utf8_general_ci
    init-connect = 'SET NAMES utf8'
    character-set-server = utf8

    1. 为MySQL设置密码

      mysqladmin -uroot password 'new_password'
      

    7. Apache结合PHP操作

    1. 编辑httpd主配置文件

      vim /usr/local/apache2.4/conf/httpd.conf
      

    搜索ServerName,将ServerName www.example.com:80前的注释#删除

    1. 在浏览器输入虚拟机IP地址,若提示无法访问,则在防火墙添加80端口规则

      iptables -I INPUT -p tcp --dport 80 -j ACCEPT
      

    1. 在httpd.conf配置文件中搜索Require all denied,将denied改为granted
    2. 在httpd.conf配置文件中搜索AddType,在AddType application/x-gzip .gz .tgz下添加一行解析PHP代码AddType application/x-httpd-php .php
    3. 在httpd.conf配置文件中搜索IfModule dir_module,将

    <IfModule dir_module>
    DirectoryIndex index.html
    </IfModule>

    修改为

    <IfModule dir_module>

       `DirectoryIndex index.html index.php`

    </IfModule>

    1. 保存配置文件后,使用-t选项查看是否有语法错误

      /usr/local/apache2.4/bin/apachectl -t
      /usr/local/apache2.4/bin/apachectl graceful
      
    2. 若更改完配置文件仍无法解析PHP,在/usr/local/apache2.4/htdocs/目录下创建一个index.php文件

      vim /usr/local/apache2.4/htdocs/index.php
      

    在文件中写入

    <?php
    phpinfo();

    1. 问题:在浏览器打开IP/test.php后,浏览器弹出文件下载窗口

    解决方法:编辑httpd主配置文件

    vim /usr/local/apache2.4/conf/httpd.conf
    

    在文件末尾添加内容为

    AddHandler php7-script php
    AddType application/x-httpd-php .php .php7
    AddType application/x-httpd-php-source .phps

    检查是否有语法错误

    /usr/local/apache2.4/bin/apachectl -t
    /usr/local/apache2.4/bin/apachectl graceful
    

    再次进入IP/index.php解析成功

    8.Apache默认虚拟主机

    1. 打开修改httpd.conf配置文件来打开虚拟主机配置文件

      vim /usr/local/apache2.4/conf/httpd.conf
      

    搜索extra,将#Include conf/extra/httpd-vhosts.conf前的注释去掉

    1. 打开httpd-vhost.conf配置文件,定义多个虚拟主机

      vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
      

    修改文件内容,每个VirtualHost *:80代表一个虚拟主机

    <VirtualHost *:80>

       `ServerAdmin admin@leeyiding.com`
       `DocumentRoot "/data/www/leeyd_blog"`
       `ServerName leeyiding.com`
       `ServerAlias www.leeyiding.com`
       `ErrorLog "/data/logs/leeyiding.com-error_log"`
       `CustomLog "/data/logs/leeyiding.com-access_log" common`

    </VirtualHost>

    参数含义:

    • ServerAdmin 定义管理员邮箱
    • DocumentRoot 定义网站根目录路径
    • ServerName 网站域名
    • ServerAlias 网站别名,可以是多个域名
    • ErrorLog 网站错误日志路径
    • CustomLog 网站访问日志路径
    1. 修改完配置文件后,在对应目录下创建相应的目录

      mkdir /data/www/
      mkdir /data/www/leeyd_blog
      mkdir /data/www/www.leeyiding.com
      mkdir /data/logs/
      
    2. 在对应站点创建index.php文件,并在每个站点的index.php文件中定义站点的名字

      cd /data/www/
      vim leeyd_blog/index.php
      

    添加内容为

    <?php
    echo "LeeYD · Blog";

    1. 确认无误后重新加载配置文件

      /usr/local/apache2.4/bin/apachectl -t
      /usr/local/apache2.4/bin/apachectl graceful
      
    2. 浏览器访问IP:80 ,网页成功显示LeeYD · Blog

    版权属于:LeeYD · Blog
    本文标题:Linux笔记11-LAMP服务架构
    本文链接:https://www.leeyiding.com/archives/25/
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议
    若转载本文,请标明出处并告知本人

    最后编辑于: 2020 年 01 月 20 日
    返回文章列表 文章二维码 打赏
    本页链接的二维码
    打赏二维码