Ubuntu操作系統使用和開發環境部署指南

1簡介

最近由於自己要在Ubuntu環境下部署一個通過Java調用.so動態鏈接庫文件,並且把這個工具部署成war包,運行在Linux環境的Tomcat容器下,因此需要自己搭建了Ubuntu 16.04的操作系統和開發環境。在此簡要技術Ubuntu系統的使用流程,以及開發環境的搭建過程總結。本文的主要內容如下圖所示:
在這裏插入圖片描述

2Ubuntu安裝

Ubuntu系統的安裝參見博客使用VMWare安裝Ubentu指南

3必要的軟件安裝

注意: 以下系統的安裝需要網絡的支持,如果是在內網離線的環境下,請首先在外網有網絡的情況下把虛擬機安裝好,然後通過完整的虛擬機壓縮拷貝的方式在內網使用。

3.1 vim、lrzsz、tree、openssh

在這裏插入圖片描述

3.1.1配置apt阿里源

root@sqh-virtual-machine:~# cd /etc/apt
root@sqh-virtual-machine:~# cp sources.list sources.list.bak 
root@sqh-virtual-machine:/etc/apt# ls
apt.conf.d   preferences.d  sources.list.bak  trusted.gpg
auth.conf.d  sources.list   sources.list.d    trusted.gpg.d
root@sqh-virtual-machine:/etc/apt# 

備份原有的sources.list文件。
以root權限修改文件/etc/apt/sources.list,文件內容如下:

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

執行如下命令使配置生效:

apt-get update 更新源  
apt-get upgrade 更新軟件 

這樣就使用了阿里源來下載安裝包,速度會快很多。

3.1.2安裝常用軟件包

安裝如上的包使用命令如下:
使用

apt-get install -y vim tree lrzsz openssh-server

關於apt-get命令,可以使用man apt-get查看詳情

NAME
       apt-get - APT package handling utility -- command-line interface

SYNOPSIS
       apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file]
               [-t=target_release] [-a=architecture] {update | upgrade |
               dselect-upgrade | dist-upgrade |
               install pkg [{=pkg_version_number | /target_release}]...  |
               remove pkg...  | purge pkg...  |
               source pkg [{=pkg_version_number | /target_release}]...  |
               build-dep pkg [{=pkg_version_number | /target_release}]...  |
               download pkg [{=pkg_version_number | /target_release}]...  |
               check | clean | autoclean | autoremove | {-v | --version} |
               {-h | --help}}

DESCRIPTION
       apt-get is the command-line tool for handling packages, and may be
       considered the user's "back-end" to other tools using the APT library.
       Several "front-end" interfaces exist, such as aptitude(8), synaptic(8)
       and wajig(1).

       Unless the -h, or --help option is given, one of the commands below
       must be present.

等待命令執行完成即可。

3.2 搜狗輸入法

對於程序員開發時,由於中文作爲母語,必然要在代碼中寫入註釋之類的描述性文字,因此安裝中文輸入法必不可少。
由於安裝的爲桌面版,因此可以直接去搜狗輸入法的Linux版下載安裝按照提示即可。

https://pinyin.sogou.com/linux/?r=pinyin

若在命令行下安裝,可使用wget命令:

wget "http://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.2.0.0108_amd64.deb?st=tQdHKEaxh6PcyFVf4QfT1A&e=1539855246&fn=sogoupinyin_2.2.0.0108_amd64.deb"
dpkg -i sogoupinyin_2.2.0.0108_amd64.deb\?st\=tQdHKEaxh6PcyFVf4QfT1A\&e\=1539855246\&fn\=sogoupinyin_2.2.0.0108_amd64.deb

因詳細安裝比較複雜,在此不贅述,可以參見Ubuntu16.04系統安裝搜狗輸入法詳細教程

4開發環境安裝

開發環境的安裝,遵循同樣的模式,如下圖所示:
在這裏插入圖片描述

4.1JDK安裝

環境變量的配置可以以root權限修改/etc/profile文件中

export JAVA_HOME=/usr/local/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

配置完成執行命令

source /etc/profile

使得命令生效
JDK的安裝具體參見博客Ubentu安裝JDK和idea過程指南
關於/etc/profile和~/.bashrc,不詳細描述,參見Linux環境變量配置的三個方法–/etc/profile,~/.bashrc,shell

4.2IDEA安裝

IDEA的安裝參見Ubentu安裝JDK和idea過程指南

4.3Maven安裝

Maven安裝的前提需要先安裝JDK,JDK的安裝參見Ubentu安裝JDK和idea過程指南
Maven安裝時可直接在Maven3版本下載頁選擇相應的版本下載即可。
安裝和配置,以3.5.4進行。首先下載apache-maven-3.5.4-bin.tar.gz。
關於Linux壓縮和解壓縮命令可以參考linux壓縮和解壓縮命令

4.3.1解壓拷貝

tar包的壓縮和解壓縮命令如下:

    tar
      解包:tar zxvf filename.tar
      打包:tar czvf filename.tar dirname
sqh@sqh-virtual-machine:~/Desktop$ tar zxvf apache-maven-3.5.4-bin.tar.gz 
apache-maven-3.5.4/README.txt
apache-maven-3.5.4/LICENSE
apache-maven-3.5.4/NOTICE
apache-maven-3.5.4/lib/
apache-maven-3.5.4/lib/cdi-api.license
apache-maven-3.5.4/lib/commons-cli.license
apache-maven-3.5.4/lib/commons-io.license
apache-maven-3.5.4/lib/commons-lang3.license
apache-maven-3.5.4/lib/jcl-over-slf4j.license
此處省略很多字
apache-maven-3.5.4/lib/maven-resolver-connector-basic-1.1.1.jar
apache-maven-3.5.4/lib/maven-resolver-transport-wagon-1.1.1.jar
apache-maven-3.5.4/lib/maven-slf4j-provider-3.5.4.jar
apache-maven-3.5.4/lib/jansi-1.17.1.jar

sqh@sqh-virtual-machine:~/Desktop$ mkdir /usr/local/maven
mkdir: cannot create directory ‘/usr/local/maven’: Permission denied

切換成root用戶,創建目錄/usr/local/maven,把解壓之後的文件夾拷貝到拷貝到該目錄

sqh@sqh-virtual-machine:~/Desktop$ su
Password: 
root@sqh-virtual-machine:/home/sqh/Desktop# mkdir /usr/local/
bin/     games/   java/    man/     share/   
etc/     include/ lib/     sbin/    src/     
root@sqh-virtual-machine:/home/sqh/Desktop# mkdir /usr/local/maven
root@sqh-virtual-machine:/home/sqh/Desktop# cp -r apache-maven-3.5.4 /usr/local/maven/

4.3.2環境變量配置

vim /etc/profile

在尾部追加如下內容:

注意: 在vim命令行模式下跳轉到尾部可以通過Shift + G,直接跳轉

export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
export CLASSPATH=$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin

讓環境變量配置生效

root@sqh-virtual-machine:/usr/local/maven# source /etc/profile

驗證配置生效,可以通過mvn -v命令

root@sqh-virtual-machine:/usr/local/maven# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven/apache-maven-3.5.4
Java version: 1.8.0_131, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_131/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-46-generic", arch: "amd64", family: "unix"

這樣即完成了Maven環境變量的配置

4.3.3配置settings.xml使用阿里maven庫

在IDEA使用maven下載jar包時,由於自帶的中心倉庫下載很慢,因此,改用阿里的maven庫

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	
  <localRepository>/home/sqh/.m2/repository</localRepository>
  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

</settings>

這樣下載時速度會快很多。

4.4Tomcat安裝

4.4.1下載

Tomcat官網下載相應的版本即可

4.4.2安裝

安裝過程與Maven安裝一模一樣,不再贅述。
以apache-tomcat-8.5.38爲例,在配置環境變量的關鍵步驟,修改/etc/profile
在尾部追加內容,如下:

TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.38

確保JDK正確的安裝,參見Ubentu安裝JDK和idea過程指南

5版本管理工具安裝

對於程序開發來說,代碼管理是日常生活的重中之重,誰也不想勞心勞力寫出來的代碼結果因爲沒有進行版本管理而無法回到一個預期的狀態,這是非常糟糕的狀態。因此很多職場新人在剛開始步入職場時,第一步就是要進行代碼的版本管理。當前流行的版本管理工具中有兩個較爲優秀的工具,即集中式版本管理的SVN和分佈式管理工具Git,由於出差的原因,而且搭建GIt服務器的流程並不熟悉,因此在這裏簡單演示搭建SVN,之後有時間會演示使用docker安裝GitLab服務器。
在這裏插入圖片描述

5.1SVN安裝

在有網環境下進行SVN服務器的安裝較爲簡單,可以通過apt-get命令進行。

sudo apt-get update
sudo apt-get install subversion

5.2SVN的使用

Ubuntu給出的手冊如下:

NAME
       svn - Subversion command line client tool

SYNOPSIS
       svn command [options] [args]

OVERVIEW
       Subversion  is  a  version control system, which allows you to keep old
       versions of files and directories (usually source code), keep a log  of
       who, when, and why changes occurred, etc., like CVS, RCS or SCCS.  Sub‐
       version keeps a single copy of the master sources.  This copy is called
       the  source  ``repository'';  it contains all the information to permit
       extracting previous versions of those files at any time.

       For more information about the Subversion project, visit http://subver‐
       sion.apache.org.

       Documentation  for  Subversion  and its tools, including detailed usage
       explanations of the svn, svnadmin, svnserve and svnlook programs,  his‐
       torical  background, philosophical approaches and reasonings, etc., can
       be found at http://svnbook.red-bean.com/.

       Run `svn help' to access the built-in tool documentation.

在使用中關注點如下:
在這裏插入圖片描述

5.2.1 建立倉庫

以思維導圖闡述過程
在這裏插入圖片描述

5.2.2 配置

在這裏插入圖片描述
注意1:在修改配置文件svnserve.conf文件時,如果指定了

anon-access=read

會發現客戶端無法讀取倉庫的日誌。
注意2:在修改權限管理文件authz時要按照格式指定那些用戶組可以訪問什麼倉庫
在部署SVN時,筆者修改的文件如下:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the '$authenticated' token,
###  - only anonymous users, using the '$anonymous' token,
###  - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = songquanheng, gaochao
# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

[/]
@admin = rw

在[groups]使用鍵值對配置完用戶組和用戶的映射關係之後,一定要繼續配置用戶組對倉庫的訪問的映射關係。

[/]
@admin = rw

不然會報錯誤“由於目標計算機積極拒絕,無法連接”

5.2.3 啓動和停止服務

在這裏插入圖片描述

注意:在啓動服務時確保路徑的正確性,由於在演示中repository爲倉庫,因此在使用svnserve -d -r path開啓服務時,要指定的路徑爲倉庫的父目錄。以下方式是錯誤的。

~~svnserve -d -r /home/svn/repository~~  

5.2.4 訪問和代碼提交

5.2.4.1Windows下拉代碼

在這裏插入圖片描述
確保conf/svnserve.conf中項

anon-access=none

使用TortoiseSVN查看日誌如下:
在這裏插入圖片描述

5.2.4.2 Ubuntu系統

通過apt-get 安裝了Subervison之後,只要用戶權限足夠,在本系統自然也可以克隆倉庫中的代碼。

sqh@sqh-virtual-machine:~/SVN/test$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:41:0c:d3 brd ff:ff:ff:ff:ff:ff
    inet 172.20.10.4/28 brd 172.20.10.15 scope global ens33
       valid_lft forever preferred_lft forever
sqh@sqh-virtual-machine:~/SVN/test$ svn co svn://172.20.10.4/repository
Authentication realm: <svn://172.20.10.4:3690> 53be99f7-cac1-4a79-8685-86cd244d6ffe
Password for 'sqh': #默認嘗試以當前用戶爲用戶名訪問svn服務,需要輸入密碼驗證,不適用直接enter即可

Authentication realm: <svn://172.20.10.4:3690> 53be99f7-cac1-4a79-8685-86cd244d6ffe
Username: songquanheng
Password for 'songquanheng': ******

A    repository/Readme.txt
A    repository/commands
Checked out revision 2.
sqh@sqh-virtual-machine:~/SVN/test$ 

這樣就完成了使用windows和Linux克隆倉庫中的代碼的問題。
至於代碼提交到版本庫中,對於Windows和Linux雖然有區別,但遵循相同的邏輯。

5.2.4.3提交代碼

參見svn 命令行使用總結

6搬入內網

當這些都在外網正常工作了之後,如果讀者在工作時有內外網區分,則可以把虛擬機整體拷貝進入內網,這樣就有了一個比較高的起點了。

注意:在整體搬遷時一定要保證VMWare工具的版本在內外網保持一致,這樣纔可以正常的在內網工作而不引入風險。

6總結

文檔主要詳細的介紹了使用Ubuntu操作系統的整體流程,按照該文檔的敘述去做,可以高效的搭建Linux下的Java開發環境。通過不斷的總結和使用錘鍊出關鍵可複用的部分,不斷的往腳下搬磚,大概這樣才能越來越高遠吧。
通過本文檔的實踐,希望讀者能夠熟悉Ubuntu操作系統,儘快進入開發的敏傑狀態。

										2019-03-23 15:56於南京大學鼓樓校區
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章