Ubuntu安装总结

本文档详细介绍了在64位Ubuntu系统中,如何搭建Apache HTTPD-2.2.15开发环境,包括Apache的下载、编译与安装,模块配置,以及cronolog、java、tomcat、mysql、php、python、svn、viewvc等相关软件的安装和配置。此外,还涵盖了问题记录和解决方法,如权限设置、错误处理等。
摘要由CSDN通过智能技术生成

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有没有安装

(这个跟apache日志格式有关 %w 就是利用这个模块搞出来的见 httpd.conf.vm
CustomLog "|/usr/local/sbin/cronolog ${exodus2_output}/logs/cookie_logs/%w/cookie_log" cookie_log
)

如果没有安装则

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启动。
于是修改权限

-rwxr-xr-x 1 root root   74837 2009-08-05 11:23 ab
-rwxr-xr-x 1 root root    3318 2009-08-05 11:17 apachectl
-rwxr-xr-x 1 root root    6829 2009-08-05 11:23 apr-config
-rwxr-xr-x 1 root root    5828 2009-08-05 11:23 apu-config
-rwxr-xr-x 1 root root   22951 2009-08-05 11:17 apxs
-rwxr-xr-x 1 root root   12555 2009-08-05 11:23 checkgid
-rwxr-xr-x 1 root root    8876 2009-08-05 11:17 dbmmanage
-rw-r--r-- 1 root root     993 2009-08-05 11:17 envvars
-rw-r--r-- 1 root root     993 2009-08-05 11:17 envvars-std
-rwxr-xr-x 1 root root   28325 2009-08-05 11:23 htdbm
-rwxr-xr-x 1 root root   20986 2009-08-05 11:23 htdigest
-rwxr-xr-x 1 root root   28142 2009-08-05 11:23 htpasswd
-rwxr-xr-x 1 root root 1938830 2009-08-05 11:23 httpd
-rwxr-xr-x 1 root root   19360 2009-08-05 11:23 httxt2dbm
-rwxr-xr-x 1 root root   21021 2009-08-05 11:23 logresolve
-rwxr-xr-x 1 root root   20970 2009-08-05 11:23 rotatelogs

sudo chmod a+s apachectl

sudo chmod a+s httpd

赋予超级权限以后可以看到目录权限如下:

-rwxr-xr-x 1 root root   74837 2009-08-05 11:23 ab
-rwsr-sr-x 1 root root    3318 2009-08-05 11:17 apachectl
-rwxr-xr-x 1 root root    6829 2009-08-05 11:23 apr-config
-rwxr-xr-x 1 root root    5828 2009-08-05 11:23 apu-config
-rwxr-xr-x 1 root root   22951 2009-08-05 11:17 apxs
-rwxr-xr-x 1 root root   12555 2009-08-05 11:23 checkgid
-rwxr-xr-x 1 root root    8876 2009-08-05 11:17 dbmmanage
-rw-r--r-- 1 root root     993 2009-08-05 11:17 envvars
-rw-r--r-- 1 root root     993 2009-08-05 11:17 envvars-std
-rwxr-xr-x 1 root root   28325 2009-08-05 11:23 htdbm
-rwxr-xr-x 1 root root   20986 2009-08-05 11:23 htdigest
-rwxr-xr-x 1 root root   28142 2009-08-05 11:23 htpasswd
-rwsr-sr-x 1 root root 1938830 2009-08-05 11:23 httpd
-rwxr-xr-x 1 root root   19360 2009-08-05 11:23 httxt2dbm
-rwxr-xr-x 1 root root   21021 2009-08-05 11:23 logresolve
-rwxr-xr-x 1 root root   20970 2009-08-05 11:23 rotatelogs
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
Labels:

安装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
9、安装方便的文本编辑器MadEdit
可以安装一个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.

Labels:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值