Linux部分操作
这篇博客后续更新,主要是因为之前服务器经常重置,每次安装一些软件都要一个个去找安装过程,很麻烦,所以整理了一下。另外,Docker真香。
程序安装
普通安装
JAVA
- 创建目录:
cd /home
mkdir web
- 上传文件
- 解压缩
tar -xvf jdk-8u231-linux-x64.tar.gz // 默认当前路径,也可以选择其他路径
- 配置环境
vi /etc/profile
- 添加以下内容
#set java environment
export JAVA_HOME=/home/web/jdk1.8.0_231
export JRE_HOME=/home/web/jdk1.8.0_231/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
- 退出
:wq
- 执行命令使得配置生效
source /etc/profile
- 验证安装成功
[root@ruozhuliufeng web]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
[root@ruozhuliufeng web]#
MySQL
- 下载安装包,并安装
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-community-server
- 执行命令,启动MySQL服务并设置开机启动
systemctl start mysqld
systemctl enable mysqld
- 执行命令,获取安装时设置的密码
grep 'temporary password' /var/log/mysqld.log
2020-08-07T06:09:52.748656Z 1 [Note] A temporary password is generated for root@localhost: i#TQhBatt2tJ
- 重设密码
mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #输入上一步骤中获取的安装MySQL时自动设置的root用户密码
The existing password for the user account root has expired. Please set a new password.
New password: #设置新的root用户密码
Re-enter new password: #再次输入密码
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration of the plugin.
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N #是否更改root用户密码,输入N
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #是否删除匿名用户,输入Y
Success.
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #禁止root远程登录,输入Y
Success.
By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #是否删除test库和对它的访问权限,输入Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否重新加载授权表,输入Y
Success.
All done!
- 登录MySQL,设置远程访问
mysql -u root -p 数据库密码
# 设置远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '数据库密码' WITH GRANT OPTION;
# 刷新访问权限列表
flush privileges;
Redis
-
下载获得的redis-3.0.4.tar.gz,传输到Linux目录/home/web
-
解压密令tar -zxvf redis-3.0.4.tar.gz
-
进入解压后的文件夹:cd redis-3.0.4
-
在目录下执行make 命令(如果没有C语言环境,建议上网安装gcc:yum install gcc-c++)
-
make完成后继续执行make install
-
查看默认安装目录:usr/local/bin
- redis-benchmark:性能测试工具,可以在自己的环境运行,查看性能如何
- redis-check-aof:修复有问题的AOF文件
- redis-check-dump:修复有问题的dump.rdb文件
- redis-cli:客户端,操作入口
- redis-sentinel:redis集群使用
- redis-server:Redis服务器启动命令
-
启动
- 先复制解压后的文件夹里的redis.conf文件,修改里面的daemonize no改成yes,让服务在后台启动
- 将修改后的redis.conf拷贝到自己定义好的一个路径下,如/myconf
- 启动:进入安装目录
- redis-server /myconf/redis.conf
- redis-cli -p 6379
- 连通测试
- 输入ping
- 回复PONG
-
设置密码
redis-server /myconf/redis.conf redis-cli -p 6379 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "" 127.0.0.1:6379> config set requirepass "123456" OK 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> ping PONG
Docker
官网地址:https://docs.docker.com/install/linux/docker-ce/centos/
-
如果之前有安装过,卸载老版本,如果没有,可以跳过:
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-lates ‘t \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
安装所需的软件包
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
-
设置stable镜像库
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
可选:启用每晚测试存储库
$ sudo yum-config-manager --enable docker-ce-nightly
- 可选:启用测试存储库
$ sudo yum-config-manager --enable docker-ce-test
- 安装Docker社区版
$ sudo yum install docker-ce docker-ce-cli containerd.io
安装特定版本的Docker:
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
通过其完全合格的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如,docker-ce-18.09.1。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 启动Docker
$ sudo systemctl start docker
- 验证Docker是否安装成功
$ sudo docker run hello-world
- 配置Docker加速
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fw593vzk.mirror.aliyuncs.com"]
}
EOF
// 修改后重新加载配置文件,并重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Nginx
- 下载当前版本的nginx包
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行命令,建立nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行命令,安装nginx
yum -y install nginx
- 设置开机启动
systemctl start nginx
systemctl enable nginx
- 输入ip地址,验证是否安装成功
Nacos
- 在nacos发布版本页面(https://github.com/alibaba/nacos/releases)下载需要的tar.gz包
- 将下载的包上传到linux服务器
- 解压压缩包
tar -zxvf nacos-server-1.1.4.tar.gz
- 单机模式启动
sh startup.sh -m standalone
# 或者
bash startup.sh -m standalone
# 或者
./startup.sh -m standalone
注意:使用以上方式启动,在关闭SSH客户端后,Nacos会一并关闭,使用后台启动,我的尝试失败了,我用的解决办法是,作为系统服务并启动
- 将Nacos注册为系统服务
# 配置开机启动
# vim /lib/systemd/system/nacos.service
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/home/web/Program/nacos/bin/startup.sh -m standalone
ExecReload=/home/web/Program/nacos/bin/shutdown.sh
ExecStop=/home/web/Program/nacos/bin/shutdown.sh
PrivateTmp=true
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
# 保存后退出
:wq
- 保存后更新配置
systemctl daemon-reload
- 设置nacos开机自启
systemctl enable nacos.service
- 启动nacos
systemctl start nacos.service
- 访问nacos(服务器需要开放8848端口)
http://服务器IP:8848/nacos
用户名/密码:nacos/nacos
Git
- 在Git发布版本页面(https://github.com/git/git/releases)可以找到所有git已发布的版本,下载需要的tar.gz包
- 将下载的包上传到linux服务器
- 解压压缩包
tar -zxvf git-2.22.0.tar.gz
- 进入到解压后的文件夹
cd git-2.22.0
- 安装编译源码前所需要的依赖(需要联网)
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- 提示:安装编译源码所需依赖的时候,yum自动安装了git,这时需要卸载git
yum -y remove git
- 编译源码
make prefix=/home/web/Program/git all
- 将git安装到某一路径
make prefix=/home/web/Program/git install
- 配置环境变量
vi /etc/profile
# 在底部加上git安装路径下的bin文件夹
export PATH=$PATH:/home/web/Program/git/bin
# 保存修改并退出
:wq
- 刷新环境变量
source /etc/profile
- 查看git是否安装完成
git --version
Tomcat
- 下载Tomcat9
# Tomcat9官网下载地址
https://tomcat.apache.org/download-90.cgi
- 解压压缩包
cd /home/web/Program
tar -xvf apache-tomcat-9.0.40.tar.gz
# 可以重命名
mv apache-tomcat-9.0.40/ tomcat
- 配置环境变量
# 进入Tomcat的bin目录
cd /tomcat/bin
# 编辑setclasspath.sh
vi setclasspath.sh
# 添加Java环境
export JAVA_HOME=/home/web/Program/jdk
export JRE_HOME=/home/web/Program/jdk/jre
- 运行
./startup.sh
# 验证安装是否成功:
服务器ip:8080
Maven
- 下载maven
首先进入maven下载目录:http://maven.apache.org/download.cgi 下载maven
- 解压压缩包
cd /home/web/Program
tar -zxvf apache-maven-3.6.3-bin.tar.gz
# 可以重命名
mv apache-maven-3.6.3/ maven
- 配置环境变量
vim /etc/profile
# 在文档最后编辑
export MAVEN_HOME=/home/web/Program/maven
export PATH=$PATH:$MAVEN_HOME/bin
# 保存退出
:wq
# 重启
source /etc/profile
- 检查是否安装成功
# 运行mvn -version,如果输出版本信息即表示安装成功
mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /home/web/Program/maven
Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: /home/web/Program/jdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.12.1.el7.x86_64", arch: "amd64", family: "unix"
Gitlab
- 安装软件
# yum install -y curl policycoreutils-python openssh-server #安装依赖
# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm #下载软件包
# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm #安装gitlab
- 软件配置
# vim /etc/gitlab/gitlab.rb #编辑配置文件
external_url 'http://192.168.81.148' #改为自己的IP地址
# gitlab-ctl reconfigure #重新加载配置文件
- 汉化
1、下载汉化补丁
# git clone https://gitlab.com/xhang/gitlab.git
# cd gitlab
2、查看全部分支版本
# git branch -a
3、对比版本、生成补丁包
# git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > /tmp/10.2.2-zh.diff
4、停止服务器
# gitlab-ctl stop
5、打补丁
# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.2.2-zh.diff
6、启动和重新配置
# gitlab-ctl start
# gitlab-ctl reconfigure
Docker安装程序
Redis
- 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为3.2
docker pull redis:3.2
- 使用redis3.2镜像创建容器(运行镜像)
docker run -p 6379:6379 --name redis -v /home/web/redis/data:/data -v /home/web/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
-
在主机/home/web/redis/conf目录下创建redis.conf文件
有关配置文件,可以参考博文Redis的入门及使用
MySQL
- 从docker hub上(阿里云加速器)拉取mysql镜像到本地,标签为5.7
docker pull mysql:5.7
- 使用mysql5.7镜像创建容器(运行镜像)
docker run -p 1234:3306 --name mysql -v /home/web/mysql/conf:/etc/mysql/conf.d -v /home/web/mysql/logs:/logs -v /home/web/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
命令说明:
-p 1234:3306 :将主机的1234端口映射到docker容器的3306端口
--name mysql :运行服务名称
-v /home/web/mysql/conf:/etc/mysql/conf.d :将主机/home/web/mysal目录下的conf/my.cnf挂载到容器的/etc/mysql/conf.d
-v /home/web/mysql/logs:/logs :将主机/home/web/mysql目录下的logs目录挂载到容器的/logs
-v /home/web/mysql/data:/var/lib/mysql :将主机/home/web/mysql目录下的data目录挂载到容器的/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码
-d mysql:5.7 :后台运行mysql5.7
- 将MySQL设为自动启动
docker update 镜像ID --restart=always
Nginx
- nginx镜像拉取
# 获取nginx官方镜像
docker pull nginx
- 运行nginx镜像
docker run -d -p 80:80 --name nginx -v /home/conf/nginx/html:/usr/share/nginx/html -v /home/conf/nginx/conf:/etc/nginx/conf.d -v /home/conf/nginx/logs:/var/log/nginx nginx
- nginx配置
nginx的反向代理配置可以在目录/home/web/nginx/conf里进行配置
Gitlab
- gitlab镜像拉取
# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce
- 运行gitlab镜像
$ docker run -d -p 443:443 -p 9000:80 -p 10000:22 --name gitlab --restart always -v /home/conf/gitlab/config:/etc/gitlab -v /home/conf/gitlab/logs:/var/log/gitlab -v /home/conf/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
- gitlab配置
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/web/gitlab/config/gitlab.rb)
# gitlab.rb文件内容默认全是注释
$ vim /home/web/gitlab/config/gitlab.rb
# 配置内容:
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.81.148:88'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'http://192.168.81.148'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
FTP
- 拉取FTP镜像
docker pull fauria/vsftpd
- 查看本机IP地址
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.146 netmask 255.255.255.0 broadcast 192.168.81.255
inet6 fe80::9d97:392d:a51:6402 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6a:5d:1c txqueuelen 1000 (Ethernet)
RX packets 65385 bytes 96578026 (92.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21588 bytes 1363046 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 运行Docker镜像
docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /home/web/Program/vsftp/vsftpFile:/home/vsftpd -e FTP_USER=ruozhuliufeng -e FTP_PASS=Bql879543 -e PASV_ADDRESS=192.168.81.146 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd
#-p 进行端口绑定映射
#-v 添加容器数据卷
#-e FTP_USER=davion -e FTP_PASS=davion 添加一个初始化用户和密码
#PASV_MIN_PORT和PASV_MAX_PORT映射的是被动模式下端口使用范围
#-name vsftpd 为容器命名为vsftpd
#--restart=always fauria/vsftpd docker重启的时候自动启动这个容器
# 需要服务器开放端口 20、21、21100-21100
- 其他配置
# 添加其他用户
# 我们先进入container里面
docker exec -i -t vsftpd bash
# 修改并生成虚拟用户模式下的用户db文件,向文件中最后两行写入用户名和密码
vi /etc/vsftpd/virtual_users.txt
#假如我们添加了user用户,我们需要建立对应用户的文件夹
mkdir /home/vsftpd/user
#把登录的验证信息写入数据库
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
- 重启镜像
docker restart vsftpd
- 查看是否可以访问
在文件资源管理器输入:ftp://192.168.81.146/,替换为自己的IP地址查看是否可以访问。
相关操作
Linux(CentoOS)开放端口
- 开启防火墙
systemctl start firewalld
- 开放指定端口
firewalld-cmd --zone=public --add-port=88/tcp --permanent
命令含义:
--zone:作用域
--add-port=88/tcp:添加端口,格式为:端口号/通讯协议
--permanent:永久生效,没有此参数重启后失效
- 重启防火墙
firewalld-cmd --reload
- 查看端口号
netstat -ntlp // 查看当前所有tcp端口
解决端口占用
开启Swap分区
- 创建一个swap文件
cd var/
mkdir swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000
# count代表的是大小,我这里是2G
- 把文件转换为swap文件
在var目录执行:
mkswap swapfile
- 激活swap文件
这里可以直接用命令挂载上一个swap分区,但是重启后需要重新挂载
# 挂载
swapon /var/swapfile
# 如果不需要了,也可以卸载
swapoff /var/swapfile
- 设置开机自动挂载(按需)
# 编辑/etc/fstab,末行添加:
/var/swapfile swap swap defaults 0 0
作
Linux(CentoOS)开放端口
- 开启防火墙
systemctl start firewalld
- 开放指定端口
firewalld-cmd --zone=public --add-port=88/tcp --permanent
命令含义:
--zone:作用域
--add-port=88/tcp:添加端口,格式为:端口号/通讯协议
--permanent:永久生效,没有此参数重启后失效
- 重启防火墙
firewalld-cmd --reload
- 查看端口号
netstat -ntlp // 查看当前所有tcp端口
解决端口占用
开启Swap分区
- 创建一个swap文件
cd var/
mkdir swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000
# count代表的是大小,我这里是2G
- 把文件转换为swap文件
在var目录执行:
mkswap swapfile
- 激活swap文件
这里可以直接用命令挂载上一个swap分区,但是重启后需要重新挂载
# 挂载
swapon /var/swapfile
# 如果不需要了,也可以卸载
swapoff /var/swapfile
- 设置开机自动挂载(按需)
# 编辑/etc/fstab,末行添加:
/var/swapfile swap swap defaults 0 0