一、概述

代码部署上线、权限控制、一键版本回滚,github地址:https://github.com/meolu/walle-web

walle是基于php语言做的,所以需要一个php的安装环境。

二、部署

1)准备环境

centos7.2、php7.11、php-fpm7.11、nginx-1.12、mysql、composer、vendor、ansible

官方要求php5.6+

安装php7.11、php-fpm7.11:

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# yum install -y mod_php71w php71w-cli php71w-common php71w-gd php71w-mbstring php71w-mcrypt php71w-mysqlnd php71w-xml php71w-fpm

安装mysql:

#yum -y install mariadb  mariadb-server

安装nginx:

#yum -y install nginx

安装ansible

#yum -y install ansible

安装walle-web:

# mkdir -p /data/www/

#cd /data/www

#git clone https://github.com/meolu/walle-web.git  .

修改配置文件:

#cd /data/www/walle-web/config

#cp local.php local.php.ori

#cat local.php

<?php
// Uncomment to enable debug mode. Recommended for development.
defined('YII_DEBUG') or define('YII_DEBUG', false);

// Uncomment to enable dev environment. Recommended for development
defined('YII_ENV') or define('YII_ENV', 'prod');

if (empty($_ENV)) {
    $_ENV = $_SERVER;
    foreach ($_ENV as $key => $value) {
        if (strpos($key, '_PASS')) {
            $_ENV[$key] = base64_decode($value);
            if ($_ENV[$key] === false) {
                $_ENV[$key] = $value;
            }
        }
    }
}

return [
    'components' => [
        'db' => [
            'dsn'       => isset($_ENV['WALLE_DB_DSN'])  ? $_ENV['WALLE_DB_DSN']  : 'mysql:host=127.0.0.1;dbname=walle',
            'username'  => isset($_ENV['WALLE_DB_USER']) ? $_ENV['WALLE_DB_USER'] : 'root',
            'password'  => isset($_ENV['WALLE_DB_PASS']) ? $_ENV['WALLE_DB_PASS'] : 'walle',
        ],
        'mail' => [
            'transport' => [
                'host'       => isset($_ENV['WALLE_MAIL_HOST']) ? $_ENV['WALLE_MAIL_HOST'] : 'smtp.exmail.qq.com',     # smtp 发件地址
                'username'   => isset($_ENV['WALLE_MAIL_USER']) ? $_ENV['WALLE_MAIL_USER'] : 'ci@app.com',  # smtp 发件用户名
                'password'   => isset($_ENV['WALLE_MAIL_PASS']) ? $_ENV['WALLE_MAIL_PASS'] : '123',       # smtp 发件人的密码
                'port'       => isset($_ENV['WALLE_MAIL_PORT']) ? $_ENV['WALLE_MAIL_PORT'] : 25,                       # smtp 端口
                'encryption' => isset($_ENV['WALLE_MAIL_ENCRYPTION']) ? $_ENV['WALLE_MAIL_ENCRYPTION'] : 'tls',                    # smtp 协议
            ],
            'messageConfig' => [
                'charset' => 'UTF-8',
                'from'    => [
                  (isset($_ENV['WALLE_MAIL_EMAIL']) ? $_ENV['WALLE_MAIL_EMAIL'] : 'ci@app.com') => (isset($_ENV['WALLE_MAIL_NAME']) ? $_ENV['WALLE_MAIL_NAME'] : '火球科技'),
                ],  # smtp 发件用户名(须与mail.transport.username一致)
            ],
        ],
        'request' => [
            'cookieValidationKey' => 'PdXWDAfV5-gPJJWRar5sEN71DN0JcDRV',
        ],
    ],
    'language'   => isset($_ENV['WALLE_LANGUAGE']) ? $_ENV['WALLE_LANGUAGE'] : 'zh-CN', // zh-CN => 中文,  en => English
];

#cat params.php

<?php
/**
 * 亲,为方便大家,已经把必须修改为自己配置的选项已经带上*****了
 * 此配置为测试配置,如果你不想消息泄露,请尽快修改为自己的邮箱smtp
 */

return [
    'user.passwordResetTokenExpire'     => 3600,
    'user.emailConfirmationTokenExpire' => 43200, // 5 days有效

// 头像图片后缀
    'user.avatar.extension'             => [
        'jpg',
        'png',
        'jpeg',
    ],

// *******操作日志目录*******
    'log.dir'                           => isset($_ENV['WALLE_LOG_PATH']) ? $_ENV['WALLE_LOG_PATH'] : '/tmp/walle/',
    // *******Ansible Hosts 主机列表目录*******
    'ansible_hosts.dir'                 => isset($_ENV['WALLE_ANSIBLE_HOSTS_DIR']) ? $_ENV['WALLE_ANSIBLE_HOSTS_DIR'] : realpath(__DIR__ . '/../runtime') . '/ansible_hosts/',
    // *******指定公司邮箱后缀*******
    'mail-suffix'                       => [
        'app.com', # 支持多个
    ],
    'user_driver'                       => 'local',
    'ldap'                              => [
        'host'           => '127.0.0.1',
        'port'           => 389,
        'username'       => 'cn=root,dc=example,dc=com',
        'password'       => 'password',
        'accountBase'    => 'dc=example,dc=com',
        'accountPattern' => '(&(objectClass=inetOrgPerson)(cn=${username}))',
        'identity'       => 'uid',
        'attributesMap'  => [
            'uid'       => 'username',
            'mail'      => 'email',
            'givenName' => 'realname',
        ],
        'ssl'            => false,
    ],
];

安装composer:

# curl -sS https://getcomposer.org/installer | php

#mv composer.phar /usr/local/bin/composer

安装vendor:

# cd walle-web

# composer install --prefer-dist --no-dev --optimize-autoloader -vvvv

服务初始化:

#cd walle-web

#./yii walle/setup  

输入yes

配置nginx:

server {
listen 80;
server_name walle.compony.com; # 改你的host
root /data/www/walle-web/web; # 根目录为web
index index.php; # 建议放内网
# allow 192.168.0.0/24;
# deny all; location / {
try_files $uri $uri/ /index.php$is_args$args;
} location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

启动服务:

#systemctl start mariadb

#mysql_secure_installation

设置密码

#mysql -uroot -p

创建数据库walle

>create database if not exists walle default charset  utf8  collate  utf8_general_ci;

#nginx

#php-fpm

#!建议只允许内网访问。

配置外网的nginx代理:

server {
      listen  80;
      client_max_body_size 204800m;
      client_body_timeout 300000000s;
      send_timeout 3000000000s;
      server_name walle.www.com;
          location / {
            proxy_pass   http://10.10.2.9;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
}

访问:

1、如果是在内网:walle.compony.com

2、nginx代理:walle.www.com

默认有两个用户:

admin:用户名密码都是admin     管理员用户

demo:用户名密码都是demo       普通用户

三、用户注册与权限

注册的时候有两种权限:管理员、开发者

如果注册管理员的话,注册完成后并不具备管理员的权限,需要先用admin登录,授权以后才真正有管理员的权限。注册使用邮箱注册,注册时会收到一封确认的邮件,只有确认后用户才有效。

登录和注册界面:

管理员授权界面:

新建项目界面:

四、FQA

1、注册用户的时候如果长时间没有确认,邮件就会失效,怎么办?

以管理员的身份登入--->用户列表--->操作 ,有一个重发邮件的按钮,点击一下就可以了。

2、如果忘记了管理员的账号或管理员不在?没有确认邮件,导致超时,想重新注册,但是提示该邮箱已经存在?

可以直接联系管理员,如果管理员不在,可以直接连上mysql数据库,将该条用户记录删掉。就可以重新注册了。

#mysql -uroot -p

>use walle;

>show tables;

+-----------------+
| Tables_in_walle |
+-----------------+
| group           |
| migration       |
| project         |
| record          |
| session         |
| task            |
| user            |
+-----------------+

>select  *  from  user \G;

找到对应邮箱的用户id,进行删除,例如:id 为3, 邮箱admin@xxxx.com

>delete  from  user  where id=3;

代码部署工具walle(一)的更多相关文章

  1. Syncd-开源自动化部署工具

    官网地址:https://gitee.com/dreamans/syncd/issues syncd是一款开源的代码部署工具,它具有简单.高效.易用等特点,可以提高团队的工作效率. 目前只支持类Lin ...

  2. 新浪代码部署手册 git管理工具

    目前新浪云上的应用支持通过Git和SVN来部署代码. Git仓库地址 https://git.sinacloud.com/YOUR_APP_NAME SVN仓库地址 https://svn.sinac ...

  3. NPM 使用介绍(包管理工具,解决NodeJS代码部署上的很多问题)

    引用地址:http://www.runoob.com/nodejs/nodejs-npm.html NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问 ...

  4. 代码质量管理工具 sonar 配置

    代码检查工具有很多findBugs等等 sonar配置: 1.下载sonar 5.5, 解压,运行 sonarqube-5.5\bin\windows-x86-64\StartSonar.bat , ...

  5. OpenStack部署工具总结

    目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...

  6. Capistrano初探--Ruby快速部署工具

    1.Capistrano介绍 是什么?---一种部署工具.(部署就是在生产服务器上安装应用程序,或是更新最新版本:web服务器的启动重启与停止:使网站进入维护状态或将其恢复为常态) 在进行 Rails ...

  7. Android 代码检查工具SonarQube

    http://blog.csdn.net/rain_butterfly/article/details/42170601 代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一 ...

  8. Capsule:开源的 JVM 应用部署工具

    [编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...

  9. Openstack部署工具

    Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Openstack的is ...

随机推荐

  1. hdu 1443 Joseph【约瑟夫环】

    题目 题意:一共有2k个人,分别为k个好人和k个坏人,现在我们需要每隔m个人把坏人挑出来,但是条件是最后一个坏人挑出来前不能有好人被挑出来..问最小的m是多少 约瑟夫环问题,通常解决这类问题时我们把编 ...

  2. CAP 理论

    CAP理论被很多人拿来作为分布式系统设计的金律,然而感觉大家对CAP这三个属性的认识却存在不少误区.从CAP的证明中可以看出来,这个理论的成立是需要很明确的对C.A.P三个概念进行界定的前提下的.在本 ...

  3. [kuangbin]树链剖分 C - Tree

    和平常的树链剖分维护边权不同的地方在于对线段树的要求较高 NEGATE 反转区间,也就是a - b 内所有的边权取相反数 而Query询问是最大值,所以也就是维护可取反区间的最大值问题 需要维护的值是 ...

  4. html 语法

    p: 源代码中包含多行,但是浏览器会忽略多行 <br />产生折行效果 h1:居中用样式实现 :水平线,有的很像border-top/bottom,或许用 实现更好 pre: 预格式化的文 ...

  5. ORM操作mysql

    创建表和添加数据 import sqlalchemyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import ...

  6. 9.json和jsonpath

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  7. Excel VBA语句集

    Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制 ...

  8. 使用httpClient模拟http请求

    在很多场景下都需要用到java代码来发送http请求:如和短信后台接口的数据发送,发送数据到微信后台接口中: 这里以apache下的httpClient类来模拟http请求:以get和Post请求为例 ...

  9. spring-boot集成mybatis,用redis做缓存

    网上有很多例子了,执行源码起码有3个,都是各种各样的小问题. 现在做了个小demo,实现spring-boot 用redis做缓存的实例,简单记录下思路,分享下源码. 缓存的实现,分担了数据库的压力, ...

  10. 《UNIX环境网络编程》第十四章第14.9小结(bug)

    1.源代码中的<sys/devpoll.h>头文件在我的CentOS7系统下的urs/include/sys/目录下没有找到. 而且我的CentOS7也不存在这个/dev/poll文件. ...