1. 程式人生 > >代碼部署工具walle(一)

代碼部署工具walle(一)

訪問 ins ima autoload 普通用戶 -c username count dev

一、概述

代碼部署上線、權限控制、一鍵版本回滾,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/

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

修改配置文件:

#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‘] : ‘[email protected]‘, # 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‘] : ‘[email protected]‘) => (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, 郵箱[email protected]

>delete from user where id=3;

代碼部署工具walle(一)