问题描述
HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。
解决办法
可以在相应的页面的
里加上这句代码,意思是自动将http的不安全请求升级为https<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。
可以在相应的页面的
里加上这句代码,意思是自动将http的不安全请求升级为https<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
默认情况下, Linux 会最多使用 40% 的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的 IO 请求都是同步的。
将缓存写入磁盘时,有一个默认120 秒的超时时间。 出现上面的问题的原因是 IO 子系统的处理速度不够快,不能在 120 秒将缓存中的数据全部写入磁盘。
IO 系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。
根据应用程序情况,对 vm.dirty_ratio,vm.dirty_background_ratio 两个参数进行调优设置。 例如,推荐如下设置:
# sysctl -w vm.dirty_ratio=10
# sysctl -w vm.dirty_background_ratio=5
# sysctl -p
如果系统永久生效,修改 /etc/sysctl.conf 文件。加入如下两行:
#vi /etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
重启系统生效。
Wagtail是一个用Python编写的开源CMS,并构建在Django框架上。它是由开发者为开发者开发的,它为编辑提供了一个快速吸引人的界面,让编辑可以直观地创建和结构化内容。优雅、强大和敏捷——我们对Wagtail能提供的东西感到非常自豪。
有很多优秀的开源内容管理系统。我们在大型网站上非常成功地使用Drupal,包括知名的非政府组织、筹款慈善机构、智库、大学和公共部门组织。还有一些优秀的Django CMS,包括Mezzanine, Fein和Django CMS,它们的开发人员社区很好,案例研究也令人印象深刻。
但是,在建立了14年的内容管理网站之后,我们对编辑的经验和CMS的工作方式和结构有了强烈的意见,我们需要通过对现有项目的贡献来管理一个比我们能够实现的更快的发展速度。
Django自0.96年以来一直是Andrew Godwin的热情支持者和支持者,我们很自豪地将Django和Django等Django和Django等人都在我们的校友中。
在过去的5年里,Django一直是我们最喜欢的应用程序开发的平台,因为它继续为健壮的、快速的开发和编码乐趣所带来的甜蜜点。
不要打断你的流程来添加媒体——直观设计
简单且可配置,即使是复杂的需求
包括多站点和多语言支持
pip install wagtail
wagtail start mysite
cd mysite
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
现在,你可以登录 http://127.0.0.1:8000/admin/. 开始构建你的站点,或者查看我们的Wagtail10分钟指南。
谷歌浏览器升级到63后发现本地配置的*.dev的域名都不能访问了,全都自动跳转到https。
翻出去搜一下才知道原来谷歌的博士们脑残了,在评论区被骂出翔了。
$draw = new \ImagickDraw();
$imagick = new \Imagick();
$imagick->newImage($width, $height, new \ImagickPixel('none'));
$draw->setFillColor($color);
$draw->setFont($font_file);
$draw->setFontSize($size);
$draw->setTextEncoding('UTF-8');
$stringArr = $this->mbStringToArray($text);
$textHeight = 0;
$textWidth = 0;
$charCount = count($stringArr);
$texts = [];
foreach ($stringArr as $char) {
$metrics = $imagick->queryFontMetrics($draw, $char, true);
$charHeight = $metrics['textHeight'];
$charWidth = $metrics['textWidth'];
$textHeight += $charHeight;
$textWidth += $charWidth;
$texts[] = ['char' => $char, 'height' => $charHeight, 'width' => $charWidth];
}
if ($direction == 2) {
if ($charCount > 1) {
$textHeight += ($charCount - 1) * $space;
}
$draw->setTextAlignment(\Imagick::ALIGN_CENTER);
$x = $size / 2;
if ($textHeight > $height) {
$offset = 0;
} else {
$offset = ($height - $textHeight) / 2;
}
$y = $offset;
foreach ($texts as $c) {
$y += $c['height'];
$draw->annotation($x, $y, $c['char']);
$y += $space;
}
} else {
if ($charCount > 1) {
$textWidth += ($charCount - 1) * $space;
}
$metrics = $imagick->queryFontMetrics($draw, $text, false);
$y = $metrics['ascender'];
$draw->setTextAlignment(\Imagick::ALIGN_LEFT);
if ($align == \Imagick::ALIGN_CENTER) {
if ($textWidth > $width) {
$x = 0;
} else {
$x = ($width - $textWidth) / 2;
}
} elseif ($align == \Imagick::ALIGN_RIGHT) {
$x = $width - $textWidth;
} else {
$x = 0;
}
foreach ($texts as $c) {
$draw->annotation($x, $y, $c['char']);
$x += $c['width'] + $space;
}
}
$imagick->setImageFormat("png");
$imagick->drawImage($draw);
header("Content-Type: image/png");
echo $imagick->getImageBlob();
Vagrant是非常好的本地开发环境搭建工具。
通常使用官方下载都会比较慢,而国内box下载地址较少,所以我特别下载了几个传到百度网盘。
(目前官方已支持CDN加速,可能不太需要了)
vagrant box add ubuntu/trusty64
vagrant box add ubuntu/trusty32
vagrant box add generic/ubuntu1804
vagrant box add generic/ubuntu1604
vagrant box add generic/centos7
vagrant box add generic/centos8
vagrant box add generic/centos8
vagrant box add generic/debian8
vagrant box add generic/debian10
vagrant box add centos7 CentOS-7.box
vagrant init centos7
vagrant up
header('Content-Type:image/png');
$width = 300;
$height = 300;
$color = 'ff0000';
$font_file = 'size.ttf';
$im = imagecreatetruecolor($width, $height);
$bg = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $bg);
imagefttext($im, 33, 0, 150, 150, $color, $font_file, 'test');
imagesavealpha($im, true);
imagepng($im);
imagedestroy($im);
$draw = new \ImagickDraw();
$imagick = new \Imagick();
$imagick->newImage($width, $height, new \ImagickPixel('none'));
$draw->setFillColor($color);
$draw->setFont($font_file);
$draw->setFontSize($size);
$draw->setTextEncoding('UTF-8');
$draw->annotation($x, $y, $text);
header("Content-Type: image/png");
echo $imagick->getImageBlob();
Vagrant是一款基于命令行的虚拟机管理软件,可以用来快速部署统一的开发环境。
https://www.vagrantup.com/downloads.html
https://app.vagrantup.com/boxes/search
https://app.vagrantup.com/centos/boxes/7
vagrant init centos/7
vagrant up
config.vm.network "public_network", ip: "192.168.31.245"
config.vm.synced_folder "d:/data", "/data"
config.vm.synced_folder "d:/phpcode", "/phpcode"
官方box文件下载地址:http://cloud.centos.org/centos/7/vagrant/x86_64/images/
百度网盘box文件下载地址:
vagrant box add centos7 CentOS-7.box
vagrant init centos7
vagrant up
vagrant ssh
sudo passwd vagrant
sudo yum groupinstall "Development tools" -y
sudo yum install vim gcc kernel-devel kenel-devel-`uname -r`
sudo setenforce 0
sudo vi /etc/selinux/config
SELINUX=disabled
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install yum-utils
sudo yum-config-manager --enable remi-php72
sudo yum update
sudo yum install php-gd php-pdo php-opcache php-fpm php-pecl-redis php-pecl-mysql php-pecl-mysql php-mbstring php-intl php-cli php-xml
sudo yum install nginx -y
sudo yum install mariadb mariadb-server -y
mkdir /data/log/nginx /data/run/nginx -p
sudo service nginx stop
sudo vim /etc/nginx/nginx.conf
nginx.conf配置修改如下:
user vagrant;
error_log /data/log/nginx/error.log;
pid /data/run/nginx/nginx.pid;
access_log /data/log/nginx/access.log main;
include /data/phpcode/projectname/vagrant/nginx/app.conf;
测试nginx配置
sudo nginx -t
修改nginx service配置:
sudo vim /usr/lib/systemd/system/nginx.service
nginx.service修改内容如下:
[Service]
PIDFile=/data/run/nginx/nginx.pid
重新加载service
sudo systemctl daemon-reload
sudo systemctl start nginx
mkdir /data/run/php-fpm/session /data/run/php-fpm/wsdlcache /data/run/php-fpm/opcache /data/log/php-fpm/ -p
sudo service php-fpm stop
sudo vim /etc/php-fpm.d/www.conf
配置内容
user = vagrant
group = vagrant
php_value[session.save_path] = /data/run/php-fpm/session
php_value[soap.wsdl_cache_dir] = /data/run/php-fpm/wsdlcache
php_value[opcache.file_cache] = /data/run/php-fpm/opcache
php_admin_value[error_log] = /data/log/php-fpm/www-error.log
slowlog = /data/log/php-fpm/www-slow.log
request_slowlog_timeout = 1
重启
sudo service php-fpm stop
mkdir /data/mysql /data/run/mariadb /data/log/mariadb -p
sudo service mariadb stop
sudo vim /etc/my.cnf
mysqld配置
[mysqld]
datadir=/data/mysql
socket=/usr/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/data/log/mariadb/mariadb.log
pid-file=/data/run/mariadb/mariadb.pid
mysql client 配置
[client]
初始化数据库
sudo /usr/libexec/mariadb-prepare-db-dir mariadb.service
修改systemd配置
sudo vim /usr/lib/systemd/system/mariadb.service
配置内容
User=vagrant
Group=vagrant
重载systemd
sudo systemctl daemon-reload
sudo systemctl start mariadb
修改mysql账号密码
'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h localhost.localdomain password 'new-password'
# Alternatively you can run:
'/usr/bin/mysql_secure_installation'
下载安装文件
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
安装
php composer-setup.php
删除安装文件
php -r "unlink('composer-setup.php');"
设置全局路径(windows请按参考文档设置)
sudo mv composer.phar /usr/bin/composer
配置使用国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com