应用开发环境搭建
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:
(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/)
参考文档
-
部署文档参考:https://www.cnblogs.com/CodeLuckly/p/17472549.html(部署文档)
-
sql脚本:https://github.com/alibaba/nacos/blob/2.2.3/config/src/main/resources/META-INF/nacos-db.sql(初始化sql)
-
权限问题解决:https://blog.csdn.net/zhiyulai/article/details/125769052(权限问题)
-
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(可选)以阿里云为例
-
下载完成之后进行解压,然后会看到这么几个文件,我们需要用到".key"后缀文件和".crt"后缀文件
-
“.key"后缀文件重命名为"private.key”,“.crt"后缀文件重命名为"public.crt”,因为MINIO只识别这个名称的文件
-
上传到/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; -- 刷新权限