服务器
<p>[TOC]</p>
<h1>安装 ifconfig 命令</h1>
<pre><code>yum install net-tools</code></pre>
<h1>配置静态IP</h1>
<pre><code>vi /etc/sysconfig/network-scripts/ifcfg-ens33</code></pre>
<p>将<code>BOOTPROTO=&quot;dhcp&quot;</code>修改为<code>BOOTPROTO=&quot;static&quot;</code>
在最后加入以下配置</p>
<pre><code>ZONE=public
IPADDR=&quot;192.168.92.200&quot;
NETMASK=&quot;255.255.255.0&quot;
GATEWAY=&quot;192.168.92.2&quot;
DNS1=&quot;192.168.92.2&quot;</code></pre>
<p>重启网络</p>
<pre><code>systemctl restart network</code></pre>
<h1>安装docker</h1>
<p>官方:<a href="https://docs.docker.com/engine/install/centos/">https://docs.docker.com/engine/install/centos/</a></p>
<pre><code># 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
yum makecache fast
yum -y install docker-ce
# Step 4: 开启Docker服务
systemctl start docker
或
service docker start
# Step 5:安装核验
docker version
# Step 6: 设置开机启动
chkconfig docker on</code></pre>
<p>配置镜像加速器</p>
<pre><code>mkdir -p /etc/docker
tee /etc/docker/daemon.json &lt;&lt;-'EOF'
{
&quot;registry-mirrors&quot;: [&quot;https://ux2igo2v.mirror.aliyuncs.com&quot;]
}
EOF
systemctl daemon-reload
systemctl restart docker</code></pre>
<h1>安装 docker-compose</h1>
<pre><code>curl -SL https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version</code></pre>
<h1>挂载硬盘</h1>
<pre><code>[root@centos-xylw ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 500G 0 disk
sr0 11:0 1 4.4G 0 rom
# ==================================================================
[root@centos-xylw ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xc318588e 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-1048575999,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-1048575999,默认为 1048575999):
将使用默认值 1048575999
分区 1 已设置为 Linux 类型,大小设为 500 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# ===============================================================
[root@centos-xylw ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 500G 0 disk
└─sdb1 8:17 0 500G 0 part
sr0 11:0 1 4.4G 0 rom
# ==============================================================
[root@centos-xylw ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32768000 inodes, 131071744 blocks
6553587 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2279604224
4000 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# ==============================================================================
[root@centos-xylw ~]# mkdir /d
[root@centos-xylw ~]# mount /dev/sdb1 /d
[root@centos-xylw ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 1.8G 34G 6% /
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 493G 73M 467G 1% /d
[root@centos-xylw ~]# blkid /dev/sdb1
/dev/sdb1: UUID=&quot;f6b5bda7-b770-4ffa-bb87-03f0df044e46&quot; TYPE=&quot;ext4&quot;
# 开机启动,修改 /etc/fstab 增加一行
# UUID=f6b5bda7-b770-4ffa-bb87-03f0df044e46 /d ext4 defaults 0 0
[root@centos-xylw ~]# vi /etc/fstab
</code></pre>
<h1>安装青龙面板</h1>
<pre><code>#v 2.10.13
docker run -dit \
-v /d/ql/config:/ql/config \
-v /d/ql/log:/ql/log \
-v /d/ql/scripts:/ql/scripts \
-v /d/ql/db:/ql/db \
-v /d/ql/data:/ql/data \
-p 57001:5700 \
--name qinglong \
--hostname qinglong \
--restart always \
whyour/qinglong:latest
# 开放端口
firewall-cmd --zone=public --add-port=57001/tcp --permanent &amp;&amp; firewall-cmd --reload &amp;&amp; firewall-cmd --list-ports</code></pre>
<h1>安装nextcloud</h1>
<pre><code>docker run -d -v /d/nextcloud:/var/www/html --name nextcloud -p 8060:80 nextcloud
firewall-cmd --zone=public --add-port=8060/tcp --permanent &amp;&amp; firewall-cmd --reload &amp;&amp; firewall-cmd --list-ports</code></pre>
<h1>从源码安装 nginx</h1>
<pre><code># 切换到 /usr/local 目录下
cd /usr/local
# 下载nginx源码
wget http://nginx.org/download/nginx-1.24.0.tar.gz
# 解压
tar -zxvf nginx-1.24.0.tar.gz
# 进入nginx源码目录
cd nginx-1.24.0
# 安装依赖
yum install -y gcc-c++
yum install -y pcre
yum install -y pcre-devel
yum install -y zlib
yum install -y zlib-devel
yum install -y openssl
yum install -y openssl-devel
# 执行 ./configure
./configure --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --with-http_realip_module
# 编译安装
make &amp;&amp; make install
# 删除安装包
rm -rdf nginx-1.24.0
rm nginx-1.24.0.tar.gz</code></pre>
<p>配置nginx开机启动</p>
<pre><code>vi /lib/systemd/system/nginx.service</code></pre>
<p>填入以下内容:</p>
<pre><code>[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target</code></pre>
<p>设置开机启动</p>
<pre><code># 修改权限
chmod 777 /lib/systemd/system/nginx.service
systemctl enable nginx.service</code></pre>
<p>其他命令</p>
<pre><code># 启动nginx
systemctl start nginx.service
# 结束nginx
systemctl stop nginx.service
# 重启nginx
systemctl restart nginx.service</code></pre>
<p>设置环境变量</p>
<pre><code>vi /etc/profile</code></pre>
<p>在最后增加一行</p>
<pre><code>export PATH=&quot;/usr/local/nginx/sbin/:$PATH&quot;</code></pre>
<p>使配置生效</p>
<pre><code>source /etc/profile
nginx -v</code></pre>
<h1>从仓库安装 nginx</h1>
<pre><code>sudo yum install -y epel-release
sudo yum -y update
sudo yum install -y nginx</code></pre>
<p>安装成功后,默认的网站目录为:<code>/usr/share/nginx/html</code>
默认的配置文件为:<code>/etc/nginx/nginx.conf</code>
自定义配置文件目录为:<code>/etc/nginx/conf.d/</code></p>
<p>打开防火墙</p>
<pre><code>sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload</code></pre>
<p>nginx操作</p>
<pre><code>#启动 Nginx
systemctl start nginx
#停止 Nginx
systemctl stop nginx
#重启 Nginx
systemctl restart nginx
#查看 Nginx 状态
systemctl status nginx
#启用开机启动 Nginx
systemctl enable nginx
#禁用开机启动 Nginx
systemctl disable nginx</code></pre>
<h1>安装minio</h1>
<pre><code>docker run -d --name minio -p 9000:9000 -p 9001:9001 -e &quot;MINIO_ROOT_USER=admin&quot; -e &quot;MINIO_ROOT_PASSWORD=minioadmin123456&quot; -v /v/minio:/data minio/minio server /data --console-address &quot;:9001&quot;</code></pre>
<h1>安装rabbitmq</h1>
<pre><code>docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq
# 进入容器
docker exec -it rabbitmq bash
# 启用web管理
rabbitmq-plugins enable rabbitmq_management</code></pre>
<h1>安装mysql</h1>
<pre><code>docker pull mysql:8.0.25
mkdir -p /v/mysql/conf
mkdir -p /v/mysql/data
mkdir -p /v/mysql/mysql-files
cd /v/mysql/conf
touch my.cnf
vi my.cnf</code></pre>
<p>写入以下内容</p>
<pre><code>[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 数据库忽略大小写
lower_case_table_names = 1
#服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
collation_server = utf8mb4_general_ci
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB</code></pre>
<p>启动</p>
<pre><code>docker run -d -p 3306:3306 \
--restart=always \
--privileged=true \
-v /v/mysql/log:/var/log/mysql \
-v /v/mysql/data:/var/lib/mysql \
-v /v/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /v/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=Xylw258963 \
-e TZ=Asia/Shanghai \
--name mysql mysql:8.0.25</code></pre>
<p>查看日志</p>
<pre><code>docker logs -f mysql</code></pre>
<p>进入容器</p>
<pre><code>docker exec -it mysql mysql -uroot -p</code></pre>
<pre><code>use mysql;
select host, user, plugin, authentication_string, password_expired from user;
update user set host='%' where user='root';
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
exit</code></pre>
<h1>安装 mariadb</h1>
<pre><code>mkdir -p /v/mariadb/data
docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /v/mariadb/data:/var/lib/mysql -d mariadb:10.5.10</code></pre>
<h1>安装 mongoDb</h1>
<p>安装</p>
<pre><code>mkdir -p /v/mongodb/data
docker run -itd --name mongo -v /v/mongodb/data:/data/db -p 27017:27017 mongo --auth</code></pre>
<p>登录mongo容器,并进入到【admin】数据库</p>
<pre><code>docker exec -it mongo mongo admin</code></pre>
<p>创建一个用户 root,mongo 默认没有用户</p>
<pre><code>db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});</code></pre>
<h1>安装redis</h1>
<pre><code>docker run --restart=always -p 6379:6379 --name myredis -d redis:latest --requirepass 123456</code></pre>
<h1>安装 java</h1>
<pre><code># alpine镜像,安装完成后145MB。缺少glibc,无法运行sqlite
docker pull daocloud.io/library/java:openjdk-8-alpine
# 完整镜像,安装完成后816MB
docker pull daocloud.io/library/java:openjdk-8u40-jdk</code></pre>
<p>> alpine镜像缺少glibc,无法运行sqlite [<a href="https://github.com/xerial/sqlite-jdbc/issues/197](https://github.com/xerial/sqlite-jdbc/issues/197">https://github.com/xerial/sqlite-jdbc/issues/197](https://github.com/xerial/sqlite-jdbc/issues/197</a> "<a href="https://github.com/xerial/sqlite-jdbc/issues/197"">https://github.com/xerial/sqlite-jdbc/issues/197"</a>;)</p>
<h2>部署 bill</h2>
<pre><code># 新建目录 /v/java/bill,/v/java/bill/tmp
docker run -itd --name bill -p 11241:11241 -v /v/java/bill:/opt daocloud.io/library/java:openjdk-8u40-jdk sh -c &quot;cd /opt &amp;&amp; java -Dfile.encoding=utf-8 -Djava.io.tmpdir=/opt/tmp -server -XX:+TieredCompilation -Xms64m -Xmx256m -Xss1m -XX:NewRatio=4 -Duser.timezone=GMT+08 -Duser.dir=/opt -jar /opt/bill-1.0.jar&quot;
# 进入容器
docker exec -it bill bash</code></pre>
<h2>git</h2>
<p>安装git及其所有依赖</p>
<pre><code>yum install git -y</code></pre>
<p>配置git</p>
<pre><code>git config --global user.name &quot;xylw&quot;
git config --global user.email &quot;xylw@qq.com&quot;</code></pre>
<p>保存密码</p>
<p><strong>https方式(明文存储,不推荐)</strong></p>
<p>进入到用户目录<code>cd ~</code>执行命令<code>git config --global credential.helper store</code>,此时会在文件<code>.gitconfig</code>中存在以下配置</p>
<pre><code>[credential]
helper = store</code></pre>
<p>此时执行一次任何需要输入账号密码的git操作,就可以保存密码。
密码会以明文的形式存在于<code>~/.git-credentials</code>文件中</p>
<p><strong>SSH方式</strong></p>
<pre><code>ssh-keygen -t rsa -C &quot;xylw@qq.com&quot;
# 输入文件名 默认:/root/.ssh/id_rsa,我这里输入:/root/.ssh/teambitionGitRsa
# 输入密码,可直接留空回车
# 确认密码,可直接留空回车
# 查看公钥
cat ~/.ssh/teambitionGitRsa.pub
# 编辑 ~/.ssh/config 文件指定使用的密钥
vi ~/.ssh/config
# 输入以下内容
HostName codeup.teambition.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/teambitionGitRsa
# 把公钥复制到git平台上
ssh -T git@codeup.teambition.com
</code></pre>
<h2>maven</h2>
<p>进入官网,寻找自己需要的版本 [<a href="https://archive.apache.org/dist/maven/maven-3/](https://archive.apache.org/dist/maven/maven-3/">https://archive.apache.org/dist/maven/maven-3/](https://archive.apache.org/dist/maven/maven-3/</a> "<a href="https://archive.apache.org/dist/maven/maven-3/"">https://archive.apache.org/dist/maven/maven-3/"</a>;)</p>
<p>新建文件夹<code>mkdir -p /app/maven</code>并进入该文件夹
下载安装:<code>wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz</code>
解压:<code>tar -zxvf apache-maven-3.6.3-bin.tar.gz</code>
编辑环境变量文件<code>vi /etc/profile</code>,在最后加入以下内容</p>
<pre><code>export MAVEN_HOME=/app/maven/apache-maven-3.6.3
export PATH=${PATH}:${MAVEN_HOME}/bin</code></pre>
<p>执行<code>source /etc/profile</code>使生效
<code>mvn -version</code>验证
新建仓库文件夹<code>mkdir -p /app/maven/repo</code>
编辑maven配置文件<code>vi /app/maven/apache-maven-3.6.3/conf/settings.xml</code>,命令<code>:%d</code>清空内容,以下为全部配置内容</p>
<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;settings xmlns=&quot;http://maven.apache.org/SETTINGS/1.0.0&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation=&quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&quot;&gt;
&lt;localRepository&gt;/app/maven/repo&lt;/localRepository&gt;
&lt;pluginGroups&gt;
&lt;/pluginGroups&gt;
&lt;proxies&gt;
&lt;/proxies&gt;
&lt;servers&gt;
&lt;/servers&gt;
&lt;mirrors&gt;
&lt;mirror&gt;
&lt;id&gt;huaweicloud&lt;/id&gt;
&lt;mirrorOf&gt;*,!com.e-iceblue&lt;/mirrorOf&gt;
&lt;url&gt;http://mirrors.huaweicloud.com/repository/maven/&lt;/url&gt;
&lt;/mirror&gt;
&lt;/mirrors&gt;
&lt;profiles&gt;
&lt;/profiles&gt;
&lt;/settings&gt;</code></pre>
<h2>自动部署</h2>
<pre><code>#!/usr/bin/env bash
time1=$(date &quot;+%Y-%m-%d %H:%M:%S&quot;)
CURR_DIR=`pwd`
DEPLOY_DIR=$(dirname &quot;$(readlink -f &quot;$0&quot;)&quot;)
CODE_DIR=/app/code/portal-backend
ARTIFACT_ID=portal-api
cd $CODE_DIR
echo `date +%H:%M:%S`&quot; 获取代码&quot;
git pull
cd $DEPLOY_DIR
echo `date +%H:%M:%S`&quot; 开始打包……&quot;
sleep 5
mvn clean -f $CODE_DIR/pom.xml -U -DskipTests -Dmaven.javadoc.skip=true
mvn clean install -f $CODE_DIR/pom.xml -U -DskipTests -Dmaven.javadoc.skip=true
echo `date +%H:%M:%S`&quot; 打包完成&quot;
FILE_NAME=$DEPLOY_DIR/$ARTIFACT_ID.jar
DATENOW=$(date +%Y%m%d%H%M%S)
echo `date +%H:%M:%S`&quot; 备份文件:&quot;$FILE_NAME$DATENOW&quot;.bak&quot;
\cp -p -f $FILE_NAME $FILE_NAME$DATENOW&quot;.bak&quot;
echo `date +%H:%M:%S`&quot; 更新文件:&quot;$FILE_NAME
\cp -p -f $CODE_DIR/$ARTIFACT_ID/target/$ARTIFACT_ID.jar $FILE_NAME
echo `date +%H:%M:%S`&quot; 重启项目&quot;
./start.sh restart
time2=$(date &quot;+%Y-%m-%d %H:%M:%S&quot;)
echo `date +%H:%M:%S`&quot; 部署完成,耗时:&quot;$(($(date +%s -d &quot;${time2}&quot;)-$(date +%s -d &quot;${time1}&quot;)))&quot;秒&quot;
cd $CURR_DIR</code></pre>