基于LAMP的架构实现

LAMP介绍

??L:Linux
??A:Apache(Httpd)
??M:Mysql、Mariadb
??M:Memcached
??P:PHP、Perl、Python

LAMP工作原理

  1. 当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;
  2. 当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源有web服务器返回客户端;

PHP常见参数

??max_execution_time= 30 最长执行时间30s
??memory_limit=128M 生产不够,可调大
??display_errors=off 调试使用,不要打开,否则可能暴露重要信息
??display_startup_errors=off 建议关闭
??post_max_size=8M 最大上传数据大小,生产可能调大,比下面项大
??upload_max_filesize =2M 最大上传文件,生产可能要调大
??max_file_uploads = 20 同时上传最多文件数
??date.timezone =Asia/Shanghai 指定时区
??short_open_tag=on 开启短标签,如<? phpinfo();?>

常见LAMP应用

??PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
??WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
??PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、 SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
??Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
??ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。 2006年6月,ECShop推出第一个版本1.0

LAMP应用搭建

  • phpMyAdmin管理mysql数据库
  • WordPress博客网站
  • Discuz论坛部署
  • PowerDNS:跨平台的开源DNS服务组件
  • 实现web管理powerdns

基础环境

系统版本 主机名 IP地址 角色
CentOS7 http 192.168.36.104 Apache、PHP
CentOS7 mariadb 192.168.36.103 Mariadb

LAMP基础搭建

  1. 安装相关软件包

    [[email protected] ~]#yum install -y httpd php php-fpm php-mysql
    [[email protected] ~]#yum install -y mariadb-server
  2. 启动httpd服务并设置开机自启动
    [[email protected] ~]#systemctl restart httpd
    [[email protected] ~]#systemctl enable httpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
  3. httpd测试页面
    [[email protected] ~]#echo "HTTPD TEST Darius‘s" >/var/www/html/index.html
    [[email protected] ~]#curl http://192.168.36.104
    HTTPD TEST Darius‘s
  4. 修改http配置文件,使其运行PHP程序
    [[email protected] ~]#vim /etc/httpd/conf/httpd.conf
    ....
    164     DirectoryIndex index.php index.html
    ....
    354 addtype application/x-httpd-php .php
    355 addtype applictaion/x-httpd-php-source .phps
    356 proxyrequests off
    357 proxyPassMatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/data/test/$1
    358
    359 <Virtualhost *:80>
    360 Documentroot /data/test
    361 <directory /data/test>
    362 require all granted
    363 </directory>
    364 </Virtualhost>
  5. 修改php-fpm模块文件
    关于php-fpm:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
    [[email protected] ~]#vim /etc/php-fpm.d/www.conf
    12 ;listen = 127.0.0.1:9000
    13 listen = /var/run/php.sock
    25 ;listen.allowed_clients = 127.0.0.1
    34 ;listen.mode = 0666
    35 listen.mode = 0666 
  6. 修改php.ini中的时区
    [[email protected] ~]#vim /etc/php.ini
    879 date.timezone = Asia/Shanghai
  7. 启动httpd、php-fpm服务
    [[email protected] ~]#systemctl restart httpd php-fpm
  8. 测试页测试
    [[email protected] ~]#mkdir /data/test
    [[email protected] ~]#cat /data/test/index.php
    <?php
    phpinfo();
    ?>

  9. 数据库配置
    [[email protected] ~]#mkdir /data/bin -p
    [[email protected] ~]#chown -R mysql.mysql /data/bin/
    [[email protected] ~]#vim /etc/my.cnf
    [mysqld]
    log-bin=/data/bin/mysql-bin
    binlog-format=row
    ....
  10. 启动数据库服务
    [[email protected] ~]#systemctl start mariadb
    [[email protected] ~]#systemctl enable mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
  11. 创建远程连接访问的用户
    MariaDB [(none)]> grant all on test.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘;
    Query OK, 0 rows affected (0.00 sec)
  12. PHP连接数据库测试
    [[email protected] ~]#vim /data/test/index.php
    <?php
    $dsn=‘mysql:host=192.168.36.103;dbname=test‘;
    $username=‘test‘; $passwd=‘centos‘;
    $dbh=new PDO($dsn,$username,$passwd);
    var_dump($dbh);
    phpinfo();
    ?>
  13. PHP测试页

部署phpMyadmin(管理工具)

  1. 下载phpMyadmin包(王老师说过,要玩就玩最新版,所以这里下载最新版)

    下载地址:https://www.phpmyadmin.net/downloads/
  2. 解压
    [[email protected] ~]#tar xf phpMyAdmin-4.0.10.20-all-languages.tar.xz
  3. 将文件全部移动到php网站目录下
    [[email protected] ~]#mkdir /data/test/pam
    [[email protected] ~]#mv phpMyAdmin-4.0.10.20-all-languages/* /data/test/pam
  4. 修改phpMyadmin配置文件名称
    [[email protected] ~]#cd /data/test/pam/
    [[email protected] pam]#cp config.sample.inc.php config.inc.php
  5. 修改phpMyadmin配置文件
    [[email protected] pam]#grep ‘^\$cfg‘ config.inc.php
    $cfg[‘blowfish_secret‘] = ‘centos‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    $cfg[‘Servers‘][$i][‘host‘] = ‘192.168.36.103‘;
  6. 网页访问
  7. 安装缺少的扩展工具包:php-mbstring
    [[email protected] pam]#yum install -y php-mbstring
  8. 登录界面
  9. 管理界面

部署wordpress博客网站

  1. 创建wordpress数据库,用于添加数据

    MariaDB [(none)]> create database wordpress;
    Query OK, 1 row affected (0.00 sec)
  2. 创建用户并进行授权
    MariaDB [(none)]> grant all on wordpress.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘;
    Query OK, 0 rows affected (0.00 sec)
  3. 安装wordpress包
    [[email protected] ~]#unzip wordpress-5.0-zh_CN.zip
    [[email protected] ~]#mv wordpress/* /data/test/wordpress/
  4. 修改wordpress配置文件
    [[email protected] ~]#cd /data/test/wordpress/
    [[email protected] wordpress]#mv wp-config-sample.php wp-config.php
    [[email protected] wordpress]#vim wp-config.php
    # WordPress数据库的名称
    define(‘DB_NAME‘, ‘wordpress‘);
    # MySQL数据库用户名
    define(‘DB_USER‘, ‘wpuser‘);
    # MySQL数据库密码
    define(‘DB_PASSWORD‘, ‘centos‘);
    #  MySQL主机
    define(‘DB_HOST‘, ‘192.168.36.103‘);
  5. 安装测试

5.1 安装成功

5.2 登录界面

5.3 登陆管理界面

部署Discuz论坛

  1. 安装包解压并归档至网页目录

    [[email protected] ~]#unzip Discuz_X3.3_SC_UTF8.zip
    [[email protected] ~]#mv upload/ /data/test/forum
  2. 网页目录添加acl权限
    [[email protected] ~]#setfacl -R -m u:apache:rwx /data/test/forum
  3. 创建数据库
    MariaDB [(none)]> create database ultrax;
    Query OK, 1 row affected (0.00 sec)
  4. 创建论坛用户并进行授权
    MariaDB [(none)]> grant all on ultrax.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘;
    Query OK, 0 rows affected (0.00 sec)
  5. 修改网页配置文件
[[email protected] ~]#vim /data/test/forum/config/config_global_default.php
$_config[‘db‘][1][‘dbhost‘]             = ‘192.168.36.103‘;
$_config[‘db‘][1][‘dbuser‘]             = ‘root‘;
$_config[‘db‘][1][‘dbpw‘]               = ‘123456‘;
$_config[‘db‘][1][‘dbcharset‘]          = ‘utf8‘;
$_config[‘db‘][1][‘pconnect‘]           = 0;
$_config[‘db‘][1][‘dbname‘]             = ‘ultrax‘;
$_config[‘db‘][1][‘tablepre‘]           = ‘pre_‘;

[[email protected] ~]#vim /data/test/forum/config/config_ucenter_default.php
define(‘UC_DBHOST‘, ‘192.168.36.103‘);                  // UCenter 数据库主机
define(‘UC_DBUSER‘, ‘root‘);                            // UCenter 数据库用户名
define(‘UC_DBPW‘, ‘123456‘);                            // UCenter 数据库密码
define(‘UC_DBNAME‘, ‘ultrax‘);                          // UCenter 数据库名称
define(‘UC_DBCHARSET‘, ‘utf8‘);                         // UCenter 数据库字符集
define(‘UC_DBTABLEPRE‘, ‘`ucenter`.uc_‘);               // UCenter 数据库表前缀
  1. 安装向导
    6.1 同意安装

6.2 无特殊情况,检查通过,进行下一步

6.3 全新安装

6.4 连接数据库进行安装

6.5 安装成功,并成功登陆

部署PowerDNS:跨平台的开源DNS服务组件

  1. 启用EPEL源安装PowerDNS相关软件包

    [[email protected] ~]#yum install -y pdns pdns-backend-mysql
  2. 数据库服务器中创建库
    MariaDB [(none)]> create database powerdns;
    Query OK, 1 row affected (0.00 sec)
  3. 创建用户并对其进行授权
    MariaDB [(none)]> grant all on powerdns.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘;
    Query OK, 0 rows affected (0.00 sec)
  4. 编写pdns.sql数据库脚本并导入数据库中
[[email protected] ~]#vim pdns.sql
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO ‘powerdns‘@‘localhost‘ IDENTIFIED BY ‘magedu‘;

use powerdns
CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT DEFAULT NULL,
  account               VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);

CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;

CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);

CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);

CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB;

CREATE INDEX domainidindex ON cryptokeys(domain_id);

CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
  1. 修改配置文件,配置PowerDNS使用mariadb作为后台数据库存储

    [[email protected] ~]#vim /etc/pdns/pdns.conf
    #launch=bind
    launch=gmysql
    gmysql-host=192.168.36.103
    gmysql-port=3306
    gmysql-dbname=powerdns
    gmysql-user=powerdns
    gmysql-password=centos
  2. 启动服务
    [[email protected] ~]#systemctl start pdns

实现WEB管理的PowerDNS

  1. 安装相关包

    [[email protected] ~]#yum -y install httpd php php-devel php-gd php-mcrypt php-imap phpldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring phpmcrypt php-mhash gettext
  2. 重新启动httpd服务
    [[email protected] ~]#systemctl restart httpd
  3. 下载poweradmin程序,并解压缩到相应目录
    [[email protected] ~]#mkdir /data/test/poweradmin
    [[email protected] ~]#tar xf poweradmin-2.1.7.tgz -C /data/test/poweradmin
    [[email protected] ~]#mv /data/test/poweradmin/poweradmin-2.1.7/* /data/test/poweradmin/
  4. 访问下面地址,启动PowerAdmin的网页安装向导
    http://powerdns服务器IP/poweradmin/install/
    4.1 启动admin安装

4.2 引导1

4.3 引导2

4.4 引导3

4.5 数据库中进行用户授权

4.6 修改poweradmin根目录下的/inc/config.inc.php文件

4.7 从Poweradmin根目录中删除目录“install/”

删除目录后,可以使用用户名“admin”和密码“centos”登录到Poweradmin。

4.8 成功!!!

原文地址:https://blog.51cto.com/12980155/2396832

时间: 2024-07-29 18:08:36

基于LAMP的架构实现的相关文章

LAMP架构搭建以及基于LAMP架构的主流论坛和博客搭建过程详解

了解网站架构的朋友都知道,现在很多网站的架构都是采用LAMP(Linux+Apache+Mysql/Mariadb+Php)的,至于LAMP架构本身我们就不做过于深入的探讨了,今天我给大家分享的是关于如何搭建LAMP构架,以及如何基于lamp架构去搭建目前国内比较流行的两大开源论坛(phpwind.discuz)一大开源博客(wordpress),通过这个过程也就能让大家明白我们经常上的论坛以及博客,包括包括我们访问的各个网站到底是如何工作起来的. 注意:为了方便给大家展示实验效果,我们就直接关

4-源码方式基于LAMP架构搭建BBS论坛或者博客

目录 一.项目简介 二.环境准备 三.编译安装MySQL 四.编译安装Apache 五.编译安装PHP 六.后续配置 七.启动相关服务 八.源码编译软件经验总结 九.部署web应用 排错1: 排错2: 排错3: 大功告成! 课程目标 使用源码方式基于LAMP架构搭建BBS论坛或者博客 本文成功搭建2个网站,一个个人博客,一个是web界面管理mysql数据库的应用 请耐心阅读,细心操作,你也会成功! 思考:yum工具搭建lamp环境和源码包搭建的区别 rpm版本 安装方便,升级.卸载都很灵活,很难

如何实现基于lamp搭建https服务

如何实现基于lamp搭建https服务 lamp:服务架构 httpd:接收用户的web请求:静态资源则直接响应:动态资源为php脚本,对此类资源的请求将交由php来运行: php:运行php程序: MariaDB:数据管理系统: (一):  安装其相关服务 CentOS 6: httpd, php, mysql-server, php-mysql # service httpd  start # service  mysqld  start CentOS 7: httpd, php, php-

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

基于C/S架构的3D对战网络游戏C++框架 _03客户端详细设计与OpenGL、Qt基础

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

基于C/S架构的3D对战网络游戏C++框架 _03服务器端详细设计

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

基于C/S架构的3D对战网络游戏C++框架 _02系统设计(总体设计、概要设计)

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

基于C/S架构的3D对战网络游戏C++框架 _【不定期更新通知】

由于笔者最近有比赛项目要赶,这个基于C/S架构的3D对战网络游戏C++框架也遇到了一点瓶颈需要点时间沉淀,所以近一段时间不能保证每天更新了,会保持不定期更新.同时近期笔者也会多分享一些已经做过学过的C++.服务器端开发.游戏开发相关的内容给大家(因为这些内容已经熟悉也积攒了一定量现有的笔记所以整理成博客会相对轻松些).感谢大家支持,深鞠躬.过两天笔者要去上海参加C++大会,回来后会把参会感悟也分享给大家的^__^.喜欢技术人的纯粹,没有等级之分,希望我们能一路一起进步,共同成长. 基于C/S架构