Linux软件环境安装配置原创
服务器软件的安装记录,包括科学上网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环境
下载源码,解压
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的配置文件:
- 按生效范围划分: 全局配置:/etc/profile和/etc/profile.d(/etc/profile.d是个目录,里面存放的是以.sh结尾的 shell脚本文件) 个人配置:~/bash_profile和~/bashrc
- 按功能划分: profile类:为交互式登陆的shell提供配置(定义环境变量、需要执行的脚本); bashrc类:为非交互式登陆的shell提供配置(定义别名、本地变量);
- shell登陆:交互式登陆、非交互式登陆
- 交互式登陆:
- 直接通过终端输入账号密码登陆;
- 使用su - UserName或su -l UserName或su –login UserName登陆;通过man su查看命令, 如下图:可知会初始化环境变量。
- 非交互式登陆:
- su UserName;
- 图形界面下打开的终端;
- 执行脚本;
- 交互式登陆:
交互式登陆的执行流程:/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) 所有用户都有读、写、执行权限。
解压命令大全
原文作者:傅杭波
原文链接:https://uhfun.cn/tech/2018/10/10/Linux软件环境安装配置.html
发表日期:2018.10.10 09:55
版权声明:本文为博主原创文章遵循
CC 4.0 BY-SA
版权协议,转载请附上原文出处链接和本声明