Docker打包优化
老高最近快被工作掩埋了,各种赶上线,各种修BUG,真凄惨! 今天来说说Docker打包的优化问题。为什么要说这个问题呢?请听我慢慢道来。
老高最近快被工作掩埋了,各种赶上线,各种修BUG,真凄惨! 今天来说说Docker打包的优化问题。为什么要说这个问题呢?请听我慢慢道来。
删除自带web、数据库、php
yum remove httpd* php* mysql-server mysql* php-mysql -y
删除不需要的程序
yum remove Deployment_Guide-en-US finger cups-libs cups ypbind bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils sendmail* samba* talk-server finger-server bind* xinetd nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools -y
yum groupremove "Mail Server" "Games and Entertainment" "X Window System" "X Software Development" "Development Libraries" "Dialup Networking Support" "Games and Entertainment" "Sound and Video" "Graphics" "Editors" "Text-based Internet" "GNOME Desktop Environment" "GNOME Software Development" -y
yum -y groupremove "FTP Server" "PostgreSQL Database client" "PostgreSQL Database server" "MySQL Database server" "MySQL Database client" "Web Server" "Office Suite and Productivity" "E-mail server" "Ruby Support" "Printing client"
关闭selinux
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
对系统进行一些优化
sed -i 's/^id:.*$/id:3:initdefault:/' /etc/inittab
init q
[ -z "`cat ~/.bashrc | grep ^PS1`" ] && echo 'PS1="[e[37;40m][[e[32;40m]u[e[37;40m]@h [e[35;40m]W[e[0m]]\$ "' >> ~/.bashrc
sed -i 's/^HISTSIZE=.*$/HISTSIZE=10/' /etc/profile
[ -z "`cat ~/.bashrc | grep history-timestamp`" ] && echo "export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });user=$(whoami); echo $(date "+%Y-%m-%d %H:%M:%S"):$user:`pwd`/:$msg ---- $(who am i); } >> /tmp/`hostname`.`whoami`.history-timestamp'" >> ~/.bashrc
[ -z "`cat /etc/security/limits.conf | grep 'nproc 65535'`" ] && cat >> /etc/security/limits.conf <> /etc/rc.local
[ "$(hostname -i | awk '{print $1}')" != "127.0.0.1" ] && sed -i "s@^127.0.0.1(.*)@127.0.0.1 `hostname` 1@" /etc/hosts
[ -z "`cat /etc/pam.d/system-auth | grep 'pam_tally2.so'`" ] && sed -i '4a auth required pam_tally2.so deny=5 unlock_time=180' /etc/pam.d/system-auth
输入vi自动打开vim
[ -z "`cat ~/.bashrc | grep 'alias vi='`" ] && sed -i "s@alias mv=(.*)@alias mv=1nalias vi=vim@" ~/.bashrc && echo 'syntax on' >> /etc/vimrc
升级系统
yum -y update
yum clean all
美化命令行,其实在之前优化那里就美化了,这里只是让它生效而已
. /etc/profile
. ~/.bashrc
删除不需要的服务,这里自行考虑,反正我是只保留几个的~
service modules_dep stop
chkconfig modules_dep off
chkconfig --del modules_dep
service netconsole stop
chkconfig netconsole off
chkconfig --del netconsole
service netfs stop
chkconfig netfs off
chkconfig --del netfs
service nscd stop
chkconfig nscd off
chkconfig --del nscd
service quota_nld stop
chkconfig quota_nld off
chkconfig --del quota_nld
service rdisc stop
chkconfig rdisc off
chkconfig --del rdisc
service restorecon stopd
chkconfig restorecond off
chkconfig --del restorecond
service saslauthd stop
chkconfig saslauthd off
chkconfig --del saslauthd
service snmpd stop
chkconfig snmpd off
chkconfig --del snmpd
service snmptrapd stop
chkconfig snmptrapd off
chkconfig --del snmptrapd
service gpm stop
chkconfig gpm off
chkconfig --del gpm
service iscsi stop
chkconfig iscsi off
chkconfig --del iscsi
service iscsid stop
chkconfig iscsid off
chkconfig --del iscsid
service lm_sensors stop
chkconfig lm_sensors off
chkconfig --del lm_sensors
service lvm2-monitor stop
chkconfig lvm2-monitor off
chkconfig --del lvm2-monitor
service mcstrans stop
chkconfig mcstrans off
chkconfig --del mcstrans
service messagebus stop
chkconfig messagebus off
chkconfig --del messagebus
service multipathd stop
chkconfig multipathd off
chkconfig --del multipathd
service netconsole stop
chkconfig netconsole off
chkconfig --del netconsole
service netfs stop
chkconfig netfs off
chkconfig --del netfs
service netplugd stop
chkconfig netplugd off
chkconfig --del netplugd
service nscd stop
chkconfig nscd off
chkconfig --del nscd
service rawdevices stop
chkconfig rawdevices off
chkconfig --del rawdevices
service rdisc stop
chkconfig rdisc off
chkconfig --del rdisc
service restorecond stop
chkconfig restorecond off
chkconfig --del restorecond
service ntpd stop
chkconfig ntpd off
chkconfig --del ntpd
service ip6tables stop
chkconfig ip6tables off
chkconfig --del ip6tables
service ntpdate stop
chkconfig ntpdate off
chkconfig --del ntpdate
service portreserve stop
chkconfig portreserve off
chkconfig --del portreserve
service udev-post stop
chkconfig udev-post off
chkconfig --del udev-post
service exim stop
chkconfig exim off
chkconfig --del exim
前几天再Startssl已经为我的博客申请的证书通过,今天早上学习了RSA加密原理,趁着热乎劲还没过,下午就把本站全部升级为https啦!
看到这个https,瞬间觉得高大上了许多。大家可能认为为自己的网站开启ssl功能很麻烦,其实不然。下面老高就简单的介绍一下开启的步骤,自己也做个记录。
不同的服务器配置ssl的方法大题思路相同,本文以nginx为例。
当然你还可以试试使用Let's Encrypt -- 免费的https证书
这篇文章个人觉得很受用,故仔细翻译了一下,有些地方可能翻译的不好,请见谅!
翻译后发现貌似已经有人翻译过,但是翻译的水平就有点。。。。。那篇文章中不仅忽略了知识点,并且出现了明显的语义和语法错误,有一定的误导作用,所以请务必重新阅读老高的翻译。文章中容易出错的地方老高已经注释(在文章中以【】标出)。
如需转载,请注明出处!
web开发者在发布你的作品前需要考虑的技术细节 What technical details should a programmer of a web application consider before making the site public!
原文地址: 来自stackexchange.com quora的回答
rel="nofollow"
属性,以避免SEO作弊。favicon.ico
在服务器的根目录,就算html里没有提到他,浏览器也会自动请求他。如果你没有一个favicon.ico
,那么会导致很多的404错误,并浪费带宽。www.phpgao.com/technical_details.html
,而不用www.phpgao.com/index.php?p=XXX
。./#!page=1
变为?_escaped_fragments_=page=1
。同时,针对使用火狐beta4或者Chrome浏览器的用户,使用history.pushState({"foo":"bar"}, "About", "./?page=1");
,是一个不错的选择。这样的话即使浏览器的地址栏有变化,但是页面不会重新加载。这样就允许你使用?
代替#
以保留动态内容,同时告诉服务器当你通过邮件发送的链接到底是什么页面,同时 ajax不需要额外的请求。【这一段如果看不懂:请参考URL的井号】/sitemap.xml
。
指出你需要强调的页面,这个问题可以在Google Webmaster Tools被找到。normalize.css
.typecho的出现让我终结了使用多年的WP,小巧的体积,不错的速度
如果你还不懂markdown语法,请参考markdown语法
由于typecho使用了md语法,那么强烈推荐这篇文章,为你的博客加入目录功能
如果想让你的博文地址变成这个样子www.phpgao.com/typecho.html
,那就需要开启地址重写功能,俗称伪静态。
这样需要在新链接形式和旧链接形式间做一些转换,而转换的规则就定义在.htaccess
或httpd.ini
文件里!
linux的下的.htaccess可以直接参考WP的配置,而windows下的IIS请参考如下配置,将下面的代码拷贝至httpd.ini
文件,放置到web根目录下
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^/(admin|usr)/(.*) /$1/$2 [L]
RewriteRule ^/(.*).html$ /index.php/$1.html [L]
RewriteRule ^/archives/(.*) /index.php/archives/$1 [L]
RewriteRule ^/category/(.*) /index.php/category/$1 [L]
RewriteRule ^/author/(.*) /index.php/author/$1 [L]
RewriteRule ^/([0-9]+)/([0-9]+)/$ /index.php/$1/$2/ [L]
RewriteRule ^/tag/(.*)/$ /index.php/tag/$1 [L]
RewriteRule ^/search/(.*)/$ /index.php/search/$1 [L]
RewriteRule ^/(.*)page/(.*) /index.php/$1page/$2 [L]
RewriteRule ^/(feed.*) /index.php/$1 [L]
RewriteRule ^/action/(.*) /index.php/action/$1 [L]
RewriteRule ^/(.*)comment /index.php/$1/comment [L]
RewriteRule ^/sitemap /index.php/sitemap [L]
RewriteRule ^/go/(.*) /index.php/go/$1 [L]
一定要注意不要同时存在htaccess和httpd.ini两个文件,否则网站会莫名其妙的打不开!
使用了插件后,如果插件为系统添加了一些路由,并且很不幸你的博客像我一样开启了伪静态,那么就需要在伪静态文件中添加对应的路由,把他放倒/index.php
后面即可。
这里使用了一点点正则表达式的概念,如果不懂可以参考这篇文章正则表达式教程。
地址重写的原理很简单,当一个请求符合RewriteRule后面的地址规则,就按照替换规则生成最终的URL,而整个过程对用户是透明的,URL地址也没有变化。
如果你的sitemap插件总是不生效,那一定要好好检查一下伪静态的设置!
[toc]
table of contents 即文章目录
废话,你说目录有啥用,方便查找呗
使用typecho的TX,一定会一点markdown吧,在文章中如果出现##this's h2 tag##
,会被程序转换为
this's h2 tag
一个h标签就好比一本书的各个章节,如果我们能把他们清点一下,组成一个目录输出,岂不是妙哉!
简单到不能再简单,在你想插入目录的地方放一个[toc]
或[TOC]
即可(推荐大写)!
[TOC]
必须处于顶格
typecho的源代码中已经使用了激进的MarkdownExtraExtended类来转化md文件,为什么说他很激进呢?因为他扩展了标准的markdown,添加了很多个性化的语法,如直接给元素添加id或者class,还有脚注、缩写词等,用起来确实很爽!但需要注意的是:太多的非标准语法可能会带来移植性差的问题
具体的语法参考请看这里php Markdown Extra
要使typecho支持toc需要替换位于源程序中的/wwwroot/var/
文件夹下的MarkdownExtraExtended.php
为 MarkdownExtraExtended.php
这个文件的作用就是为typecho提供md2html的作用,我修改了MarkdownExtraExtended类的__construct方法,为block_gamut数组添加了 doToc
处理模块,并把优先级降到最低。
转换细节位于doToc
与_doToc_callback
中,在此不作赘述。