代碼部署工具walle(一)

1、概述php

代碼部署上線、權限控制、一鍵版本回滾,github地址:https://github.com/meolu/walle-webmysql

walle是基於php語言作的,因此須要一個php的安裝環境。nginx

 

2、部署git

1)準備環境github

centos7.二、php7.十一、php-fpm7.十一、nginx-1.十二、mysql、composer、vendor、ansibleweb

官方要求php5.6+sql

安裝php7.十一、php-fpm7.11:數據庫

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

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

# 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;
        }

 

訪問:

一、若是是在內網:walle.compony.com

二、nginx代理:walle.www.com

 

默認有兩個用戶:

admin:用戶名密碼都是admin     管理員用戶

demo:用戶名密碼都是demo       普通用戶

 

3、用戶註冊與權限

註冊的時候有兩種權限:管理員、開發者

若是註冊管理員的話,註冊完成後並不具有管理員的權限,須要先用admin登陸,受權之後才真正有管理員的權限。註冊使用郵箱註冊,註冊時會收到一封確認的郵件,只有確認後用戶纔有效。

登陸和註冊界面:

 

 管理員受權界面:

 

 

 新建項目界面:

 

 

4、FQA

一、註冊用戶的時候若是長時間沒有確認,郵件就會失效,怎麼辦?

以管理員的身份登入--->用戶列表--->操做 ,有一個重發郵件的按鈕,點擊一下就能夠了。

 

二、若是忘記了管理員的帳號或管理員不在?沒有確認郵件,致使超時,想從新註冊,可是提示該郵箱已經存在?

能夠直接聯繫管理員,若是管理員不在,能夠直接連上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;

相關文章
相關標籤/搜索