服务器软件的安装记录,包括科学上网ss、nginx、git、ftp服务器、java环境、内网穿透ngrok、Nexus

1、科学上网,安装ss

一键脚本点网站这里

一键脚本安装ss

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev-debian.sh
chmod +x shadowsocks-libev-debian.sh
./shadowsocks-libev-debian.sh 2>&1 | tee shadowsocks-libev-debian.log

删除日志和脚本文件

rm shadowsocks-libev-debian.*

2、安装nginx

安装nginx的依赖包

sudo apt-get install openssl libssl-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev

下载源码解压

官网 http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz
mv nginx-1.14.0 /usr/local/src/nginx
rm nginx-1.14.0.tar.gz

解压目录为/usr/local/src 默认用户软件源码安装位置
可以参考下面Linux参考内容

配置编译参数

参考网址

/usr/local/src/nginx/configure --prefix=/usr/local/nginx  
--with-http_ssl_module \  
--sbin-path=/usr/local/nginx/sbin/nginx \  
--conf-path=/usr/local/nginx/conf/nginx.conf \  
--pid-path=/usr/local/nginx/logs/nginx.pid \  

配置参数解析

  • –prefix=path nginx的安装目录。默认使用/usr/local/nginx
  • –sbin-path=path设置nginx的可执行文件的路径,默认为prefix/sbin/nginx.
  • –conf-path=path设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
  • –pid-path=path设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.

编译、安装

cd /usr/local/src/nginx/ 
make
make install

添加环境变量(到统一的nginx.sh文件中)

echo export NGINX_HOME=/usr/local/nginx >> /etc/profile.d/nginx.sh
echo -n export PATH='$PATH':'$NGINX_HOME'/sbin >> /etc/profile.d/nginx.sh
source /etc/profile.d/nginx.sh

关于环境变量,参考下面的环境变量执行顺序

nginx启动等相关命令

启动 nginx
停止 nginx -s stop
重新加载配置文件 nginx -s reload
指定配置文件 nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx进程:ps -ef|grep nginx

设置开机启动

方法一

将命令复制到 /etc/rc.local 文件中(exit 0之前)

方法二

将脚本文件软链接到 /etc/init.d/ 目录下,update-rc.d xxx defaults NN命令(xxx为文件名,NN为启动顺序),将脚本添加到初始化执行的队列中 (注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如98) 取消自启动 update-rc.d -f xxx remove

脚本网址:https://github.com/JasonGiedymin/nginx-init-ubuntu/blob/master/nginx

cd /etc/init.d/  
vi nginx
#拷贝脚本内容
chmod +x nginx
update-rc.d nginx defaults 90

设置自定义 nginx 配置目录和静态资源目录(可忽略)

cd /usr/local/nginx/conf
mkdir customized
ln -s /usr/local/nginx/conf/customized ~/nginx/conf.d
ln -s /usr/local/nginx/html ~/nginx/html
mkdir ~/nginx/html/static
chmod 775 ~/nginx/html/static
vi /usr/local/nginx/conf/nginx.conf
#http里添加  include       /usr/local/nginx/conf/customized/*;
nginx -s reload

静态网页配置文件

server {
        listen 80;
        server_name angrybird.hbson.cn;
        location / {
            root   html/static/angry_bird_web;
            index  index.html index.htm;
        }
}

放在 ~/nginx/conf.d

所涉及的目录

  • /usr/local/src/nginx 源码目录
  • /usr/local/nginx 安装目录
  • /usr/local/nginx/html 静态文件目录
  • /usr/local/nginx/conf 配置文件目录
  • /usr/local/nginx/logs 日志文件目录
  • ~/nginx/conf/conf.d 自定义配置文件目录软链接
  • ~/nginx/html/static 自定义静态文件目录软链接
  • /etc/init.d 自启动目录(添加了 nginx脚本,添加了service)
  • /etc/profile.d 自动配置目录(添加了 nginx.sh脚本,用于配置环境变量)

3、安装git

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev git -y

4、安装ftp服务器

默认访问路径 /srv/ftp

安装vsftpd

sudo apt-get install vsftpd
vi /etc/vsftpd.conf

修改配置

#按照如下配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=ftp
utf8_filesystem=YES
#下面的配置需要手动添加
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
allow_writeable_chroot=YES

涉及linux 命令 :user 参考网址

添加用户

useradd -d /home/xxx -s /sbin/nologin -g ggg -M xxx
passwd xxx
#(删除userdel xxx)
#xxx 用户名 ggg 用户组
#添加xxx到ftp允许访问用户列表
echo xxx >> /etc/vsftpd.user_list
service vsftpd restart

创建用户文件夹,设置权限

mkdir /home/xxx
chown xxx:ggg /home/xxx
chmod 755 /home/xxx
#权限为:拥有者读写执行,而属组用户和其他用户只有读、执行权限

5、安装Java环境

JDK网址

下载源码,解压

cd /home/fu 
tar -xvf jdk-8u181-linux-x64.tar
rm /home/fu/jdk-8u181-linux-x64.tar
mkdir /usr/lib/jvm
mv jdk1.8.0_181 /usr/lib/jvm/jdk
环境变量
export JAVA_HOME=/usr/lib/jvm/jdk 
export CLASSPATH=:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 

新建配置脚本文件

echo export JAVA_HOME=/usr/lib/jvm/jdk  >> /etc/profile.d/jdk.sh
echo export CLASSPATH=:'$JAVA_HOME'/lib:'$JAVA_HOME'/jre/lib:$CLASSPATH >> /etc/profile.d/jdk.sh
echo export PATH='$PATH':'$JAVA_HOME'/bin:'$JAVA_HOME'/jre/bin:'$PATH' >> /etc/profile.d/jdk.sh
source /etc/profile.d/jdk.sh

6、内网穿透 ngrok

地址:https://luozm.github.io/ngrok

安装GO环境

apt-get update
apt-get -y install build-essential mercurial git
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz
mkdir $HOME/go
echo 'export GOROOT=/usr/local/go' >> /etc/profile.d/go.sh
echo 'export GOPATH=$HOME/go' >> /etc/profile.d/go.sh
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> /etc/profile.d/go.sh
source /etc/profile.d/go.sh

下载源码

cd /usr/local/src/
git clone https://github.com/tutumcloud/ngrok.git ngrok
export GOPATH=/usr/local/src/ngrok/

自己建立ngrok服务,需要我们生成自己的证书,并提供携带该证书的ngrok客户端

指定域名

cd ngrok
NGROK_DOMAIN="tunnel.hbson.cn"

生成证书

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt 
cp device.key assets/server/tls/snakeoil.key

编译ngrok

make clean
make release-server
GOOS=darwin GOARCH=amd64 make release-client

运行服务端

/usr/local/src/ngrok/bin/ngrokd -domain="tunnel.hbson.cn" -httpAddr=":8002" -httpsAddr=":8003" -tunnelAddr=":4040"

通过ftp或其他方式下载到本地

cp /bin/darwin_amd64/ngrok /home/fu/ngrok

本地创建hbson.cfg文件

server_addr: “tunnel.hbson.cn:4040” trust_host_root_certs: false

添加执行权限,运行

chmod +x ngrok
./ngrok -subdomain test -config=hbson.cfg 4000

在编译客户端的时候需要指明对应的操作系统和构架

  • Linux 平台 32 位系统:GOOS=linux GOARCH=386
  • Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
  • Windows 平台 32 位系统:GOOS=windows GOARCH=386
  • Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
  • MAC 平台 32 位系统:GOOS=darwin GOARCH=386
  • MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
  • ARM 平台:GOOS=linux GOARCH=arm

添加nginx 配置 ,把8002端口转发到80(访问时就不需要追加端口号)

server {
    listen       80;
    server_name  *.tunnel.hbson.cn;
    location / {
             proxy_pass http://$host:8002;
             proxy_redirect off;
             client_max_body_size 10m;
             client_body_buffer_size 128k;
             proxy_connect_timeout 90;
             proxy_read_timeout 90;
             proxy_buffer_size 4k;
             proxy_buffers 6 128k;
             proxy_busy_buffers_size 256k;
             proxy_temp_file_write_size 256k;
        }
}

在http{}里,添加DNS:

vi /usr/local/nginx/conf/nginx.conf
resolver      8.8.8.8;

设置开机启动

echo '#!/bin/sh' >> ~/ngrok/ngrok.sh
echo /usr/local/src/ngrok/bin/ngrokd -domain="tunnel.hbson.cn" -httpAddr=":8002" -httpsAddr=":8003" -tunnelAddr=":4040" >> ~/ngrok/ngrok.sh
chmod +x ngrok.sh
ln -s ~/ngrok/ngrok.sh /etc/init.d/ngrok
update-rc.d ngrok defaults 91

7、安装Nexus

官网

下载解压

tar -zxvf /home/fu/nexus-3.13.0-01-unix.tar 
–nexus-3.13.0-01是Nexus的服务主目录
–sonatype-work是真正的仓库

配置环境变量

rm /etc/profile.d/nexus.sh
echo export NEXUS_HOME=/usr/local/nexus >> /etc/profile.d/nexus.sh
echo export PATH='$PATH':'$NEXUS_HOME'/bin >> /etc/profile.d/nexus.sh
source /etc/profile.d/nexus.sh

修改默认端口

vi ${NEXUS_HOME}/etc/nexus-default.properties
application-port=9943

启动

  • nexus start
  • nexus run

Linux参考内容

Linux目录

  • /bin 二进制可执行命令
  • /dev 设备特殊文件
  • /etc 系统管理和配置文件
  • /etc/rc.d 启动的配置文件和脚本
  • /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
  • /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
  • /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
  • /tmp 公用的临时文件存储点
  • /root 系统管理员的主目录
  • /mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
  • /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
  • /var 某些大文件的溢出区,比方说各种服务的日志文件
  • /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
  • /usr/bin 众多的应用程序
  • /usr/sbin 超级用户的一些管理程序
  • /usr/doc linux文档
  • /usr/include linux下开发和编译应用程序所需要的头文件
  • /usr/lib 常用的动态链接库和软件包的配置文件
  • /usr/man 帮助文档
  • /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
  • /usr/local 本地系统管理员用来自由添加程序的目录
  • /usr/local/bin 用户命令
  • /usr/local/lib 用户库
  • /usr/local/src 用户级源码目录

了解 profile、profile.d、bashrc、bash_profile、bashrc的作用和执行顺序

  • bash的配置文件:
    1. 按生效范围划分: 全局配置:/etc/profile和/etc/profile.d(/etc/profile.d是个目录,里面存放的是以.sh结尾的 shell脚本文件) 个人配置:~/bash_profile和~/bashrc
    2. 按功能划分: profile类:为交互式登陆的shell提供配置(定义环境变量、需要执行的脚本); bashrc类:为非交互式登陆的shell提供配置(定义别名、本地变量);
  • shell登陆:交互式登陆、非交互式登陆
    1. 交互式登陆:
      1. 直接通过终端输入账号密码登陆;
      2. 使用su - UserName或su -l UserName或su –login UserName登陆;通过man su查看命令, 如下图:可知会初始化环境变量。
    2. 非交互式登陆:
      1. su UserName;
      2. 图形界面下打开的终端;
      3. 执行脚本;

交互式登陆的执行流程:/etc/profile —> /etc/profile.d —> ~/bash_profile —> ~/bashrc —> /etc/bashrc
非交互式登陆的执行流程:~/bashrc —> ~/bash_profile —> /etc/profile.d/*.sh

常见的权限表示形式

  • -rw——- (600) 只有拥有者有读写权限。
  • -rw-r–r– (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
  • -rwx—— (700) 只有拥有者有读、写、执行权限。
  • -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
  • -rwx–x–x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
  • -rw-rw-rw- (666) 所有用户都有文件读、写权限。
  • -rwxrwxrwx (777) 所有用户都有读、写、执行权限。

解压命令大全

参考网址