Linux CentOS 安装微软字体的方法

由于用到在centos上打印PDF功能, 有些字体需要安装

微软字体包括

Andale Mono
Arial Black
Arial (Bold, Italic, Bold Italic)
Comic Sans MS (Bold)
Courier New (Bold, Italic, Bold Italic)
Georgia (Bold, Italic, Bold Italic)
Impact
Times New Roman (Bold, Italic, Bold Italic)
Trebuchet (Bold, Italic, Bold Italic)
Verdana (Bold, Italic, Bold Italic)
Webdings

安装方法:

wget http://www.my-guides.net/en/images/stories/fedora12/msttcore-fonts-2.0-3.noarch.rpm

rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm

phpstorm pycharm环境里git使用ssh登陆更新解决方案

由于现在不用svn了, 使用git+ssh更新提供安全性

git window客户端比较简单 使用puttygen生成ppk就可以了

IDE里需要在 C:\Users\Administrator目录 (Administrator 用户登陆, 可使用 %USERPROFILE%命令打开) 里打开cmd.exe

执行命令 ssh-keygen -t rsa -b 1024 -C "home-computer" 回车

出现路径后需要如果无法生成需要填写如 c:/ssh/id_rsa

一直回车即可生成, 然后把所有文件复制到 C:\Users\Administrator\.ssh目录

把id_rsa.pub里的内容上传到服务器的 ~/.ssh/authorized_keys

再使用 git.exe clone ssh://user@ip/path 测试是否可以clone, 成功后即可

CentoOS Yum更新SVN 1.6 到 1.8

You can do this to upgrade your subversion :

For CentOS/RHEL 7 Users:

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/7/svn-1.8/RPMS/$basearch/
enabled=1
gpgcheck=0

For CentOS/RHEL 6 Users:

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/
enabled=1
gpgcheck=0

For CentOS/RHEL 5 Users:

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/5/svn-1.8/RPMS/$basearch/
enabled=1
gpgcheck=0

Next you create a repo for your subversion:

vi /etc/yum.repos.d/wandisco-svn.repo

Copy paste which one repo you used to wandisco-svn.repo file, and execute this below :

yum clean all
yum remove subversion
yum install epel-release
yum install subversion

Don’t forget to use your root access to do that. :

Linux iptables下SSH Tunnel的问题解决

新的VPS打开iptables后无法使用ssh tunnel

解决办法:

iptables -A INPUT -i lo -j ACCEPT
service iptables save
service iptables restart

搞了几个小时, 3行就解决了, 坑爹的程序员!

Python3.5 Cento6.5 生产环境 Django Nginx Uwsgi Mysql安装

# 先更新系统
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

# 安装
cd /usr/local/src
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar -zxvf Python-3.5.0.tgz

cd Python-3.5.0
./configure –prefix=/usr/local/python
make && make altinstall

# 建立软连接
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/python/bin/python3.5 /usr/bin/python
ln -s /usr/local/python/bin/pip3.5 /usr/bin/pip

# pip安装一些工具
pip install virtualenv
ln -s /usr/local/python/bin/virtualenv /usr/bin/virtualenv

#
cd /home
mkdir python
cd python

# 建立环境
virtualenv geizhekou
source geizhekou/bin/active

# 安装必须的东西
pip install django
pip install pymysql

# 退出
deactivate

# 安装 uwsgi

# 具体可参考 http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html

pip install uwsgi
ln -s /usr/local/python/bin/uwsgi /usr/bin/uwsgi

cd /home/wwwroot
vim test.py

加入
def application(env, start_response):
    start_response(‘200 OK’, [(‘Content-Type’,’text/html’)])
    return [b"Hello World"]

测试 uwsgi –http :8001 –wsgi-file test.py

# 通过后安装nginx   参考 http://nginx.org/en/linux_packages.html#stable

vim /etc/yum.repos.d/nginx.repo

加入
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

yum install nginx

# 安装mysql  参考 https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
vim /etc/yum.repos.d/mysql-community.repo
粘贴:
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

看一眼 yum repolist enabled | grep mysql 没问题的话就 yum install mysql-community-server

操作命令
service mysqld start
service mysqld status
# 安全配置 执行:
mysql_secure_installation

# 备注

yum在python新版本有问题, 需要:  编辑/usr/bin/yum 将第一行编辑成 /usr/bin/python2.6

CentoOS 禁止root使用密码直接登录

最近新买了一个VPS, 考虑到安全问题打算不再使用root直接登录.

比较强制的方法是直接禁止root远程登录

vim /etc/ssh/sshd_config

查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“yes”改为“no”,并保存文件。

(需要提前加一个可以登录的用户) 

重启 service sshd restart

但是我经常需要用root做一些事, 每次使用其他用户登录再su到root用户比较麻烦, 于是考虑禁止root密码登录, 而保留了root密匙登录

方法是:

vim /etc/ssh/sshd_config

取消以下注释

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

文件最后还需要加入

Match User root
        PasswordAuthentication no

保存后重启sshd即可.

当然, 需要提前把密匙放到 /root/.ssh/authorized_keys

生成密匙的方法xshell和putty都行.

Phpword生成table列跨页断开的问题修正

最近需要使用phpword来生成一些文件, 遇到了生成表格里列换行断开的情况

由于使用的是 https://phpword.codeplex.com/ 这个版本, 查看了下源代码, 发现没有设置的代码,

参考了高级一点的版本: https://github.com/PHPOffice/PHPWord

把row生成时候加入样式即可, 具体为:

PHPWord目录Writer / Base.php文件换_writeTable方法

$objWriter->startElement(‘w:tr’);  // 396行左右

后面加入

$objWriter->startElement('w:trPr');
$objWriter->startElement('w:cantSplit');
$objWriter->writeAttribute('w:val', '1');
$objWriter->endElement();
$objWriter->endElement();

再生成后表格在分页时行就不会断开了

Django1.8 Admin显示多对多关系字段

Django 自带了一个不错的ManyToManyField的Form, 参考django.contrib.auth.User的UserAdmin定义,如下,
class User(models.Model):
    …
    groups = models.ManyToManyField(Group…)
    user_permissions = models.ManyToManyField(Permission…)
class UserAdmin(admin.ModelAdmin):
    …
    filter_horizontal = (‘user_permissions’,)
你添加一个groups, 修改为,
    filter_horizontal = (‘user_permissions’, ‘groups’, )
保存,启动server, 访问http://localhost:8000/admin/auth/user/1/, 界面如下,

如左边显示为 xx object字样的, 需要在model里添加__str__方法

def __str__(self):
return self.name

WNDR4300路由器刷openwrt与Shadowsocks安装心得

中午路由器终于到了, 打开后直接开始刷openwrt, 路由器固件地址:
https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/nand/openwrt-ar71xx-nand-wndr4300-ubi-factory.img (15.08.20最新版)

刷固件方法很简单, 直接在官方固件里的固件升级选择后确定, 等待几分钟自动重启就搞定了.

真正折腾的时候来了, 网上教程很多, 但是第一次弄还是折腾了将近3个小时.

主要参考: http://tonylee.name/?page_id=14

一.  openwrt汉化:
SSH登陆后

opkg update
opkg install luci-i18n-chinese

然后在界面里选择语言注销再等登陆即可.

二. 安装chinadns和shadowsocks.

1. 首先编辑opkg.conf文件,添加一个shadowsocks官方软件更新源
下载参考地址 – 没有的话可以直接去GG搜:

http://openwrt-dist.sourceforge.net/releases/ar71xx/packages

http://openwrt-dist.sourceforge.net/releases/luci/packages

直接下载 ChinaDNS_1.3.2_ar71xx.ipk 和 shadowsocks-libev-polarssl_2.3.0-1_ar71xx.ipk

下载到目录后安装 opkg install *.ipk

参考 http://tonylee.name/?page_id=14 里的教程一直配置到ipset那一步

/etc/init.d/shadowsocks的配置如下

#!/bin/sh /etc/rc.common

START=95

SERVICE_USE_PID=1
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1

CONFIG=/etc/shadowsocks.json

start() {
        #service_start /usr/bin/ss-local -c $CONFIG -b 0.0.0.0
        service_start /usr/bin/ss-redir -c $CONFIG -b 0.0.0.0
        service_start /usr/bin/ss-tunnel -c $CONFIG -b 0.0.0.0 -l 5354 -L 8.8.8.8:53 -u
}

stop() {
        #service_stop /usr/bin/ss-local
        service_stop /usr/bin/ss-redir
        service_stop /usr/bin/ss-tunnel
}

dnsmasq配置为

vim /etc/dnsmasq.conf

最后添加, 默认使用chinadns的配置, 根据ipset域名判断使用ss的端口转发dns做判断

no-resolv
server=127.0.0.1#5353
log-queries
conf-dir=/etc/dnsmasq.d

添加规则

cd /etc/dnsmasq.d
wget http://axisray.me/share/gfwdomains.conf

我是人工替换掉127.0.0.1/5353后面的端口和ipset的标识, 跟ipset里的设置一样即可

ipset的设置

ipset -N gfwipset iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwipset dst -j REDIRECT --to-port 1080

加入开机 vim /etc/rc.local

修改成

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
ipset -N gfwipset iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwipset dst -j REDIRECT --to-port 1080
exit 0

ChinaDNS+Shadowsocks最新懒人智能科学上网

1、首先编辑opkg.conf文件,添加一个shadowsocks官方软件更新源
vi /etc/opkg.conf

在文件末尾添加如下内容:
src/gz openwrt_dist http://openwrt-dist.sourceforge.net/releases/ar71xx/packages
src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/releases/luci/packages

2、然后依次运行以下命令
opkg update
opkg install ChinaDNS
opkg install luci-app-chinadns
opkg install shadowsocks-libev-spec
opkg install luci-app-shadowsocks-spec

3、最后,登陆路由器web管理平台,去配置好参数,就可以科学上网了,爽歪歪吧~
参数配置的几个关键点:

一、ChinaDNS
1、上游服务器:114.114.114.114,8.8.4.4
可填入一系列的上游DNS服务器,根据实际情况来,可以保留默认,注意逗号后面不能有空格。有些ISP会封杀公共DNS,此时请将114DNS改为ISP的DNS;此处必须至少填入一个国内IP的DNS和一个国外IP的DNS,否则会造成ChinaDNS启动失败。

2、双向过滤: 勾选

勾选时,当国外DNS服务器返回的查询结果是国内IP,或者当国内DNS服务器返回的查询结果是国外IP,则过滤掉这个结果(较为严格的模式);去掉勾选的话只是过滤国内DNS的国外IP结果。

3、启用压缩指针: 勾选

利用GFW遇到压缩指针时的一个bug来精确识别来自GFW的抢答污染,从而极大提高识别的准确性和识别的效率,

4、本地端口:5353

ChinaDNS所监听的端口。根据实际情况更改,注意不能和其他服务的端口重复(特别是dnsmasq和shadowsocks);保持默认值5353就可以啦

二、DHCP/DNS设置

然后,在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在”DNS转发”中填入127.0.0.1#5353

其中,5353是ChinaDNS的端口,如果你在之前设置界面里改了,这里记得别填错。

然后切到HOSTS和解析文件选项卡,勾中“忽略解析文件”

三、Shadowsocks

记得关闭UDP转发。