- 浏览: 61984 次
- 性别:
- 来自: 广州
-
最新评论
文章列表
lumen日志权限冲突问题
- 博客分类:
- lumen
运行lumen项目一般使用nginx作为webserver,因此其日志创建及操作时是也是使用nginx进程的用户,通常是nginx用户。
但如果在项目中使用了队列或任务调度,那么则需要独立运行artisan queue:listen,artisan schedule:run。为了保证这两个程序一直在执行,会在linux计划任务里面添加检查及启动脚本。如果任务以root身份crontab -e方式配置,则创建的日志是root用户的。这就导致web程序无权限写入日志,从而出现500错误。
解决办法
1、修改/etc/passwd文件将nginx设置为可登录(这个不确定是否必须)
2、将计划任务通过 ...
使用monit监控本机服务
- 博客分类:
- 系统管理
【安装】
yum install monit
【配置告警】
修改/etc/monit.conf
set daemon 60
set httpd port 1966
#设置允许访问服务的账号密码
allow monitor:kaka2123
#允许访问的地址,下面是所有地址
allow 0.0.0.0/0.0.0.0
#设置告警邮件使用的服务器,下面用的是qq邮箱,采用的是ssl连接
set mailserver smtp.exmail.qq.com port 465 USERNAME "123456@qq.com" PASSWORD " ...
linux绑定远程目录
- 博客分类:
- 系统管理
服务器
1、yum -y install nfs-utils rpcbind
2、mkdir /sharestore(需要共享的目录)
3、vi /etc/exports
/sharestore *(rw,sync,no_root_squash)
4、service rpcbind start
5、service nfs start
6、chkconfig rpcbind on
7、chkconfig nfs on
客户端
1、yum -y install nfs-utils rpcbind
2、service portman start
3、mkdir /mnt/store(需要映射 ...
需要在crontab中增加一行
* * * * * php /projectroot/artisan schedule:run 1>> /var/log/schedule.log 2>&1
使用方式和laravel中一样,但由于luemn不支持artisan make:console,所以无法使用自定义的artisan命令。在larvel中创建并直接迁移过来则未测试过。
但可以在直接用call命令调用执行,如下,Reconciliation类是一个Job
$schedule->call(function () {
$reconciliation ...
1、安装邮件组件
修改composer.json,在require中增加以下语句,并执行composer update
"illuminate/mail":"*"
2、增加config/mail.php
<?php
return [
'driver' => env('MAIL_DRIVER'),
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'username' => env('MAIL_USERNAME'),
'pas ...
1、安装excel组件
修改composer.json,在require中增加下面的语句,并执行composer update
"maatwebsite/excel": "~2.0.0",
2、注册Excel服务
修改bootstrap/app.php
$app->register(Maatwebsite\Excel\ExcelServiceProvider::class);
class_alias('Maatwebsite\Excel\Facades\Excel', 'Excel');
3、修改vendor/maa ...
1、采用redis作为队列驱动
修改.env文件
QUEUE_DRIVER=redis
2、增加config/queue.php文件
connections下的名称要与database.php的配置一致
<?php
return [
'default' => env('QUEUE_DRIVER', 'redis'),
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queu ...
1、安装redis模块
在compose.json的require中添加
"predis/predis": "*",
"illuminate/redis": "*",
然后执行composer update
2、修改.env文件,设置CACHE_DRIVER
CACHE_DRIVER=redis
3、在config文件夹中增加database.php
'redis' => [
'cluster' => env('REDIS_CLUSTER', false),
'd ...
在sencha architecture3中使用testing打包,程序运行成功。
但是使用production模式打包,启动时却会报一个alert属性异常。具体原因目前未发现,但一个简单的解决办法是,使用testing的包,但用production的app.js和app.json则可以正常启动。
目前可以确定的是问题可能在index.html中,如果替换了index,则会出现同样的错误。
由于sencha2.3有bug,导致弹出框点击确认后无法隐藏。
bug在动画效果上面,所以解决办法是在启动时执行以下语句禁止动画效果:
Ext.Msg.defaultAllowedConfig.showAnimation = false;
Ext.Msg.defaultAllowedConfig.hideAnimation = false;
XTemplate的复合调用
- 博客分类:
- sencha
XTemplate可以支持简单的逻辑,但可以通过自定义方法实现复杂逻辑。
在自定义方法中可以使用的是js语法,且与其它函数使用相同的上下文环境,也就是说它可以访问自定义的全局变量。
例如:
itemTpl: Ext.create('Ext.XTemplate',
'<tpl if="this.showPrice()">',
'<div class="x-innerhtml">{price}<tpl if="unit != null"> / {unit}</tpl> ...
ListView笔记
- 博客分类:
- sencha
1、itemheight不是以class属性设置的,而是以style属性直接设置在item中,且添加了!important标记,因此自定义的cls无法覆盖此属性。
2、在代码中调用setActiveItem不起作用,调用select方法则可成功设置活动项,但无法激活ActiveItemChange事件,但会激活selectionchange事件。
3、要设置自定义的item样式,需要设置baseCls和itemCls,并且样式表中要定义-first,-last,-selected样式。例如自定义样式为mylist,则样式表中还要保护mylist-first,mylist-last,mylis ...
应用程序启动时的函数调用顺序
- 博客分类:
- sencha
1、控制器中的init
2、设备配置文件中的launch
3、应用程序的launch
4、控制器中的launch
http://www.360doc.com/content/13/0220/16/8072791_266771658.shtml
sencha architect 3环境配置
- 博客分类:
- sencha
只有体验版,30天有效,但可以每30换一个邮箱注册继续使用。
需要依赖ruby、jdk、ant,否则不能build。在edit/preferences/dependency中设置。
同时需要启用并选择build tool的版本,可选择commercial版。在edit/project setting/framework中设置。
NestedList的item样式定制
- 博客分类:
- sencha
NestedList没有提供itemTpl属性,但实际上可以通过设置listConfig对元素的显示样式进行定制。如下:
Ext.define('Portal.view.Production', {
extend: 'Ext.dataview.NestedList',
requires: [
'Ext.data.TreeStore'
],
config: {
id: 'production',
hideOnMaskTap: true,
backText: '返回',
...