Uninote
Uninote

git

apt update
apt install git

docker

安装

# 官方镜像安装(但是有时候下载很慢,甚至没法下载。建议使用下面的国内镜像安装)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 国内镜像安装docker
curl -sSL https://get.daocloud.io/docker | sh

配置镜像加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
     "registry-mirrors": ["镜像地址"],
     "log-driver":"json-file",
     "log-opts": {"max-size":"500m", "max-file":"3"}
 }
 EOF

 systemctl daemon-reload

 systemctl restart docker

laradock

Laradock 是为 PHP 提供的完整 Docker 本地开发环境,有助于在 Docker 上运行 PHP 应用程序,和 Homestead 一样提供了一系列打包好(包括配置)的 Docker Image(例如Nginx,MySQL,Redis等等)。

安装

mkdir /docker
cd /docker
git clone https://github.com/Laradock/laradock.git
cd laradock/
cp .env.example .env

修改.env配置

vim .env

####修改如下配置
APP_CODE_PATH_HOST=../hyperf_project/ #项目代码的地址

CHANGE_SOURCE=true #是否使用国内加速

MYSQL_VERSION=8.0.32 #mysql版本
MYSQL_DATABASE=default
MYSQL_USER=username #用户名
MYSQL_PASSWORD=password #密码
MYSQL_PORT=3306 #端口
MYSQL_ROOT_PASSWORD=rootpassword #root用户密码



启动Nginx,MySQL

docker compose up -d nginx mysql

配置MySQL

# 进入容器
docker-compose exec mysql env LANG=C.UTF-8 /bin/bash
进入mysql
mysql -uroot -p
# 查看权限
mysql> select Host,User from mysql.user;
# 删除root远程访问权限
mysql> delete from mysql.user where User='root' and Host='%';

#创建数据库
mysql> create database youjie;
#修改权限
mysql> GRANT ALL PRIVILEGES ON `youjie`.* TO 'username'@'%';
mysql> flush privileges;

配置Nginx

cd /docker/laradocker
# 配置后台
vim nginx/sites/youjie_admin.conf


upstream admin {
    # Hyperf HTTP Server 的 IP 及 端口
    server hyperf:9501;
}
server {

    listen 80 ;

    server_name test.ysr.uninote.com.cn;
    # server_name localhost;

    location / {
        # 将客户端的 Host 和 IP 信息一并转发到对应节点
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 转发Cookie,设置 SameSite
        proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        # 执行代理访问真实服务器
        proxy_pass http://admin;
    }

}


# 配置C端API
vim nginx/sites/youjie.conf
upstream api {
    # Hyperf HTTP Server 的 IP 及 端口
    server hyperf:9502;
}
server {

    listen 80 ;

    server_name api.ysr.uninote.com.cn;
    # server_name localhost;

    location / {
        # 将客户端的 Host 和 IP 信息一并转发到对应节点
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 转发Cookie,设置 SameSite
        proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        # 执行代理访问真实服务器
        proxy_pass http://api;
    }

}


# 配置图片服务器
vim nginx/sites/youjie_image.conf

server {

    listen 80 ;


    server_name file.ysr.uninote.com.cn;
    root /var/www/ysr_api/public/;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

}

# 配置后台前端代码(前端代码上传了放在 /docker/hyperf_project 下面)
vim nginx/sites/yj_admin_front.conf
server {

    listen 81;


    server_name localhost;
    root /var/www/admin_front/;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ @router;
    }

    location @router {
        rewrite ^.*$ /index.html last;
    }

}
# 重启Nginx服务 让配置生效
compose restart nginx

项目配置

clone代码

cd /doker
mkdir hyperf_project
cd hyperf_project
git clone git@git.uninote.com.cn:ysr/ysr_api.git

修改配置文件

cd ysr_api
vim .env

运行hyperf 镜像

docker run --name hyperf \
-v /docker/hyperf_project:/data/project \
--network laradock_backend \   #laradock 启动的时候会创建这个网络,需要把hyperf容器也加入到网络中,不然访问不到mysql
-p 9501:9501 \
-p 9502:9502 \
-p 9503:9503 \
-p 9504:9504 -it \
--privileged -u root \
--entrypoint /bin/sh \
hyperf/hyperf:8.0-alpine-v3.15-swoole

hyperf容器内配置

以下在镜像内运行:

cd /data/project/ysr_api/
# 安装依赖
composer install


配置supervisor

vim /etc/apk/repositories

将:

https://dl-cdn.alpinelinux.org/alpine/v3.14/main #版本会变化 跟着变就行了
https://dl-cdn.alpinelinux.org/alpine/v3.14/community

修改为:

https://mirrors.aliyun.com/alpine/v3.14/main
https://mirrors.aliyun.com/alpine/v3.14/community
apk update

#安装
apk add supervisor


# 生成配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf

# 修改/etc/supervisor/supervisord.conf文件内容
vim /etc/supervisord.conf

[unix_http_server]
;file=/tmp/supervisor.sock   ; the path to the socket file
file=/var/run/supervisor.sock  ; the path to the socket file

[supervisord]
;logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
logfile=/var/log/supervisor.log ; main log file; default $CWD/supervisord.log

[supervisorctl]
;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket


[include]
files = /etc/supervisor/conf.d/*.conf



sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo vim /var/log/supervisor.log
sudo chmod 777 /var/log/supervisor.log

mkdir /etc/supervisor/conf.d


vi /etc/supervisor/conf.d/ysr.conf

# 新建一个应用并设置一个名称,这里设置为ysr_server
[program:ysr_server]
# 设置命令在指定的目录内执行
directory=/data/project/ysr_api/
# 这里为您要管理的项目的启动命令
command=php ./bin/hyperf.php start
# 以哪个用户来运行该进程
user=root
# supervisor 启动时自动该应用
autostart=true
# 进程退出后自动重启进程
autorestart=true
# 进程持续运行多久才认为是启动成功
startsecs=1
# 重试次数
startretries=3
# stderr 日志输出位置
stderr_logfile=/data/project/ysr_api/runtime/stderr.log
# stdout 日志输出位置
stdout_logfile=/data/project/ysr_api/runtime/stdout.log


[supervisord]

supervisord -c /etc/supervisord.conf

todo

2

点赞(0) 阅读(64) 举报
目录
标题