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.rpm
centos
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
cookie
# 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;