php怎么设置时区,如何开发设计B2C商城平台?
首先,在业务上需要确定B2C平台的定位,在商品品类上属全品类还是垂直类,在商业模式上需要确定是自营模式还是平台模式。其次在技术上,要根据前面确定的定位和模式框定功能范围,最好能画出产品原型(基于产品原型设计工具如墨刀,Axure),然后就可以交个技术团队去做研发了。当然研发需要考虑的问题就更多了,如架构设计目标(高并发,高可用,安全,系统伸缩,分布式),需要实现的场景(App、微信公众号、H5、PC端),是否需要考虑国际化(多语言,多币种,多时区)等等。
因为电商有其特殊的领域知识,基本上算是这个领域的标配,如产品的价格体系一定是多维度的,产品的促销一定是灵活多变的,一定需要支持各种页面的内容自定义(CMS系统),一定要有物流及支付功能的集成,一定有购物车及结算系统等等。针对这些,已经有了很成熟的开源系统供大家使用,如PHP领域的麦进斗Magento,.Net领域的Nopcommerce,都非常的经典。
如何解决安装zabbix的依赖问题?
由于最近在搭建zabbix所以总结了一下,如下
一.安装mysql 选取版本mysql 5.7.22
1.在 /home下新建 mysql目录。将 mysql压缩包传入到该文件下。
2.首先先查看是否已经安装了mysql ,执行命令 rpm -qa|grep mysql
3.如果什么都没显示说明没有安装过,如果已经安装了Mysql就先卸载执行命令 rpm -e --nodeps xxxxxxxx(xxxxxx为已经安装的rpm)
4.查看是否安装mariadb 系统自带的,之前安装的时候和mysql冲突,所有不用这个数据库的话也可以卸载,查看是否安装rpm -qa|grep mariadb,卸载执行rpm -e --nodeps xxxxxxxxxx
5.接下里进入 /home/mysql 命令:cd /home/mysql
6.解压 tar -xf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar
7.依次安装,不能改变顺序,因为有依赖关系
rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm
8.安装完后开始初始化数据库,进入/usr/bin
9.执行命令mysqld --initialize --user=mysql 或者mysqld --initialize-insecure --user=mysql
10.第一个命令是为root用户随机生成一个登陆密码,登陆时执行名mysql -u root -p,密码在/var/log/mysqld.log文件中可以查看(这里使用第一种方式安装)
11.查看mysql启动状态service mysqld status,如未启动启动一下执行systemctl start mysqld
12.登录mysql mysql -u root -p进入mysql后可修改密码SET PASSWORD = PASSWORD('123456');
二、搭建zabbix
1.安装数据库
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# yum clean all
2.安装Zabbix server and agent
# yum install zabbix-server-mysql zabbix-agent
如若出现yum无法下载的问题可以vi /etc/yum.repos.d/zabbix.repo将其中的http改为https
如若yum install zabbix-server-mysql zabbix-agent出现缺少libmysqlclient.so.18安装mysql tar 包中的mysql-community-libs-5.7.22-1.el7.x86_64.rpm
3.安装Zabbix frontend
yum install epel-release
4.创建初始数据库
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
执行此句如若报错为密码过于简单,需要修改为更复杂的密码
mysql> quit;
5.导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
6.为Zabbix server配置数据库
vi /etc/zabbix/zabbix_server.conf
找到被注释的DBPassword=取消注释改为自己的密码DBPassword=123456
7.为Zabbix前端配置PHP
vi /etc/nginx/conf.d/zabbix.conf
取消这两行的注释
# listen 80;
# server_name example.com;
将zabbix.conf中的server代码复制到目前正在使用的nginx.conf中
8.修改时区
vi /etc/php-fpm.d/zabbix.conf
将; php_value[date.timezone] = Europe/Riga改为php_value[date.timezone] = Asia/Shanghai
10.启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent nginx php-fpm
# systemctl enable zabbix-server zabbix-agent nginx php-fpm
11.连接到新安装的Zabbix前端: http://server_ip_or_name
tp框架生命周期简述?
答:tp框架生命周期一共有以下七个周期
1:入口文件:
TP5的入口文件在public文件下,是整个程序的入口,当然你也可以把文件移到根目录下,修改一下index.php文件里的应用目录和启动文件目录就好了。
在该文件中,功能很简单就是定义应用目录,然后加载引导文件
2:引导文件
下面我们顺着引导找到了start.php。发现里面引入了base.php,其实base文件也是一个引导文件,里面进行一些变量常量的加载,还有一些机制的注册,比如自动加载机制。
加载系统常量定义;
加载环境变量定义文件;
注册自动加载机制;
注册错误和异常处理机制;
加载惯例配置文件;
执行应用;
3.接着就到了应用类
应用类第一步进行了初始化操作,包括以下部分:
加载应用(公共)配置;
加载扩展配置文件(由extra_config_list定义);
加载应用状态配置;
加载别名定义;
加载行为定义;
加载公共(函数)文件;
注册应用命名空间;
加载扩展函数文件(由extra_file_list定义);
设置默认时区;
加载系统语言包;
4.URL检测
初始化完成后就会对URL进行检测,获取到请求地址信息。
请求URL必须为PATHINFO格式,否则则视为非法URL。
如果环境只支持普通格式则必须为以下格式:
http://serverName/index.php?s=/index/index/hello&val=value
5.路由检测
如果开启路由检测,则优先将URL与路由进行匹配,匹配成功则走路由调度,否则就走默认的分析识别。
开启配置为 url_route_on
6.请求分发
这一步是整个生命周期最重要的环节,也是我们接触最多的环节,URL会根据不同的调度找到的我们的控制器,运行控制器里面的方法,
经过一系列我们的代码处理后,得到结果。
7.响应输出
当我们的控制器处理完毕,return之后,就会有Response类将返回的结果输出到界面客户端,我们可以指定默认的格式,一般是json格式。
8.程序结束
其实当我们的Response类将结果输出的界面时,整个生命周期还并未结束。
到目前我们还没有说到日志,日志一般都是在生命周期完成的时候才会写入,所以,此时的框架任务就是把我们本次生命周期的信息写入日志。
至此,整个生命周期结束。
想要给自己课题组做个网页?
最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。
我们没人会前端,所以最怕修改网页,一开始选择了Flask框架,我搞了半天遇到各种坑(还要修改css 麻烦),中间件也不好用,劝大家用django,资料多,非常好用。
那么开始说重点,需要做的哪些东西。
http://python.usyiyi.cn/ 是主要的资料,里面是中文的资料建议一点点看下去。
1-项目环境搭建。
1.1第三方库准备
开发环境是mac os 和ubantu 推荐大家下载一个第三方的软件叫 "Anaconda" ,安装非常简单,直接运行脚本就好。
安装完了,可以到命令行运行 pip list。可以看到已经安装的python第三方库 。
此时我们是没有django的库的。
1.2IDE的安装
IDE 使用eclipse,讲一个工具Pydev,安装自行百度,点点就行。
然后 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。发现eclipse 找不到Django 环境,回来点击 click here to configure an interpreter 然后把python interpreter 中的名为python的删掉,那是系统默认的,改成anaconda目录 下 bin/里面的python。默认是2.7.11吧。忘记安装目录?一个命令 sudo find / -name anacon* 搞定~。找到以后加进去,到了图一这一步就结束。
(图1)
2-数据库配置和使用
2.1数据库连接文件配置
我选了mysql,当然在这之前mysql的帐号密码应该自己确定了吧。mysql配置应该简单。但是如果要支持远程访问,比如你把数据库放到云上,别人机器上,毕竟开发不是一个人的事,我自己遇到的坑是"关于 mysql 配置文件中的 bind-address",自行百度,解决方案是删除就好。(推荐几个mysql 连接的桌面软件,用Navicat ,或者mysql workbench 都是不错的)。(后来发现这里输入密码和帐号没什么用还是要去修改在与项目同名的app里面的setting)。现在在mysql自己创建一个database 取名随便。我叫test,其他字段应该不用解释了如图2。
(图2)
2.2创建APP(模块)
然后我们在工程里根目录右击->Django->Create App->输入名字就好。因为网页主要是MVC模式,创两个吧。一个叫db 专用于管理数据库(models 层) 第二个专用于后台逻辑。名字随便取因为可能要对应多个模块。django里面增加一个app 就需要在与项目同名的那个app的setting中Installed_app里面加入app名(如图4)。我们加入以后目录结构(如图3.)
(图3)
(图4)
2.3用django模型层建表
数据库正式开发,数据库创建,在db的models.py中 对应数据库中每个表写class,就是定义好字段,因为Django的目标是要程序员完全脱离数据库的操作。那么我们先不建表,cd 到你的工程目录去,用命令行 用打入 manage.py migrate 命令。效果如图5。
(图5)
如果你的配置是没错的,此时django 已经在你的数据库中建了很多表,都是django自带的,我也没有用起来,唯一用的是django自带的数据库管理界面,类似于Navicat,还支持搜索功能,自己去文档里 http://python.usyiyi.cn/django_182/intro/tutorial02.html 学吧。
然后在db的models里写一个表的代码。然后效果如图6 还是用了Manage 脚本。
from __future__ import unicode_literalsfrom django.db import models# Create your db here.class Message(models.Model): user_id = models.BigIntegerField(blank=True, null=True)(图6)
到这里表都结束了,实际开发中,我数据库都是先建好的,那我全部都要写每个类是不是很麻烦,有没有偷懒的办法呢?
答案是用./manage.py inspectdb
用了就知道,他会反向生成表的代码, 然后直接复制进models里面就好了。
3-url 解析
3.1url匹配处理函数
在Django中 一般url解析分为两层。
第一层负责解析APP的名,像我在test 里urls.py里写的(如图7)。第一个参数表示响应的url,第二个参数表示处理的模块。
(图7)
第二层是解析到具体的模块中的某个函数来响应对应的url。
比如在view app 中的urls.py(需要自己创建) 写的(图8)url(函数中第一个参数为匹配路径,后一个是对应函数名)里面的home对应view app中的views.py 里的函数home
(图9)
3.2静态网页配置
其实到这个时候已经可以实现响应了。(到这里还要解决一个问题 'Index/home.html')在哪里呢?我们此时创一个文件夹叫templates html都应该放在这里,Index 是一个模块的名字。你可以在templates下面建很多个文件夹,对应很多的APP模块。(html就不属于本文范畴了)此时目录结构为
(图10)
搞定了后别忘记在test的setting 里加上一句代码
(图11)
"就是DIRS"里面.想想也是,不然 Django怎么知道我们的html放在这里呢。
4-逻辑层(也就是最后一步了,怎么样把数据库的东西查出来,放到html中。)
4.1数据库中的数据
往表里插两条数据
(图12)
4.2动态显示数据
看下代码:html部分
(图13)
里面的{%%}是django 自带标签的自己看文档学一下就会。
(图14)
里面的Message.objects.all() 表示从Message表中取出所有数据。还有什么复杂查询自己看文档,一般都是filter exclude,django 还支持sql语句直接写,函数名叫raw().
context就是返回给页面的一个对象里面放了很多值。在python里叫字典(dict)
4.3启动服务器
最后我们用命令行来到我们的目录,敲./manage.py runserver (要支持所有端口 和外网访问加0.0.0.0)。然后出现
(图15)
4.4查看网页
再到浏览器敲127.0.0.1:8000 django默认端口 (图16)
4.5实际开发中问题
结果出来了。遇到具体问题就是查一些文档和stackoverflow。发现一个时区问题,建议和我改成一样。把test里面setting中的时区部分改成这样。否则你会有八个小时的时差,
(图17)
。还有啥问题可以和我讨论的可以留言。小弟也是刚做完这个项目从零开始。码字不易~小问题就不在这里说了。
界面日志界面
管理界面
评论界面
使用的技术
python、JavaScript、CSS、htmlMySQL 数据库jinja2 模板引擎Vue.js 界面框架Nginx Web服务器gunicorn WSGI服务器Supervisor 监控服务进程工具Fabric 自动部署工具学习过程
刚开始跟着作者的教程编写这样一个博客网站的时候感觉很困难,因为自己对web上的很多概念不了解,对web服务器是怎么运行也不清楚,所以不知道作者为什么要这么写代码。后来去学习了Django,知道了什么是ORM,什么是模板等一些概念后,并且能够使用Django搭建一个网站,再跟着作者学习就轻松了一些,希望我的学习过程对你有启发。当然,如果你只想快速的搭建一个网站,可以使用Django、Flask等免费开源的网站框架,而不用自己一步一步的去实现它。