Ubuntu服务器配置说明
(Ubuntu 14.04 + Apache2.2 + Tomcat7 + MySQL + SFTP)
<br />
** 一、登录服务器**
- **windows 请安装 putty **
-
ssh连接的为端口22
<br />
二、安装程序
-
**安装 Oracle Java7(因系统自带的OpenJDK在某些情况下存在异常) **
- 增加PPA仓库
<pre><code>add-apt-repository ppa:webupd8team/java</code></pre> - 更新源
<pre><code>apt-get update</code></pre> - 安装Java7
<pre><code>apt-get install oracle-java7-installer</code></pre> -
java -version
判断是否成功安装Java
<br />
- 增加PPA仓库
-
安装apache、mode_jk、tomcat7 和mysql
-
默认安装的mysql5.5版本,和使用的Ubuntu发行版本也有关系,最新版本的mysql有默认密码
tomcat8.0以上安装
<pre><code>apt-get install apache2 libapache2-mod-jk tomcat7-user mysql-server</code></pre>使用此方式安装的Apache,配置比较分散,一般如下:
默认站点在 /var/www/
配置文件在 /etc/apache2/
日志在 /var/log/apache/
启动脚本是 /usr/bin/apache2ctl 或者 /etc/init.d/apache2
<br />
-
三、创建Linux用户**
-
增对项目创建一个独立的系统用户主要有一下目的:
- 避免使用root运行,提高安全性;
- 方便将来多应用的隔离;
- 用于SFTP登录系统;
-
执行命令
- 创建用户,username替换为预创建的用户名,useradd命令详解
<pre><code>useradd username -m -s /bin/bash</code></pre> - 修改用户登录密码
<pre><code>passpwd username</code></pre> - 从当前用户切换到某用户(username)
<pre><code>su -username</code></pre>
<br />
- 创建用户,username替换为预创建的用户名,useradd命令详解
四、MySQL配置**
-
开启MySQL远程连接
切换到root权限,编辑
/etc/mysql/my.cnf
,注释掉bind-address = 127.0.0.1
;
bind-address后面添加远程访问IP或者禁掉这句话才可以让远程主机访问。 -
登录MySQL账号(使用root权限),并授权
登录MySQL,password为之前设置的mysql密码;
<pre><code>mysql –u root –p passwoed</code></pre>给指定用户授权
//以下MySQL命令,非linux命令,带';' //grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option; flush privileges; service mysql restart; ``` >*释义*:grant为授权, `.` 代表所有数据库所有表, `username` 为连接用户的用户名, `@` 后为用户地址, `%` 表示可以从任何地址连接, `with grant option` 赋予用户授权的权利 >*DEMO*:grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;[更多案例](http://blog.csdn.net/wengyupeng/article/details/3290415) >*步骤*:登录mysql,授权给其他用户相应权利,刷新权限,重启mysql服务
<br />
五、配置Tomcat实例**
为了方便多实例部署,同事避免权限重提并提高安全性,我们一般不使用系统的tomcat实例,而是在用户目录下再创建一个引用tomcat7的独立实例创建实例,同时为了避免与原tomcat访问端口8080和控制端口8005冲突,更改新实例端口。
- 创建访问端口为8180,访问端口为8105的实例,同时将itemName改成相应项目名;这样,以后每个建立的实例+100
<pre><code>tomcat7-instance-create -p 8180 -c 8105 itemName</code></pre>
测试tomcat实例是否创建成功
- 进入tomcat实例的
/webapp
目录下,创建ROOT目录;- 新建一个
index.jsp
,并键入<%= 1+1 %>
,打开该页面验证tomcat是否正常运行- 回到该实例下的
/bin
目录下,键入./start.sh
,执行该文件,运行该tomcat实例touch
:新建;vi
:编辑;esc + :wq!
:保存退出;- 更多vim语法
<br />
**六、使用 mod_jk 整合 Apache 与 Tomcat **
-
tomcat配置
- 编辑tomcat目标实例下的
server.xml
,搜索8009,开启并更改下列协议端口
<Connector port="8180 " protocol="HTTP/1.1"> <Connector port="8109 " protocol="AJP/1.3" URIEncoding="UTF-8" redirectPort="8443" />
- 编辑tomcat目标实例下的
8180
端口可以注释,即外界无法通过该端口访问
注释8180
端口后通过apache的80
端口访问,编码方式指定为UTF-8
- mod_jk配置
- 找到
mod_jk
下的works.properties
文件
vi /etc/libapache2-mod-jk/workers.properties
- 编辑
works.properties
,根据tomcat
中AJP的端口进行配置(多实例)
//多实例配置时用 [,]隔开
worker.list=ajp13_worker, ItemNameA_worker, ItemNameB_worker
=================================
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
=================================
worker.ItemNameA.port=8109
worker.ItemNameA.host=localhost
worker.ItemNameA.type=ajp13
=================================
worker.ItemNameB.port=8209
worker.ItemNameB.host=localhost
worker.ItemNameB.type=ajp13
- apache配置
- 找到apache的模块功能的配置文件
jk.conf
,并使用管理员身份配置
sudo vim /etc/apache2/mods-available/jk.conf
- 我们将JkWorkersFile属性修改成上面workers.properties的路径
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
- 进入可用站点
sites-available
文件夹,复制默认配置文件000-default.conf
作为当前项目的配置文件,并编辑。 每个项目都需要配置,配置信息可用放一个conf
中也可以放各自的conf
中,建议分开单独配置,这样删除相应软连接即可关闭某个站点
cd /etc/apache2/sites-available
cp 000-default.conf iteamName.conf
vim iteamName.conf
- 修改conf文件的配置信息。更多配置详情
cp 000-default.conf iteamName.conf
vim iteamName.conf
//配置内容
<VirtualHost *:80>
ServerName [domain]
ServerAlias [other domain]
ServerAdmin [your email] //用,分隔或者用*和?通配符都可以
DocumentRoot [static file path]
//目录权限设置,当前Apache2和以往用的版本语法可能不一样
<Directory /home/[userName]/[iteamName]/webapps/ROOT>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
//日志配置信息
ErrorLog ${APACHE_LOG_DIR}/[iteamName]-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/[iteamName]-.log combined
//将所有文件配置给JK插件,[ItemNameA_worker]为上面配置works.properties时的work.list内容
JkMount /* [ItemNameA_worker]
//其中以下文件不配置,由Apache自身解析
JkUnMount /*.jpg [ItemNameA_worker]
JkUnMount /*.gif [ItemNameA_worker]
JKUnMount /*.png [ItemNameA_worker]
JKUnMount /*.css [ItemNameA_worker]
JKUnMount /*.js [ItemNameA_worker]
</VirtualHost>
- 建立软连接到可用站点
sites-enabled
文件夹,参考windows,软连接=快捷方式。第一个是源文件,【补充:但不一定要用绝对路径。通过测试发现,源目录若使用相对路径,相对的不是当前目录而是目标目录,但是目标目录的相对目录是当前面目录】
ln –s ../sites-available/iteamName.conf iteamName.conf
ln -s ../sites-available/000-default.conf ./000-default.conf 在目标目录
mods-enabled下:ln -s ../mods-available/proxy.load proxy.load 可以
mods-available下: n -s proxy.load ../mods-enabled/proxy.load 不可以,
因为这里相对的是当前目录了而正确的应该是相对目标目录。所以通过ln -s可以知道软连接连接方向。
- 重启Apache和Tomcat相应实例,经测试修改过配置文件
conf
后一定要重启Apache
sudo /etc/init.d/apache2 reload
service apache2 restart
apachectl restart
//以上都能重启
./[tomcat]/bin/shutdown.sh
./[tomcat]/bin/startup.sh
**七、配置原因 **
- 浏览器访问端口默认是80端口,即Apache端口。
- Apache和Tomcat都能解析静态页面,但Apache效率远高于tomcat。
- 只有Tomcat能解析jsp文件,Apache只能解析静态页面。
<br />
准备工作:
将所有文件打包放到Tomcat文件的ROOT
下,或者将打包成war包,放在webapp
文件夹下,tomcat会自动解压。(apache可以放在其他文件夹下不和tomcat放在一起,再由配置文件配置,但是放一起方便上传)
启动:
apache启动,加载sites-enabled
下的主机配置文件。客户访问链接,默认80端口,根据url、别名或者端口号判断是哪个虚拟主机然后到下面的发布目录DocumentRoot
,根据后url缀判断是否由tomcat解析。静态文件(根据url后缀)自己解析(设置允许访问目录下的文件夹)。动态交给jkmount,就是之前的work.list内容的名字。然后找到works.properties中上述的名字,找到下面的配置信息,根据worker.xxx
的host
和port
将请求的url
发送过去。(本案例是发送到本机的对应tomcat实例端口),tomcat根据端口号找到本机相应的实例地址,再根据url
找到与自己的位置的文件解析。然后响应返回html给JKMount在返回给Apache返回给客户端。
**八、小技巧 **
- 若域名还没备案可以通过本机hosts去映射到其他域名。
- 输入的域名一定要备案
- 可以是没有控制权的域名
win + r
c:\Windows\System32\drivec
-
tomcat
日志输出
#跟踪tomcat日志输出
tail logs/catalina.out –f
#显示末尾内容
tail -n 5 log2014.log
tail -5 log2014.log
#实时显示内容,ctr + c停止
tail -f catalina.out
- 查看并删除进程
#查看自己的进程
ps -x
#删除进程
kill -9 pid
- No output folder错误和找不到jsp
尽量不要用root运行每个文件,第一次一旦用root运行后,会在work中存留root权限文件,其他用户将不能访问,会出现错误.
<br />
Options Indexes FollowSymLinks MultiViews 禁止显示Apache目录列表