Rootop 服务器运维与web架构

2011-09-08
发表者 Venus
暂无评论

Linux下apache+tomcat+jdk+tomcat-connectors搭建jsp运行环境

      JSP(java Server Pages)  是由Sun 公司倡导、许多公司一起参与与建立的一种基于Java技术的动态网页技术标准。在传统的网页HTML文件中嵌入Java的一个脚本,由脚本完成查询数据库、重定向网页和发送电子邮件等动态操作。

     由于最终服务器运行的是二进制的文件,所以运行效率要比传统的脚本语言高。

     防止出问题,先把selinux、iptables关闭

     这里apache就不采用源码编译安装了,直接yum install -y httpd

     Apache 只是一个web服务器,不能运行jsp程序。如果要运行jsp程序,还需要安装Tomcat服务器软件,通过整合Tomcat 和Apache来运行jsp程序。

     JDK 是java 2 Development Kit (java 开发工具包)的缩写。

它是一组API,所有的Java应用程序都是构建在JDK之上的,Tomcat的运行需要JDK的支持,应先安装JDK。

    我所运行的系统为rhel5.5_64,到sun公司官网下载jdk的64位版本,本文用的版本为:jdk-7u4-linux-x64.rpm,直接 rpm 安装即可。(http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-x64.rpm

程序会释放到 /usr/java/下,把jdk1.7.0_04做一个软链接:

[root@oracle ~]# cd /usr/java/
[root@oracle java]# ln -s jdk1.7.0_04/ jdk
[root@oracle java]# ll
总计 4
lrwxrwxrwx 1 root root   16 05-11 16:10 default -> /usr/java/latest
lrwxrwxrwx 1 root root   12 05-11 16:13 jdk -> jdk1.7.0_04/
drwxr-xr-x 8 root root 4096 05-11 16:10 jdk1.7.0_04
lrwxrwxrwx 1 root root   21 05-11 16:10 latest -> /usr/java/jdk1.7.0_04   

       tomcat 可以到apache官网下载:http://tomcat.apache.org/ 本文用的版本为:apache-tomcat-7.0.21.tar.gz ,直接解压到/var/local/tomcat 即可。(最新版http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.tar.gz)

    编辑tomcat用户管理文件,添加一个名为“nq”的管理员用户,密码为nq。

[root@oracle~]# vi /usr/local/tomcat/conf/tomcat-users.xml      // 添加红色部分

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
  <role rolename=”admin-gui”/>
  <role rolename=”admin-script”/>
  <role rolename=”manager-gui”/>
  <role rolename=”manager-script”/>
  <role rolename=”manager-jmx”/>
  <role rolename=”manager-status”/>

  <user username=”nq” password=”nq” roles=”admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status”/>
</tomcat-users>

保存退出,然后修改系统变量。

[root@oracle~]# vi /etc/profile           添加如下代码:

JAVA_HOME=/usr/java/jdk
CATALINA_HOME=/usr/local/tomcat
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CATALINA_HOME CLASSPATH PATH

保存退出,执行命令让环境变量生效:

[root@oracle~]# source /etc/profile

启动tomcat:

[root@oracle ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@oracle ~]#

      检查tomcat是否启动:

[root@oracle~]# netstat -anp | grep 8080
tcp        0      0 :::8080                     :::*                        LISTEN      5084/java
[root@oracle~]#

     在浏览器里访问http://172.17.1.113:8080/,可以看到tomcat的管理网页界面,并可以使用用户“nq”登陆管理。

      虽然Tomcat可以独立作为web服务器运行,但Tomcat的web功能远没有Apache强大,所以实际应用中是通过mod_jk2连接器将Apache和Tomcat整合在一起提供服务的,Apache处理静态页面的请求,Tomcat则用于处理JSP程序。

下载tomcat-connectors (http://labs.mop.com/apache-mirror//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.35-src.tar.gz)

下面开始编译mod_jk.so模块:

参考源码包中的BUILD.txt及native下的BUILDING.txt参考文档进行编译。

[root@oracle native]# yum install -y gcc
[root@oracle native]# yum install -y gcc-c++
[root@oracle native]# yum install -y httpd-devel
[root@oracle native]# yum install -y autoconf
[root@oracle native]# yum install -y libtool
[root@oracle native]# ./buildconf.sh   //先执行下自带的环境检查,根据提示缺什么装什么。
[root@oracle native]# ./configure –with-apxs=/usr/sbin/apxs      //一定要指定apxs路径,否则会报错找不到web server
[root@oracle native]# make
[root@oracle native]# make install   //可以自行复制到/etc/httpd/modules下,如果没有按照下面复制。
[root@oracle native]# cd apache-2.0/
[root@oracle apache-2.0]# ls
bldjk54.qclsrc  Makefile.apxs     mod_jk.a    mod_jk.lo
bldjk.qclsrc    Makefile.apxs.in  mod_jk.c    mod_jk.o
config.m4       Makefile.in       mod_jk.dsp  mod_jk.so
Makefile        Makefile.vc       mod_jk.la   NWGNUmakefile

(我在编译过程中遇到的问题参考:https://www.rootop.org/?p=772 )

安装mod_jk.so模块到apache:

[root@oracle apache-2.0]# cp mod_jk.so /etc/httpd/modules/

编辑 /etc/httpd/conf.d/mod_jk.conf 添加如下代码:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkShmFile /var/log/httpd/mod_jk.shm
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
JkMount /*/servlet/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
AddType application/x-jsp .jsp

[root@oracle~]# vi /etc/httpd/conf/workers.properties
[shm]
file=/etc/httpd/logs/shm.file
size=1048576
[channel.socket:localhost:8009]
tomcatId=localhost:8009
[uri:/jsp-examples/*]
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java/jdk
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
     要实现Apache和Tomcat的整合,需要设置Apache和Tomcat的主目录一致,应编辑Tomcat的主配置文件/usr/local/tomcat/conf/server.xml   //修改红色部分

代码:

 <Host name=”localhost”  appBase=”/var/www/html
            unpackWARs=”true” autoDeploy=”true”>
 <Context path=”” docBase=”” debug=”0″ />
重启apache tomcat服务,测试。

测试页:

test.jsp   代码如下:

<%@page import=”java.util.*”%>

Now Time is : <% out.println(new Date()); %>

测试效果如下:Now Time is : Sat May 12 11:19:04 CST 2012

(本文于2012/05/12 11:20 AM 最后修改)

2011-09-08
发表者 Venus
暂无评论

Apache配置CGI运行环境

       CGI是通用网关接口Common Gateway Interface 的缩写,用于连接网页和web服务器应用程序的接口。

        CGI 是web服务器运行的一个可执行程序,由网页的一个超链接激活并调用,并对该程序的返回结果进行处理,显示在客户端的web浏览器上。

        用CGI程序可以实现处理网页的表单处理、数据库查询、发送电子邮件等工作。

        CGI使网页变得不是静态的,而是交互的。

        CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量,如Perl、C、C++、Java,其中Perl易于编译调试、移植性颇强,可以说在众多的CGI编程语言中是最好最容易上手的语言。Perl几乎成了CGI的标准或代言词

[root@rhel ~]# rpm -qa perl
perl-5.8.8-27.el5                   //默认情况下,perl语言解释器会被系统默认安装

编辑apache的配置文件,找到 Options Indexes FollowSymLinks 设置存放CGI文件的目录权限

# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks ExecCGI

#

如果不修改目录权限,会提示 forbidden

Forbidden

You don’t have permission to access /test.cgi on this server.


Apache/2.2.3 (Red Hat) Server at 172.17.1.113 Port 80

标明CGI程序的文件类型

AddHandler cgi-script .cgi .pl           //标明哪些拓展名为cgi
不注明文件类型的话,不会去调用perl去执行脚本,会直接显示出源代码。

保存退出,重启apache。

在网站根目录建立测试页:

[root@rhel ~]# vi /var/www/html/test.cgi
[root@rhel ~]#chmod o+x /var/www/html/test.cgi        //需要执行权限

test.cgi 代码如下:

#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print “Network Questions\n”

然后通过浏览器访问: http://172.17.113/test.cgi

看到Network Questions 表明搭建成功。

2011-09-08
发表者 Venus
暂无评论

国家代号与区号

国家代号与区号

 

Countries and Regions 国家或地区 国际域名缩写 电话代码 时差
Angola 安哥拉 AO 244 -7
Afghanistan 阿富汗 AF 93 0
Albania 阿尔巴尼亚 AL 355 -7
Algeria 阿尔及利亚 DZ 213 -8
Andorra 安道尔共和国 AD 376 -8
Anguilla 安圭拉岛 AI 1264 -12
Antigua and Barbuda 安提瓜和巴布达 AG 1268 -12
Argentina 阿根廷 AR 54 -11
Armenia 亚美尼亚 AM 374 -6
Ascension 阿森松   247 -8
Australia 澳大利亚 AU 61 +2
Austria 奥地利 AT 43 -7
Azerbaijan 阿塞拜疆 AZ 994 -5
Bahamas 巴哈马 BS 1242 -13
Bahrain 巴林 BH 973 -5
Bangladesh 孟加拉国 BD 880 -2
Barbados 巴巴多斯 BB 1246 -12
Belarus 白俄罗斯 BY 375 -6
Belgium 比利时 BE 32 -7
Belize 伯利兹 BZ 501 -14
Benin 贝宁 BJ 229 -7
Bermuda Is. 百慕大群岛 BM 1441 -12
Bolivia 玻利维亚 BO 591 -12
Botswana 博茨瓦纳 BW 267 -6
Brazil 巴西 BR 55 -11
Brunei 文莱 BN 673 0
Bulgaria 保加利亚 BG 359 -6
Burkina-faso 布基纳法索 BF 226 -8
Burma 缅甸 MM 95 -1.3
Burundi 布隆迪 BI 257 -6
Cameroon 喀麦隆 CM 237 -7
Canada 加拿大 CA 1 -13
Cayman Is. 开曼群岛   1345 -13
Central African Republic 中非共和国 CF 236 -7
Chad 乍得 TD 235 -7
Chile 智利 CL 56 -13
China 中国 CN 86 0
Colombia 哥伦比亚 CO 57 0
Congo 刚果 CG 242 -7
Cook Is. 库克群岛 CK 682 -18.3
Costa Rica 哥斯达黎加 CR 506 -14
Cuba 古巴 CU 53 -13
Cyprus 塞浦路斯 CY 357 -6
Czech Republic 捷克 CZ 420 -7
Denmark 丹麦 DK 45 -7
Djibouti 吉布提 DJ 253 -5
Dominica Rep. 多米尼加共和国 DO 1890 -13
Ecuador 厄瓜多尔 EC 593 -13
Egypt 埃及 EG 20 -6
EI Salvador 萨尔瓦多 SV 503 -14
Estonia 爱沙尼亚 EE 372 -5
Ethiopia 埃塞俄比亚 ET 251 -5
Fiji 斐济 FJ 679 +4
Finland 芬兰 FI 358 -6
France 法国 FR 33 -8
French Guiana 法属圭亚那 GF 594 -12
Gabon 加蓬 GA 241 -7
Gambia 冈比亚 GM 220 -8
Georgia 格鲁吉亚 GE 995 0
Germany 德国 DE 49 -7
Ghana 加纳 GH 233 -8
Gibraltar 直布罗陀 GI 350 -8
Greece 希腊 GR 30 -6
Grenada 格林纳达 GD 1809 -14
Guam 关岛 GU 1671 +2
Guatemala 危地马拉 GT 502 -14
Guinea 几内亚 GN 224 -8
Guyana 圭亚那 GY 592 -11
Haiti 海地 HT 509 -13
Honduras 洪都拉斯 HN 504 -14
Hongkong 香港 HK 852 0
Hungary 匈牙利 HU 36 -7
Iceland 冰岛 IS 354 -9
India 印度 IN 91 -2.3
Indonesia 印度尼西亚 ID 62 -0.3
Iran 伊朗 IR 98 -4.3
Iraq 伊拉克 IQ 964 -5
Ireland 爱尔兰 IE 353 -4.3
Israel 以色列 IL 972 -6
Italy 意大利 IT 39 -7
Ivory Coast 科特迪瓦   225 -6
Jamaica 牙买加 JM 1876 -12
Japan 日本 JP 81 +1
Jordan 约旦 JO 962 -6
Kampuchea (Cambodia ) 柬埔寨 KH 855 -1
Kazakstan 哈萨克斯坦 KZ 327 -5
Kenya 肯尼亚 KE 254 -5
Korea 韩国 KR 82 +1
Kuwait 科威特 KW 965 -5
Kyrgyzstan 吉尔吉斯坦 KG 331 -5
Laos 老挝 LA 856 -1
Latvia 拉脱维亚 LV 371 -5
Lebanon 黎巴嫩 LB 961 -6
Lesotho 莱索托 LS 266 -6
Liberia 利比里亚 LR 231 -8
Libya 利比亚 LY 218 -6
Liechtenstein 列支敦士登 LI 423 -7
Lithuania 立陶宛 LT 370 -5
Luxembourg 卢森堡 LU 352 -7
Macao 澳门 MO 853 0
Madagascar 马达加斯加 MG 261 -5
Malawi 马拉维 MW 265 -6
Malaysia 马来西亚 MY 60 -0.5
Maldives 马尔代夫 MV 960 -7
Mali 马里 ML 223 -8
Malta 马耳他 MT 356 -7
Mariana Is 马里亚那群岛   1670 +1
Martinique 马提尼克   596 -12
Mauritius 毛里求斯 MU 230 -4
Mexico 墨西哥 MX 52 -15
Moldova, Republic of 摩尔多瓦 MD 373 -5
Monaco 摩纳哥 MC 377 -7
Mongolia 蒙古 MN 976 0
Montserrat Is 蒙特塞拉特岛 MS 1664 -12
Morocco 摩洛哥 MA 212 -6
Mozambique 莫桑比克 MZ 258 -6
Namibia 纳米比亚 NA 264 -7
Nauru 瑙鲁 NR 674 +4
Nepal 尼泊尔 NP 977 -2.3
Netheriands Antilles 荷属安的列斯   599 -12
Netherlands 荷兰 NL 31 -7
New Zealand 新西兰 NZ 64 +4
Nicaragua 尼加拉瓜 NI 505 -14
Niger 尼日尔 NE 227 -8
Nigeria 尼日利亚 NG 234 -7
North Korea 朝鲜 KP 850 +1
Norway 挪威 NO 47 -7
Oman 阿曼 OM 968 -4
Pakistan 巴基斯坦 PK 92 -2.3
Panama 巴拿马 PA 507 -13
Papua New Cuinea 巴布亚新几内亚 PG 675 +2
Paraguay 巴拉圭 PY 595 -12
Peru 秘鲁 PE 51 -13
Philippines 菲律宾 PH 63 0
Poland 波兰 PL 48 -7
French Polynesia 法属玻利尼西亚 PF 689 +3
Portugal 葡萄牙 PT 351 -8
Puerto Rico 波多黎各 PR 1787 -12
Qatar 卡塔尔 QA 974 -5
Reunion 留尼旺   262 -4
Romania 罗马尼亚 RO 40 -6
Russia 俄罗斯 RU 7 -5
Saint Lueia 圣卢西亚 LC 1758 -12
Saint Vincent 圣文森特岛 VC 1784 -12
Samoa Eastern 东萨摩亚(美)   684 -19
Samoa Western 西萨摩亚   685 -19
San Marino 圣马力诺 SM 378 -7
Sao Tome and Principe 圣多美和普林西比 ST 239 -8
Saudi Arabia 沙特阿拉伯 SA 966 -5
Senegal 塞内加尔 SN 221 -8
Seychelles 塞舌尔 SC 248 -4
Sierra Leone 塞拉利昂 SL 232 -8
Singapore 新加坡 SG 65 +0.3
Slovakia 斯洛伐克 SK 421 -7
Slovenia 斯洛文尼亚 SI 386 -7
Solomon Is 所罗门群岛 SB 677 +3
Somali 索马里 SO 252 -5
South Africa 南非 ZA 27 -6
Spain 西班牙 ES 34 -8
Sri Lanka 斯里兰卡 LK 94 0
St.Lucia 圣卢西亚 LC 1758 -12
St.Vincent 圣文森特 VC 1784 -12
Sudan 苏丹 SD 249 -6
Suriname 苏里南 SR 597 -11.3
Swaziland 斯威士兰 SZ 268 -6
Sweden 瑞典 SE 46 -7
Switzerland 瑞士 CH 41 -7
Syria 叙利亚 SY 963 -6
Taiwan 台湾省 TW 886 0
Tajikstan 塔吉克斯坦 TJ 992 -5
Tanzania 坦桑尼亚 TZ 255 -5
Thailand 泰国 TH 66 -1
Togo 多哥 TG 228 -8
Tonga 汤加 TO 676 +4
Trinidad and Tobago 特立尼达和多巴哥 TT 1809 -12
Tunisia 突尼斯 TN 216 -7
Turkey 土耳其 TR 90 -6
Turkmenistan 土库曼斯坦 TM 993 -5
Uganda 乌干达 UG 256 -5
Ukraine 乌克兰 UA 380 -5
United Arab Emirates 阿拉伯联合酋长国 AE 971 -4
United Kiongdom 英国 GB 44 -8
United States of America 美国 US 1 -13
Uruguay 乌拉圭 UY 598 -10.3
Uzbekistan 乌兹别克斯坦 UZ 233 -5
Venezuela 委内瑞拉 VE 58 -12.3
Vietnam 越南 VN 84 -1
Yemen 也门 YE 967 -5
Yugoslavia 南斯拉夫 YU 381 -7
Zimbabwe 津巴布韦 ZW 263 -6
Zaire 扎伊尔 ZR 243 -7
Zambia 赞比亚 ZM 260 -6

 

2011-08-31
发表者 Venus
暂无评论

Linux服务器远程自动异地备份

异地备份可以防止本地服务器硬盘故障以及攻击之类等,防止数据丢失。

在自动备份中,我们用到一个命令scp 用来远程复制文件,类似于ftp的作用。因为我们需要实现的是自动备份,scp是需要输入密码认证的,有一个交互过程,那么我们现在就必须通过密钥来认证,在备份过程需就无需输入密码了。

由于密钥认证是用本地的私钥去解锁目标服务器的公钥实现登陆。所以在本地机器上生成公钥和私钥。

[root@rhel6www ~]# ssh-keygen -t rsa          //生成密钥 -t rsa 加密类型
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):                   //直接回车
Enter passphrase (empty for no passphrase):                //直接回车 (为密钥密码验证)
Enter same passphrase again:                 //直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8f:1f:3c:4b:4c:7c:1c:7d:53:02:87:c3:b8:e7:b4:da root@rhel6www
The key’s randomart image is:
+–[ RSA 2048]—-+
|           o.oo .|
|          . +o ..|
|           ……|
|         …o. ..|
|        S o+o.   |
|         * .o    |
|        . Bo     |
|         o.+E    |
|          o      |
+—————–+
[root@rhel6www ~]#

在/root/.ssh/下会生成id_rsa(私钥)和id_rsa.pub(公钥)。

将id_rsa.pub复制到远程计算机并更名为:/root/.ssh/authorized_keys

可以通过 ssh-copy-id -i id_rsa.pub root@172.17.1.121 复制到目标服务器,会自动创建authorized_keys文件并修改400权限。通过ssh-copy-id好处就是,当有多个客户端通过密钥方式连接同一个目标服务器的时候,此命令会将客户端生成的公钥追加到authorized_keys中,免去手动修改的麻烦。这里通过手动方式上传到目标服务器。

[root@rhel6www .ssh]# scp id_rsa.pub root@172.17.1.121:/root/.ssh/authorized_keys
root@172.17.1.121’s password:                //我们可以看到默认是需要密码认证的
id_rsa.pub                                   100%  395     0.4KB/s   00:00

[root@rhel5 ~]# chmod 400 authorized_keys             //在远程服务器中更改为400权限,否则还会提示需要密码的

[root@rhel6www .ssh]# touch b               //测试经过密钥认证后是否还需要密码
[root@rhel6www .ssh]# scp b root@172.17.1.121:/root/.ssh/c   //如果ssh运行在非22端口上,请在scp后加-P 指定端口号
b                                            100%    0     0.0KB/s   00:00
[root@rhel6www .ssh]#                //没有提示需要密码,说明密钥认证配置成功。

现在就开始写脚本,订制备份时间、文件等。自由发挥,比如说我之前有个自动备份数据库的脚本:


#!/bin/bash
 backdir="/mnt/sdb1/backup"
 dirname="$(date +%Y-%m-%d-%H-%M)"
 DIR="www db"
 for dir in $DIR
 do
 mkdir -p $backdir/$dirname/$dir
 done

# web backup
 www="www.tar.gz"
 tar zcfP $backdir/$dirname/www/$www /var/www

# database backup
 clubdb="club.tar.gz"
 cd /var/lib/mysql
 mysqldump --opt -u root -p --password=YOURDATABASEPASSWORD club > $backdir/$dirname/db/club.sql
 tar zcfP $backdir/$dirname/db/$clubdb $backdir/$dirname/db/club.sql
 $backdir/$dirname/db/$clubdb root@172.17.1.121:/root/test_backup
 rm -rf $backdir/$dirname/db/club.sql

添加任务计划:
#crontab -e
#24 15 * * * /back.sh

2011-08-29
发表者 Venus
暂无评论

查看mysql版本

1:终端:mysql -V

[root@localhost~]# mysql -V
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)

    2:在mysql中:mysql> status;

mysql> status;
————–
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)

Connection id:          416
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ”
Using delimiter:        ;
Server version:         3.23.56-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Client characterset:    latin1
Server characterset:    latin1
UNIX socket:            /tmp/mysql_3311.sock
Uptime:                 62 days 21 hours 21 min 57 sec

Threads: 1 Questions: 584402560 Slow queries: 424 Opens: 59664208 Flush tables: 1 Open tables: 64 Queries per second avg: 107.551

    3:在help里面查找

[root@localhost~]# mysql –help | grep Distrib
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)

    4:使用mysql的函数

mysql> select version();
+————-+
| version()   |
+————-+
| 3.23.56-log |
+————-+
1 row in set (0.00 sec)