diff --git a/README.md b/README.md index c2bb80e8ddfdf556c9ac42733223339ca3fbc1a4..6a57d2f331a12f360bc5587ab95b230d01f144bd 100644 --- a/README.md +++ b/README.md @@ -1,214 +1,76 @@ -#### 项目介绍 +### 项目介绍 为酷瓜云课堂(腾讯云版) [course-tencent-cloud](https://gitee.com/koogua/course-tencent-cloud) 提供环境支持 -#### 安装 docker 和 docker-compose +### 安装指南 -安装 docker, 官方文档: [install-docker](https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script) +下载 [安装脚本](https://gitee.com/koogua/course-tencent-cloud-docker/install.sh) -下载 docker - -``` -sudo curl -sSL https://get.daocloud.io/docker | sh -``` - -更改 docker 仓库的默认地址 - -修改 /etc/docker/daemon.json 文件(没有请自行创建) - -``` -{ - "registry-mirrors": [ - "https://mirror.ccs.tencentyun.com" - ] -} -``` - -启动 docker - -``` -sudo service docker start -``` - -安装 docker-compose,官方文档: [install-compose](https://docs.docker.com/compose/install/#install-compose) - -下载 docker-compose - -``` -sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -``` - -给 docker-compose 增加执行权限 - -``` -sudo chmod +x /usr/local/bin/docker-compose -``` - -### 下载相关代码 - -假定存在目录 `/home/koogua` - -通过 git clone 下载构建代码,原名字太长,我们用一个短名字 - -``` -cd /home/koogua -git clone https://gitee.com/koogua/course-tencent-cloud-docker.git ctc-docker -``` - -通过 git clone 下载项目代码,原名字太长,我们用一个短名字 - -``` -cd /home/koogua/ctc-docker/html -git clone https://gitee.com/koogua/course-tencent-cloud.git ctc -``` - -### 配置运行环境 - -(1)修改构建配置 - -复制生成 .env 并修改相关参数 - -``` -cd /home/koogua/ctc-docker -cp .env.default .env ``` - -(2)配置 nginx 默认站点 - -无需HTTPS:复制生成 default.conf 并修改相关参数 - +cd ~ && curl http://download.koogua.com/install.sh -o install.sh ``` -cd /home/koogua/ctc-docker/nginx/conf.d -cp default.conf.sample default.conf -``` - -需要HTTPS:复制生成 default.conf 并修改相关参数 +给脚本增加执行权限 ``` -cd /home/koogua/ctc-docker/nginx/conf.d -cp ssl-default.conf.sample ssl-default.conf +chmod +x install.sh ``` -构建镜像 +根据实际情况修改配置 ``` -cd /home/koogua/ctc-docker -docker-compose build +nano install.sh ``` - -运行容器 - - ``` - cd /home/koogua/ctc-docker - docker-compose up -d - ``` - -### 配置应用 -进入 php 容器 +可选配置项目如下: ``` -docker exec -it ctc-php bash -``` +#是否安装测试数据(on:是,off:否) +SITE_DEMO=off -复制生成 config.php 并修改相关参数 - -``` -cd /var/www/html/ctc/config -cp config.default.php config.php -``` +#站点域名(不包括http) +SITE_DOMAIN=abc.com -复制生成 xunsearch 配置文件 +#站点密钥(数字字母组合,不要用特殊字符) +SITE_KEY=1qaz2wsx3edc -``` -cd /var/www/html/ctc/config -cp xs.course.default.ini xs.course.ini -cp xs.group.default.ini xs.group.ini -cp xs.user.default.ini xs.user.ini -``` +#mysql超级用户密码(数字字母组合,不要用特殊字符) +MYSQL_ROOT_PASSWORD=1qaz2wsx3edc -修改 storage 目录读写权限 +#mysql项目数据库名称(数字字母组合,不要用特殊字符) +MYSQL_DATABASE=ctc -``` -chmod -R 777 /var/www/html/ctc/storage -``` - -创建 sitemap.xml 软链接 +#mysql项目数据库用户(数字字母组合,不要用特殊字符) +MYSQL_USER=ctc -``` -ln -s /var/www/html/ctc/storage/tmp/sitemap.xml /var/www/html/ctc/public/sitemap.xml -``` +#mysql项目数据库密码(数字字母组合,不要用特殊字符) +MYSQL_PASSWORD=1qaz2wsx3edc -安装依赖包 - -``` -cd /var/www/html/ctc -composer install --no-dev -composer dump-autoload --optimize +#redis访问密码(数字字母组合,不要用特殊字符) +REDIS_PASSWORD=1qaz2wsx3edc ``` -数据库迁移 +执行安装,快慢取决于网络,当有错误或者超时请重试 ``` -cd /var/www/html/ctc -vendor/bin/phinx migrate +bash install.sh ``` -执行升级 - -``` -cd /var/www/html/ctc -php console.php upgrade -``` - -访问网站 +### 访问网站 * 管理帐号:10000@163.com / 123456 * 前台地址:http://{your-domain}.com * 后台地址:http://{your-domain}.com/admin -后续设置: [腾讯云服务和应用设置](https://gitee.com/koogua/course-tencent-cloud/wikis) +后续设置: [系统设置](https://gitee.com/koogua/course-tencent-cloud/wikis) ### 测试数据 -新装系统一片空白,为了更好的体验系统,我们提供部分测试数据(采集自网络) - -**注意:导入操作会把初始化建立的表删除并重新创建表** - 管理帐号:100015@163.com / 123456 -(1)导入资源文件 - -在腾讯云存储新建一个存储桶(bucket), 并在后台->系统配置->存储设置修改相关参数 - -下载资源文件,解压后使用 COSBrowser 上传 img 等相关目录到新建的存储桶中 - -[资源文件下载](http://download.koogua.com/ctc-test-cos.zip) - -[COSBrowser工具介绍](https://cloud.tencent.com/document/product/436/11366) - -(2)导入数据,mysql 容器中没有下载工具,需要安装一下 - -``` -docker exec -it ctc-mysql bash -apt-get update && apt-get install curl -curl -o ctc-test.sql.gz http://download.koogua.com/ctc-test.sql.gz -gunzip < ctc-test.sql.gz | mysql -u ctc -p ctc -``` - -(3)重建索引 - -``` -docker exec -it ctc-php bash -cd /var/www/html/ctc -php console.php course_index rebuild -php console.php group_index rebuild -php console.php user_index rebuild -``` +### 结束安装 -(4)执行升级 +安装完成,请删除安装脚本 ``` -cd /var/www/html/ctc -php console.php upgrade +rm install.sh ``` \ No newline at end of file diff --git a/backup.sh b/backup.sh index ec9980e139b78cfaf014a40c8ca391616db408a5..12184bbc530a20c536d325f9feceaff85886bbc6 100644 --- a/backup.sh +++ b/backup.sh @@ -1,21 +1,31 @@ #!/usr/bin/env bash -docker exec -i ctc-mysql bash <<'EOF' - -#数据库名称 -db_name=ctc +# ----------- 请根据实际情况,修改如下配置 ------------ # -#数据库用户 -db_user=ctc +#mysql项目数据库名称 +MYSQL_DATABASE=ctc -#数据库密码 -db_pwd=1qaz2wsx3edc +#mysql项目数据库用户 +MYSQL_USER=ctc -#备份目录(不要修改,末尾不带"/") -backup_dir=/var/lib/mysql/backup +#mysql项目数据库密码 +MYSQL_PASSWORD=1qaz2wsx3edc #备份保留天数 -backup_days=15 +KEEP_DAYS=15 + +#本地目录(根据实际调整,绝对路径,末尾带"/") +LOCAL_DIR=/home/root/ctc-docker/mysql/data/backup/ + +#远程目录(根据实际调整,末尾带"/") +REMOTE_DIR=/backup/database/ + +# ------------ @@@ 以下内容,非专业人士请勿修改,新手请远离! @@@ ------------- # + +docker exec -i ctc-mysql bash <<'EOF' + +#备份目录(末尾不带"/") +backup_dir=/var/lib/mysql/backup #创建备份目录 if [ ! -d ${backup_dir} ]; then @@ -23,13 +33,13 @@ if [ ! -d ${backup_dir} ]; then fi #导出数据 -mysqldump --no-tablespaces -u ${db_user} -p${db_pwd} ${db_name} | gzip > ${backup_dir}/${db_name}-$(date +%Y-%m-%d).sql.gz +mysqldump --no-tablespaces -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} | gzip > ${backup_dir}/${MYSQL_DATABASE}-$(date +%Y-%m-%d).sql.gz #待删过期备份文件 -rm_filename=${backup_dir}/${db_name}-$(date -d -${backup_days}day +%Y-%m-%d).sql.gz +rm_filename=${backup_dir}/${MYSQL_DATABASE}-$(date -d -${KEEP_DAYS}day +%Y-%m-%d).sql.gz #删除过期备份文件 -if [ `ls -l ${backup_dir} | grep sql.gz | wc -l` -gt ${backup_days} ]; then +if [ `ls -l ${backup_dir} | grep sql.gz | wc -l` -gt ${KEEP_DAYS} ]; then if [ -e ${rm_filename} ]; then rm -f ${rm_filename} fi @@ -38,11 +48,5 @@ fi exit EOF -#本地目录(根据实际调整,末尾带"/") -local_dir=/home/ubuntu/ctc-docker/mysql/data/backup/ - -#远程目录(根据实际调整,末尾带"/") -remote_dir=/backup/database/ - #同步备份 -coscmd upload -rs ${local_dir} ${remote_dir} +coscmd upload -rs ${LOCAL_DIR} ${REMOTE_DIR} diff --git a/install.sh b/install.sh index 3543e63902a5016e729fb0c70d967571dc71dcac..4d62178fe04ad21db0272c6c9f731bbeb776f575 100644 --- a/install.sh +++ b/install.sh @@ -26,32 +26,75 @@ MYSQL_PASSWORD=1qaz2wsx3edc #redis访问密码(数字字母组合,不要用特殊字符) REDIS_PASSWORD=1qaz2wsx3edc -# --------------- !!! 以下内容,请勿修改!!! --------------- # +# ------------ @@@ 以下内容,非专业人士请勿修改,新手请远离! @@@ ------------- # + +#成功信息输出 +success_print() { + echo -e "\033[32m $1 \033[0m" +} + +#失败信息输出 +error_print() { + echo -e "\033[31m $1 \033[0m" +} + +#系统判断 +os_type() { + os=$(grep "^ID=" /etc/os-release) + if [[ ${os} =~ 'centos' ]]; then + echo 'centos' + elif [[ ${os} =~ 'ubuntu' ]]; then + echo 'ubuntu' + elif [[ ${os} =~ 'debian' ]]; then + echo 'debian' + else + echo 'other' + fi +} #安装git和curl -sudo apt-get update && apt-get install -y curl git +if [ "$(os_type)" = 'ubuntu' ] || [ "$(os_type)" = 'debian' ]; then + sudo apt-get update && apt-get install -y curl git +elif [ "$(os_type)" = 'centos' ]; then + sudo yum update && yum install -y curl git +else + error_print "\n------ sorry, we only support ubuntu,debian,centos currently. ------\n" + exit +fi #安装docker if [ -z "$(command -v docker)" ]; then sudo curl -sSL https://get.daocloud.io/docker | sh fi -#写入docker配置 +if [ -z "$(command -v docker)" ]; then + error_print "\n------ error: docker command not found, please try again. ------\n" + exit +fi + if [ ! -d '/etc/docker' ]; then - mkdir -p "/etc/docker" + mkdir -p '/etc/docker' +fi + +#docker镜像加速 +if [ ! -e '/etc/docker/daemon.json' ]; then sudo echo '{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}' | tee /etc/docker/daemon.json fi -#启动docker -sudo service docker start +#重启docker +sudo systemctl daemon-reload +sudo systemctl restart docker #安装docker-composer if [ -z "$(command -v docker-compose)" ]; then sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose fi -#docker-compose增加执行权限 -sudo chmod +x /usr/local/bin/docker-compose +if [ -z "$(command -v docker-compose)" ]; then + error_print "\n------ error: docker-compose command not found, please try again. ------\n" + exit +fi #基准目录 base_dir=~/ctc-docker @@ -62,11 +105,15 @@ ctc_dir=${base_dir}/html/ctc #克隆ctc-docker项目 if [ ! -d ${base_dir} ]; then git clone https://gitee.com/koogua/course-tencent-cloud-docker.git ${base_dir} +else + cd ${base_dir} && git pull fi #克隆ctc项目 if [ ! -d ${ctc_dir} ]; then git clone https://gitee.com/koogua/course-tencent-cloud.git ${ctc_dir} +else + cd ${ctc_dir} && git pull fi #docker .env文件 @@ -122,20 +169,20 @@ docker-compose build docker-compose up -d #导入测试数据 -if [ ${SITE_DEMO} == 'on' ]; then - - echo -e "\n------ start import demo data ------\n" +if [ ${SITE_DEMO} = 'on' ]; then docker exec -i ctc-mysql bash <<'EOF' + echo -e "\n------ start import demo data ------\n" + #安装curl apt-get update && apt-get install -y curl #下载数据 - curl http://download.koogua.com/ctc-test.sql.gz -o ctc-test.sql.gz + cd ~ && curl http://download.koogua.com/ctc-demo.sql.gz -o ctc-demo.sql.gz #导入数据 - gunzip < ctc-test.sql.gz | mysql -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} + gunzip < ctc-demo.sql.gz | mysql -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} echo -e "\n------ finish import demo data ------\n" @@ -167,9 +214,12 @@ cd ${ctc_dir} composer install --no-dev composer dump-autoload --optimize -#执行升级 +#数据迁移 vendor/bin/phinx migrate +#程序升级 +php console.php upgrade + #重建xunsearch索引 php console.php course_index rebuild php console.php group_index rebuild @@ -178,5 +228,34 @@ php console.php user_index rebuild exit EOF -#安装完成 -echo -e "\n------ install finished, you can visit your website now. ------\n" +docker_ps=$(docker ps) + +if [[ "${docker_ps}" =~ 'nginx' ]]; then + success_print "nginx service ok\n" +else + error_print "nginx service failed\n" +fi + +if [[ "${docker_ps}" =~ 'php' ]]; then + success_print "php service ok\n" +else + error_print "php service failed\n" +fi + +if [[ "${docker_ps}" =~ 'mysql' ]]; then + success_print "mysql service ok\n" +else + error_print "mysql service failed\n" +fi + +if [[ "${docker_ps}" =~ 'redis' ]]; then + success_print "redis service ok\n" +else + error_print "redis service failed\n" +fi + +if [[ "${docker_ps}" =~ 'xunsearch' ]]; then + success_print "xunsearch service ok\n" +else + error_print "xunsearch service failed\n" +fi diff --git a/upgrade.sh b/upgrade.sh new file mode 100644 index 0000000000000000000000000000000000000000..7ef6a28624d0a65e7d8a2aac91be82da0b4db109 --- /dev/null +++ b/upgrade.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +#ctc目录 +CTC_DIR=~/ctc-docker/html/ctc + +#更新源码 +cd ${CTC_DIR} && git pull + +docker exec -i ctc-php bash <<'EOF' + +#切换到ctc目录 +cd /var/www/html/ctc || exit + +#安装依赖包 +composer install --no-dev +composer dump-autoload --optimize + +#数据迁移 +vendor/bin/phinx migrate + +#程序升级 +php console.php upgrade + +exit +EOF + +echo -e "\n------ upgrade finished -------\n"