Linux - 搭建开发环境
工具
putty 连接服务器。
WinSCP 用于文件的上传。
一般会在/opt目录下创建 一个software目录,用来存放我们从官网下载的软件格式是.tar.gz文件,或者通过 wget+地址下载的.tar.gz文件
执行解压缩命令,这里以nginx举例 tar -zxvf nginx-1.16.0.tar.gz -C /usr/local/src/ 把源码解压到/usr/local/src/目录下;-C:指定输出目录,x:解压 v:显示解压过程 f:后跟文件名称
/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下
/opt:用户级的程序目录,可以理解为D:/software,opt有可选的意思,这里可以用于放置第三方大型软件,我这里一般用来放置.tar.gz包
/usr/src:系统级的源码目录
/usr/local/src:用户级的源码目录
1、创建文件夹自定义(-m)权限: mkdir -m 777 目录名
2、移动文件:mv 源目录 文件 目标目录 (单个)移动所有文件: mv 源目录/* 目标目录
3、解压缩文件: tar -zxvf /usr/local/java(原目录) -C(注意:需要大写) /usr/local/java (目标目录)
#1、*.tar 用 tar –xvf 解压
#2、*.gz 用 gzip -d或者gunzip 解压
#3、*.tar.gz和*.tgz 用 tar –xzf 解压
#4、*.bz2 用 bzip2 -d或者用bunzip2 解压
#5、*.tar.bz2用tar –xjf 解压
#6、*.Z 用 uncompress 解压
#7、*.tar.Z 用tar –xZf 解压
#8、*.rar 用 unrar e解压
#9、*.zip 用 unzip 解压
4、linux查看文件夹大小
#查看磁盘使用情况
df -h
# 查看当前一级目录文件大小
du -h --max-depth=1
# 查看当前目录所以文件的大小。
du -sh *
# 查看系统分区情况。
fdisk -l
#查看linux服务器上有几块磁盘
lsblk # 默认是树形方式显示:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 60G 0 disk
└─vda1 253:1 0 60G 0 part /
vdb 253:16 0 26G 0 disk /disk2283
# 目录列表含义
NAME : 这是块设备名。
MAJ:MIN : 本栏显示主要和次要设备号。
RM : 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE : 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
RO : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。
MOUNTPOINT : 本栏指出设备挂载的挂载点。
# mount挂载文件 [-t 文件系统 ] [-o 选项] 设备 目录
Linux配置开发环境
安装jdk
# 配置环境
tar -zxvf jdk-8u161-linux-x64.tar.gz
mv jdk1.8.0_161 /usr/local/java
vim etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile #让刚设置的环境生效
java -version
安装tomcat
tar -zxvf apache-tomcat-8.5.50.tar.gz
mv apache-tomcat-8.5.50 ../../usr/local/
#注意: 启动tomcat一定要写成 ./startup.sh,而不是 startup.sh,运行其它二进制的程序也一样。
#直接写 startup.sh,linux 系统会去 PATH 里寻找有没有叫 startup.sh 的,
#而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,
#你的当前目录通常不在 PATH 里,所以写成 startup.sh 是会找不到命令的,要用 ./startup.sh 告诉系统说,就在当前目录找。
ps -ef|grep tomcat #查看tomcat是否正常启动。
netstat -an|grep 80 #命令查看是否有程序占用80端口
# 查看到系统总的内存
free -h #或者 top ,单位:KB , free -g 单位:GB
# 内存列表意思
total #总物理内存
used #已经使用的物理内存
free #没有使用过的物理内存
shared #多进程共享内存
buff/cache #读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放
available #还可以被 应用程序 使用的物理内存
# Linux,在/usr/local/tomcat-8.5.50/bin/catalina.sh里 修改JVM内存大小:
# 要添加在catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.
# 给tomcat配一下JVM的内存。初始内存1024m,最大2048m
JAVA_OPTS="-Xms1024m -Xmx4096m" --后面用默认的
# 参数总结
(1)-Xms,jvm启动时,初始分配的堆/栈内存
(2)-Xmx,JVM最大允许分配的堆/栈内存,按需分配
(3)-Xss,设定每个线程的堆栈大小
(4)-XX:PermSize,JVM初始分配的非堆内存
(5)-XX:MaxPermSize,JVM最大允许分配的非堆内存,按需分配
#查看tomcat启动日志
#先切换到:cd usr/local/tomcat5/logs
tail -f catalina.out #或者指定查多少行:tail -200 catalina.out
安装mysql5.7.28
# 安装步骤参考:https://www.cnblogs.com/wendy-0901/p/12673705.html
#把启动脚本放到开机初始化目录
cp support-files/mysql.server /etc/init.d/mysql
#如果执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误. 说明有多个ROOT用户纪录在USER表中了.
#查看一下host是否已经有了%这个值,有了就可以了.
#select host from user where user = 'root';
#select host,user from user where user='root';
#mysql服务启动,停止,重启
service mysql start
service mysql stop
service mysql restart
root pwd:123456
# 配置mysql环境变量
vim /etc/profile
export MYSQL_HOME=/usr/local/mysql-5.7.28
export PATH=${MYSQL_HOME}/bin:${JAVA_HOME}/bin:$PATH
:wq
source /etc/profile
# 配置好之后就可以直接访问,不用到mysql-5.7.28/bin目录下
mysql -uroot -p
安装nginx
在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。
# 1、配置nginx安装所需的环境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
#nginx不仅支持 http协议,还支持 https(即在 ssl 协议上传输 http)
yum install -y openssl openssl-devel
# 2、解压完进入cd /usr/local/nginx-1.16.1
# 进行配置,推荐使用默认配置
./configure
# 3、编译安装nginx,在当前目录(/usr/local/nginx-1.16.1)进行编译
make
make install
# 安装成功,返回上一级目录,就会发现多了nginx目录!
# 4、启动nginx
# 进入nginx: /usr/local/nginx/sbin
./nginx
# 查看nginx安装的目录 whereis nginx
# 5、查看nginx 的状态: 出现master 则启动成功!
ps -ef | grep nginx or ps aux|grep nginx
# 6、关闭nginx
kill -9 8725(进程号)
pkill -9 nginx# 停止所有进程
# 7、停止、重启nginx服务
./nginx -s stop
./nginx -s reload
# 8、设置nginx开机启动,只需在rc.local增加启动代码即可
vim /etc/rc.local
#在底部增加
/usr/local/nginx/sbin/nginx
#此外,进入/usr/local/nginx/conf目录
#可修改nginx的配置文件 -> vim nginx.conf ,如:修改域名以及端口等
#pstree以树状显示正在运行的进程。
pstree
nginx安装SSL模块
# 进入nginx安装目录:
cd /usr/local/nginx-1.16.1
# 添加ssl模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module
# 执行make
make
# 执行make install 检查
make install
# 备份旧的nginx程序
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx2.bak
# 然后将刚刚编译好的nginx覆盖掉原有的nginx(nginx要停止状态)
# 关闭nginx
nginx -s stop
# 把新的nginx程序覆盖旧的
cp objs/nginx /usr/local/nginx/sbin/nginx
# 测试新的nginx程序是否正确
/usr/local/nginx/sbin/nginx -t
# 查看ngixn版本极其编译参数
/usr/local/nginx/sbin/nginx -V
# 配置nginx.conf文件
# 显示已经配置了ssl模块,说明SSL安装成功!
# 重启,执行
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
配置nginx.conf文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65536;
multi_accept on;
}
http {
server_tokens off;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
client_header_timeout 60;
client_body_timeout 60;
reset_timedout_connection on;
send_timeout 120;
proxy_connect_timeout 5;
gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# 映射到相应tomcat里
upstream tomcats8080 {
ip_hash;
server localhost:8080;
}
server {
listen 80; # 端口
server_name xxx;#域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_redirect off;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcats8080;
client_max_body_size 50m;
proxy_buffering off;
proxy_connect_timeout 60;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_temp_file_write_size 256m;
proxy_max_temp_file_size 128m;}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
server_name zodiacal.cn;
#ssl on;
ssl_certificate 1_zodiacal.cn_bundle.crt;
ssl_certificate_key 2_zodiacal.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcats8083;
proxy_connect_timeout 60;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_temp_file_write_size 256m;
proxy_max_temp_file_size 128m;
expires 10s;
}
}
}
需要关闭防火墙才可访问!
centos7 Failed to start iptables.service: Unit not found 防火墙
# 在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理
# 添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
# 批量添加区间端口
firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent
# 重新载入
firewall-cmd --reload
# 查看
firewall-cmd --zone=public --query-port=80/tcp
# 删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 开启防火墙
systemctl start firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 查看运行状态
firewall-cmd --state //running 表示运行
收工!