说在前面
先给大家看下效果图
购买服务器/域名相关这里不在单独介绍,就做个简单推荐吧(这里不是aff大家放心哈哈哈)。首先域名和服务器建议同一家公司购买比如 阿里云/腾讯云 等。搭建在国内速度快,但是需要备案,同一家公司购买备案更加便利。国内这里推荐两家的学生机(目前阿里云要求24岁以下身份认证即可,腾讯云没限制,两家均不需要提供学生证相关,大家可以放心购买)价格大概是5-10元/月。搭建自己的cydia源配置够用。如果不想备案,推荐阿里云家轻量应用服务器 香港/新加坡 24元/月。其它各类外国主机均可。比如bwh等这里不再介绍。购买主机时系统选择CentOS 7 64位。然后ssh连接你的服务器,开始我们的安装。
下面教程正式开始
注意,以下教程基于CentOS 7 64位系统,主要流程来自荒岛-CentOS7部署DCRM4(自建的Cydia源)基础上更新修改。DCRM – Darwin Cydia Repository Manager(V4)是一个基于 Python Django 框架的 Cydia 源管理系统,由威锋技术组开发。可以建立属于自己的Cydia源。对于新手来说旧版的基于php的DCRM安装会更加友好(网上也有很多相关安装搭建教程)。但是由于安全与代码质量问题,旧版 WEIPDCRM 将于2017年4月起不再提供更新与技术支持,目前新版的DCRM4在长期维护更新,并且采用了更美观的前台/后台以及更好的架构。本帖希望人人都能用上最新的DCRM-Cydia 源管理系统,搭建属于自己的精品源。安装步骤虽然多。但是只要你有耐心,小白也可以安装成功的哦。
开源地址 https://github.com/82Flex/DCRM
自建演示地址 https://apt.cn.com/
官方演示地址 https://apt.uozi.org
首先安装EPEL源以及nano编辑器:( 自带源中无nginx supervisor )
yum -y install epel-release nano
查看EPEL源是否安装成功:
rpm -q epel-release
显示:epel-release-7-11.noarch 即为安装成功查看EPEL源是否启用:
yum repolist
如果源标识与源名称中有以下内容显示,即为EPEL源安装启用成功。进行下一步操作。epel/x86_64 Extra Packages for Enterprise Linux 7 – x86_64如果未显示则编辑EPEL源配置文件,输入:
nano /etc/yum.repos.d/epel.repo
将[epel]中的enable=0改为enable=1。按ctrl+x输入y回车保存退出。再次输入yum repolist 如果源标识与源名称中显示epel源。进行下一步操作。安装环境所需依赖
yum -y install git nginx MySQL-python mysql-devel python36 python36-devel python36-pip libjpeg-devel tzdata
然后使用pip3安装下面这些包:
pip3 install rq python-memcached
如有如下提示,可忽略。You are using pip version 9.0.1, however version 19.0.3 is available.You should consider upgrading via the ‘pip install –upgrade pip’ command.
现在安装程序需要用到的MySQL/Redis/Memcached:
yum -y install mariadb-server redis memcached
接着装Nginx,顺带把supervisor装一下,supervisor用于管理后续各类进程:
yum -y install supervisor curl
启动Nginx和supervisor并设置开机自启:
启动各种数据库并设置开机自启:
systemctl start nginx systemctl enable nginx systemctl start supervisord systemctl enable supervisord
由于默认启用的memcached监听在外网,这样很不安全,所以编辑配置文件:
nano /etc/sysconfig/memcached
将OPTIONS中的内容修改为下面的内容,让memcached只监听在本地:(注意这里是-l 不是-1)
OPTIONS="-l 127.0.0.1"
按ctrl+x输入y回车保存退出。重启memcached:
systemctl restart memcached
初始化MySQL数据库:
mysql_secure_installation
按以下流程输入即可:
Enter current password for root (enter for none):回车 Set root password? [Y/n] Y New password: 设置你的Mariadb数据库root密码 Re-enter new password: 重复输入一次密码 Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] n Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
重启mariadb:
systemctl restart mariadb
登录到MySQL内,输入你设置的密码
mysql -u root -p
创建数据库并授权:
CREATE DATABASE DCRM DEFAULT CHARSET UTF8; GRANT ALL PRIVILEGES ON DCRM.* TO 'root'@'localhost'; FLUSH PRIVILEGES; quit
DCRM-V4需要用到的环境安装完成了,现在拉取开源项目文件:
mkdir -p /opt/wwwroot && cd /opt/wwwroot git clone https://github.com/82Flex/DCRM.git cd DCRM
安装项目所需依赖:
pip3 install -r requirements.txt
之后复制一份DCRM配置文件重命名并编辑
cp DCRM/settings.default.py DCRM/settings.py nano DCRM/settings.py
配置文件中需要改动的部分如下:
修改默认随机KEY,确保站点安全:(任意设置个密码,比如impone)
SECRET_KEY = 'impone'
修改允许访问的域名:(将第一项改为你的域名,比如apt.cn.com)
ALLOWED_HOSTS = [ 'apt.cn.com', '127.0.0.1', 'localhost' ]
修改站点语言为中文
LANGUAGE_CODE = 'zh-Hans'
修改数据库连接信息。USER改为root;PASSWORD改为你设置的密码 即可。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DCRM', 'USER': 'root', # mysql user name here 'PASSWORD': 'mysqlpassword', # mysql user password here 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'" } } }
找到
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
改为
STATIC_ROOT = os.path.join(BASE_DIR, 'WEIPDCRM/static')
按ctrl+x输入y回车保存退出。初始化静态文件以及导入数据库创建管理员用户:(期间会要求设置网站的管理员账户密码)Username (leave blank to use ‘root’): 输入你要设置的管理员用户名,不填写则默认为rootEmail address: 输入你要设置的管理员邮箱Password:输入你要设置的管理密码。此时设置密码不会显示,输入完之后回车将会要求再次输入一遍密码确认。
python3 ./manage.py collectstatic python3 ./manage.py migrate python3 ./manage.py createsuperuser
创建uwsgi配置文件:
nano uwsgi.ini
写入
[uwsgi] chdir = /opt/wwwroot/DCRM module = DCRM.wsgi master = true processes = 4 socket = :8001 buffer-size = 32768 vaccum = true uid = root gid = root
按ctrl+x输入y回车保存,然后关闭SELinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
新建Nginx站点配置文件:
nano /etc/nginx/conf.d/dcrm.conf
写入(以下所有有域名的部分全部替换为你自己的,比如apt.cn.com):
upstream django { server 127.0.0.1:8001; } server { listen 80; server_name apt.cn.com; rewrite ^/(.*)$ https://apt.cn.com/$1 permanent; } server { listen 443 ssl; ssl_certificate /etc/nginx/certs/apt.cn.com/fullchain.cer; ssl_certificate_key /etc/nginx/certs/apt.cn.com/apt.cn.com.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; server_name apt.cn.com; root /opt/wwwroot/DCRM; error_page 497 https://$host$uri?$args; server_name_in_redirect off; index index.html index.htm; location = / { rewrite ^ /index/ last; } location / { try_files $uri $uri/ @djangosite; } location ~^/static/(.*)$ { alias /opt/wwwroot/DCRM/WEIPDCRM/static/$1; } location ~^/resources/(.*)$ { alias /opt/wwwroot/DCRM/resources/$1; } location ~^/((Release(.gpg)?)|(Packages(.gz|.bz2)?))$ { alias /opt/wwwroot/DCRM/resources/releases/$1; } location @djangosite { uwsgi_pass django; include /etc/nginx/uwsgi_params; } location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3|m4a|m4v|mp4|ogg|aac)$ { expires 30d; valid_referers none blocked apt.cn.com 127.0.0.1 localhost; if ($invalid_referer) { return 403; } } }
按ctrl+x输入y回车保存退出。安装ACME.SH用于申请SSL证书
curl https://get.acme.sh | sh
进入根目录,然后进入.acme.sh目录并申请证书(apt.cn.com改为你的域名)
cd && cd .acme.sh
这里将介绍使用dns pod申请证书,与阿里云申请证书。其它方式请自行百度比如(腾讯云acme.sh申请证书)。如果成功请直接进行下一步操作。dns pod申请证书进入dns pod控制台。左边导航-用户中心-安全设置-API Token-创建API Token-名称任意设置。保留生成的ID与Token。继续在ssh连接输入:
export DP_Id="你保存的ID"
export DP_Key="你保存的Token"
然后输入:(此时位于.acme.sh目录,apt.cn.com改为你的域名)
./acme.sh --issue --dns dns_dp -d apt.cn.com
阿里云申请证书1.访问https://ram.console.aliyun.com/overview,点击左侧人员管理中的用户。2.点击右侧的新建用户。登录名称与显示名称可以设置为acme.sh,编程访问打勾。点击确认。3.此时复制AccessKey ID与AccessKeySecret留作备用4.再次点击左侧人员管理中的用户,此时看到新建好的用户,点击右侧的添加权限。在请输入搜索dns,点击管理云解析(DNS)的权限。此时右侧出现AliyunDNSFullAccess。然后点击确定即可。如图所示:
回到ssh连接输入:(AccessKey ID与AccessKeySecret是之前第三步保存的)
export Ali_Key="你保存的AccessKeyId"
export Ali_Secret="你保存的AccessKeySecret"
然后输入:(apt.cn.com改为你的域名)
./acme.sh --issue --dns dns_ali -d apt.cn.com
成功申请到证书后,创建证书存放目录,输入:(apt.cn.com改为你的域名)
mkdir -p /etc/nginx/certs/apt.cn.com
将申请的证书移动到这个目录并完成安装:(apt.cn.com改为你的域名)
./acme.sh --install-cert -d apt.cn.com \
--key-file /etc/nginx/certs/apt.cn.com/apt.cn.com.key \
--fullchain-file /etc/nginx/certs/apt.cn.com/fullchain.cer \
--reloadcmd "systemctl force-reload nginx.service"
新建一个supervisor的配置文件:
nano /etc/supervisord.d/dcrm.ini
写入:
[supervisord] nodaemon=false [program:uwsgi] priority=1 directory=/opt/wwwroot/DCRM command=/usr/local/bin/uwsgi --ini uwsgi.ini [program:high] priority=2 directory=/opt/wwwroot/DCRM command=/usr/bin/python3 ./manage.py rqworker high [program:default] priority=3 directory=/opt/wwwroot/DCRM command=/usr/bin/python3 ./manage.py rqworker default
按ctrl+x输入y回车保存退出。最后重启supervisor:
systemctl restart supervisord
如果没有意外的话,现在打开你的站点域名+/admin访问后台:
进入后台,点击站点,在域名处点击example.com 将域名与显示名称改为你自己的。改完之后如图所示。
添加元数据:
按需填写,完成之后点保存:(以下是我的设置)
在设置页面把之前添加的元数据设置为活跃状态:(添加完源保存后页面导航条下面也有提示可以直接点击设置为活跃)
接着添加你的软件包:
上传deb格式的软件包:
启用软件包并保存:
最后构建活跃元数据:
详情任意填写注释信息即可:
注意:每次添加软件包后都需要重新构建一次。
有技术的建议 uwsgi/nginx/等程序用非root权限,来确保安全。这里不再说明。
DCRM-V4 bug解决 & 常见问题
1.DCRM后台设置出现 ‘ascii’ 编码器不能编码位置0-1中的字符:序数不在范围内(128)
首先到python的site-packages文件夹,建立并编辑sitecustomize.py文件(按照以下命令操作即可)
cd /usr/lib/python3.6/site-packages/ nano sitecustomize.py
写入
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
按ctrl+x输入y保存回车退出。然后重启supervisor:
systemctl restart supervisord
即可解决
DCRM更新了,仅支持python3.6,我在你的脚本做了修改,现在环境没问题,出现一个比较蛋疼的问题:
1:Set root password? [Y/n] stty: 标准输入: 对设备不适当的 ioctl 操作
New password:
Re-enter new password:
stty: 标准输入: 对设备不适当的 ioctl 操
不能正常设置root用户
2:网站搭建完后出现502错误
基于你的脚本进行修改的版本地址:https://raw.githubusercontent.com/wwpp3399/DCRM_sh/master/DCRM_Pone.sh
@Metros: 脚本之后会进行更新
@Metros: 目前手动安装教程更新了,可以看下
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!
使用系统自带的repos安装很简单:
yum install mariadb mariadb-server
systemctl start mariadb ==> 启动mariadb
systemctl enable mariadb ==> 开机自启动
mysql_secure_installation ==> 设置 root密码等相关
————————————————
版权声明:本文为CSDN博主「用户昵称不能为空」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/default7/article/details/41973887