64位ubuntu下httpd-2.2.15开发环境搭建
以下是针对httpd-2.2.15及mod_jk-1.2.28的搭建方式
(1) 下载编译 httpd-2.2.15
cd [本地任意一个可写目录]
mkdir install
cd install
wget http:
//archive.apache.org/dist/httpd/httpd-2.2.15.tar.gz
tar -zxvf httpd-
2.2
.
15
.tar.gz
cd httpd-
2.2
.
15
./configure --prefix=/usr/ali/httpd-
2.2
.
15
--enable-rewrite=
static
--with-mpm=worker --enable-so --enable-proxy --enable-proxy-http --enable-deflate --enable-headers --enable-expires --enable-mods-shared=ssl --with-ssl=/usr/ali/openssl/ --with-included-apr
make
make install
checking
whether to enable mod_deflate... configure: error: mod_deflate has been
requested but can not be built due to prerequisite failures
出现错误解决方法:
sudo apt-get install zlib1g-dev
apt-get install openssl libssl-dev
|
(2) 下载编译 mod_jk-1.2.31
cd
wget http:
//www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz
tar -zxvf tomcat-connectors-
1.2
.
32
-src.tar.gz
cd tomcat-connectors-
1.2
.
32
-src/
native
./configure --with-apxs=/usr/ali/httpd-
2.2
.
15
/bin/apxs
make
cp ./apache-
2.0
/mod_jk.so /usr/ali/httpd-
2.2
.
15
/modules/
|
(3) 修改 httpd-2.2.15/bin/httpd 的启动权限(因为非root用户没有权限起80端口)
cd /usr/ali/httpd-
2.2
.
15
sudo chown root:root bin/httpd
sudo chmod
4755
bin/httpd
|
(4) 配置 httpd-2.2.15/conf/httpd.conf
将 #ServerName www.example.com:
80
注释去掉;
改成 ServerName localhost:
80
即可。
|
(5) 验证 httpd 的启动是否能正常启动
httpd-
2.2
.
15
/apachectl start
然后可以通过浏览器访问 http:
//localhost:80,如果页面显示 "It works!",即表示apache已启动成功。
停止 httpd-
2.2
.
15
/apachectl stop
|
(6) 创建 apache2 软链接
cd /usr/ali
ln -s httpd-
2.2
.
15
apache2
|
apache 的下载编译及安装
将APACHE统一安装目录,到这个目录下:
/usr/alibaba/install
然后在这个目录/usr/alibaba 下建立软链接:
cd /usr/alibaba
ln -s install/httpd-2.0.61/ httpd
1. wget http://archive.apache.org/dist/httpd/httpd-2.0.61.tar.gz
2. tar -zxvf httpd-2.0.61.tar.gz
3. 进入httpd-2.0.61,执行安装
- $ ./configure --prefix=/usr/alibaba/install/httpd-2.0.61 --enable-rewrite=static --with-mpm=worker --enable-so --enable-proxy --enable-proxy-http --enable-deflate
- $ make
- $ make install
apache的模块
对应自己的开发机大多都是ubuntu系统,并且是32位机,可以找一台32位开发机上已经安装好的,把其中的
/usr/alibaba/install/httpd-2.0.61/modules
这个目录下的内容全部拷贝过来
也可以按照http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=27133140
中提到的
第2步骤:mod_jk
第3步骤:编译image module
去做
cronolog
检查自己机器上的cronolog有没有安装
如果没有安装则
1, wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
2, tar zxvf cronolog-1.6.2.tar.gz
3, cd cronolog-1.6.2
4, ./configure
5, make
6, sudo make install
7, which cronolog (查看是否安装成功)
8, 和线上环境保持路径统一:sudo ln -s /usr/local/sbin/cronolog /usr/alibaba/cronolog/sbin/cronolog
检查权限
cd /usr/alibaba/install/httpd-2.0.61/bin
注意第二行 apachectl,倒数第四行httpd 的权限如果是 如下图,那么apache是启动不起来的,除非你用root启动。
于是修改权限
sudo chmod a+s apachectl
sudo chmod a+s httpd
赋予超级权限以后可以看到目录权限如下:
ubuntu下容易出错的
ubuntu的sh 默认是软链接到dash的,要改成bash才能正常运行我们的startws.sh脚本。
一、apache安装
1、安装apache
[root
@svn_bak
downloads]# wget http:
//archive.apache.org/dist/httpd/httpd-2.2.11.tar.gz
[root
@svn_bak
downloads]# tar xzvf httpd-
2.2
.
11
.tar.gz
[root
@svn_bak
downloads]# cd httpd-
2.2
.
11
[root
@svn_bak
httpd-
2.2
.
11
]# ./configure --prefix=/opt/alibaba/httpd-
2.2
.
11
--enable-ssl \
--enable-rewrite --enable-proxy --enable-dav --enable-mods-shared=most --enable-cache --enable-file-cache \
--enable-disk-cache --enable-mem-cache --with-mod_jk --enable-log-forensic --enable-mime-magic \
--enable-cern-meta --enable-usertrack --enable-unique-id --enable-version
[root
@svn_bak
httpd-
2.2
.
11
]# make clean; make; make install
[root
@svn_bak
httpd-
2.2
.
11
]# cd ../../alibaba/
[root
@svn_bak
alibaba]# ln -s httpd-
2.2
.
11
/ apache
[root
@svn_bak
apache]# useradd svnadmin
[root
@svn_bak
apache]# groupadd web
[root
@svn_bak
apache]# usermod -G web svnadmin
[root
@svn_bak
apache]# usermod -G web admin
[root
@svn_bak
apache]# vi /etc/hosts
10.20
.
136.196
svnbackup.alibaba-inc.com
[root
@svn_bak
apache]# vi conf/httpd.conf
User admin
Group web
ServerAdmin b2b.scm
@alibaba
-inc.com
[root
@svn_bak
apache]# bin/apachectl stop
[root
@svn_bak
apache]# bin/apachectl start
|
2、错误集锦
- configure时报错:configure: error: ...No recognized SSL/TLS toolkit detected
解决yum -y install openssl-devel - 报错:-bash: sz: command not found
解决: yum install lrzsz - apcache其电视报错:Name or service not known: mod_unique_id: unable to find IPv4 address of "svn_bak"
解决:hosts中添加 127.0.0.1 svn_bak
3、测试
访问:http://svnbackup.alibaba-inc.com/ 出现It works!,apache配置成功!
二、安装java
[root
@svn_bak
downloads]# ./jdk-6u13-linux-x64.bin
[root
@svn_bak
downloads]# vi /etc/profile
export JAVA_HOME=/opt/alibaba/java
[root
@svn_bak
java]# source /etc/profile
[root
@svn_bak
downloads]# mv jdk1.
6
.0_13 ../alibaba/
[root
@svn_bak
downloads]# cd ../alibaba/
[root
@svn_bak
alibaba]# ln -s jdk1.
6
.0_13/ java
|
三、安装tomcat
1、安装mod_jk
[root
@svn_bak
downloads]# wget http:
//www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz
[root
@svn_bak
downloads]# tar xzvf tomcat-connectors-
1.2
.
28
-src.tar.gz
[root
@svn_bak
downloads]# cd tomcat-connectors-
1.2
.
28
-src/
native
/
[root
@svn_bak
native
]# ./configure --with-apxs=/opt/alibaba/apache/bin/apxs
[root
@svn_bak
native
]# make clean;make; make install
此时mod_jk.so安装成功了,此时可以配置mod_jk,加载module到httpd.conf
[root
@svn_bak
conf]# vi httpd.conf
LoadModule jk_module modules/mod_jk.so
打开
"Include conf/extra/httpd-vhosts.conf"
的注释
[root
@svn_bak
conf]# vi extra/httpd-vhosts.conf
加入以下:
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
</IfModule>
[root
@svn_bak
conf]# vi workers.properties
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=
8009
worker.worker1.lbfactor=
1
worker.worker1.cachesize=
10
worker.worker1.cache_timeout=
600
worker.worker1.socket_keepalive=
1
worker.worker1.socket_timeout=
60
|
2、安装tomcat
[root
@svn_bak
downloads]# wget http:
//apache.justdn.org/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz
[root
@svn_bak
downloads]# tar xzvf apache-tomcat-
6.0
.
18
.tar.gz
[root
@svn_bak
downloads]# mv apache-tomcat-
6.0
.
18
../alibaba/
[root
@svn_bak
alibaba]# ln -s apache-tomcat-
6.0
.
18
/ tomcat
[root
@svn_bak
tomcat/bin]# cp startup.sh startup_real.sh
将主机上的startup.sh拷过来
[root
@svn_bak
tomcat]# scp root
@10
.20.
136.195
:/opt/alibaba/tomcat/bin/startup.sh .
[root
@svn_bak
alibaba]# chown admin.web apache-tomcat-
6.0
.
18
/ -R
[root
@svn_bak
alibaba]# cd tomcat/bin/
[root
@svn_bak
bin]# chmod a+x *
[root
@svn_bak
bin]# sh startup.sh
|
3、测试tomcat
访问:http://svnbackup.alibaba-inc.com:8080/,出现小猫,tomcat安装成功
四、安装mysql
下载http://dev.mysql.com/downloads/mysql/5.1.html#linux-rhel5-x86-32bit-rpms
MySQL-client-community-5.1.34-0.rhel5.i386.rpm
MySQL-server-community-5.1.34-0.rhel5.i386.rpm
MySQL-shared-community-5.1.34-0.rhel5.i386.rpm
[root
@svn_bak
downloads]# rpm -ivh MySQL-xxxxx.rpm (三个包)
|
五、安装php
[root
@svn_bak
downloads]# tar xzvf php-
5.2
.
9
.tar.gz
[root
@svn_bak
php-
5.2
.
9
]# ./configure --prefix=/opt/alibaba/php5.
2
.p --with-apxs2=/opt/alibaba/apache/bin/apxs
报错:configure: error: xml2-config not found. Please check your libxml2 installation.
解决:[root
@svn_bak
php-
5.2
.
9
]# yum install libxml2 libxml2-devel
[root
@svn_bak
php-
5.2
.
9
]# make clean; make; make install
[root
@svn_bak
php-
5.2
.
9
]# cp php.ini-dist ../../alibaba/php5.
2
.p/lib/php.ini
[root
@svn_bak
php-
5.2
.
9
]# cd ../../alibaba/php5.
2
.p/lib/
[root
@svn_bak
lib]# vi php.ini
register_globals = On
|
php安装完成后,在apache配置文件中自动会加载 LoadModule php5_module modules/libphp5.so
注意:没有 --with-apxs2=/usr/alibaba/apache/bin/apxs 怎么也不能安装libphp4.a到apache的modules下 ,apache的版本和php的版本需要精确。Php5跟apache老打架,版本必须按官方规定的装,保证兼容性。版本号要精确到小数点后面数位
修改apache配置文件,mime_module 中新增
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php .php .phtml
|
编写test.php,在apache2、htdoc下
[root
@svn_bak
htdocs]# vi test.php
<?
phpinfo();
?>
|
重启apache,访问http://svnbackup.alibaba-inc.com/test.php,出现php的信息
六、安装python(1.6的svn要使用2.6以上的python)
[root
@svn_bak
downloads]# wget http:
//www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz
[root
@svn_bak
downloads]# tar xzvf Python-
2.6
.
2
.tgz
[root
@svn_bak
Python-
2.6
.
2
]# ./configure --prefix=/usr/local/
[root
@svn_bak
Python-
2.6
.
2
]# make clean; make; make install
|
七、安装svn
[root
@svn_bak
~]# rpm -qa subversion
[root
@svn_bak
downloads]# wget http:
//subversion.tigris.org/downloads/subversion-deps-1.6.2.tar.gz
[root
@svn_bak
downloads]# wget http:
//subversion.tigris.org/downloads/subversion-1.6.2.tar.gz
[root
@svn_bak
downloads]# tar xzvf subversion-
1.6
.
2
.tar.gz
[root
@svn_bak
downloads]# tar xzvf subversion-deps-
1.6
.
2
.tar.gz
[root
@svn_bak
subversion-
1.6
.
2
]# ./configure --prefix=/usr PYTHON=/usr/local/bin/python \
--with-apxs=/opt/alibaba/apache/bin/apxs --with-swig=/usr/bin/swig \
--enable-shared --enable-
static
--without-berkeley-db
[root
@svn_bak
subversion-
1.6
.
2
]# make clean; make; make install
[root
@svn_bak
subversion-
1.6
.
2
]# svn --version 看是否是
1.6
.
2
|
编译安装swig
[root
@svn_bak
subversion-
1.6
.
2
]# make swig-py
[root
@svn_bak
subversion-
1.6
.
2
]# make install-swig-py
|
配置
确认swig-py安装文件svn-python存在
[root
@svn_bak
subversion-
1.6
.
2
]# locate svn-python
[root
@svn_bak
subversion-
1.6
.
2
]# updatedb
[root
@svn_bak
subversion-
1.6
.
2
]# locate svn-python
/usr/lib/svn-python
/usr/lib/svn-python/libsvn
/usr/lib/svn-python/svn
/usr/lib/svn-python/libsvn/__init__.py
/usr/lib/svn-python/libsvn/__init__.pyc
/usr/lib/svn-python/libsvn/_client.a
/usr/lib/svn-python/libsvn/_client.la
/usr/lib/svn-python/libsvn/_client.so
[root
@svn_bak
subversion-
1.6
.
2
]# echo /usr/lib/svn-python>/usr/local/lib/python2.
6
/site-packages/subversion.pth
[root
@svn_bak
subversion-
1.6
.
2
]# python2.
6
>>>
import
svn.repos
Traceback (most recent call last):
File
"<stdin>"
, line
1
, in <module>
File
"/usr/lib/svn-python/svn/repos.py"
, line
19
, in <module>
from libsvn.repos
import
*
File
"/usr/lib/svn-python/libsvn/repos.py"
, line
7
, in <module>
import
_repos
ImportError: /usr/lib/svn-python/libsvn/_repos.so: undefined symbol: svn_swig_py_location_segment_receiver_func
|
配置apache
[Intranet root
@QA
-
145
-
188
/opt/alibaba/apache/conf/extra]
#vi httpd-vhosts.conf
Include conf/extra/httpd-vhosts.conf
[root
@svn_bak
extra]# vi httpd-vhosts.conf
ServerName svnbackup.alibaba-inc.com
<Location /repos>
DAV svn
SVNParentPath /home/svnadmin/repos
SVNIndexXSLT http:
//svn.alibaba-inc.com/svnauth/style.htm
AuthzSVNAccessFile /home/svnadmin/repos_access/access
Satisfy Any
Require valid-user
#AuthType Digest
#AuthName
"subversion repository"
#AuthDigestProvider file
#AuthUserFile /home/svnadmin/repos_access/passwd
AuthType Basic
AuthName
"subversion repository"
AuthBasicProvider file
AuthUserFile /home/svnadmin/repos_access/passwd_basic
</Location>
|
设置两个用户的权限
[root
@svn_bak
home]# chown svnadmin.web -R svnadmin/
[root
@svn_bak
home]# chmod g+r svnadmin/
[root
@svn_bak
home]# chown admin.web admin/ -R
[root
@svn_bak
home]# chmod g+r admin/
|
apache启动时错误:Cannot load mod_dav_svn.so into server: libsvn_repos-1.so.0: failed to map segment from shared object: Permission denied
解决:ldconfig -v
七、安装viewvc
下载http:
//viewvc.tigris.org/servlets/ProjectDocumentList?folderID=10660&expandFolder=10660&folderID=6004 1.1.0
[root
@svn_backup
/opt/downloads]
#tar xzvf viewvc-
1.1
.
0
.tar.gz
#cd viewvc-
1.1
.
0
# ./viewvc-install (设置viewvc安装目录)
# cp /opt/alibaba/viewvc/bin/cgi/viewvc.cgi /opt/alibaba/apache/cgi-bin/
# vi viewvc.conf
root_parents = /home/admin/repos : svn
default_root = svn
# bin/standalone.py
|
八、安装mod_authSVN
[root
@svn_backup
/opt/alibaba/apache]
# 拷贝mod_authSVN.c
# bin/apachectl stop
# apxs -c mod_authSVN.c
# bin/apxs -a -i -n authSVN mod_authSVN.la
# bin/apachectl start
|
配置httpd-vhost.conf
ScriptAlias /viewvc /opt/alibaba/viewvc/bin/cgi/viewvc.cgi
<Directory
"/opt/alibaba/viewvc/bin/cgi"
>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Location /viewvc>
#AuthType Digest
#AuthName
"subversion repository"
#AuthDigestProvider file
#AuthUserFile /home/svnadmin/repos_access/passwd
AuthType Basic
AuthName
"subversion repository"
AuthBasicProvider file
AuthUserFile /home/svnadmin/repos_access/passwd_basic
EnableAuthSVN on
DebugAuthSVN off
SVNAccessFile /home/svnadmin/repos_access/access
AuthSVNPrefixPath /viewvc/
AuthSVNStopPattern ^\/viewvc\/\*docroot\*\/
Require valid-user
</Location>
|
八、安装antx
[[root
@svn_backup
/opt/alibaba]
# svn co http:
//svn.alibaba-inc.com/repos/opentech/antx/trunk antx
# cd antx/
# ./build.sh
# vi /etc/profile
export ANTX_HOME=/opt/alibaba/antx/dist/antx
export PATH=$ANTX_HOME/bin:
|
九、安装svnauth
[root
@svn_backup
/opt/alibaba]
#su - admin
[admin
@svn_backup
~]$ svn co http:
//svn.alibaba-inc.com/repos/opentech/sandbox/auth svn-auth
[admin
@svn_backup
~]$ svn co http:
//svn.alibaba-inc.com/repos/binary/repository.project
[admin
@svn_backup
~]$ vi antx.properties
antx.repository.external = /opt/alibaba/antx/repository
antx.repository.project = /home/admin/repository.project
[admin
@svn_backup
~]$ cd svn-auth/
[admin
@svn_backup
svn-auth]$ antx
[admin
@svn_backup
svn-auth]$ antxexpand target/svn-auth.war /opt/alibaba/tomcat/webapps/svn-auth
|
安装jdk:
先安装试试,首先还是要先去下载一个JDK,具体的下载地址https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter
在下载的时候选择Linux系统,下载
jdk-6u31-linux-x64.bin
|
下载好然后安装,在终端下进到你下载目录,
mv jdk-6u31-linux-x64.bin
|
到固定的目录
/usr/ali
|
记得要创建ali目录,创建命令
sudo mkdir ali
|
同时修改ali目录组,
chown $USERNAME:$USERNAME ali
|
如果不清楚自己的USERNAME是什么,用
echo $USERNAME
|
命令查看
然后
chmod a+x jdk-6u31-linux-x64.bin
|
增加可执行的权限。
运行
./jdk-6u31-linux-x64.bi
|
执行安装。
Ok ,安装完成。执行软连接
ln -s jdk1.
6
.0_31 java
|
配置环境变量。
sudo gedit /etc/profile(ubuntu)
|
在文件最后添加
#set java environment
export JAVA_HOME=/usr/ali/java
export JRE_HOME=/usr/ali/java/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
|
然后执行java,javac如果不能执行,安装提示中的openjdk-****,再执行which java,which javac,此时java,javac在/usr/bin下
由 于ubuntu中有默认jdk还需要执行如下工作
执行
代码:
sudo update-alternatives --install /usr/bin/java java /usr/ali/jdk1.
6
.0_31/bin/java
300
sudo update-alternatives --install /usr/bin/javac javac /usr/ali/jdk1.
6
.0_31/bin/javac
300
|
这个300的意思的优先级,当你执行完
sudo update-alternatives --config java
|
就知道具体的意思了。
通过 这一步将我们安装的JDK加入java选单
然后执行。
代码:
sudo update-alternatives --config java
|
通 过这一步设置系统默认的JDK
重新启动计算机,然后在shell中执行,用命令测试jdk的版本
java -version
显示如下信息:成功安装
java version
"1.6.0_31"
Java(TM) SE Runtime Environment (build
1.6
.0_31-b04)
Java HotSpot(TM)
64
-Bit Server VM (build
20.6
-b01, mixed mode)
|
subversion安装
root用户执行命令
apt-get install subversion
|
httpd 安装
wget http:
//archive.apache.org/dist/httpd/httpd-2.0.61.tar.gz
tar -zxvf httpd-
2.0
.
61
.tar.gz
进入httpd-
2.0
.
61
,执行安装
$ ./configure --prefix=/usr/alibaba/install/httpd-
2.0
.
61
--enable-mods-shared=all --enable-proxy --enable-deflate --enable-so --with-mpm=worker
$ make
$ make install
Tips: 如果在configure的时候出现如下错误提示:
zlib location ... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
$sudo apt-get install zlib1g-dev
就可以了。
|
Apache (自己编译)
(1) Http Server
线上使用的是2.0.61,下面是编译apache的整个过程。
cd
mkdir apache2
mkdir src
cd ~/src
wget http:
//archive.apache.org/dist/httpd/httpd-2.0.61.tar.gz
tar -zxvf httpd-
2.0
.
61
.tar.gz
cd httpd-
2.0
.
61
./configure --prefix=/home/YourAccount/apache2 --enable-rewrite --with-mpm=worker --enable-proxy --enable-proxy-http --enable-deflate --enable-mods-shared=all --enable-so
make
make install
|
其中 YourAccount换成自己的用户名
(2) modjk
是Apache的一个module,编译过程如下
cd
mkdir modjk
cd ~/src
wget http:
//archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz
tar -zxvf tomcat-connectors-
1.2
.
26
-src.tar.gz
cd tomcat-connectors-
1.2
.
26
-src/
native
./configure --with-apxs=/home/YourAccount/apache2/bin/apxs
make
|
其中 YourAccount换成自己的用户名
将其copy到apache的目录下
cp apache-
2.0
/mod_jk.so ~/apache2/modules/
|
(3) Copy apache到你的对应工作目录(下面命令是copy到 /usr/ali/apache2这个目录下的)
sudo cp ~/apache2 /usr/ali/apache2 -rf
|
maven2 安装
sudo vi /etc/apt/sources.list
在sources.list文件中加入
deb http:
//repo.alibaba-inc.com/apt stable main #alibaba apt repo - Ubuntu "All"
#sudo apt-get update
#sudo apt-get install ali-maven2
deb http:
//repo.alibaba-inc.com/apt stable main #alibaba apt repo - Ubuntu "All"
#sudo apt-get update
#sudo apt-get install ali-maven2
|
可以安装一个FireFox的查看网页源码插件ViewSourceWith,然后把MadEdit设置为默认的html源码查看工具,很方便
环境变量
修改.bashrc文件:
export JAVA_HOME=/home/zhouyingbo/software/jdk1.6.0_21
export JRE_HOME=/home/zhouyingbo/software/jdk1.6.0_21/jre
export ANTX_HOME=/home/zhouyingbo/software/antx/trunk
export M2_HOME=/usr/alibaba/maven2
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$ANTX_HOME/dist/antx/bin:$M2_HOME/bin
执行source .bashrc
软件安装
1. 安装svn
sudo apt-get install subversion
2. 安装 maven,2 steps:
1)修改apt软件源
sudo vi /etc/apt/sources.list
deb http://repo.alibaba-inc.com/apt stable main #alibaba apt repo - Ubuntu "All"
2)sudo apt-get install ali-maven2
3. 公司线上使用的cronolog只能在redhat下使用,开发环境的cronolog可以采用系统自带的cronolog,做一个软链接:
1)安装cronolog
sudo apt-get install cronolog
2)创建软链接目录
cd /usr/alibaba
sudo mkdir -p cronolog/sbin/
3)为cronolog做软链接
cd cronolog/sbin/
sudo ln -s /usr/sbin/cronolog cronolog
4)加用户权限
sudo chown -R zhouyingbo:zhouyingbo .
4. antx安装
二方库和三方库的svn地址为: http://svn.alibaba-inc.com/repos/binary/repository http://svn.alibaba-inc.com/repos/binary/repository.project/trunk
antx安装不能使用trunk,要使用以下分支: http://svn.alibaba-inc.com/repos/opentech/antx/branches/antx_to_maven_2009_12_23,这个分支能把发布的包同步到maven的 ./m2下。
antx通过svn下载成功后,需要执行./build.sh,再把$ANTX_HOME/dist/antx/bin加入环境变量中。
修改antx.properties文件,设定二方库和三方库地址:
antx.repository.external = D:/repository
antx.repository.project = D:/repository.project
5. apache安装
需要先安装zlib,三步走:./configure,make,sudo make install
开始安装apache:
- $ ./configure --prefix=/usr/alibaba/install/httpd-2.2.16 --enable-rewrite=static --with-mpm=worker --enable-so --enable-proxy --enable-proxy-http --enable-deflate
- $ make
- $ make install
6. mod_jk安装,进入native目录
- ./configure --with-apxs=/usr/alibaba/install/httpd-2.2.16/bin/apxs
- make
- sudo cp apache-2.0/mod_jk.so /usr/alibaba/install/httpd-2.2.16/modules/
7. /usr/alibaba目录下增加软链接
sudo ln -s install/httpd-2.2.16/ httpd
sudo ln -s install/maven2/ maven2
问题记录
1. 现象:ubuntu10.04安装virtualbox时, 出现以下错误: "Error: Dependency is not satisfiable: libqt4-network (>= 4:4.5.3)"
解决方案: sudo aptitude install libqt4-core
2. 使用mvn命令编译时,出现以下错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/classworlds/Launcher
Caused by: java.lang.ClassNotFoundException: org.codehaus.classworlds.Launcher
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: org.codehaus.classworlds.Launcher. Program will exit.
解决方案: export M2_HOME=/usr/alibaba/maven2
ln -s install/maven2 maven2
使用apt-get方式安装时,默认安装在/usr/alibaba/install/maven2下面,需要做一个软链接;或者直接在M2_HOME中指定安装路径。
3.LINUX下VI中文乱码问题
由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。
$vi ~/.vimrc
let &termencoding=&encoding
set fileencodings=utf-8,gbk
$:wq
再次打开vi,显示就正常了。
一、ubuntu下载编译安装apache
编译安装openssl (https支持,escrow等应用需要)
wget http://openssl.org/source/openssl-0.9.8r.tar.gz
tar zxvf openssl-0.9.8r.tar.gz
进入文件夹,
./config --prefix=/usr/ali/apachessl -fPIC
make
make install
编译安装apache
wget http://archive.apache.org/dist/httpd/httpd-2.0.61.tar.gz
tar -zxvf httpd-2.0.61.tar.gz
cd httpd-2.0.61/(此文件夹为包含了整个apache source tree及所有编译必须的文件)
开发机配置:
./configure --prefix=/usr/ali/apache2 --enable-ssl --with-ssl=/usr/ali/apachessl --with-mpm=worker --enable-mods-shared=most --enable-so --enable-proxy --enable-proxy-http --enable-deflate
---------参考:发布机器apache配置
./configure --prefix=/usr/alibaba/install/httpd-2.0.61 --enable-rewrite=static --with-mpm=worker --enable-so --enable-proxy --enable-proxy-http --enable-deflate
如果配置失败提示configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
则要先安装zlib1g-dev
sudo apt-get install zlib1g-dev。装完后,配置apache成功。
注意:当前工作目录不能和/usr/alibaba/install/httpd-2.0.61相同,否则接下来make install时用到的cp命令会出错。make install的含义是将根据makefile编译好的完整apache安装到--prefix指向的目录。当前工作目录,作为编译环境,里面包含了整个source tree以及编译所需的很多文件,跟我们要用的apache安装运行环境,也就是编译后的可用的完整apache是不同的,所以当前工作目录和 --prefix指向的apache安装目录必须是不同的目录。
configure配置参数解析:
--prefix apache的安装目录。不提供此参数则默认安装到/usr/local/apache2
--with-mpm=worker: 选择mpm并发处理模块(Multi-Processing Module)为worker模式,这种模式是混合的多进程多线程服务器模型.不提供此参数时,apache编译时将采用默认的mpm模块,Unix为prefork模式,Windows为mpm_winnt模块。
--enable-so:enable mod_so模块。mod_so模块用于在运行时加载需要的模块(通过Dynamic Shared Object-DSO机制,不需要重新编译模块)。Apache的可用模块在httpd.conf中配置。如果用编译安装apache阶段,用./configure --enable-module1 --enable-module2,则module1, module2会自动配置进httpd.conf中。
--enable-deflate: enable mod_deflate模块,支持网络压缩传输
--enable-proxy, --enable-proxy-http: enable mod_proxy模块,mod_proxy_http模块,后者是前者的扩展,支持http请求代理。
--enable-rewrite=static: enable mod_rewrite,提供url重写功能。mod_rewrite模块的载入方式是static,即apache启动时就载入此模块。与此对应的是shared方式载入模块,这种方式的模块一开始都要先编译为DSO模块,在运行时(runtime)才会由mod_so模块加载进来。
configure执行完成后,开始编译和安装:
make
make install
安装完成(安装到了/usr/alibaba/install/httpd-2.0.61)。
创建软链接 ln -s /usr/alibaba/install/httpd-2.0.61 /usr/alibaba/httpd
测试:
cd /usr/alibaba/httpd/bin
./apachectl start
注:错误:(13)Permission denied: make_sock: could not bind to address [::]:80
解决方法:apache2安装目录/bin/httpd必须属于root用户,且权限为4755。先调整用户组,再赋权后问题解决。其中,4表示设置了SUID (setuid);当setuid被设置时,那么执行该文件的用户拥有owner所具有的权限。
浏览器输入http://yourip,看到apache测试页面表示apache安装成功。
./apachectl stop
---开发机相关配置按照/usr/ali/apache2来。
apache的目录:
-bin: apache的可执行文件目录,如apachectl, httpd, apxs(apache extension tool)等
-build: 存放config.nice, libtool等工具,用于再编译和升级等。
-cgi-bin: 存放cgi可执行程序的目录
-conf: 存放httpd.conf等apache核心配置文件
-error: 存放apache的错误定义文件
-htdocs: apache默认的web root
-include: apache源码的头文件
-lib: 存放apr.exp, aprutil.exp以及apache的库文件。apr和aprutil来自Apache Portable Runtime Project,用于根据具体的系统平台来创建和管理软件库文件。
-logs: 存放apache的log工具,如error_log
-modules:存放httpd.exp以及apache模块文件。
apache的重要配置
conf/httpd.conf:
PidFile logs/httpd.pid 记录apache启动时服务器进程的pid,用以进程间通信等。
Listen 80: 80端口监听
Dynamic Shared Object (DSO) Support:配置DSO模块,这些模块运行时才会被加载。apache启动时静态加载的模块不需要在此配置。
DocumentRoot:web系统根目录位置。默认是htdocs文件夹所在的位置。
ErrorLog:errorlog文件的位置。默认是logs/error_log
CustomLog:日志记录的配置。默认是用access_log记录。可以配置为用cronolog来记录,以便格式化日志文件,如按时间分割记录日志,格式化记录cookie_log等。
二、编译模块(特指编译为DSO模块)
如果开发中有需要某个特定的模块,可以自行编译(编译为DSO模块)后拷贝到modules文件夹
如mod_jk可以用bin/apxs进行编译,再把编译的so文件拷贝到modules文件夹。
具体如下:
wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz
tar -zxvf tomcat-connectors-1.2.26-src.tar.gz
cd /tomcat-connectors-1.2.26-src/native
用apxs(apache extension tool)来配置mod_jk
./configure --with-apxs=/usr/ali/apache2/bin/apxs
make
cp apache-2.0/mod_jk.so /usr/ali/apache2/modules/mod_jk.so
最后在httpd.conf相关配置处加上LoadModule jk_module /usr/ali/apache2/modules/mod_jk.so即可。
又:公司发布的apache模块,如aliBeacon.so、image module等。
image module可以svn co http://svn.alibaba-inc.com/repos/ali_cn/commons/apache_module/ImgURIFilter/trunk/ ImgURIFilter,取出代码后,直接make编译,然后再把编译的so文件拷贝到modules文件夹。
也可以从其他开发人员电脑里直接拷贝相关模块的so文件到本机的modules文件夹,如aliBeacon.so。
拷贝so文件进入modules后,在conf/httpd.conf中Dynamic Shared Object (DSO) Support的部分,加上LoadModule your_module_indentifier modules/your_module_file。重启apache即可在需要的时候使用该模块了。
注意:apache静态编译的模块(可以用/bin/httpd -l查看; 这些模块在apache启动时自动加载)不能配置在httpd.conf中Dynamic Shared Object (DSO) Support的部分,否则会报 *** module is built-in and connot loaded.
参考:本机器httpd -l显示静态编译的模块有core.c, worker.c, http_core.c ,mod_so.c.