Don't wanna be here? Send us removal request.
Text
道:理论类
斯科特:《组织理论:理性、自然与开放系统的视角》 周雪光:《组织社会学十讲》 韦伯:《新教伦理与资本主义精神》, got
1 note
·
View note
Text
Ubuntu 16 更新 Git 项目
安装、配置 git
$ apt-get install -y git $ git config --global user.name "chang8128" $ git config --global user.email "[email protected]"
用 django 创建一个项目 myweb
$ django-admin startproject myweb $ cd myweb
创建、更新虚拟环境
$ sudo apt-get install -y python-pip $ pip freeze > requirements.txt
这条命令可以将当前(虚拟VENV)环境需要的组件(python 组件、包)等,打包到 requirements.txt 这个文���中。 当重新创建一个新的环境时,只需按照这个配置文件重新安装即可:
# pip install -r 'requirements.txt'
即可完成所需要的各个组件,而不需要一一安装了。
在工作目录中初始化 git 新仓库
$ git init $ git add README.txt # 添加 README.txt 文件 $ git add *.c # 添加 *.c 文件到仓库中 $ git add . # 跟踪当前目录下的文件
以上命令即创建了一个本地的仓库。
从现有仓库克隆:
$ git clone https://github.com/chang8128/mblog
这会在当前目录下创建一个名为“mblog”的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。
$ git clone git://github.com/schacon/grit.git mygrit 这会在当前目录下创建的目录名 “grit” 改为 mygrit。
在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如图所示: 
检查 GIT 文件状态:
$ git status # 查看当前文件状态
刚刚创建的文件(比如 readme.txt),如果用 git status 来查看,会显示在“Untracked files” 项目中。 使用 git add readme.txt 将该文件添加到仓库中后,该文件的状态即为 “Changes to be committed” ,就说明该文件已经是暂存状态。
“Changed but not updated”说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 git add 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。
之后,这些文件的状态就会变为“Changes to be committed”。
忽略某些文件 无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:
$ cat .gitignore # 此为注释 – 将被 Git 忽略 *.[oa] # 忽略所有以 .o 或 .a 结尾的文件。一般是编译过程中出现的 *~ # 忽略所有以波浪符(~)结尾的文件 *.a # 忽略所有 .a 结尾的文件 *.pyc # python 运行编译文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。
要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff .
请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff 后却什么也没有,就是这个原因。
创建项目配置清单,更新到 git
提交更新 $ git commit -m 'first commit'
-m 参数后跟提交说明的方式,在一行命令中提交更新: 好,现在你已经创建了第一个提交!可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添改和删改过。
记住,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。
Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:
$ git status # On branch master # # Changed but not updated: # # modified: benchmarks.rb # $ git commit -a -m 'added new benchmarks' [master 83e38c7] added new benchmarks 1 files changed, 5 insertions(+), 0 deletions(-)
看到了吗?提交之前不再需要 git add 更新的文件如 benchmarks.rb 了。
用 $ git log 来查看更新历史记录。 用 $ git log -p -2 选项显示每次提交的内容差异,用 -2 则仅显示最近的两次更新, --stat 参数则仅显示简要的增改行数统计。
修改最后一次提交
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:
如以下操作,添加补充了forgotten_file 文件:
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend
Git 远程仓库的使用
要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。 -v 选项(译注:此为 --verbose 的简写,取首字母),显示对应的克隆地址。 在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库(如果有多个远程仓库,此命令将全部列出。):
# git remote -v origin https://github.com/chang8128/mblog_python2 (fetch) origin https://github.com/chang8128/mblog_python2 (push)
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]: 如:
$ git remote add origin git://github.com/schacon/ticgit.git $ git remote add pb git://github.com/paulboone/ticgit.git $ git remote -v origin git://github.com/schacon/ticgit.git pb git://github.com/paulboone/ticgit.git
现在可以用字串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:
$ git fetch pb remote: Counting objects: 58, done. remote: Compressing objects: 100% (41/41), done. remote: Total 44 (delta 24), reused 1 (delta 0) Unpacking objects: 100% (44/44), done. From git://github.com/paulboone/ticgit * [new branch] master -> pb/master * [new branch] ticgit -> pb/ticgit
现在,Paul 的主干分支(master)已经完全可以在本地访问了,对应的名字是 pb/master,你可以将它合并到自己的某个分支,或者切换到这个分支,看看有些什么有趣的更新。
从远程仓库抓取数据 正如之前所看到的,可以用下面的命令从远程仓库抓取数据到本地: $ git fetch [remote-name] 此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。
如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。所以一般我们运行git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
推送数据到远程仓库
项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name] 。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:
$ git push origin master
只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那 你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。
推送数据到远程仓库的实际操作:
(VENV) root@jdu4e00u53f7:~/mblog# git push origin master Username for 'https://github.com': chang8128 Password for 'https://[email protected]': Counting objects: 30, done. Delta compression using up to 2 threads. Compressing objects: 100% (30/30), done. Writing objects: 100% (30/30), 8.04 KiB | 0 bytes/s, done. Total 30 (delta 10), reused 0 (delta 0) remote: Resolving deltas: 100% (10/10), completed with 5 local objects. To https://github.com/chang8128/mblog_python2 3b3de0e..44c7fc6 master -> master (VENV) root@jdu4e00u53f7:~/mblog#
移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changed but not updated” 部分(也就是_未暂存_清单). for example:
$ rm grit.gemspec $ git status On branch master Changed but not updated: (use "git add/rm ..." to update what will be committed) deleted: grit.gemspec
然后再运行 git rm 记录此次移除文件的操作:
$ git rm grit.gemspec $ git rm grit.gemspec rm 'grit.gemspec' $ git status On branch master Changes to be committed: (use "git reset HEAD ..." to unstage) deleted: grit.gemspec
最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:
$ git rm --cached readme.txt
后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
$ git rm log/\*.log
注意到星号 * 之前的反斜杠 \,因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开.此命令删除所有log/ 目录下扩展名为 .log 的文件。
类似的比如:
$ git rm \*~
会递归删除当前目录及其子目录中所有 ~ 结尾的文件。
实际应用Git
Ubuntu 16 更新 Git 项目
# 获取项目文件并存储在本地,重新命名为 mblog # git clone https://github.com/chang8128/mblog_python2 mblog # git rm \*pyc # 从本地仓库仓库删除所有以 pyc 结尾的文件(包括*.pyc) # git commit -m -a # 提交存储到本地仓库中
项目环境、及 GIT 版本的管理
用 pip freeze 建立、更新 python 组件清单,再使用 git push 更新到 github 上即可。
以后如果更换电脑,需要新建一个环境,那么只需要执行以下步骤即可恢复项目:
使用 anaconda 创建虚拟环境:
1、使用 conda create --name python36 python=3.6 新建虚拟环境 2、source activate python36 激活该虚拟环境 3、conda info -e 查看已有的环境
使用 virtualenv 创建虚拟环境:
1、# pip install virtualenv 2、 # virtualenv VENV New python executable in /root/VENV/bin/python Installing setuptools, pip, wheel... done. 3、# source VENV/bin/activate
4、切换到项目目录下; 5、使用 git pull 从远端拉取最新版本的资料到本地
# git clone https://github.com/chang8128/mblog
6、使用 pip install 安装所有使用到的套件
# pip install -r 'requirements.txt'
7、开始工作 8、再次使用 pip freeze > requirements.txt 更新所用到的组件 9、使用 git push 上传所有的更新。 ```
每次使用 $ ssh [email protected] 登录之后,需要运行 source activate python36 以进入该环境:
(python36) root@jdu4e00u53f7:~# conda info -e # conda environments: # python36 * /root/anaconda3/envs/python36 root /root/anaconda3
0 notes
Text
frist Django mblog 工程
新建一个 mblog project
$conda install django $django-admin startproject mblog $cd mblog $django-admin startapp mainsite
上面这句话创建了一个project名称 mblog,这个名称是可以修改的,目录结构如下:
. ├── manage.py ├── db.sqlite3 └── mainsite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
对于上面几个文件的介绍:
manage.py:与Django进行交互的命令行工具,比如后面根据model生成数据库表结构、供开发使用的server等都是使用该工具,在manage.py的同级目录使用python manage.py 可以看到可以使用的命令列表。
mainsite:这个才是工程的包名。
init.py:表明 fmtc 是一个包。
setting.py:Django的配置文件,包括工程的app配置、数据库配置、语言配置等。
urls.py:Django 的 dispatcher,根据不同的url 映射到不同的视图。
wsgi.py:WSGI是web server gateway interface,这个文件是使project符合这种协议的入口点(entry-point)
运行web 服务 runserver
$python manage.py runserver
在manage.py的同级目录下运行这个命令就可以看到以下内容:
Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. July 10, 2016 - 09:20:57 Django version 1.9.7, using settings 'fmtc.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
说明我们成功创建了一个project,在浏览器中输入 http://127.0.0.1:8000/,看到以下画面表示成功: 
Django自带了一个开发服务器,便于开发使用(Django官方强调不能用作生产环境),默认端口号是8000,如果想运行在别的端口号,以下面的方式运行即可,比如:8080
$python manage.py runserver 8080
如果想在局域网内其他电脑上访问你的站点
$python manage.py runserver 0.0.0.0:8080
按Ctrl C停止服务器。
如果需要发布在internet上,那么需要修改 fmtc/settings.py
ALLOWED_HOSTS = ['*'] 允许所有的网段都可以访问。
修改中文显示and timezone
修改 fmtc/setting.py 文件(line 106): LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
创建项目数据库 update to mysql database
首先安装 MySQL-python 组件:
(VENV)root@jd:~/mblog# pip install MySQL-python
modify file 'root/mblog/mblog/settings.py' to this, change the default sqlite3 drivers:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'fmtcdb', 'USER': 'fmtc', 'PASSWORD': 'FMTC@2017', 'HOST': '127.0.0.1', 'PORT': '3306', } }
build the archive database information:
# python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK root@jdu4e00u53f7:~/mblog#
The result screenshot: 
此后,所有在该网站中新增到数据库中的数据,都会被放在 fmtcdb 这个数据库中,这是一个简化过的database;如果以后搬迁网站的时候,也记得要把这个数据库带上。
在Django 中使用数据库:
简要的列出在Django 中使用数据库,的大致步骤: 1、在models.py 中定义所需要使用的类(继承自models.Model) 2、详细地设定每一个在类别中的变量,及数据库表中的字段名 3、使用python manage.py makemigrations mainsite 建立数据库和Django 间的中间档案 4、使用python manage.py migrate 同步更新数据库的内容 5、在程序中使用Python 的语法操作所定义的数据类型,等于是在操作数据库中的表。
定义数据模型
一开始,models.py 的内容如下:
from django.db import models # Create your models here.
修改为如下所示的内容:
from django.db import models from django.utils import timezone # Create your models here. class Post(models.Model): title = models.CharField(max_length=200) slug = models.CharField(max_length=200) body = models.TextField() pub_date = models.DateTimeField(default=timezone.now) class Meta: ordering = ('-pub_date',) def __unicode__(self): return self.title
其他的数据字段类型定义: 参见 https://docs.djangoproject.com/en/1.11/topics/db/aggregation/
class Book(models.Model): name = models.CharField(max_length=300) pages = models.IntegerField() price = models.DecimalField(max_digits=10, decimal_places=2) rating = models.FloatField() authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) pubdate = models.DateField()
pub_date 是以 timezone.now 的方式让它自动产生,这需要一个pytz 模组,执行: pip install pytz 以安装它。
要让这个模型生效,需要执行以下两条指令:
$ python manage.py makemigrations mainsite Migrations for 'mainsite': mainsite/migrations/0001_initial.py - Create model Post root@jdu4e00u53f7:~/mblog#
生成数据库表:
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, mainsite, sessions Running migrations: Applying mainsite.0001_initial... OK root@jdu4e00u53f7:~/mblog#
此时,既可以在程序中直接操作该数据库了,但是为了方便,需要启用Django 的 admin 管理界面。
经验:在 models 里定义的字段,可以更新,比如,之前定义的是 models.TextField(),可以在直接修改为 CharField(max_length=30)后,再执行以上两条命令,就可以更新为新的字段格式(不过当然要符合数据库的格式)。
启用 admin 管理界面
使用命令设定管理名 admin、密码:Fmtc5979
(VENV)root@jd:~/mblog# python manage.py createsuperuser You have 1 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): mainsite. Run 'python manage.py migrate' to apply them. Username (leave blank to use 'root'): admin Email address: [email protected] Password: Password (again): Superuser created successfully. root@jdu4e00u53f7:~/mblog#
接着,把上一小节的 Post 纳入管理,请修改 mainsite/admin.py, 原内容如下:
from django.contrib import admin # Register your models here.
需要修改为以下内容:
from django.contrib import admin from .models import Post # Register your models here. admin.site.register(Post)
之后启动服务,即可通过访问 http://117.48.206.212:8080/admin 登陆。
编辑 Post内容
第一次登陆后,Post 中的内容为空,可以编辑增加内容。 之后,可以再次修改 admin.py 文件,使得该页面显示表单编辑的日期时间,及slug 等字段内容:
from django.contrib import admin from .models import Post # Register your models here. class PostAdmin(admin.ModelAdmin): list_display = ('title', 'slug', 'pub_date') admin.site.register(Post, PostAdmin)
显示如图所示:

建立网页输出模版 template
前一节介绍了如何使用 Post.objects.all() 取出所有的数据,并通过 HttpResponse 输出到浏览器。本节介绍使用 template ,给每一个输出的网页准备一个或以上的模版,当网站有数据需要输出时,再透过渲染函数 render 把数据放到模板指定的位置中,得到结果后再交给 HttpResponse 输出给浏览器。其基本步骤如下: 1、在setting.py 中设定模板文件夹位置 2、在 url.py 中建立网址和 views.py 中的函数对应的关系 3、建立 .html 文件,做好排版并安排数据要放置的位置 4、执行程序,以 object.all() 在 views.py 取得数据,并放入函数中,例如 posts 5、以 render 函数,把数据(例如 posts)送到指定的模板文件中(如index.html)。
0 notes
Text
Django 创建数据库连接
python3.6不支持 import MySQLdb 改用为 import pymysql 模块,需要自行安装模块pymysql, 在Ubuntu 环境下 安装 mysql 支持包的方法是:
# conda install pymysql # conda install MySQL-connector-python
解决报错:ImportError: No module named MySQLdb
# apt-get install python-mysqldb # pip install mysqlclient
当以上命令安装后,都无法连接到数据库时,不着急,退出终端,等一会儿再连接。好了!
以下是使用migration 迁移策略的顺序:
第一步:创建数据库
第二步:在项目下的setting.py中配置数据库的相关设置.
下面是我实测后的一个范例,注意把引擎改为 mysql.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'fmtc', 'USER': 'fmtc', 'PASSWORD': 'FMTC@2017', 'HOST': '127.0.0.1', 'PORT': '3306', } }
第三步:是在自己的app项目中的models创建模型.
下面是我创建模型的实测范例.
from django.db import models # Create your models here. class Stuff(models.Model): name = models.CharField(max_length=50) class TestInfo(models.Model): datetime = models.CharField(max_length=10)
第四步: 确认自己的app在setting中的 INSTALLED_APPS 中添加.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hangqing', ]
第五步:开始执行命令:
root@jdu4e00u53f7:~/fmtc#python manager.py makemigrations Migrations for 'hangqing': hangqing/migrations/0001_initial.py - Create model Stuff - Create model TestInfo
第六步:运行下第二个命令
root@jdu4e00u53f7:~/fmtc# python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK root@jdu4e00u53f7:~/fmtc#
以上命令执行成功后,会在 mysql 数据库 fmtc 中,创建十个表, 用于 django 使用。 
account_db1, account_zx1 是自己创建的交易信息表。 小结:记得有问题,到django 的官方网站找答案😄。
create supervisor for Django admin interface:
# python manage.py createsuperuser
Username: admin Password: Fmtc5979
0 notes
Text
Python 虚拟环境在 Ubuntu 的安装、管理
首先 pip 才是最通用的 python 包管理工具
安装 pip 的命令:
#apt-get -y install python-pip #pip install --upgrade pip
pip 安装后的路径: /Library/Python/2.7/site-packages/pip-20.0.2-py2.7.egg/pip
1、查看你的系统是否安装virtualenv:
# virtualenv --version
2、安装 Virtualenv 虚拟环境:
# pip install virtualenv
3、创建不同 python 版本的虚拟 python3、Pyhon2 环境:
# virtualenv --python=usr/bin/python3 venv3 # 两种命令格式都可以 # virtualenv -p /usr/bin/python2 venv2 # 两种命令格式都可以 root@jdu4e00u53f7:~# virtualenv You must provide a DEST_DIR Usage: virtualenv [OPTIONS] DEST_DIR Options: --version show program's version number and exit -h, --help show this help message and exit -p PYTHON_EXE, --python=PYTHON_EXE The Python interpreter to use, e.g., --python=python2.5 will use the python2.5 interpreter to create the new environment. The default is the interpreter that virtualenv was installed with (/usr/bin/python)
4、虚拟环境的激活、安装组件:
# source VENV/bin/activate (VENV) root@jdu4e00u53f7:~# pip install django
五、退出虚拟环境
# deactivate
六、删除虚拟环境
# rm -r venv
直接删除虚拟环境所在的文件夹venv就删除了我们创建的venv虚拟环境。
可以使用 pip freeze > requirements.txt 将当前环境中的包的名称及版本导出到文本中 然后在另一个环境中 pip install -r requirements.txt 安装
其次才推荐使用anaconda
1、下载Anaconda3: https://repo.continuum.io/archive/ 根据系统的 Python 版本选择对应的安装包。
2、进入下载目录,打开终端,根据版本输入安装命令:
Python 3.6 version #bash Anaconda3-4.3.1-Linux-x86_64.sh
Python 2.7 version bash Anaconda2-4.3.1-Linux-x86_64.sh
3、安装过程,一直回车即��,当遇到下面的选择,注意输入yes:
Do you wish the installer to prepend the Anaconda2 install location to PATH in your /home/gjq/.bashrc ? [yes|no] [no] >>> yes
4、安装成功
For this change to become active, you have to open a new terminal. Thank you for installing Anaconda2! Share your notebooks and packages on Anaconda Cloud! Sign up for free: https://anaconda.org
5、让.bashrc中添加的路径生效:
source ~/.bashrc
6、测试:
gjq@gjq-virtual-machine:~/Downloads$ python Python 2.7.13 |Anaconda 4.3.1 (64-bit)| (default, Dec 20 2016, 23:09:15) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org >>>
出现Anaconda 表示安装成功了!
配置 Anaconda Python2 和 Python3 虚拟环境
安装配置小结:
# 创建一个名为python36的环境,指定Python版本是3.6(不用管是3.6.x,conda会为我们自动寻找3.6.x中的最新版本) conda create --name python36 python=3.6 # 安装好后,使用activate激活某个环境 activate python36 # for Windows source activate python36 # for Linux & Mac # 激活后,会发现terminal输入的地方多了python36的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.6对应的命令加入PATH # 此时,再次输入 python --version # 可以得到`Python 3.6.1 :: Continuum Analytics, Inc.`,即系统已经切换到了3.6的环境 # 如果想返回默认的python 2.7环境,运行 deactivate python34 # for Windows source deactivate python34 # for Linux & Mac # 删除一个已有的环境 conda remove --name python36 --all # 其他指令 conda info -e #查看已有的环境 conda remove -n env_name --all #删除环境 conda install -n py27 anaconda #在py27下安装科学计算的包,包很多,慎重选择
创建新的 python 3.6 虚拟环境:
root@jdu4e00u53f7:~# conda create --name python36 python=3.6 Fetching package metadata ......... Solving package specifications: . Package plan for installation in environment /root/anaconda3/envs/python36: The following NEW packages will be INSTALLED: certifi: 2016.2.28-py36_0 openssl: 1.0.2l-0 pip: 9.0.1-py36_1 python: 3.6.2-0 readline: 6.2-2 setuptools: 36.4.0-py36_0 sqlite: 3.13.0-0 tk: 8.5.18-0 wheel: 0.29.0-py36_0 xz: 5.2.3-0 zlib: 1.2.11-0 Proceed ([y]/n)? y
0 notes
Text
Ubuntu16.04 LTS安装Qt Creator
开发需要,在 Linux下安装Qt Creator。我电脑装的是Ubuntu16.04LTS,其它的应该相同! 1、Qt下载 关于Qt下载,比较机智的同学都回去官网直接download,但是步骤相当繁琐!大家可以打开下面的链接,里面有各版本Qt,操作简单,童叟无欺! http://download.qt.io/archive/qt/ Linux最新版是5.9.1,大家根据需要下载x86或x64版本
2、安装 首先要cd进入软件安装包的目录,然后取得安装权限,进行图形化安装,如下:
root@jdu4e00u53f7:~# ls Desktop Downloads libEMQuantAPIx64.so libjson.so Linux_3 ServerList.json ServerList.json~ root@jdu4e00u53f7:~# cd Downloads/ root@jdu4e00u53f7:~/Downloads# ls qt-opensource-linux-x64-5.9.1.run root@jdu4e00u53f7:~/Downloads# chmod +x qt-opensource-linux-x64-5.9.1.run root@jdu4e00u53f7:~/Downloads#
3、安装过程几乎一路next,在选择时如果需要Assistant,想学习官方源码就select all就可以了。等待安装完成 4、Qt以C/C++为依托,用Python也可,先检查一下有没有gcc/g++编译器,没有的话动手安装,不多说了 5、如果系统没有自带openGL库时,在做带有3D效果的界面会报错,手动安装openGL
sudo apt-get install mesa-common-dev sudo apt-get install libglu1-mesa-dev -y
完成! 运行官方示例程序如下: 
0 notes
Text
Ubuntu 16.04安装 GNOME3 + VNC
更新 Ubuntu 系统补丁:
sudo apt-get -y upgrade
开始:有一个更简单粗暴的办法是直接装 UBUNTU GNOME发行版,但是当我安装完UBUNTU16的时候,我真的不想重新装一遍系统。
所以就在原有基础上安装gnome3,很多人觉得用不习惯,其实桌面环境这个还是挺方便的。
sudo apt-get install gnome-shell sudo apt-get install ubuntu-gnome-desktop
值得注意的是,记得要在安装gnome-shell的时候选择那个gdm,不然开机默认还是unity
sudo apt-get install unity-tweak-tool sudo apt-get install gnome-tweak-tool
然后重启大发。搞定。
配置VNC服务器
安装VNC服务端 #sudo apt-get install vnc4server
开启VNC服务 #sudo vncserver
在此期间会要求设置VNCServer的密码,注意,最大长度为8位。 设置密码后,看到(连接VNC 用端口 1) New ‘****:1 (****)’ desktop is ****:1 (****代表主机名,注意那个:1)
关闭原桌面进程并生成新进程 sudo vncserver -kill :1
生成新的进程: sudo vncserver :1
重启服务器后,可能半天无法登录,这时,只需要等一会儿就行了
这时,登录ssh 会提示: 
这种情况,是后台以为你的服务器开了N 多个回话,攻击服务器,所以不要紧张,等一会就可以登录了。
Ubuntu 16 安装GNOME,和vncserver后只显示桌面,不显示菜单栏解决
一般的server操作系统是不安装图形系统的,这样的话,要想打开它的图形界面可以在server端上安装vncserver软件。然后再在本地机器(windows或linux)上安装一个vnc viewer就能显示图形界面。
最后我不得不安装另一个图形库Xfce4 $ sudo apt-get install xfce4
安装会提示有未更新的文件,用更新的来安装: $sudo apt-get update
然后修改配置文件~/.vnc/xstartup如下:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & sesion-manager & xfdesktop & xfce4-panel & xfce4-menu-plugin & xfsettingsd & xfconfd & xfwm4 &
然后重启vcnserver, # vncserver -kill :1 # vncserver
再在本地登录,成功!
0 notes
Text
Ubuntu16 安装、配置MySQL 5.7
安装MySQL 5.7
1. sudo apt-get install mysql-server 2. apt-get install mysql-client 3. sudo apt-get install libmysqlclient-dev
安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
登陆mysql数据库可以通过如下命令: mysql -u root -p -u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
使用命令行在ubuntu下安装mysql可视化工具MySQL-workbench #apt-get install mysql-workbench
Ubuntu 打开Mysql 3306远程访问
1、查看3306端口是否正常
netstat -an | grep 3306 2、修改mysql配置文件(记住是Ubuntu16下的目录、文件均不同于14版本)
#vi /etc/mysql/mysql.conf.d/mysqld.cnf
将 bind-address =127.0.0.1 这句注释掉, :wq 退出,重启动mysql
# service mysql stop # service mysql start
3、修改 MySQL 用户的本地登录限制(% 为可以远程登录),使用密码FMTC@@2017:
root@jdu4e00u53f7:~# mysql -u root -p mysql>select Host,User from mysql.user; mysql>update mysql.user SET HOST='%' WHERE USER='你的用户名'; mysql>flush privileges;
创建新用户
1、以管理员身份登录MySQL,并选择mysql数据库
# mysql -u root -p mysql> use mysql
2、创建用户并设定密码,并使操作生效
mysql> create user ‘testuser’@’localhost’ identified by ‘testpassword’; mysql> create user ‘fmtc’@’%’ identified by ‘FMTC@2017’; mysql> flush privileges
注意:创建 fmtc 的用户使用的 '%' 参数,使得该用户可以不限制在本地登录。 'localhost',是指该用户只能在本地登录,不能在另外一台机器上远程登录。 也可以指定某个IP的电脑可以远程登录。
mysql 修改一个用户的登录限制为 '%'
mysql>select Host,User from mysql.user; mysql>update mysql.user SET HOST='%' WHERE USER='你的用户名';
3、为用户赋予操作数据库testdb的所有权限
musql>grant all privileges on fmtcdb.* to fmtc;
fmtc 用户不受登录限制;
mysql>grant all privileges on testdb.* to test@localhost identified by ‘testpassword’;
4、用新用户登录
mysql -u test -p
创建数据库:
创建编码为utf8的数据库:
mysql>CREATE DATABASE `fmtcdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; mysql>grant all privileges on fmtcdb.* to fmtc;
创建编码为GBK的数据库:
mysql>create database windDB default character set GBK collate GBK_chinese_ci; mysql>grant all privileges on windDB.* to wind@localhost identified by 'Wind2017'; mysql>flush privileges; mysql>show databases;
查看某个数据库的编码 用use db_name 切换到这个数据库,然后使用status 命令: mysql>use windDB; mysql>status
0 notes
Text
Ubuntu16 更改MySQL 5.7 的默认数据文件目录
关闭mysql-server #sudo systemctl stop mysql #sudo systemctl stop mysql
确认的确关闭了mysql-server #sudo systemctl status mysql
/etc/mysql/my.cnf 显示的配置文件:
CONF=/etc/mysql/my.cnf !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
数据盘/vdb加载在/mnt 上,创建了/mnt/database目录: 1.停止数据库服务:#service mysql stop
复制原先的数据目录到新目录下(cp -a 参数带原来的权限): # cp -a /var/lib/mysql /mnt/database (-a 参数:same as -dR --preserve=all)
修改数据库文件的所属的权限: # chown -R mysql:mysql /mnt/database/mysql/ ← 改变数据库文件目录的归属为mysql
3.修改 mysqld.cnf 文件 #vi /etc/mysql/mysql.conf.d/mysqld.cnf 将datadir = /var/lib/mysql 改为datadir = /mnt/database/mysql 4. 修改文件usr.sbin.mysqld(注释#并新增两处,一个是目录 ,一个是目录下的文件) # vi /etc/apparmor.d/usr.sbin.mysqld
+++++++++++++++++++++++++ # Allow data dir access # /var/lib/mysql/ r, # /var/lib/mysql/** rwk, /mnt/database/mysql/ r, /mnt/database/mysql/** rwk, # Allow data files dir access # /var/lib/mysql-files/ r, # /var/lib/mysql-files/** rwk, /mnt/database/mysql/ r, /mnt/database/mysql/** rwk, +++++++++++++++++++++++++
5 AppArmor权限修改 追加以下内容到 /etc/apparmor.d/tunables/alias alias /var/lib/mysql/ -> /data/mysql/,
重启AppArmor #sudo systemctl restart apparmor
6 启动mysql-server sudo systemctl start mysql sudo systemctl status mysql
或者:#service mysql start 
以下可能需要: 配置文件修改成功后就可以重启数据库,重启数据库之前需要先重新载入apparmor配置文件,使用下面命令重新载入: #sudo /etc/init.d/apparmor restart
0 notes
Text
Ubuntu通过apt-get安装JDK8(Ubuntu 14/16通过)
安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install software-properties-common
首先添加ppa $ sudo add-apt-repository ppa:webupd8team/java
然后更新系统 $ sudo apt-get update
最后开始安装
$ sudo apt-get install oracle-java8-installer $ java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
java版本切换 sudo update-java-alternatives -s java-8-oracle
0 notes
Text
Ubuntu14 配置GUI + VNC 远程访问
安装gnome桌面环境(一定要先装,否则会反复失败!)
安装x-windows的基础: #sudo apt-get install x-window-system-core (部分文件不成功,用#apt-get update)
安装登录管理器 #sudo apt-get install gdm
安装Ubuntu的桌面: #sudo apt-get install ubuntu-desktop
重启之后进入系统便有GUI了
配置VNC服务器
安装VNC服务端 #sudo apt-get install vnc4server
开启VNC服务 #sudo vncserver
在此期间会要求设置VNCServer的密码,注意,最大长度为8位。 设置密码后,看到(连接VNC 用端口 1) New ‘****:1 (****)’ desktop is ****:1 (****代表主机名,注意那个:1)
关闭原桌面进程并生成新进程 sudo vncserver -kill :1
生成新的进程: sudo vncserver :1
Ubuntu 14安装vncserver后只显示桌面,不显示菜单栏解决
一般的server操作系统是不安装图形系统的,这样的话,要想打开它的图形界面可以在server端上安装vncserver软件。然后再在本地机器(windows或linux)上安装一个vnc viewer就能显示图形界面。
最后我不得不安装另一个图形库Xfce4 $ sudo apt-get install xfce4
安装会提示有未更新的文件,用更新的来安装: $sudo apt-get update
然后修改配置文件~/.vnc/xstartup如下:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & sesion-manager & xfdesktop & xfce4-panel & xfce4-menu-plugin & xfsettingsd & xfconfd & xfwm4 &
然后重启vcnserver, # vncserver -kill :1 # vncserver
再在本地登录,成功!
解决图标都是空白的问题(安装一个好的主题): You can try installing the Greybird theme which is the default theme in Xubuntu with the command: #sudo apt-get install shimmer-themes Then choosing "greybird-git" (not Greybird!) from the XFCE settings
For the icon theme, use this command: #sudo apt-get install xubuntu-icon-theme Then choose the "Elementary XFCE Dark" theme (or similar) from the XFCE settings
在终端中输入xfwm4-settings打开“XFCE settings”
0 notes
Text
Ubuntu14上安装MySQL
Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。
1. sudo apt-get install mysql-server 2. apt-get install mysql-client 3. sudo apt-get install libmysqlclient-dev
安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。 登陆mysql数据库可以通过如下命令: mysql -u root -p -u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
Ubuntu 打开Mysql 3306远程访问 最近在Ubuntu Server 15.10配置MySQL服务器,发现不能远程访问(ps:已建立一个可以远程访问的用户)。 1、查看3306端口是否正常 netstat -an | grep 3306 2、修改mysql配置文件(记住是mysqld.cnf,不是my.cnf) #vi /etc/mysql/my.cnf
将 bind-address =127.0.0.1 这句注释掉, :wq 退出,重启动mysql # service mysql stop # service mysql start
创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","wind",password("Wind2017")); mysql> insert into mysql.user(Host,User,Password) values("%","wind",password("Wind2017"));
这样就创建了一个名为:test 密码为:1234 的用户。 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
mysql 如何修改一个用户的权限为% select Host,User,Password from mysql.user; mysql.user SET HOST='%' WHERE USER='你的用户名';
在mysql数据库中建一个编码为gbk的数据库:
mysql>create database windDB default character set GBK collate GBK_chinese_ci; mysql>grant all privileges on windDB.* to wind@localhost identified by 'Wind2017'; mysql>flush privileges; mysql>show databases;
要查看某个数据库的编码 用use db_name 切换到这个数据库,然后使用status 命令: mysql>use windDB; mysql>status
使用命令行在ubuntu下安装mysql可视化工具MySQL-workbench #apt-get install mysql-workbench
0 notes
Text
Ubuntu 14更改Mysql 数据库文件目录
实际操作: 数据盘加载在/mnt 上:
停止数据库服务: #service mysql stop
在目标位置(/mnt)创建数据库文件的目录 /mnt/database),并复制原先的数据库文件目录到该目录下: cd /mnt mkdir database cp -r /var/lib/mysql /mnt/database
修改my.cnf文件 # vim /etc/mysql/my.cnf 将datadir = /var/lib/mysql 改为 datadir = /mnt/database/mysql
修改数据库文件的所属的权限: # chown -R mysql:mysql /data/mysqldb/mysql/ ← 改变数据库文件目录的归属为mysql
修改文件usr.sbin.mysqld # vim /etc/apparmor.d/usr.sbin.mysqld 把 /var/lib/mysql r, /var/lib/mysql/** rwk, 改成 /data/mysqldb/mysql/ r, /data/mysqldb/mysql/** rwk,
启动mysql服务器 #service mysql start 成功! 
0 notes
Text
Ubuntu14 中 MySQL更改数据库文件的目录
公司的ubuntu服务器对于各个系统的目录是放在不同的逻辑分区上的,比如存放MySQL数据库文件的默认目录/var/lib/mysql所在的系统目录/var/单独在一个分区上,但是这个分区的大小是固定的,不足以存放整个数据库文件。但是另一个系统目录/data大小却达到T级,大大满足了需求,因此有了更改数据库文件目录的需求。以下是我参考网络上一些文章进行尝试的过程:
停止数据库服务 使用/etc/init.d/mysql stop 或者 stop mysql
拷贝数据库文件 在目标位置(/data)创建数据库文件的目录(如/mysqldb),并复制(如果不再使用默认的位置,则可以直接mv原先数据库文件到新目录下)原先的数据库文件目录到该目录下: #cd /data #mkdir mysqldb #cp -r /var/lib/mysql /data/mysqldb/ 经过一段时间的等待后,在/data/mysqldb/下面就有了原先默认的mysql数据库文件目录的拷贝“/mysql”
修改my.cnf文件 # vim /etc/mysql/my.cnf 将 datadir = /var/lib/mysql 改为 datadir = /data/mysqldb/mysql 另外由于当前 my.cnf 中的 socket = /var/run/mysqld/mysqld.sock(而并非像网上所说的sock = /var/lib/mysql/mysql.sock),即socket的位置并不在数据库文件所在的位置,因此可以不做类似网上其他网页所说的,要使用以下的命令做一个mysql.sock 链接: ln -s /data/mysqldb/mysql/mysql.sock /var/lib/mysql/mysql.sock (需要从/home/data/mysql下复制一份过来)
修改数据库的权限: # chown -R mysql:mysql /data/mysqldb/mysql/ ← 改变数据库文件目录的归属为mysql
# chmod 700 /data/mysqldb/mysql/whois/ ← 改变数据库目录whois的属性为700
# chmod 660 /data/mysqldb/mysql/whois/* ← 改变数据库中数据表的属性为660
修改文件usr.sbin.mysqld # vim /etc/apparmor.d/usr.sbin.mysqld 把 /var/lib/mysql r, /var/lib/mysql/** rwk, 改成 /data/mysqldb/mysql/ r, /data/mysqldb/mysql/** rwk, 注意:没有该步骤的话,将导致数据库服务无法重启,好像在重启,但是一直卡住无反应。
启动mysql服务器 /etc/init.d/apparmor restart /etc/init.d/mysql restart (或者使用 restart mysql) 搞定!
0 notes