宝塔面板
     分类:DevPython环境搭建     有: 0 条评论

宝塔面板

     分类:DevPython环境搭建     有: 0 条评论

使用宝塔过程中遇到了许多问题,本篇特地把遇到的问题的解决方法列出来。


插件安装

OSS挂载

原网址:https://www.bt.cn/bbs/thread-20503-1-1.html
插件可在宝塔面板中安装。
填写外链域名时不要包含 Bucket 名称!!!


git 同步(类 CI)

原网址:https://www.bt.cn/bbs/thread-21803-1-2.html


共享带宽赚钱

原网址:https://www.bt.cn/bbs/thread-30909-1-1.html


redis 管理插件

原网址:https://www.bt.cn/bbs/thread-20816-1-3.html
1、登录服务器执行pip install redis
2、执行 shell后重启面板服务。安装命令:bash xxx.sh install

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#配置插件下载地址和安装目录
download_url=http://bt.dayuanren.net/redisutil
install_path=/www/server/panel/plugin/redisutil

#安装
Install()
{
    #创建插件目录
    mkdir -p $install_path
    echo '正在下载文件...'
    wget -O $install_path/redisutil_main.py  $download_url/redisutil_main.py
    wget -O $install_path/index.html $download_url/index.html
    wget -O $install_path/info.json $download_url/info.json
    wget -O $install_path/icon.png $download_url/icon.png
    wget -O $install_path/install.sh $download_url/install.sh
        # 以下是通过安装包安装 python-redis,前面已使用 pip 安装了。
        # wget --no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
        # tar -zvxf redis-2.8.0.tar.gz
    # rm -f redis-2.8.0.tar.gz
        # mv redis-2.8.0 $install_path/python-redis-2.8.0
        # cd $install_path/python-redis-2.8.0
        # python setup.py install
    echo '================================================'
    echo '安装完成'
}

#卸载
Uninstall()
{
    rm -rf $install_path
}

#操作判断
if [ "${1}" == 'install' ];then
    Install
elif [ "${1}" == 'uninstall' ];then
    Uninstall
else
    echo 'Error!';
fi

WebHooks

WebHooks插件,用于处理一些请求,目前有用在自动部署CI方面,参考:https://www.leolan.top/index.php/posts/283.html


Gitlab

使用宝塔面板安装的Gitlab

不要使用gitlab-ctl reconfigure

如果修改了配置,并使用gitlab-ctl reconfigure更新配置,容易导致nginx二进制文件被删除,导致nginx无法启动。

# 排查
gitlab-ctl tail
# 报错
chpst: fatal: unable to run: /opt/gitlab/embedded/sbin/nginx: file does not exist

修复:cp /opt/gitlab/embedded/sbin/gitlab-web /opt/gitlab/embedded/sbin/nginx

如果修改了配置,可以使用gitlab-ctl reconfigure更新配置,然后执行一次修复步骤。
gitlab-ctl reconfigure必须在“部分服务”启动的状态下才可以执行成功。
如果只是更改nginx配置,则在命令行修改模板文件;然后直接在宝塔中重启Gitlab即可!!!

参考:http://www.bt.cn/bbs/forum.php?mod=viewthread&tid=12190&highlight=gitlab


启用HTTPS(Let's Encrypt)

在宝塔中新建站点,绑定域名,申请证书,开启强制SSL;再设置反代:127.0.0.1:8099,传递域名,如:gitlab.leolan.top

vim /etc/gitlab/gitlab.rb
# 修改为如下,注意,一定要为http,如果写了https会开启证书,导致配置出错。
external_url 'http://gitlab.leolan.top'

gitlab-ctl reconfigure
执行完之后使用gitlab.leolan.top就能访问了,虽然在gitlab中切换到http协议显示的是http,也是可以使用https的,不影响。

启用HTTPS(自签证书)

vim /etc/gitlab/gitlab.rb

#13行的 http >> https
external_url 'https://ip:port'

#修改nginx配置
nginx['redirect_http_to_https'] =true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"


#秘钥脚本,将以下内容保存为shell脚本,然后运行(这里是自签证书)
#出现提示输入信息的地方输入信息,先输入域名然后4次证书密码,任意密码,四次保持一致。
#!/bin/sh

# create self-signed server certificate:

read -p "Enter your domain [139.199.125.93]: " DOMAIN
echo "Create server key..."
openssl genrsa -des3 -out $DOMAIN.key 1024

echo "Create server certificate signing request..."
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr

echo "Remove password..."
mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key

echo "Sign SSL certificate..."
openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt

echo "TODO:"
echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt"
echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key"
echo "Add configuration in nginx:"
echo "server {"
echo "    ..."
echo "    listen 443 ssl;"
echo "    ssl_certificate     /etc/nginx/ssl/$DOMAIN.crt;"
echo "    ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
echo "}"

mkdir -p /etc/gitlab/ssl
cp 139.199.125.93.crt /etc/gitlab/ssl/server.crt
cp 139.199.125.93.key /etc/gitlab/ssl/server.key
chmod -R 700 /etc/gitlab/ssl/

# 更新配置,可能会导致nginx文件被清除掉,执行上面的步骤修复!!!
# 可以使用gitlab-ctl tail查看日志,确保nginx没有报错
gitlab-ctl reconfigure


# 修改nginx配置
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
此时可以看到已经增加了301跳转,但是是死循环(http的端口和https端口一样,且为301)。
修改http的端口为其他端口,https端口还是8099保持不变。

然后修改HTTPS部分的配置
listen *:8099 ssl http2;修改为:listen *:8099 default ssl;
然后在宝塔中重启Gitlab,即可正常工作。

参考:https://www.cnblogs.com/xieshuang/p/8488458.html



MongoDB

设置密码

登录服务器,命令行运行以下命令
mongo
use admin
# 管理组为admin,用户名为root,密码自行设置
db.createUser(
    {
        user:'root',
        pwd:'密码',
        roles:[
                {role:'dbAdminAnyDatabase',db:'admin'},
                {role:'userAdminAnyDatabase',db:'admin'}
            ]
    }
)

# 验证刚刚创建的用户
db.auth('root','密码')   # 返回1表示成功
或者:
db.createUser({user:'root',pwd:'密码',roles:[{role:'root',db:'admin'}]})

# 创建普通用户
use admin
db.auth("root", "123456")

# 创建数据库:leotest,创建用户leo,给予管理该库的权限。
use leotest
db.createUser(
  {
    user: "leo",
    pwd: "123456",
    roles: [ { role: "dbAdmin", db: "leotest" },
             { role: "readWrite", db: "leotest" }
           ]
  }
)
# 不给readWrite读写权限无法读写数据库
# 关于role角色,参考:https://www.jianshu.com/p/79caa1cc49a5

完成之后登录宝塔,修改配置文件,然后重启服务

security:
  authorization: enabled   #修改为enabled

可以同时修改绑定IP,端口等

重启后登录账户密码是:leo + 密码!
认证方式:3.0版本以后采用的是“SCRAM-SHA-1”, 之前的版本采用的是“MONGODB-CR”。

参考:https://www.jianshu.com/p/79caa1cc49a5


新增数据库、用户

# 连接
mongo --host 127.0.0.1 --port 27017

# MongoDB的权限设计是每个库的权限、用户都是独立的,权限细分。
# 认证管理权限
use admin
db.auth('root', '密码')

# 授权成功再切换到新数据库,没有的库会自动创建
use WechatAPP

# 如果是新库;在该库上创建用户,授予管理权限和读写权限
db.createUser(
  {
    user: "leolan",
    pwd: "123456",
    roles: [ { role: "dbAdmin", db: "WechatAPP" },
             { role: "readWrite", db: "WechatAPP" }
           ]
  }
)

# 如果是旧库,修改权限和用户
db.grantRolesToUser( 'user2', [{role:"readWrite", db:"WechatAPP"}])

Redis

redis设置密码

修改配置,同时可以修改绑定IP,端口,保护模式
requirepass newpasswd

修改完成后是无法重启的,会报一个警告(应该是宝塔的一个bug);可以点停止,状态还是运行的,可以看linux中的端口,然后在点重载服务,即可启动成功。

注意!!!:如果改了配置,不小心点到了重载服务,redis很大概率启动不了。这时只能登录ssh,删除pid进程文件,rm /var/run/redis_6379.pid然后再执行任何操作都会启动。


Docker启动报错

安装docker后启动报错,一般是python2和pip2的问题,宝塔dokcer依赖python2环境。
最大的可能是升级了pip版本,在centos 7中,自带的pip不要升级,升级到18.0后非常多问题。
检测:

python3
pip3 -V

python
pip -V
# 此时发现pip -V显示的是在pip3的目录。(两个pip变同一个了)
which pip
ll /usr/bin/pip3
ll /usr/bin/pip
两者都不是软链接

rm -rf /usr/bin/pip
yum reinstall python2-pip

# 再次检查
python3
pip3 -V

python
pip -V
没问题,登录宝塔面板,卸载重装Docker!!!

终端工具(含Docker的终端工具)报错

连接SSH服务失败!

# 情况一,启用了密钥登录,关闭了密码登录
# 确认依赖没有问题,注意pip是pip2的,centos 7的yum源中的版本,不要升级pip!!!
pip install paramiko==2.0.2
bt reload

# 把本机密钥加入认证的主机列表
cat /root/.ssh/id_rsa.pub
如果上一句提示文件不存在,则执行下面一句
ssh-keygen -q -t rsa -P "" -f /root/.ssh/id_rsa
如果存在执行下面两句
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
(●゚ω゚●)