前言:
之前的开发工作一直是在Windows开发环境下进行的,但是正真发布和外网运营势必要发布到Linux环境下,而且有很多服务端的工具对于Windows系统的兼容性并不是非常完善,就像常用的Docker容器就只支持Linux系统,所以提前了解和部署Linux开发环境势在必行。
首先你需要一台安装Linux系统的机器,或者直接在Windows系统中安装虚拟机,这里我使用的就是虚拟机,安装的系统是Ubuntu14.04.4的系统镜像。
为了节省虚拟机中的磁盘空间,我们通常使用Windows和Linux之间建立共享文件的方式,将例如安装包之类只是在Linux中临时使用的文件放在Windows中,Linux通过Samba
或者VM Tool
去访问共享目录中的文件,由于安装VM Tool有坑,所以这里我选择Samba
来搭建共享服务。
控制面板
->用户账户
->管理账户
中新建一个用户(我新建的用户取名:linsh),设置密码(这里我设置的密码为:123456): 属性
窗口,选中共享
页签,点击共享: 在Linux系统下,打开终端:
先使用Ubuntu默认的安装软件的工具apt-get
来安装samba
(假如使用的是RH的话,可以使用yum
来进行软件安装):
sudo apt-get install samba
安装samba客户端,使用指令sudo apt-get install smbclient
:
linsh@ubuntu:~$ sudo apt-get install smbclient
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
smbclient 已经是最新的版本。
smbclient 被设置为手动安装。
下列软件包是自动安装的并且现在不需要了:
libntdb1 python-ntdb
Use 'apt-get autoremove' to remove them.
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 295 个软件包未被升级。
开启和关闭samba的指令:
sudo /etc/init.d/samba start #开启samba服务
sudo /etc/init.d/samba stop #关闭samba服务
将samba
添加到系统的开机自启动项中,由于Ubuntu没有RH(红帽)那样的chkconfig命令,我们可以选择其他的管理自启动项的方式,例如:sysv-rc-conf,操作步骤如下:
apt-get install sysv-rc-conf
;sudo sysv-rc-conf samba on
。此外,还可以通过直接改 /etc/rc0.d ~ /etc/rc6.d
和 /etc/rcS.d
下的东西,S开头的表示启动,K开头的表示不启动,
samba
的配置,可以直接修改samba的配置文件:/etc/samba/smb.conf
;Lunix下访问Windows下共享目录的办法有两个:一是文件挂载,二是网络远程连接服务:
方法一:
1.安装cifs-utils
:
linsh@ubuntu:~$ sudo apt-get install cifs-utils
[sudo] password for linsh:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
libntdb1 python-ntdb
Use 'apt-get autoremove' to remove them.
将会安装下列额外的软件包:
keyutils
建议安装的软件包:
winbind
下列【新】软件包将被安装:
cifs-utils keyutils
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 295 个软件包未被升级。
需要下载 120 kB 的软件包。
解压缩后会消耗掉 410 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://us.archive.ubuntu.com/ubuntu/ trusty/main cifs-utils amd64 2:6.0-1ubuntu2 [86.7 kB]
获取:2 http://us.archive.ubuntu.com/ubuntu/ trusty/main keyutils amd64 1.5.6-1 [33.6 kB]
下载 120 kB,耗时 7秒 (15.1 kB/s)
正在选中未选择的软件包 cifs-utils。
(正在读取数据库 ... 系统当前共安装有 194558 个文件和目录。)
正准备解包 .../cifs-utils_2%3a6.0-1ubuntu2_amd64.deb ...
正在解包 cifs-utils (2:6.0-1ubuntu2) ...
正在选中未选择的软件包 keyutils。
正准备解包 .../keyutils_1.5.6-1_amd64.deb ...
正在解包 keyutils (1.5.6-1) ...
正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
正在设置 cifs-utils (2:6.0-1ubuntu2) ...
正在设置 keyutils (1.5.6-1) ...
2.新建Linux下要挂载Windows共享文件的目录,这里我直接选择挂载在/mnt/Windows
,挂载步骤如下:
sudo mkdir /mnt/Windows
;将Windows的ShareFiles目录挂载到Linux下的/mnt/Windows目录下:mount -t cifs -o username=linsh //192.168.154.1/ShareFiles /mnt/Windows
,然后要求输入密码,假如挂载成功,可以在/mnt/Windows下查看到Windows的ShareFiles中的内容:
linsh@ubuntu:~$ sudo mount -t cifs -o username=linsh //192.168.154.1/ShareFiles /mnt/Windows
Password for linsh@//192.168.154.1/ShareFiles:
linsh@ubuntu:~$
/etc/fatab
中添加此共享目录的相关挂载信息,这样是为了实现开机时自动挂载共享目录:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
# / was on /dev/sda1 during installation
UUID=8cdb2ac2-5f81-4e29-9a89-69b21cfa61ea / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=90f1147d-81e3-48c5-8375-817c1a254061 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
//192.168.154.1/ShareFiles /mnt/Windows cifs username=linsh,password=123456 0 0
方法二:
对比方法一和二,不难发现,在Linux这种终端指令操作为主的系统下,挂载的方式更加方便。
先使用java -version
检查当前是否已安装JDK,假如没有,则出现如下提示:
linsh@ubuntu:/mnt/Windows$ java -version
程序 'java' 已包含在下列软件包中:
* default-jre
* gcj-4.8-jre-headless
* openjdk-7-jre-headless
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
请尝试:sudo apt-get install <选定的软件包>
linsh@ubuntu:/mnt/Windows$
先下载所需版本的JDK,下载的包有两种格式可以选择:
.rpm
:安装需通过alien
工具转化为.deb
格式才能安装,使用CentOS 6.4或者Red Hat常用这种方式,而Ubuntu不支持;.tar.gz
压缩包:这是解压后就可直接使用的版本。方法一:.rpm
安装:
这里我下载的是jdk-8u121-linux-x64.rpm,安装步骤如下:
注:需使用
sudo apt-get install alien
指令安装alien
。
sudo alient jdk-8u121-linux-x64.rpm
将.rpm文件装换为.deb文件;sudo dpkg -i jdk1.8.0_121-1.8.0_121.deb
进行安装。方法二:.tar.gz
压缩包安装:
首先我下载了最新的Linux版本的JDK压缩包:jdk-8u121-linux-x64.gz,安装步骤如下:
在/usr/local下新建一个目录命名为jvm:
sudo mkdir /usr/local/jvm
解压安装包到jvm目录下:
sudo tar -zxvf /mnt/Windows/jdk-8u121-linux-x64.gz -C /usr/local/jvm
打开jvm目录,可以看到目录下多了一个jdk1.8.0_121的文件夹,这就是解压缩后得到的安装包;
配置环境变量:
使用终端打开和编辑/etc/profile
配置文件:
sudo vi /etc/profile
在文本末尾加上JDK的相关配置信息:
# SET Java environment
JAVA_HOME=/usr/local/jvm/jdk1.8.0_121
CLASSPATH=.:$JAVA_HOME/lib.tool.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
输入一下指令是修改配置文件立即生效:
source /etc/profile
通过java -version
查询是否配置成功,如果成功,则显示当前JDK的版本:
linsh@ubuntu:~$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
linsh@ubuntu:~$
至此,JDK的安装工作就完成了。
在Linux下使用一下指令进行解压和编译:
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make
make完成之后,在redis-3.2.8/src文件目录下会生成redis的服务程序redis-server
,还有用于测试的客户端程序redis-cli
,接下来我们就来尝试启动redis服务,进入到src目录下执行./redis-server
指令,启动成功如下图所示:
linsh@ubuntu:/mnt/Windows/redis-3.2.8/src$ ./redis-server
2338:C 20 Mar 23:40:38.803 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
2338:M 20 Mar 23:40:38.806 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
2338:M 20 Mar 23:40:38.806 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
2338:M 20 Mar 23:40:38.806 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 2338
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
2338:M 20 Mar 23:40:38.831 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2338:M 20 Mar 23:40:38.832 # Server started, Redis version 3.2.8
2338:M 20 Mar 23:40:38.832 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2338:M 20 Mar 23:40:38.832 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
2338:M 20 Mar 23:40:38.833 * The server is now ready to accept connections on port 6379
打开redis-cli
客户端进行测试,假如一切正常,应该可以出现下面的输出:
linsh@ubuntu:/mnt/Windows/redis-3.2.8/src$ ./redis-cli
127.0.0.1:6379> set name linsh
OK
127.0.0.1:6379> get name
"linsh"
文件整理:
其实安装包中这么多文件,我们最后使用过程中需要用到的也就三个文件:redis.conf、redis-server和redis-cli,在/usr/local/jvm下建一个目录redis-3.2.8用来放置Redis相关文件:
sudo mkdir /usr/local/jvm/redis-3.2.8
sudo cp /mnt/Windows/redis-3.2.8/redis.conf /mnt/Windows/redis-3.2.8/src/redis-server /mnt/Windows/redis-3.2.8/src/redis-cli /usr/local/jvm/redis-3.2.8
假如使用的是Ubuntu的话,直接使用apt-get
来安装,指令如下:
$sudo apt-get update
$sudo apt-get install redis-server
Ubuntu的系统原生vi其实是vim-common
,使用起来非常不方便,我们通常先卸载掉它然后重新安装vi,大致步骤如下:
卸载vim-common
:
linsh@ubuntu:~$ sudo apt-get remove vim-common
[sudo] password for linsh:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
libntdb1 python-ntdb
Use 'apt-get autoremove' to remove them.
下列软件包将被【卸载】:
ubuntu-minimal vim-common vim-tiny
升级了 0 个软件包,新安装了 0 个软件包,要卸载 3 个软件包,有 284 个软件包未被升级。
解压缩后将会空出 1,339 kB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 196166 个文件和目录。)
正在卸载 ubuntu-minimal (1.325) ...
正在卸载 vim-tiny (2:7.4.052-1ubuntu3) ...
update-alternatives: using /usr/bin/see to provide /usr/bin/view (view) in 自动模式
正在卸载 vim-common (2:7.4.052-1ubuntu3) ...
正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
正在处理用于 mime-support (3.54ubuntu1.1) 的触发器 ...
linsh@ubuntu:~$
安装vim
:
linsh@ubuntu:~$ sudo apt-get install vim
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
libntdb1 python-ntdb
Use 'apt-get autoremove' to remove them.
将会安装下列额外的软件包:
vim-common vim-runtime
建议安装的软件包:
ctags vim-doc vim-scripts
下列【新】软件包将被安装:
vim vim-common vim-runtime
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 284 个软件包未被升级。
需要下载 5,933 kB 的软件包。
解压缩后会消耗掉 28.4 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim-common amd64 2:7.4.052-1ubuntu3.1 [95.2 kB]
获取:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim-runtime all 2:7.4.052-1ubuntu3.1 [4,882 kB]
获取:3 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim amd64 2:7.4.052-1ubuntu3.1 [955 kB]
下载 5,933 kB,耗时 10分 51秒 (9,102 B/s)
正在选中未选择的软件包 vim-common。
(正在读取数据库 ... 系统当前共安装有 196107 个文件和目录。)
正准备解包 .../vim-common_2%3a7.4.052-1ubuntu3.1_amd64.deb ...
正在解包 vim-common (2:7.4.052-1ubuntu3.1) ...
正在选中未选择的软件包 vim-runtime。
正准备解包 .../vim-runtime_2%3a7.4.052-1ubuntu3.1_all.deb ...
正在添加 vim-runtime 导致 /usr/share/vim/vim74/doc/help.txt 本地修改至 /usr/share/vim/vim74/doc/help.txt.vim-tiny
正在添加 vim-runtime 导致 /usr/share/vim/vim74/doc/tags 本地修改至 /usr/share/vim/vim74/doc/tags.vim-tiny
正在解包 vim-runtime (2:7.4.052-1ubuntu3.1) ...
正在选中未选择的软件包 vim。
正准备解包 .../vim_2%3a7.4.052-1ubuntu3.1_amd64.deb ...
正在解包 vim (2:7.4.052-1ubuntu3.1) ...
正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
正在处理用于 mime-support (3.54ubuntu1.1) 的触发器 ...
正在设置 vim-common (2:7.4.052-1ubuntu3.1) ...
正在设置 vim-runtime (2:7.4.052-1ubuntu3.1) ...
Processing /usr/share/vim/addons/doc
正在设置 vim (2:7.4.052-1ubuntu3.1) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in 自动模式
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in 自动模式
linsh@ubuntu:~$
i
进入插入内容的模式,换行使用Shift+Enter
,编辑完毕后,输入:wq
保存和退出。