lv1= lv2= type=
mynote_init
〖E:\uninote\mynote-env-init-v2〗
〖E:\git_check\mynote-env-init-v2〗 .git 打包.git.zip 单分支包制作
es 部署文档
docker es 安装
expect
lv1= lv2= type=
整理 for dajx -- obsolete
https://docs.dajxyl.com/book/1/513
mynote init note 注意 排错
严格按照文档来做 https://uninote.com.cn/book/1027/4361
elastic serach 没有需要单独部署,因为其太耗资源
注意更新 log-std <[--
log-vm 使用vm43生成,这样差异会小一些
--]>
mynote checks
mynote、fastadmin、additional_item 现在都全量拉取,避免错误。如果出错了可以手动检查一遍 commits
front-dist 不 fetch,太大了
SHA-1: 22b599a8a67ca2431f356333fc009b4a641ba77c
* 用 git fetch origin 代替 git fetch origin master,避免配置的 commit 不在 master 分支时出错
SHA-1: 785bfead4cb4e57dcb33e0f33c621aa3f078ed17
* 仅 mynote-front-dist 不 fetch & reset $commit
auto commit for mynote init <[--
X:\mytool\m 快捷提交,仅 git add install.sh include/functions.sh
全量拉 分支查 (m)部分(提)交
--]>
第一次创建用户会失败,必须保存一次文章才行:
或者手动再生成一次access token
httpCode: 403
url: http://127.0.0.1:3000/api/v1/admin/users?token=796201291a5d4e2cdd3822a0d9b6181b477961a9
param: login_name=2&username=2&email=2%40mynote.com
result:
正确的样子:
httpCode: 201
url: http://127.0.0.1:3000/api/v1/admin/users?token=796201291a5d4e2cdd3822a0d9b6181b477961a9
param: login_name=2&username=2&email=2%40mynote.com
result: {
阿里云 服务器 注意
2 建立快照,避免多次上传
前置阅读
核心测试:http://uninote.com.cn/book/1002/1975
默认账号:
fa: admin 123123
gogs: unote 123456
additional_items: root/root123.
---- 可能需要的前置工作:
切换为root
确保可以上网、虚拟机tools可用
配置ip
note: 初始化安装的每个项目的版本不一定是最新的,可能需要后续更新
lv1= lv2= type=
mynote init 全部脚本化 -------------------
最新:2021-4-20:http://uninote.com.cn/book/1027/4361
vm 中测试:docker centos 7 / dev/local 搭建流程
------------------ obso
这里不再更新,参见整理 for dajx
额外的:切到测试分支?
# centos 6 只用阿里云的源:
mkdir -p /var/cache/yum/x86_64/6/base
mkdir -p /var/cache/yum/x86_64/6/extras
echo http://mirrors.aliyun.com/centos/6.10/os/x86_64/ > /var/cache/yum/x86_64/6/base/mirrorlist.txt
echo http://mirrors.aliyun.com/centos/6.10/extras/x86_64/ > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
# centos 7 只用阿里云的源:
mkdir -p /var/cache/yum/x86_64/7/base
mkdir -p /var/cache/yum/x86_64/7/extras
# echo http://mirrors.aliyun.com/centos/7/os/x86_64/ > /var/cache/yum/x86_64/7/base/mirrorlist.txt
# echo http://mirrors.aliyun.com/centos/7/extras/x86_64/ > /var/cache/yum/x86_64/7/extras/mirrorlist.txt
# 配置不成功尝试这个:
# yum clean all
# yum makecache
yum install -y unzip git
# docker
passwd
yum install -y openssh*
service sshd start
cd /root/init
unzip .git.zip
rm -f .git.zip
git reset --hard
mkdir -p ~/.ssh
/bin/cp config/ssh-root/id_rsa ~/.ssh/
/bin/cp config/ssh-root/id_rsa.pub ~/.ssh/
# 老版本兼容
/bin/cp config/id_rsa ~/.ssh/
/bin/cp config/id_rsa.pub ~/.ssh/
chmod 600 ~/.ssh/id_rsa
eval `ssh-agent -s`
ssh-add
# 这里要分开复制执行
ssh 127.0.0.1
ssh git@git.uninote.com.cn
echo "
service iptables stop
git fetch origin master
git reset --hard FETCH_HEAD
. install.sh
# debug部分
mysql -uroot -proot <<EOF
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
EOF
cd /home/www/mynote
git checkout no-captcha
" > ~/init/do.sh
#### 配置实例 pre.sh
#### 快照
#### 恢复快照,检查 do.sh 的分支;args.sh 的配置; ssh 127..?;再次快照?
. do.sh >& log
cd ~/init
. apply_config.sh
nginx -s reload
docker extra
# docker 里面需要手动执行,Deploy_End 执行到中间部分会自动退出。重新进入 docker中:
if [ `cat ~/.ssh/known_hosts |grep 127.0.0.1|wc -l` = 0 ]; then
Echo_Green "输入 yes,再多次回车即可"
ssh 127.0.0.1
else
echo "known_hosts already handled."
fi
/bin/cp ~/.ssh/known_hosts /home/www/.ssh/
chown www:www /home/www/.ssh/known_hosts
# 将自启动脚本写入:
~/start.sh
# 重新初始数据,解决乱码问题:
tmp_path=/tmp/mynote_init.sql
mysql -u root -proot <<ENDTAG
use mynote
source $tmp_path
ENDTAG
git clone 非标准的ssh端口(非22)端口
需要手动执行的命令
su - www -c 'mkdir -p /home/www/mynote/art_workman/logs'
# 启动workman(重启后也要手动):
su www
cd /home/www/mynote/art_workman
php start.php start -d
# es 手动初始化、/etc/rc.local mynote 开机自启动
es elasticsearch init
linux 设置虚拟内存
# 如果不重启,就要 source /etc/profile,才能加入 nginx 等的路径
# 重启后要手动启动 workman
service iptables stop
ip static,端口映射
service network restart
时间:
.bash_profile
TZ='Asia/Shanghai'; export TZ
chmod 644 /tmp/mysql.log
# 使用强制停止,再回滚磁盘
# 完成后check log、 checks
阿里云安全组开放必要的端口:80 443 82 81 3306 6379 9200 9000 3000 ...
all.sh & allu.sh & pre.sh & post.sh & vars.sh(obso)
deployment=d1
front_host=d1.u.cn
gogs_host=$front_host
gogs_ssh_port=20102
gogs_http_port=3000
gogs_http_url_decode=http://$front_host:$gogs_http_port
gogs_http_url=`urlEncode $gogs_http_url_decode`
es_host=es.uninote.com.cn
es_index=$deployment
# 安装脚本自身的分支,如果设置了,则先更新
init_branch=mynote
lv1= lv2= type=
配置实例 pre.sh
##### vm env
ip=43
deployment=vm$ip
front_hostname=192.168.0.$ip
front_host=$front_hostname
gogs_hostname=$front_hostname
gogs_ssh_port=22
gogs_http_port=3000
gogs_http_url_decode=http://$front_host:$gogs_http_port
gogs_http_url=`urlEncode $gogs_http_url_decode`
es_host=es.uninote.com.cn
es_index=$deployment
# 安装脚本自身的分支,如果设置了,则先更新
init_branch=mynote
---pre
deployment=mynote-pre
front_host=pre.uninote.com.cn
gogs_host=$front_host
gogs_ssh_port=22
gogs_http_port=3000
gogs_http_url_decode=http://$front_host:$gogs_http_port
gogs_http_url=`urlEncode $gogs_http_url_decode`
es_host=es.uninote.com.cn
es_index=$deployment
# 安装脚本自身的分支,如果设置了,则先更新
init_branch=mynote
---online
deployment=mynote
front_host=uninote.com.cn
gogs_host=$front_host
gogs_ssh_port=60003
gogs_http_port=60004
gogs_http_url_decode=http://$front_host:$gogs_http_port
gogs_http_url=`urlEncode $gogs_http_url_decode`
es_host=es.uninote.com.cn
es_index=$deployment
# 安装脚本自身的分支,如果设置了,则先更新
init_branch=mynote
post.sh
# mysql 时区
echo "default-time-zone = '+8:00'" >> /etc/my.cnf.d/server.cnf
/etc/init.d/mysql restart
# debug部分
mysql -uroot -proot <<EOF
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
EOF
systemctl stop firewalld
cat >> /etc/rc.d/rc.local <<EOF
systemctl stop firewalld
EOF
# debug config
sed -i "s/'debug.tel_code' => false/'debug.tel_code' => 1/" /home/www/mynote/basic/config/local_params.php
lv1= lv2= type=
增量版本发布
cd ~/init
# for pm2
source /etc/profile.d/env.sh
git fetch origin mynote
git reset --hard FETCH_HEAD
# 需要在代码更新完成后在加载配置
. config.sh
cd /home/www/mynote
git fetch origin
git reset --hard $mynote_commit
cd /home/www/front
git fetch origin
git reset --hard $mynote_front_dist_commit
sleep 1
pm2 restart node
only back with newest
cd /home/www/mynote
git fetch origin master
git reset --hard FETCH_HEAD
-- no 验证码
cd /home/www/mynote
git fetch origin no-captcha
git reset --hard FETCH_HEAD
only front with newest
# for pm2
source /etc/profile.d/env.sh
cd /home/www/front
git fetch origin master
git reset --hard FETCH_HEAD
sleep 1
pm2 restart node
lv1= lv2= type=
env.sh - 已删除
env_path=/etc/profile.d/env.sh
所有需要的(nginx、php、pm2、node等)的路径都写入了 /etc/profile.d/env.sh,重新打开 shell 即可使用。如果不行,则将 export 写入 ~/.bash_profile
centos 系统语言改成中文
http://www.cnblogs.com/su-root/p/9692426.html
否则fastadmin gogs都默认成了英文
编辑i18n配置文件: vi /etc/sysconfig/i18n
进行如下配置并保存退出:
#LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
3、重启系统后系统文字变成中文简体。
lv1= lv2= type=
安装xhprof扩展
xhprof
https://github.com/longxinH/xhprof.git
NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/xhprof.so' - /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/xhprof.so) in Unknown on line 0
# strings /lib64/libc.so.6 |grep GLIBC_
# strings xhprof.so |grep GLIB
GLIBC_2.14
GLIBC_2.17
GLIBC_2.2.5
没有更新了?
https://pecl.php.net/package/xhprof
这个广州人还在更新
https://github.com/longxinH/xhprof
glibc 安装
Linux/Centos下/lib64/libc.so.6: version `GLIBC_2.14' not found
https://blog.csdn.net/changcsw/article/details/79761620
wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.17.tar.gz
tar -xvf glibc-2.17.tar.gz
tar -xvf glibc-ports-2.17.tar.gz
mv glibc-ports-2.17 glibc-2.17/ports
mkdir glibc-build-2.17
cd glibc-build-2.17
../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install
ssh www known_hosts
脚本添加用的 ssh git@localhost,实际使用的是ip,也会导致运行时需要询问
192.168.0.121 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3PlLDady9AeQ2LrsdXtu8WDczD3PvR9BEhggAlWhHtDR6ir5Wu6HLNzNdPZTUfF9xhNzkqMusB8SyYKb1WzpSUOIXrKLGzp7fKXgpR18Af2fLf6wXtvccyWNB7T+YUeAI5g2FN8EU4xcwSdf3gPRuiF1TMx8pPC4SGIOtbZacqAkERb4Kubw0+MB8o5BhDvblnZEubE1MXOq8zjN6KNZBXyh/782GWIRf5uxdNX9LRMK2yoSvPAgT7ucjR+HxUcx4TXachSkc24d1enMfeO0mgew8xChpagUwN5hwgZtLFycA4ABFO3g6rsLRpuEpyNEM/YjpiqDyHhJjQmqYcZFSQ==
ssh 自动写入known_hosts
ssh 127.0.0.1
执行可选、配置:提前到最前面
ssh 127 判定:cat grep wc
sshd
lv1= lv2= type=
mynote init todo -----
record std log
结构优化
init todo 2021-4-23
rm include 加载,避免问题
mynote font 部署
gogs 安装编码问题
有问题:
E:\uninote\mynote-env-init-v2\apply_config.sh
return [
'api_url' => 'http://$gogs_host/api',
'pic_base' => 'http://$front_host',
'pic_host' => 'http://$front_host',
];
" > /home/www/mynote/basic/config/local_api.php
有相同部分
E:\uninote\mynote-env-init-v2\install.sh
E:\uninote\mynote-env-init-v2\apply_config.sh
util:
执行checksmynote checks
more checks: commit 是否正确的 checkot out了;git status;ssh-add ...
checks:commits configs。。。
init 错误处理(fetch 循环尝试等 init:恢复快照后要一点时间才能恢复网络。。)
webroot 尝试
soft basic 提取
ssl conf option
同步工具 as.sh
这个报错导致 nginx 启动失败,进而导致 fastadmin 安装失败,进而导致后续 curd.sh 执行失败:
nginx: [emerg] invalid number of arguments in "server_name" directive in /usr/local/nginx/conf/vhost/nuxt.conf:14
-- 错误检测
阿里云恢复快照后,需要重新加载 变量定义 in ~/init
vars.sh(include env) -> pre.sh
ssh 127 可以自动;ssh 指定机器,可以提前配置好
本地部署时不要 copy ssl,default
分支检查(init、项目)
mynote init done
gogs默认3000,但可以通过命令行参数改变
git clone 非标准的ssh端口(非22)端口
export PATH 统一。
fa、gogs 安装自动化
favicon 集成
log ana 部署
分支可以在命令行中修改默认值
rpm -i --force
mynote init 用户仓库 origin设置问题 regexp 可视化
清理数据
tmp_path=/tmp/mynote_init.sql
cat /home/www/mynote/sql/*.sql > $tmp_path
sed -i "s/CREATE DATABASE*/-- /" $tmp_path
Echo_Yellow "请输入数据库密码: "
mysql -u root -p$db_passwd <<ENDTAG
CREATE DATABASE mynote DEFAULT charset=utf8;
use mynote
source $tmp_path
ENDTAG
win:E:\uninote\mynote\sql\all.bat,记得删除 CREATE DATABASE `mynote` DEFAULT charset=utf8;
E:\fastadmin\fastadmin\application\admin\command\Install\install.lock
rm -f /home/www/fastadmin/application/admin/command/Install/install.lock
http://dev.rongyipiao.com:81/install.php
http://a.fastadmin.my/install.php
cd /home/www/fastadmin
./curd.sh
cd /home/www
chown -R www:www fastadmin
--
es
-- addi item
rm -rf /home/www/mynote/basic/runtime
cd /home/www
chown -R www:www additional_item
tmp_path=/tmp/additional_item_init.sql
cat /home/www/additional_item/log_storage/sql/mynote*.sql > $tmp_path
mysql -u root -p$db_passwd <<ENDTAG
use mynote
source $tmp_path
ENDTAG
win: 删除日志:
E:\uninote\mynote\basic\runtime
E:\uninote\mynote\basic\runtime\seaslog
--- docs
批量导入文章
全部推荐到首页:update article set recommend =1
删除用户
select id,username from user where mobile = '13320817857'
delete from user where id = 3
delete from article where username = '1068799191'
删除docs/users.txt 对应的username
删除docs下对应的用户目录
phpMyAdmin
libraries/config.default.php
$cfg['Servers'][$i]['host'] = '127.0.0.1';
* phpMyAdmin default configuration, you can copy values from here to your
* config.inc.php
config.sample.inc.php copy as config.inc.php
phpMyAdmin配置文件现在需要一个短语密码的解决方法
https://blog.csdn.net/ly_dengle/article/details/52776248
解决phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory错误
https://blog.csdn.net/tiny_lxf/article/details/82800116
$cfg['Servers'][$i]['host'] = 'localhost';
#改成
$cfg['Servers'][$i]['host'] = '127.0.0.1';
lv1= lv2= type=
klyc php5
xjc 要使用php5,并且是mysql,而非mysqli
./configure --prefix --with解释
cp $config_path/php.ini /usr/local/php5/lib/php.ini
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
cp /usr/local/php5/etc/php-fpm.d/www.conf.default /usr/local/php5/etc/php-fpm.d/www.conf
echo "export PATH=$PATH:/usr/local/php5/bin:/usr/local/php5/sbin:">>/etc/profile
source /etc/profile
lv1= lv2= type=
log-std
# 生成,在终端 t1
. install.sh >& log-std
# 查看,另起终端 t2:
tail -f log-std
log-vm 使用vm43生成,这样差异会小一些
gogs
一次性安装,把需要的参数都提前计算写入配置中
默认安装是 lantin1 编码?
lv1= lv2= type=
gogs 安装时无法输入问题
SHA-1: a96738aada64583abc0bdd0348578c2d9d8cb303
* gogs_host 从 include/*.sh 中读取,不再手动输入
lv1= lv2= type=
gogs only
gogs_init.sql 默认账号:unote 123456
保存 images 前 删除 init 文件夹(或者使用-v)
mysql 启动
# /etc/init.d/mysql
gogs 配置
gogs web
gogs vm
su
通过这种方式,只能创建一个用户,以后的用户的 ssh-keygen 一定会失败:
Prepare_Install <<EOF
EOF
改为分开:
su - www -c 'ssh-keygen' <<EOF
...
EOF
su - git -c 'ssh-keygen' <<EOF
...
EOF
es config & pic-avatar config & soft link
SHA-1: 895a978d410db3436954e1cc9a82ed80d6151077
* es config & pic-avatar config & soft link
local_api.php:
return [
'api_url' => 'http://192.168.0.23/api',
'pic_base' => 'http://192.168.0.23',
'pic_host' => 'http://192.168.0.23',
];
ln -s /home/www/mynote/basic/web/docs/__pic /home/www/front/static/__pic
访问地址:
http://test4.uninote.com.cn/__pic/GROylJGfGRQN.png
ln -s /home/www/mynote/basic/web/upload_pic /home/www/front/static/upload_pic
lv1= lv2= type=
basic soft pre-install; 拆分:for 缓存加速
把速度慢,又不需要经常修改的部分 pre-install,加速测试
SHA-1: cef6d326713cde1f787d0692c38e0a45135d6bb7
* [debug] no 准备 install
SHA-1: 5f58c0f792838be28d47d368901e9710583e7cce
* 重构:拆分为基本软件(不易变部分)和 mynote 相关应用(易变部分)
SHA-1: 2b4fbbe43945909d532009f4220dade8a2d73363
* 重构:进一步拆分,将核心文件全部移动到根目录下
lv1= lv2= type=todo
基础部分没有node
lv1= lv2= type=
mynote docker
Docker 容器开启ssh登录
提取公共的代码和配置,私有的从docker中分离
lv1= lv2= type=
docker 下需要重启,sshd 有问题
Prepare_Install 某个安装造成(但老的连接还能正常使用)
乱码问题
刚创建docker,进入时,vi时乱码
装完sshd后,再进入就ok了($LANG = en_US.UTF-8)
cat ok,vi显示乱码
最终方案:all.sh:
# 设置 UTF-8 编码
export LANG=en_US.UTF-8
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
lv1= lv2= type=
时区问题
最终方案:all.sh:
# 设置时区
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile.d/tz.sh
. /etc/profile.d/tz.sh
但这样 开机自启动的 node 时区有问题,导致字符串反解时间戳有8小时偏差,可以再加入自启动脚本中mynote 开机自启动 start.sh
lv1= lv2= type=
mynote for dajx udajx
https://docs.dajxyl.com
docker run -itd -p 10080:80 -p 10085:85 -p 18888:8888 -p 10022:22 -p 13306:3306 -p 16379:6379 -p 10081:81 -p 10082:82 -p 13000:3000 --name udajx udajx:1.4.1
〖E:\dajx\udajx-docs〗
./certbot-auto certonly --standalone -d --no-self-upgrade docs.dajxyl.com
api:
http://docs.dajxyl.com:85/api/userinfo/allrecommend
cat /home/git/gogs/custom/conf/app.ini
cat /home/www/mynote/basic/config/local_params.php
cat /home/www/mynote/basic/config/local_api.php
cat /home/www/mynote/basic/config/local_db.php
cat /usr/local/nginx/conf/vhost/nuxt.conf
cat /home/www/additional_item/config_my.php
ls /home/www/front/static/favicon.ico
rm -f /var/run/utmp
rm -f /var/run/redis_6379.pid
rm -f /var/run/sshd.pid
chown mysql:mysql -R /var/lib/mysql/
chown -R www:www /home/www
chmod 755 /home/git/gogs/gogs
# for 头像 & 编辑器图片
ln -s /home/www/mynote/basic/web/docs/__pic /home/www/front/static/__pic
ln -s /home/www/mynote/basic/web/upload_pic /home/www/front/static/upload_pic
Permissions 0644 for '/home/www/.ssh/id_rsa' are too open.
chmod 600 /home/www/.ssh/id_rsa
kill 退出 docker
在host中,$3 是 1,kill不掉,docker中是 0,kill后就直接退出 docker 了:
kill -9 `ps -ef |grep gogs | awk '{print $2,$3}'`
lv1= lv2= type=
结构优化
all.sh
vars.sh # 安装配置
install.sh
# paths config
common.sh # ehco_*, encode_url -> common_func.sh
basic_soft.sh # prepare, insert_* -> install_basic.sh
config_soft.sh # db_passwd -> vars.sh
== install basic soft
app.sh # app install & deploy
config.sh # commits
== install app
apply_config.sh #
# paths config
app.sh # 多余?
config.sh # 多余?
config_soft.sh # 多余?
-f post_install.sh
改为:
- install basic soft
- install app & apply config
lv1= lv2= type=
mynote docker clone
mynote test m5
-- change
host:
nginx config
docker:
vi /home/www/mynote/basic/config/local_params.php
vi /home/git/gogs/custom/conf/app.ini
favicon
es init
2021-05 不是 1000? 直接粘贴 all.sh 诡异问题 -- docker 中编码问题
gogs 创建第一个 user 报错
SELECT* from information_schema.`TABLES` where TABLE_NAME = 'user'
再次 create container,报错
[root@localhost vhost]# docker run -itd --privileged $v -p 20100:80 -p 20101:81 -p 20102:82 -p 20103:22 -p 20104:3000 -p 20105:3306 -p 20106:6379 -p 20107:85 --name m1 centos:7.9.2009 /usr/sbin/init
0b5aeb2522563d0e5004539f6ed0083d78a0cbc8cf1ec657701965cf470f696b
docker: Error response from daemon: driver failed programming external connectivity on endpoint m1 (bd9cb7660e440a3100f46fa7bfac47a4d98d18f6531d4710dc459dc39655d0c5): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 20106 -j DNAT --to-destination 172.17.0.3:6379 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
安装后有网络问题。。。