简单建立属于自己的cydia源
效果如下
第一购买域名、服务器、有一定基础的我这里不再讲解,如果这都不了解,请先补充一下在来,域名和服务器最好是同一公司的,国内最大的也就那几个阿里云/腾讯云等等,大家也知道国内嘛,必须要备案的不是吗?
效果如下第一购买域名、服务器、有一定基础的我这里不再讲解,如果这都不了解,请先补充一下在来,域名和服务器最好是同一公司的,国内最大的也就那几个阿里云/腾讯云等等,大家也知道国内嘛,必须要备案的不是吗?如果要问必须国内嘛?那倒不至于,只不过毕竟在美丽的中国,国人用国内的好处还是很多的,速度啊啥的,都是比较好的,用同一家公司兼容性啥的比较好,我推荐阿里云吧,直接一套服务的,域名、服务器、ssl、cdn啥都比较兼容的,不用来回的去找哪一个好哪一个靠谱,整套服务的更加便捷。阿里云和腾讯还有比较优惠的学生机,价格还是非常实惠的,自己搭建cydia源配置还是比较充足的。
如果你发现中间域名备案复杂耗时耗力,你可以直接使用阿里云的香港、新加坡的服务器,其他非国内的都可以的。
教程开始
注意,以下教程基于CentOS 7 64位系统,主要流程来自荒岛-CentOS7部署DCRM4(自建的Cydia源)基础上更新修改。
DCRM – Darwin Cydia Repository Manager(V4)是一个基于 Python Django 框架的 Cydia 源管理系统,由威锋技术组开发。可以建立属于自己的Cydia源。对于新手来说旧版的基于php的DCRM安装会更加友好(网上也有很多相关安装搭建教程)。但是由于安全与代码质量问题,旧版 WEIPDCRM 将于2017年4月起不再提供更新与技术支持,目前新版的DCRM4在长期维护更新,并且采用了更美观的前台/后台以及更好的架构。本帖希望人人都能用上最新的DCRM-Cydia 源管理系统,搭建属于自己的精品源。
安装步骤虽然多。但是只要你有耐心,小白也可以安装成功的哦。
首先安装开发工具包:
开源:github.co删除m/82Flex/DCRM
官方演示:apt.uozi.or删除g
1. yum -y groupinstall "Development Tools"
复制代码
然后安装EPEL源:( 自带源中无nginx supervisor )
1. yum -y install epel-release
复制代码
查看EPEL源是否安装成功:
1. rpm -q epel-release
复制代码
显示:epel-release-7-11.noarch 即为安装成功
查看EPEL源是否启用:
1. yum repolist
复制代码
如果源标识与源名称中有以下内容显示,即为EPEL源安装启用成功。进行下一步操作。
epel/x86_64 Extra Packages for Enterprise Linux 7 – x86_64
如果未显示则进行如下操作。
编辑EPEL源配置文件
1. nano /etc/yum.repos.d/epel.repo
复制代码
将[epel]中的enable=0改为enable=1。按ctrl+x输入y回车保存退出。再次输入yum repolist 如果源标识与源名称中显示epel源。进行下一步操作。
安装环境所需依赖
1. yum -y install MySQL-python mysql-devel python-devel python-setuptools libjpeg-devel
复制代码
用setuptools安装pip,然后使用pip安装下面这些包:
1. easy_install pip
2. pip install rq python-memcached Pillow exifread
复制代码
这里如果提示
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.
可以进行pip升级输入(使用完毕以下升级命令,直接进入下一步,无需重复操作上一步)
1. pip install --upgrade pip
复制代码
现在安装程序需要用到的MySQL/Redis/Memcached:
1. yum -y install mariadb-server redis memcached
复制代码
接着装Nginx,顺带把supervisor装一下,supervisor用于管理后续各类进程:
1. yum -y install nginx supervisor nano curl
复制代码
启动Nginx和supervisor并设置开机自启:
1. systemctl start nginx
2. systemctl enable nginx
3. systemctl start supervisord
4. systemctl enable supervisord
复制代码
启动各种数据库并设置开机自启:
1. systemctl start redis
2. systemctl enable redis
3. systemctl start memcached
4. systemctl enable memcached
5. systemctl start mariadb
6. systemctl enable mariadb
复制代码
由于默认启用的memcached监听在外网,这样很不安全,所以编辑配置文件:
1. nano /etc/sysconfig/memcached
复制代码
将OPTIONS中的内容修改为下面的内容,让memcached只监听在本地:(注意这里是-l 不是-1)
1. OPTIONS="-l 127.0.0.1"
复制代码
按ctrl+x输入y回车保存退出。重启memcached:
1. systemctl restart memcached
复制代码
初始化MySQL数据库:
1. mysql_secure_installation
复制代码
按以下流程输入即可:
1. Enter current password for root (enter for none):回车
2. Set root password? [Y/n] Y
3. New password: 设置你的Mariadb数据库root密码
4. Re-enter new password: 重复输入一次密码
5. Remove anonymous users? [Y/n] Y
6. Disallow root login remotely? [Y/n] n
7. Remove test database and access to it? [Y/n] Y
8. Reload privilege tables now? [Y/n] Y
复制代码
重启mariadb:
1. systemctl restart mariadb
复制代码
登录到MySQL内,输入你设置的密码
1. mysql -u root -p
复制代码
创建数据库并授权:
1. CREATE DATABASE DCRM DEFAULT CHARSET UTF8;
2. GRANT ALL PRIVILEGES ON DCRM.* TO 'root'@'localhost';
3. FLUSH PRIVILEGES;
4. quit
复制代码
DCRM-V4需要用到的环境安装完成了,现在拉取开源项目文件:
1. mkdir -p /opt/wwwroot && cd /opt/wwwroot
2. git clone ht去除t删除ps://github.co去除m/82Flex/DCRM.git
3. cd DCRM
复制代码
安装项目所需依赖:
1. pip install -r requirements.txt
复制代码
此处如果提示 Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-XXXXXX/olefile/ 请执行以下代码
1. python -m pip install --upgrade --force pip
2. pip install setuptools==33.1.1
复制代码
然后重新执行:
1. pip install -r requirements.txt
复制代码
之后复制一份DCRM配置文件重命名并编辑
1. cp DCRM/settings.default.py DCRM/settings.py
2. nano DCRM/settings.py
复制代码
配置文件中需要改动的部分如下:
开启REDIS缓存等功能:
1. ENABLE_REDIS = True # redis-server, rq are required.
2. ENABLE_CACHE = True # memcached, python-memcached are required.
3. ENABLE_SCREENSHOT = True # libjpeg-dev, Pillow, exifread are required.
复制代码
修改随机KEY,确保站点安全:(任意设置个密码)
1. SECRET_KEY = 'impone'
复制代码
修改允许访问的域名:(将第一项改为你的域名,比如apt.c去除n.c去除om)
1. ALLOWED_HOSTS = [
2. 'apt.c去除n.c去除om',
3. '127.0.0.1',
4. 'localhost'
5. ]
复制代码
修改站点语言为中文
1. LANGUAGE_CODE = 'zh-Hans'
复制代码
修改数据库连接信息。USER改为root;PASSWORD改为你设置的密码 即可。
1. DATABASES = {
2. 'default': {
3. 'ENGINE': 'django.db.backends.mysql',
4. 'NAME': 'DCRM',
5. 'USER': 'root', # mysql user name here
6. 'PASSWORD': 'mysqlpassword', # mysql user password here
7. 'HOST': '127.0.0.1',
8. 'PORT': '3306',
9. 'OPTIONS': {
10. 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
11. }
12. }
13. }
复制代码
按ctrl+x输入y回车保存退出。
初始化静态文件以及导入数据库创建管理员用户:(期间会要求设置管理员账户密码)
Username (leave blank to use 'root'): 输入你要设置的管理员用户名,不填写则默认为root
Email address: 输入你要设置的管理员邮箱
Password:输入你要设置的管理密码。此时设置密码不会显示,输入完之后回车将会要求再次输入一遍密码确认。
1. ./manage.py collectstatic
2. ./manage.py migrate
3. ./manage.py createsuperuser
复制代码
创建uwsgi配置文件:
1. nano uwsgi.ini
复制代码
写入
1. [uwsgi]
2.
3. chdir = /opt/wwwroot/DCRM
4. module = DCRM.wsgi
5.
6. master = true
7. processes = 4
8. socket = :8001
9. buffer-size = 32768
10. vaccum = true
11. uid = root
12. gid = root
复制代码
关闭SELinux:
1. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2. setenforce 0
复制代码
新建Nginx站点配置文件:
1. nano /etc/nginx/conf.d/dcrm.conf
复制代码
写入(以下所有有域名的部分全部替换为你自己的):
40.
41. location ~^/((CydiaIcon.png)|(Release(.gpg)?)|(Packages(.gz|.bz2)?))$ {
42. alias /opt/wwwroot/DCRM/resources/releases/1/$1; # make an alias for Cydia meta resources
43. }
44.
45. location @djangosite {
46. uwsgi_pass django;
47. include /etc/nginx/uwsgi_params;
48. }
49.
50. location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3|m4a|m4v|mp4|ogg|aac)$ {
51. expires 7d;
52. }
53.
54. location ~* .(gz|bz2)$ {
55. expires 12h;
56. }
57. }
复制代码
按ctrl+x输入y回车保存退出。
安装ACME.SH用于申请SSL证书
1. curl h去除tt删除ps://get.acme.sh | sh
复制代码
进入根目录,然后进入.acme.sh目录并申请证书(改为你的域名)
1. cd
2. cd .acme.sh
复制代码
这里将介绍使用dns pod申请证书,与阿里云申请证书。
其它方式请自行百度比如(腾讯云acme.sh申请证书)。如果成功请直接进行下一步操作。
dns pod申请证书
进入dns pod控制台。左边导航-用户中心-安全设置-API Token-创建API Token-名称任意设置。保留生成的ID与Token。
继续在ssh连接输入:
1. export DP_Id="你保存的ID"
2. export DP_Key="你保存的Token"
复制代码
然后输入:(此时位于.acme.sh目录,apt.c去除n.c去除om改为你的域名)
1. ./acme.sh --issue --dns dns_dp -d apt.c去除n.c去除om
复制代码
阿里云申请证书
1.访问 :ram.console删除.aliyun.co删除m/overview,点击左侧人员管理中的用户。
2.点击右侧的新建用户。登录名称与显示名称可以设置为acme.sh,编程访问打勾。点击确认。
3.此时复制AccessKey ID与AccessKeySecret留作备用
4.再次点击左侧人员管理中的用户,此时看到新建好的用户,点击右侧的添加权限。在请输入搜索dns,点击管理云解析(DNS)的权限。此时右侧出现AliyunDNSFullAccess。然后点击确定即可。如图所示:
回到ssh连接
输入:(AccessKey ID与AccessKeySecret是之前第三步保存的)
1. export Ali_Key="你保存的AccessKeyId"
2. export Ali_Secret="你保存的AccessKeySecret"
复制代码
然后输入:(apt.c去除n.co去除m改为你的域名)
1. ./acme.sh --issue --dns dns_ali -d apt.c去除n.c去除om
复制代码
成功申请到证书后,创建证书存放目录,输入:(apt.c去除n.c去除om改为你的域名)
1. mkdir -p /etc/nginx/certs/apt.c去除n.c去除om
复制代码
将申请的证书移动到这个目录并完成安装:(apt.c去除n.co去除m改为你的域名)
复制代码
新建一个supervisor的配置文件:
1. nano /etc/supervisord.d/dcrm.ini
复制代码
写入:
1. [supervisord]
2. nodaemon=false
3.
4. [program:uwsgi]
5. priority=1
6. directory=/opt/wwwroot/DCRM
7. command=/usr/bin/uwsgi --ini uwsgi.ini
8.
9. [program:high]
10. priority=2
11. directory=/opt/wwwroot/DCRM
12. command=/usr/bin/python ./manage.py rqworker high
13.
14. [program:default]
15. priority=3
16. directory=/opt/wwwroot/DCRM
17. command=/usr/bin/python ./manage.py rqworker default
复制代码
按ctrl+x输入y回车保存退出。
最后重启supervisor:
1. systemctl restart supervisord
复制代码
如果没有意外的话,现在打开你的站点域名+/admin访问后台:
进入后台,点击站点,在域名处点击example.c去除om 将域名与显示名称改为你自己的。改完之后如图所示。
添加元数据:
按需填写,完成之后点保存:(以下是我的设置)
在设置页面把之前添加的元数据设置为活跃状态:(添加完源保存后页面导航条下面也有提示可以直接点击设置为活跃)
接着添加你的软件包:
上传deb格式的软件包:
启用软件包并保存:
最后构建活跃元数据:
详情任意填写注释信息即可:
注意:每次添加软件包后都需要重新构建一次。
有技术的建议 uwsgi/nginx/等程序用非root权限,来确保安全。这里不再说明。
DCRM-V4 bug解决 & 常见问题
1.DCRM后台Photologue-Galleries-添加 gallery报错( build_attrs() got an unexpected keyword argument ‘name’ )
原因为sortedm2m不兼容django 1.11
目前sortedm2m作者已经解决更新。用作者最新sortedm2m-1.5.0版本中的sortedm2m文件夹中的文件替换 /opt/wwwroot/DCRM/sortedm2m文件夹中的文件。bug fix
sortedm2m作者开源项目 github.c去除om/gregmuellegge ... m/archive/1.5.0.zip
2.DCRM后台设置出现 'ascii' 编码器不能编码位置0-1中的字符:序数不在范围内(128)
首先到python的site-packages文件夹,建立并编辑sitecustomize.py文件(按照以下命令操作即可)
1. cd /usr/lib/python2.7/site-packages/
2. nano sitecustomize.py
复制代码
写入
1. # encoding=utf8
2. import sys
3.
4. reload(sys)
5. sys.setdefaultencoding('utf8')
复制代码
按ctrl+x输入y回车保存退出。然后重启supervisor:
1. systemctl restart supervisord
复制代码
即可解决
评论