Linux程序安装

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- docker-ce-cli- 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地址,验证是否安装成功

Linux程序安装_第1张图片

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.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  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
        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

你可能感兴趣的:(开发笔记,#,Docker,linux,centos,docker)