首页 文章 精选 留言 我的

精选列表

搜索[lamp],共675篇文章
优秀的个人博客,低调大师

LAMP架构下的Web开发概念、流程及优化策略(一)

架构设计——前端架构•后端架构•视觉体系对接约定——接口约定•标识约定•通讯代码约定开发——建立开发框架•建立数据库•实施编码测试——功能测试•性能测试 一、架构设计 二、对接约定 1、接口约定 约定请求方式(普通HTTP请求,XMLHTTP请求,SOAP请求,phprpc请求)、请求类型(POST,GET,HEADER)、请求地址、请求参数。(前端请求四要素,文档中体现,程序中实现。) 2、标识约定 为确保前后端并行开发,减少开发的时间周期,需要在开发前就做好标识约定,通过文档描述清楚前端模板变量和后端程序变量之间的约定关系,以及后端返回各种状态值的含义。 建议的最佳应用是:后端不对用户视图负责,只管输出状态代码。呈现给用户的视图由前端负责。 三、各类web服务器优缺点比较 •Nginx 优点:原生支持反向代理,带有简单的负载均衡及容错机制。速度最快。(10%-1000%),占用资源很少。 缺点:文档较少,手工配置,只能以fast-cgi方式运行php. •Apache 优点:文档丰富,稳定(!?),应用环境多。 缺点:占用资源较多,高压力下表现性能不如nginx或lighttpd,手工配置。 •IIS 优点:文档丰富,win平台下安装简单配置方便 缺点:不支持跨平台,性能低下。 四、常见web系统组织图 五、PHP在web应用中的特点 •语言弱类型 •脚本运行,生命周期短。 •面向对象与面向过程并存。 •弱效率、重流程、强扩展。 1、PHP的优点 •适合web开发。将web开发中常用的行为、内容做了良好的封装。程序员可以很轻易的使用它们。 •基于脚本的运行方式,修改代码后不需要重新编译,很多情况下也不需要重启服务器。 •开发快捷,部署方便,支持环境众多。 •非常优秀的扩展能力。非常多的扩展子件。 •开发框架众多。对多种数据库支持很好 •良好的社区支持,本身开源。修改容易 2、PHP的缺点 •容易写出坏的代码。(解决方法:严格遵循规范) •效能不高。(解决方法:复杂业务使用C扩展) •每次执行都要经历扫描-编译-执行的阶段,无执久对象模型。(解决方法:使用APC) •命名混乱,参数混乱,得随时翻着手册 3、PHP框架 •对开发者起编码约束作用。 •提供了ORM,使对数据库变成对数据对象的访问,让程序员对数据的处理更加专注于面向对象上. •通过配置(无需改动代码)即能变更服务环境,使得迁移成本减小 •方便程序员实现完整的MVC开发模式.使程序员更专注于业务领域,不再过多关注建立数据模型的底层代码以及处理视图展示. •内置大量开发中的常用工具。可随时调用。也可自己扩展编写。 •本身即由PHP编写。可随时修改以满足达到自己的需求。 【本文首发于: 百度运维空间】 http://hi.baidu.com/ops_bd/blog/item/c2e2f94986ad95ded0c86ad2.html 【 关注百度技术沙龙】 本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/748354 ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Heartbeat-Gui V2 实现HA LAMP 搭建wordpress博客

环境: N F S:172.16.0.3 (OS CentOS 7) node1:172.16.0.5 (OS CentOS 6.7) node2:172.16.0.6 (OS CentOS 6.7) 浮动IP:172.16.0.168 php php-mysql 安装: #yuminstallphpphp-mysql俩个节点都安装 Heartbeat 安装: 互信操作:俩边都操作: #ssh-keygen-trsa #ssh-copy-id-i.ssh/id_rsa.pubroot@x.x.x.x 修改主机名: #cat/etc/sysconfig/network //node2NETWORKING=yesHOSTNAME=node2.sunshine.com #cat/etc/sysconfig/network//node1NETWORKING=yesHOSTNAME=node1.sunshine.com 本地/etc/hosts解析: #cat/etc/hosts|tail-2 172.16.0.5node2.sunshine.comnode2 172.16.0.6node1.sunshine.comnode1#cat/etc/hosts|tail-2 172.16.0.5node2.sunshine.comnode2 172.16.0.6node1.sunshine.comnode1 同步时间:两边都操作,这里测试就不做crontab 不同时间了: #servicentpdatestart #[root@HA2~]#date;sshnode2'date' WedOct2615:28:32CST2016 WedOct2615:28:32CST2016 重启: #shutdown-rnow 安装epel源: #rpm-Uivhftp://ftp.pbone.net/mirror/dl.iuscommunity.org/pub/ius/archive/Redhat/6/i386/epel-release-6-5.noarch.rpm 安装依赖: #yuminstallnet-snmp-libslibnetPyXMLpygtk2-libglade-y 安装Heartbeat相关程序包:找不到的同学别灰心我的百度云盘:http://pan.baidu.com/s/1boGx6t5 #rpm-ivhheartbeat-2.1.4-12.el6.x86_64.rpm\ >heartbeat-stonith-2.1.4-12.el6.x86_64.rpm\ >heartbeat-pils-2.1.4-12.el6.x86_64.rpm\ >heartbeat-gui-2.1.4-12.el6.x86_64.rpm 如报以下错误:安装libtool-ltdl 既可以: error:Faileddependencies: libltdl.so.7()(64bit)isneededbyheartbeat-2.1.4-12.el6.x86_64 libltdl.so.7()(64bit)isneededbyheartbeat-stonith-2.1.4-12.el6.x86_64 libltdl.so.7()(64bit)isneededbyheartbeat-pils-2.1.4-12.el6.x86_64#yuminstalllibtool-ltdl-y//安装libtool-ltdl -安装支持xshell Xmanger包,否则网络上很方法也是不可用的: #yuminstallxorg-x11-xauth//如果不安装使用hb_gui是无法调用x11 ha.cf配置: #grep-v"#"ha.cf logfile /var/log/heartbeat-log mcasteth0225.10.210.169410 auto_failbackon node node1.sunshine.com node node2.sunshine.com crm on ping172.16.0.1 #grep-v"#"authkeys auth2 2sha1Dn880wJZxfsUpioJWy7FgQ #passwdhacluster //在哪里启动,就在哪里设置hacluster密码 #hb_gui& compression bz2 compression_threshold2 authkeys配置 [root@node2ha.d]#catauthkeys|tail-4|grep-v"#" auth2 2sha1Dn880wJZxfsUpioJWy7FgQ 在node{1|2}清除iptables并关闭selinux #iptables-F#setenforce0#cat/etc/selinux/config|tail-3|head-1 SELINUXTYPE=targeted httpd 安装: #yuminstallhttpd-y //node{1|2} #echo"<h1>node1</h1>">/var/www/html/index.html //node1执行 #echo"<h1>node2</h1>">/var/www/html/index.html //node2执行 #curlnode{1,2} //访问测试 <h1>node1</h1> <h1>node2</h1> #servicehttpdstop;sshnode2'servicehttpdstop' Stoppinghttpd:[OK] Stoppinghttpd:[OK] #chkconfighttpdoff;sshnode2'chkconfighttpdoff'//关闭httpd自动启动 #chkconfighttpd--list;sshnode2'chkconfighttpd--list'//查看是否关闭 httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off NFS Server搭建:这是在NFS服务器上执行 #groupadd-g306mysql #useradd-g306-u306-M-rmysql #mkdir/data/mydata #chown-Rmysql.mysql/data/mydata #cat/etc/exports //编辑需要导出的文件 /data/mydata172.16.0.0/24(rw,no_root_squash) //no_root_squash表示远端主机root用户不转换nobody用户 #systemctlstartnfs.service //启动nfs服务 #cat/etc/rc.local|tail-1 //加入开机启动 /usr/bin/systemctlstartnfs.service PerconaMySQL 安装: #mount-tnfs172.16.0.3:/data/mydata/mydata //挂载nfs文件至本地 #yuminstallopenssl-devel-yes//安装openssl-devel包,至此Preconamysql的ssl #cd/usr/lib64//进入lib64#ln-slibssl.so.1.0.1elibssl.so.6//软连接,因为Preconamysql要依赖该库,但是我们系统上的是libssl.so.1.0.1e #ln-svlibcrypto.solibcrypto.so.6//软连接,因为Preconamysql要依赖该库,但是我们系统上的是libcrypto.so #tarxf/usr/local/src/Percona-Server-5.6.27-rel76.0-Linux.x86_64.ssl098e.tar.gz-C/usr/local//解压缩至/usr/local,个人习惯 #cd/usr/local//进入local #ln-svPercona-Server-5.6.27-rel76.0-Linux.x86_64.ssl098e.tar.gzmysql//不要问为什么,大家都这么做 #groupadd-g306mysql//新建组,指定GID306 #useradd-g306-u306-r-Mmysql//新建用户,指定GID,UID为306 #mkdir/mydata//创建NFS挂载点 #cd/usr/local/mysql//进入程序包 #chown-Rmysql.mysql./*//-R递归 #scripts/mysql_install_db--datadir=/mydata/--user=mysql//初始化 #cp-psupport-files/mysql.server/etc/init.d/mysqld//拷贝启动脚本 #vim/etc/my.cnf//mysql的配置文件,里面的参数我调的很小,是因为仅做博客测试使用 #TheMySQLserver[mysqld] port=3306 user=mysql datadir=/mydata tmpdir=/dev/shm slave-load-tmpdir=/tmp socket=/mydata/mysql.sock key_buffer_size=32M max_allowed_packet=8M#table_cache=30s join_buffer_size=16M sort_buffer_size=16Mread_buffer_size=16Mread_rnd_buffer_size=16M myisam_sort_buffer_size=32M query_cache_size=16M query_cache_type=1 max_tmp_tables=64 tmp_table_size=64M max_heap_table_size=64M thread_cache_size=32 thread_concurrency=16 max_connections=1986 max_user_connections=0 max_connect_errors=99999999 wait_timeout=28800 interactive_timeout=7200 slow_query_log=1 long_query_time=3 log_slow_slave_statements=1 #slow_query_log_timestamp_always=1 slow_query_log_file=/mydata/slow.log back_log=200 myisam_repair_threads=1 myisam-recover=DEFAULT expire_logs_days=20 pid-file=/mydata/mysql.pid binlog_format=mixed init-connect='SETNAMESutf8' character-set-server=utf8 skip-character-set-client-handshakebind-address=0.0.0.0 skip-external-locking#skip-symlink log-slave-updates skip-name-resolve#read_only skip-slave-start server-id=3306 log-bin=3306-bin relay-log=3306-relay-binlog-error=error.log#-------------innodb-------------- innodb_file_format=Barracuda default-storage-engine=InnoDB innodb_buffer_pool_size=64M innodb_additional_mem_pool_size=32M innodb_data_file_path=ibdata1:100M:autoextend#innodb_autoextend_increment=100M innodb_flush_log_at_trx_commit=0 innodb_log_buffer_size=8M innodb_log_file_size=32M innodb_log_files_in_group=3 innodb_max_dirty_pages_pct=90 innodb_lock_wait_timeout=20 innodb_file_per_table=1 innodb_flush_method=O_DIRECT innodb_support_xa=0 innodb_io_capacity=500 #innodb_buffer_pool_instances=4 [client] user=mysql port=3306 socket=/mydata/mysql.sock [myisamchk] key_buffer=32 sort_buffer_size=32 read_buffer=32M write_buffer=32M #servicemysqldstart //测试是否能够启动 #servicemysqldstop //然后停止服务 #chkconfigmysqldoff //关闭自动启动ps:node{1|2}都是一样的操作 安装博客 下载程序包 #cd/usr/local/src #wgethttps://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz 解压并设置 777 权限,这边为了方便 #tarxfwordpress-4.5.3-zh_CN.tar.gz-C/var/www/html/ #cd/var/www/html/ #chown-R777wordpress 手动启动mysql #servicemysqdstart 进入mysql创建wordpress库,提供给wordpress初始化呢使用 #mysql-uroot-p //回车输入自己的密码,没设定密码直接回车 #CREATEDATABASEwordpess; 授权wordpress库权限,生产机建议不要使用通配符 #GRANTALLONwordpress.*TOwordpress@‘172.16.%.%'INDENTIFIEDBY'redhat'; #FLUSHPRIVILEGES; 博客初始化:先手动启动mysql,初始化完毕后再手动关闭mysql,这里太简单 不上图了 1、填上mysql地址:也就是我们的浮动IP:172.16.0.168 2、填上用户:在数据库创建的:wordpress 3、填上密码:redhat 4、其它根据自己定义填写即可。 Hearbeat-Gui资源配置: #hb_gui& 1、Resources新建组资源,并命名,注意Parameters里面的值 2、访问测试 3、节点切换并访问测

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册