在阿里云的CentOS中升级Python2.7

环境:

  • CentOS: 6.x
  • Python: 2.6

CentOS 6中默认的python版本为2.6, 要安装2.7的话需要先安装compile环境。

yum groupinstall "Development tools"

安装时会出现以下错误

Error: Package: systemtap-devel-1.7-5.el6_3.1.x86_64 (updates)
           Requires: kernel-devel
Error: Package: glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
           Requires: kernel-headers >= 2.2.1
Error ...
more ...

阿里云 CentOS 虚拟机配置

Note 本编中所有的系统都是CentOS 6.3, 其他操作系统,请略过。

修改root密码

passwd

用户管理

  1. 创建新的用户

    useradd -m rocky
    passwd rocky
    usermod -G wheel rocky
    
  2. 修改pam配置 vi /etc/pam.d/su ,使非wheel组用户不能使用su命令登录为root, 找到以下行注释掉就可以

    #auth required /lib/security/$ISA/pam_wheel.so use_uid
    

    vi /etc/login.defs, 在最后添加

    SU_WHEEL_ONLY yes
    
  3. 安装sudo工具 ...

more ...

阿里云 Ubuntu 虚拟机配置

Note 本编中所有的系统都是ubuntu 12.04, 其他操作系统,请略过。

修改root密码

passwd

SSH 配置

vi /etc/ssh/sshd_config
修改Port = 65513

service ssh restart

用户设置

groupadd admin
useradd -m -s /bin/bash -g admin rocky

cd /home/rocky
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 ...
more ...

前端apache的缓存后面的application server的数据

注意, 本文只在Apache版本: 2.2.15 测试通过。

编辑 /etc/httpd/conf/httpd.conf , 确保以下内容存在并且没有被注释

LoadModule disk_cache_module modules/mod_disk_cache.so

接着在上述文件最后添加以下内容:

<IfModule mod_disk_cache.c>
   CacheRoot /tmp/cacheroot
   CacheEnable disk /images
   CacheDirLevels 5
   CacheDirLength 3
</IfModule>

创建存放 cache 的文件夹, 并将权限赋予apache用户, 注意:tmp的文件会在重启后清除

mkdir -p /tmp/cacheroot
chown apache:apache /tmp/cacheroot

重启apache

sudo ...
more ...

配置Apache服务器使用ssl连接

环境:

  • CentOS: 6.3

首先安装mod_ssl, open_ssh, 执行

sudo yum install mod_ssl openssl

用 OpenSSL 生成私有证书, 执行

openssl genrsa -out ca.key 1024

生成CSR文件, 执行

openssl req -new -key ca.key -out ca.csr

生成Cert文件

openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt

拷贝文件到指定目录

sudo ...
more ...

CentOS服务器下KVM安装和使用

安装

原来用qemu命令的安装方式已经过时,用virt-install代替

安装需要的Centos命令

yum -y install qemu-kvm libvirt python-virtinst bridge-utils 
/etc/rc.d/init.d/libvirtd start 
chkconfig libvirtd on

cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-br0

编辑ifcfg-br0

DEVICE=br0
TYPE=Bridge

编辑ifcfg-eth0

BRIDGE=br0

启动网络,如果没有发现virbr0起来,重启一下机器。

/etc/rc.d/init.d/network restart

安装Centos guest命令

virt-install -n ...
more ...

HTML coding standard

文件命名规范

  • 文件名由英文小写字母和下划线共27个字符组成。由于windows平台不分大小写的原因。
  • 文件后缀固定为html。

例子:

非标准 标准
Index.html index.html
ContactUs.html contact_us.html

字符编码规范

统一使用utf-8编码。

结构规范

整个网页的总体的构成如下。

<!DOCTYPE>
<html>
  <head>
    <meta>
    <title>
    <style>
    <script>
  </head>

  <body>
  </body>
</html>

各部分内容互不干涉,javascript脚本必须在之间, 内容必须在之间。 页面的内容必须在之间。

标签规范

  • 所有标签使用英文小写。
  • 所有标签必须闭合。一个比较常见的旧html中的标签都没有闭合,如
  • 不要使用标签的布局属性。如width, height等。
  • 属性也是英文小写,属性的值必须用英文半角的单引号(')括一起来。
  • 不许精简属性。如checked ...
more ...

JPA Dead Lock 死锁

使用JTA + hibernate 做持久层,Unitils 做Repository的单元测试。

Test类中的repository是用Unitils 提供的@SpringBean进行注入。 而repository中的entityManager是用@PersistenceContext的方式注入, 这个注入是由spring来管理的,所以repository的实现类中的entityManager 的datasource是属于spring的。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

然而 ...

more ...

OpenJPA Entity

出现下列错误

Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
com.example.jpastudy.Message".

解决方法1, 在persistence.xml中添加

<property name="openjpa.RuntimeUnenhancedClasses ...
more ...

JPA 中如何使用String 类型作为Identity

默认的JPA是使用Int, Long来作为ID使用的。但是用这两种型的ID作为 Primarykey有一些不好的地方。

  • 可能会溢出。
  • SqlServer 的identity属性让你的单元测试变得焦头烂额, 因为你初始化数据库的时候总可能出现

    Cannot insert explicit value for identity column,
    

    这是由于你对ID附上值了。 * 如果存在一个老系统,他的主键不是数字型,而是自己定义的varchar 或char类型的话就会有问题。

这里我将讲述如何使用String作为@Id, 但我不用annotation的方式去配置。而是用xml定义方式。

如下例, 数据库的表结构如下

CREATE TABLE questions (
    question_id VARCHAR(15) primary key,
    description VARCHAR(30)
);

xml定义如下

<entity class="Question" metadata-complete="true">
    <table name="questions" />
    <attributes>
        <id name="questionId ...
more ...