Ubuntu服務(wù)器配置說明
(Ubuntu 14.04 + Apache2.2 + Tomcat7 + MySQL + SFTP)
<br />
** 一、登錄服務(wù)器**
- **windows 請(qǐng)安裝 putty **
-
ssh連接的為端口22
<br />
二、安裝程序
-
**安裝 Oracle Java7(因系統(tǒng)自帶的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
-
默認(rèn)安裝的mysql5.5版本,和使用的Ubuntu發(fā)行版本也有關(guān)系,最新版本的mysql有默認(rèn)密碼
tomcat8.0以上安裝
<pre><code>apt-get install apache2 libapache2-mod-jk tomcat7-user mysql-server</code></pre>使用此方式安裝的Apache,配置比較分散,一般如下:
默認(rèn)站點(diǎn)在 /var/www/
配置文件在 /etc/apache2/
日志在 /var/log/apache/
啟動(dòng)腳本是 /usr/bin/apache2ctl 或者 /etc/init.d/apache2
<br />
-
三、創(chuàng)建Linux用戶**
-
增對(duì)項(xiàng)目創(chuàng)建一個(gè)獨(dú)立的系統(tǒng)用戶主要有一下目的:
- 避免使用root運(yùn)行,提高安全性;
- 方便將來多應(yīng)用的隔離;
- 用于SFTP登錄系統(tǒng);
-
執(zhí)行命令
- 創(chuàng)建用戶,username替換為預(yù)創(chuàng)建的用戶名,useradd命令詳解
<pre><code>useradd username -m -s /bin/bash</code></pre> - 修改用戶登錄密碼
<pre><code>passpwd username</code></pre> - 從當(dāng)前用戶切換到某用戶(username)
<pre><code>su -username</code></pre>
<br />
- 創(chuàng)建用戶,username替換為預(yù)創(chuàng)建的用戶名,useradd命令詳解
四、MySQL配置**
-
開啟MySQL遠(yuǎn)程連接
切換到root權(quán)限,編輯
/etc/mysql/my.cnf,注釋掉bind-address = 127.0.0.1;
bind-address后面添加遠(yuǎn)程訪問IP或者禁掉這句話才可以讓遠(yuǎn)程主機(jī)訪問。 -
登錄MySQL賬號(hào)(使用root權(quán)限),并授權(quán)
登錄MySQL,password為之前設(shè)置的mysql密碼;
<pre><code>mysql –u root –p passwoed</code></pre>給指定用戶授權(quán)
//以下MySQL命令,非linux命令,帶';' //grant 權(quán)限1,權(quán)限2,…權(quán)限n on 數(shù)據(jù)庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’; grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option; flush privileges; service mysql restart; ``` >*釋義*:grant為授權(quán), `.` 代表所有數(shù)據(jù)庫所有表, `username` 為連接用戶的用戶名, `@` 后為用戶地址, `%` 表示可以從任何地址連接, `with grant option` 賦予用戶授權(quán)的權(quán)利 >*DEMO*:grant 權(quán)限1,權(quán)限2,…權(quán)限n on 數(shù)據(jù)庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;[更多案例](http://blog.csdn.net/wengyupeng/article/details/3290415) >*步驟*:登錄mysql,授權(quán)給其他用戶相應(yīng)權(quán)利,刷新權(quán)限,重啟mysql服務(wù)
<br />
五、配置Tomcat實(shí)例**
為了方便多實(shí)例部署,同事避免權(quán)限重提并提高安全性,我們一般不使用系統(tǒng)的tomcat實(shí)例,而是在用戶目錄下再創(chuàng)建一個(gè)引用tomcat7的獨(dú)立實(shí)例創(chuàng)建實(shí)例,同時(shí)為了避免與原tomcat訪問端口8080和控制端口8005沖突,更改新實(shí)例端口。
- 創(chuàng)建訪問端口為8180,訪問端口為8105的實(shí)例,同時(shí)將itemName改成相應(yīng)項(xiàng)目名;這樣,以后每個(gè)建立的實(shí)例+100
<pre><code>tomcat7-instance-create -p 8180 -c 8105 itemName</code></pre>
測試tomcat實(shí)例是否創(chuàng)建成功
- 進(jìn)入tomcat實(shí)例的
/webapp目錄下,創(chuàng)建ROOT目錄;- 新建一個(gè)
index.jsp,并鍵入<%= 1+1 %>,打開該頁面驗(yàn)證tomcat是否正常運(yùn)行- 回到該實(shí)例下的
/bin目錄下,鍵入./start.sh,執(zhí)行該文件,運(yùn)行該tomcat實(shí)例touch:新建;vi:編輯;esc + :wq!:保存退出;- 更多vim語法
<br />
**六、使用 mod_jk 整合 Apache 與 Tomcat **
-
tomcat配置
- 編輯tomcat目標(biāo)實(shí)例下的
server.xml,搜索8009,開啟并更改下列協(xié)議端口
<Connector port="8180 " protocol="HTTP/1.1"> <Connector port="8109 " protocol="AJP/1.3" URIEncoding="UTF-8" redirectPort="8443" /> - 編輯tomcat目標(biāo)實(shí)例下的
8180端口可以注釋,即外界無法通過該端口訪問
注釋8180端口后通過apache的80端口訪問,編碼方式指定為UTF-8
- mod_jk配置
- 找到
mod_jk下的works.properties文件
vi /etc/libapache2-mod-jk/workers.properties
- 編輯
works.properties,根據(jù)tomcat中AJP的端口進(jìn)行配置(多實(shí)例)
//多實(shí)例配置時(shí)用 [,]隔開
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
- 進(jìn)入可用站點(diǎn)
sites-available文件夾,復(fù)制默認(rèn)配置文件000-default.conf作為當(dāng)前項(xiàng)目的配置文件,并編輯。 每個(gè)項(xiàng)目都需要配置,配置信息可用放一個(gè)conf中也可以放各自的conf中,建議分開單獨(dú)配置,這樣刪除相應(yīng)軟連接即可關(guān)閉某個(gè)站點(diǎn)
cd /etc/apache2/sites-available
cp 000-default.conf iteamName.conf
vim iteamName.conf
- 修改conf文件的配置信息。更多配置詳情
cp 000-default.conf iteamName.conf
vim iteamName.conf
//配置內(nèi)容
<VirtualHost *:80>
ServerName [domain]
ServerAlias [other domain]
ServerAdmin [your email] //用,分隔或者用*和?通配符都可以
DocumentRoot [static file path]
//目錄權(quán)限設(shè)置,當(dāng)前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時(shí)的work.list內(nèi)容
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>
- 建立軟連接到可用站點(diǎn)
sites-enabled文件夾,參考windows,軟連接=快捷方式。第一個(gè)是源文件,【補(bǔ)充:但不一定要用絕對(duì)路徑。通過測試發(fā)現(xiàn),源目錄若使用相對(duì)路徑,相對(duì)的不是當(dāng)前目錄而是目標(biāo)目錄,但是目標(biāo)目錄的相對(duì)目錄是當(dāng)前面目錄】
ln –s ../sites-available/iteamName.conf iteamName.conf
ln -s ../sites-available/000-default.conf ./000-default.conf 在目標(biāo)目錄
mods-enabled下:ln -s ../mods-available/proxy.load proxy.load 可以
mods-available下: n -s proxy.load ../mods-enabled/proxy.load 不可以,
因?yàn)檫@里相對(duì)的是當(dāng)前目錄了而正確的應(yīng)該是相對(duì)目標(biāo)目錄。所以通過ln -s可以知道軟連接連接方向。
- 重啟Apache和Tomcat相應(yīng)實(shí)例,經(jīng)測試修改過配置文件
conf后一定要重啟Apache
sudo /etc/init.d/apache2 reload
service apache2 restart
apachectl restart
//以上都能重啟
./[tomcat]/bin/shutdown.sh
./[tomcat]/bin/startup.sh
**七、配置原因 **
- 瀏覽器訪問端口默認(rèn)是80端口,即Apache端口。
- Apache和Tomcat都能解析靜態(tài)頁面,但Apache效率遠(yuǎn)高于tomcat。
- 只有Tomcat能解析jsp文件,Apache只能解析靜態(tài)頁面。
<br />
準(zhǔn)備工作:
將所有文件打包放到Tomcat文件的ROOT下,或者將打包成war包,放在webapp文件夾下,tomcat會(huì)自動(dòng)解壓。(apache可以放在其他文件夾下不和tomcat放在一起,再由配置文件配置,但是放一起方便上傳)
啟動(dòng):
apache啟動(dòng),加載sites-enabled下的主機(jī)配置文件??蛻粼L問鏈接,默認(rèn)80端口,根據(jù)url、別名或者端口號(hào)判斷是哪個(gè)虛擬主機(jī)然后到下面的發(fā)布目錄DocumentRoot,根據(jù)后url綴判斷是否由tomcat解析。靜態(tài)文件(根據(jù)url后綴)自己解析(設(shè)置允許訪問目錄下的文件夾)。動(dòng)態(tài)交給jkmount,就是之前的work.list內(nèi)容的名字。然后找到works.properties中上述的名字,找到下面的配置信息,根據(jù)worker.xxx的host和port將請(qǐng)求的url發(fā)送過去。(本案例是發(fā)送到本機(jī)的對(duì)應(yīng)tomcat實(shí)例端口),tomcat根據(jù)端口號(hào)找到本機(jī)相應(yīng)的實(shí)例地址,再根據(jù)url找到與自己的位置的文件解析。然后響應(yīng)返回html給JKMount在返回給Apache返回給客戶端。
**八、小技巧 **
- 若域名還沒備案可以通過本機(jī)hosts去映射到其他域名。
- 輸入的域名一定要備案
- 可以是沒有控制權(quán)的域名
win + r
c:\Windows\System32\drivec
-
tomcat日志輸出
#跟蹤tomcat日志輸出
tail logs/catalina.out –f
#顯示末尾內(nèi)容
tail -n 5 log2014.log
tail -5 log2014.log
#實(shí)時(shí)顯示內(nèi)容,ctr + c停止
tail -f catalina.out
- 查看并刪除進(jìn)程
#查看自己的進(jìn)程
ps -x
#刪除進(jìn)程
kill -9 pid
- No output folder錯(cuò)誤和找不到j(luò)sp
盡量不要用root運(yùn)行每個(gè)文件,第一次一旦用root運(yùn)行后,會(huì)在work中存留root權(quán)限文件,其他用戶將不能訪問,會(huì)出現(xiàn)錯(cuò)誤.
<br />
Options Indexes FollowSymLinks MultiViews 禁止顯示Apache目錄列表