应用开发环境搭建

1、安装JDK linux

上传安装包

解压缩

tar -zxvf jdk-8u65-linux-x64.tar.gz

设置环境变量

(1)编辑配置文件

vim /etc/profile

(2)在文件末尾处,输入o(表示在光标下插入新行),复制下面的环境变量配置粘贴,并写入保存

#set java environment
JAVA_HOME=/root/jdk1.8.0_65
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

(3)重新加载/etc/profile配置文件

source /etc/profile

判断JDK是否安装成功

java -version
	java version "1.8.0_65"
	Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
	Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

2、nginx

下载

http://nginx.org/en/download.html

选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系统中

nginx下载

下载完成后,安装Nginx:

(1)解压缩:

tar -zxvf nginx-1.24.0.tar.gz

(2)安装

  • 切换到新建的nginx目录:
mkdir /usr/local/nginx
cd /usr/local/nginx
  • 更新yum 源(否则可能会报错:make 命令出现:“make:*** No targets specified and no makefile found.Stop.”)

  • Centos更新yum时报错 (Failed connect to download.docker.com:443)

解决
这是由于国内访问不到docker官方镜像的缘故
可以通过aliyun的源来完成:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum update -y
  • 安装相关依赖:
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 进入nginx目录:
cd nginx-1.24.0
  • 执行make命令:
# 执行configure脚本,设置安装nginx的初始化配置(--with-http_ssl_module:启动 SSL 的支持),生成 Makefile 可编译文件 
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make
  • 执行安装命令:
make install

安装成功后,启动Nginx服务:到/usr/local/nginx/sbin目录下,启动服务:./nginx -c /usr/local/nginx/conf/nginx.conf

	(1)cd /usr/local/nginx/sbin
	(2)启动服务:./nginx -c  /usr/local/nginx/conf/nginx.conf
	
	(3)查看进程:ps -ef | grep nginx
			root     25908     1  0 19:52 ?        00:00:00 nginx: master process ./nginx -c /usr/local/nginx/conf/nginx.conf
			nobody   25909 25908  0 19:52 ?        00:00:00 nginx: worker process
			root     26015  6948  0 19:52 pts/2    00:00:00 grep --color=auto nginx

服务配置示例

 # 示例
    server {
        listen 18001;
        server_name localhost;
        charset utf-8;
        location / {
            root /home/quantum/dist;
            try_files $uri $uri/ /index.html;
            index index.html;
       }

      location /api/ {
            proxy_set_header Host $http_host;
            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://172.22.1.188:10800/;
        }
      location /prod-api/ {
            proxy_set_header Host $http_host;
            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://172.22.1.188:10800/;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }

启动查看(默认是80端口)

http://localhost/

3、nacos

镜像获取

docker pull nacos/nacos-server:v2.2.3
mkdir -p /root/nacos/
mkdir -p /root/nacos/
mkdir -p /root/nacos/

临时启动容器

docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.2.3

复制配置文件

docker cp nacos:/home/nacos/logs/ /root/nacos/
docker cp nacos:/home/nacos/conf/ /root/nacos/
docker cp nacos:/home/nacos/data/ /root/nacos/

删除刚才为了拷贝文件启动的nacos

docker rm -f nacos

应用外部配置启动容器

docker run -d --name nacos -p 8848:8848  -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone nacos/nacos-server:v2.2.3 -v /root/nacos/logs/:/home/nacos/logs -v /root/nacos/conf/:/home/nacos/conf/ --restart=always  -v /root/nacos/data/:/home/nacos/data \  
-e SPRING_DATASOURCE_PLATFORM=mysql \ 
-e MYSQL_SERVICE_HOST=localhost\ 
-e MYSQL_SERVICE_PORT=3306 \ 
-e MYSQL_SERVICE_DB_NAME=nacos \ 
-e MYSQL_SERVICE_USER=root \ 
-e MYSQL_SERVICE_PASSWORD=developer@admin 

应用外部配置启动容器(带登录认证v2.3.2)

docker run -d \
-e MODE=standalone \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=127.0.0.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=xxx \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&allowPublicKeyRetrieval=true&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=SecretKey012345678901234567890123456789012345678901234567890123456720 \
-e NACOS_AUTH_IDENTITY_VALUE=pgRb2c4ANvhIA14Z \
-e NACOS_AUTH_TOKEN=NStQdHM3WCU3RVYlMjRZdG04aUolMkM3JTJDQnhyUCU1RXFMJTIxaiUyOCUyM1JZ \
-p 8848:8848 \
-p 9848:9848 \
--restart=always \
--privileged=true \
--name nacos nacos/nacos-server:v2.3.2

报错:Nacos配置Mysql,启动异常:Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval

解决方案:
将下面的keyValue添加到 spring.datasource.url 后面即可。
allowPublicKeyRetrieval=true

解决方案出处:
在MySQL官方网站里的一个 MySQL Forums (https://forums.mysql.com/read.php?152,688042,688042)
在这里插入图片描述

可以查看官方文档:MySqlConnector -> Connection Options -> Other Options(https://mysqlconnector.net/connection-options/)
在这里插入图片描述

参考文档

  1. 部署文档参考:https://www.cnblogs.com/CodeLuckly/p/17472549.html(部署文档)

  2. sql脚本:https://github.com/alibaba/nacos/blob/2.2.3/config/src/main/resources/META-INF/nacos-db.sql(初始化sql)

  3. 权限问题解决:https://blog.csdn.net/zhiyulai/article/details/125769052(权限问题)

  4. docker镜像:https://hub.docker.com/r/nacos/nacos-server/tags

4、minio

拉取 MinIO镜像(latest:最新版本)

docker pull minio/minio:latest

启动MinIO服务

  • 注意使用–console-address指定MinIO Console的运行端口(否则会以随机端口运行)

HTTP请求的 启动参数

docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /root/minio/data:/data \
-e MINIO_ROOT_USER=minio@admin \
-e MINIO_ROOT_PASSWORD=minio@admin \
-d minio/minio server /data --console-address ":9001"

HTTPS请求的 启动参数

docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /root/minio/data:/data \
-v /root/minio/config:/root/.minio \
-e MINIO_ROOT_USER=minio@admin \
-e MINIO_ROOT_PASSWORD=minio@admin \
-d minio/minio server /data --console-address ":9001"

配置公钥私钥开启HTTPS(可选)以阿里云为例

  1. 下载完成之后进行解压,然后会看到这么几个文件,我们需要用到".key"后缀文件和".crt"后缀文件
    在这里插入图片描述

  2. “.key"后缀文件重命名为"private.key”,“.crt"后缀文件重命名为"public.crt”,因为MINIO只识别这个名称的文件
    在这里插入图片描述

  3. 上传到/root/minio/config/certs目录下
    具体看第二部图

访问 MinIO服务(要在防火墙放开9001 和9090端口)

http://localhost:9090/

https://域名:9090/
  • 运行成功后就可访问MinIO Console的管理界面了,
账号:minio@admin
密码:minio@admin

5、redis

docker pull redis:7.0.12
docker run -p 6379:6379 --name redis-7.0 -v $PWD/data:/data -d --restart=always redis:7.0.12 redis-server --appendonly yes --requirepass "admin@redis"

6、mysql

6.1 mysql 5.7 安装

docker pull mysql:5.7.42
mkdir -p /root/mysql
cd /root/mysql
docker run -p 3306:3306 --name mysql-5.7 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=developer@admin -d mysql:5.7.42

docker exec -it mysql-5.7 bash

mysql -u  root  -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'developer@admin' WITH GRANT OPTION;
flush privileges;

6.2 mysql 9.0 安装

docker pull mysql:latest
mkdir -p /root/mysql
docker run -p 3306:3306 --name mysql-9 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql@fly -d mysql:latest

docker exec -it mysql-9 bash

mysql -u  root  -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

flush privileges;

7、部署 docker-compose

1、下载安装文件

curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2、赋予执行权限

chmod +x /usr/local/bin/docker-compose

3、创建软连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4、测试

docker-compose --version

8、部署 halo+mysql

1、在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。

mkdir ~/halo && cd ~/halo

2、创建 docker-compose.yaml (MySQL)

docker-compose配置halo

version: "3"

services:
  halo:
    image: halohub/halo:2.10
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./halo2:/root/.halo2
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://XXX:3306/halodb
      - --spring.r2dbc.username=XXX
      - --spring.r2dbc.password=XXX
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 端口号 默认8090
      - --server.port=8090

3、启动 Halo 服务

docker-compose up -d

4、实时查看日志:

docker-compose logs -f

8.1 安装问题

1、ERROR: .UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position 215: invalid continuation byte

修改docker-compose.yaml 的编码utf-8

8.2 基础配置(密码谨记)

站点名称:内容管理平台
邮箱:XXXfoxmail.com  
用户名:admin    密码:XXX
访问界面:http://XXX:8090/console

9、nginx配置SSL证书;代理后端接口

1、执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。

cd /usr/local/nginx/conf  #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。
mkdir cert  #创建证书目录,命名为cert。

2、将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)

cd /usr/local/nginx/conf/cert

3、执行以下命令,打开配置文件。

vim /usr/local/nginx/conf/nginx.conf
(1)按i键进入编辑模式。
(2)在nginx.conf中定位到server属性配置。
(3)删除行首注释符号#,并根据如下内容进行修改。
server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      cert/shop.huakongxinxi.com.pem;
    ssl_certificate_key  cert/shop.huakongxinxi.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
}

4、配置业务

 server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      cert/shop.huakongxinxi.com.pem;
        ssl_certificate_key  cert/shop.huakongxinxi.com.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        client_max_body_size 2m;

        location / {
            root   /var/www/shop/dist;
            try_files $uri $uri/ /index.html;
        }
        location /prod-api/ {
             proxy_pass http://shop.huakongxinxi.com:9988/;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_set_header Host $http_host;
        }

        error_page 404 /404.html;
        location ~ /actuator/{
             deny all;
        }
        if ($request_method !~* GET|POST|PUT|DELETE) {
            return 403;
        }
    }

10、docker 安装mysql 8

1、获取最新镜像

docker pull mysql

2、运行镜像

docker run -p 3308:3306 --name Peter  -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql:latest
解释下这条命令的参数:

-p 3308:3306:将容器内服务端口3306映射到本机的3308端口(本机端口:容器服务端口)
--name Peter:给容器取名字
-e MYSQL_ROOT_PASSWORD=yourpassword:docker的MySQL默认的root密码是随机的,改一下默认的root用户密码yourpassword
-d mysql:latest:在后台运行mysql:latest镜像产生的容器

3、执行修改密码并授权

docker exec -it Peter  bash‘
mysql -u root  -p

#修改密码:
alter user 'root'@'%' identified by 'mysql@admin' password expire never;
alter user 'root'@'%' identified with mysql_native_password by 'mysql@admin';
alter user 'root'@'localhost' identified with mysql_native_password by 'mysql@admin';
flush privileges;   -- 刷新权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值