Add public key to bitbucket account setting SSH keys
.
On Windows, add a System
environment variable:
GIT_SSH -> C:\Program Files\PuTTY\plink.exe
Run peagent.exe, load the private key.
At the first time, run putty, enter git@bitbucket.org, then open, cache the key.
Now key is cached, we can run git clone
from git-bash without problem.
2017年11月23日
升级了MySQL, root的密码被升没了。
先把mysql关掉:
在一个terminal里启动:
sudo -u mysql mysqld --skip-grant-tables --skip-networking
在另一个terminal里运行mysql客户:
在客户里:
mysql> flush privileges;
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("新密码") where User='root';
mysql> update user set plugin="mysql_native_password";
mysql> flush privileges;
mysql> quit
这样就行了。
找到mysql服务器pid把它kill掉,重新启动:
2017年8月7日
现在还是有人在用Perl的,比如我们。
用Perl多数时候都会用cpan,用cpan时一般是从一个cpan镜像下载软件包,有的cpan镜像有时好用有时不好用,没有能力让服务器持续在线的组织(比如:华中科技大学)最好不要做公告镜像,那不是帮人,是害人。
好在改变cpan所用镜像也很容易。
进入cpan:
列出现在的镜像:
我的输出是:
urllist
0 [http://mirrors.hust.edu.cn/CPAN/]
1 [http://ftp.neowiz.com/CPAN/]
2 [http://cpan.sarang.net/]
华中科技大学的镜像排在第一个,但当时mirrors.hust.edu.cn是宕掉的。
把第一个shift掉:
再确认:
就行了。
如果要加镜像:
o conf urllist push http://cpan.sarang.net/
push也可用unshift代替,push是加到后面,unshift是加到前面。
如果要用其他镜像代替现有镜像,则不要push或unshift就可以了。
2016年10月13日
以前说过怎样从ppa安装php7,这次是怎样编译源码并安装PHP7和Slim框架
##首先一些准备工作
在命令行:
sudo apt-get install libcurl4-openssl-dev libgmp-dev libmhash-dev libmcrypt-dev
sudo ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h
这个连接也许不用做,在Ubuntu14.04上,gmp头文件不在/usr/include/gmp.h以至于configure找不到。
##下载解压configure、编译安装
下载解压:
wget http://cn2.php.net/get/php-7.0.11.tar.xz/from/this/mirror -O php.tar.xz
tar xfJ php.tar.xz
cd php-7.0.11/
configure:
./configure --prefix=/usr/local \
--enable-fpm \
--with-fpm-user=nobody \
--with-fpm-group=nogroup \
--with-config-file-path=/usr/local/etc \
--with-config-file-scan-dir=/usr/local/etc/php.d \
--with-pcre-regex \
--with-zlib \
--with-openssl \
--enable-bcmath \
--with-curl \
--with-gd \
--enable-gd-native-ttf \
--with-gmp \
--with-mhash \
--enable-mbstring \
--with-mcrypt \
--with-pdo-mysql \
--with-readline \
--with-openssl-dir \
--with-xmlrpc \
--with-xsl \
--enable-zip \
--enable-mysqlnd \
--with-pear
如果用postgres, 可以加:
--with-pgsql \
--with-pdo-pgsql \
Fedora和Ubuntu16.04用Systemd,可以加:
编译安装:
最好把最后sudo make install
的输出保存下来,特别是Installing shared extensions:
位置。
##安装composer
wget https://getcomposer.org/installer -O composer-setup.php
sudo php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
sudo chown -R $USER:$USER ~/.composer/
##安装使用Slim和slim-skeleton
composer config -g repo.packagist composer https://packagist.phpcomposer.com # 用国内镜像
composer create-project slim/slim-skeleton myproj
cd myproj/
php -S 0.0.0.0:8003 -t public public/index.php
在浏览器上打开http://ip:8003,可以看到slim的初步页面
页面的源码在src/,渲染的模板是templates/index.phtml。
2016年9月29日
MySQL 5.7 有了JSON数据类型,对我们很有用,但Ubuntu 12.04和14.04上是5.5和5.6,所以我们决定升级。
卸载MySQL旧版本
sudo apt-get remove mysql-client-5.5 mysql-server-5.5 # 如果是5.6就把5.5换成5.6
sudo apt-get autoremove
准备apt
到 这里 点击”Download”按钮,进去后拷贝No thanks, just start my download.
连接:
https://dev.mysql.com/get/mysql-apt-config_0.8.0-1_all.deb
可能最新的版本会不一样。
下载这个文件:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.0-1_all.deb
加入apt源:
sudo dpkg -i mysql-apt-config_0.8.0-1_all.deb
运行时会出现选项,让mysql 5.7高亮,回车即可。
安装 MySQL 5.7
sudo apt-get update
sudo apt-get install mysql-server-5.7
升级原有数据库
sudo mysql_upgrade -u root -p --force
2016年9月28日
Bugzilla是个很老的bug跟踪系统,但现在还是可以用的。
准备
我们用Apache cgi运行Buzilla,这样速度和效率会降低,但我们用户量并不多,这样安装配置都很简单,也足够用。
sudo apt-get install apache2 libgd-dev libyaml-perl
libgd-dev是可选的。
Bugzilla是Perl写的,一般系统里都有Perl,所以不需另外安装。
下载解压
到Bugzilla官网得到下载连接。
选择一个目录位置,比如/var/www,把bugzilla加压到这里。
wget https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.3.tar.gz
tar xfz bugzilla-5.0.3.tar.gz -C /var/www/
安装Bugzilla
下列操作最好用root用户进行。
sudo su
cd /var/www/bugzilla-5.0.3/
vi localconfig
在localconfig里,把
$webservergroup = 'apache';
改为:
$webservergroup = 'www-data';
因为在Ubuntu上,apache的默认用户是www-data。
再把:
改为:
如果用户量不多,sqlite数据库就足够了,也省得我们再去配置MySQL了。
运行:
unset PERL_MB_OPT # 保证不被安装到/root
unset PERL_MM_OPT # 保证不被安装到/root
./checksetup.pl
./install-module.pl DateTime
./install-module.pl DateTime::TimeZone
./install-module.pl GD
再运行./checksetup.pl
,看还有什么需要安装的用./install-module.pl
安装。
配置Apache
还是做为root用户
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/cgi.load .
ln -s ../mods-available/rewrite.load .
vi /etc/apache2/sites-enabled/000-default.conf
在/etc/apache2/sites-enabled/000-default.conf
的VirtualHost里,加入:
DocumentRoot /var/www/bugzilla-5.0.3
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/bugzilla-5.0.3/>
AddHandler cgi-script .cgi
Options +ExecCGI
DirectoryIndex index.cgi index.html
AllowOverride Limit FileInfo Indexes Options AuthConfig
</Directory>
重启Apache:
如果有错误就去/var/log/apache2里看error.log。
2016年9月27日
如果你需要部署内部开发的python软件库,或者你的外网访问不稳定,你可以考虑自建pypi镜像。
安装pypiserver服务器
你的镜像服务器一定要和外网连接,要不然你无从下载软件库(除非你只提供内部开发的软件库,这情况是很少见的)。
选一个合适的位置,如你自己~/pypiserver
下, 如果你要让镜像服务器运行在80端口,则需要以root运行,安装位置则可以选择例如/opt/pypiserver
。
下面以机器IP(192.168.5.13),用户目录下pypiserver为例,在venv环境安装pypiserver:
cd
mkdir -p pypiserver/packages
cd pypiserver
pyvenv .venv
.venv/bin/pip install pypiserver
运行pypiserver:
.venv/bin/pypi-server -p 8081 packages/
在其他机器的浏览器打开地址: http://192.168.5.13:8081/simple
, 你会看到Simple Index
字样,没有其他任何内容,这是因为你还没有任何package。
在服务器(192.168.5.13)上保持pypiserver继续运行,打开另一个terminal,下载packages:
先下载一个pytest最新版本:
cd pypiserver
pip install pytest -d packages
你需要什么库什么版本就下载什么版本,如SQLAlchemy 0.9.10和lxml 3.6.3:
pip install sqlalchemy==0.9.10 lxml==3.6.3 -d packages
现在如果在浏览器上刷新http://192.168.5.13:8081/simple
,你会发现上面有了packages的名字。
使用pypiserver服务器
现在你的pypiserver服务器可以作为一个pypi镜像使用了,就像pypi.douban.com/simple和mirrors.aliyun.com/pypi/simple一样,使用方法也一样。和公共镜像不同的是:公共镜像(豆瓣阿里等)有所有软件package的所有版本,而你的私有镜像只有你放上去的packages和版本。
如果你的用户机不能访问外网,你只能用内部私有镜像,则将你的~/.pip/pip.conf
设为:
[global]
index-url=http://192.168.5.13:8081/simple
trusted-host=192.168.5.13
当你要安装的一个package你私有镜像里没有,它会自动转向官方服务器(http://pypi.python.org/simple)从那里下载。你如果希望转向国内的镜像服务器,则你启动pypiserver里要加fallback-url,如:
.venv/bin/pypi-server --fullback-url http://pypi.douban.com/simple -p 8081 packages/
注意只要你的镜像里有一个package的版本,即使官方或者公共镜像上有其他版本,你pip客户也拿不到,比如:你镜像里lxml 只有3.6.3或者你有多个版本但最新版是3.6.3,你在客户机上安装:
就会获得3.6.3。就算你知道官方最新版是3.6.4,你也是无法安装的:
pip install lxml --upgrade
和 pip install lxml==3.6.4
都不会成功。
但是如果你的用户机可以访问外网,你也可以在用户机加公共镜像以补充私有镜像,你的~/.pip/pip.conf
设为:
[global]
index-url=http://192.168.5.13:8081/simple
extra-index-url=http://pypi.douban.com/simple
trusted-host=192.168.5.13 pypi.douban.com
这样,pip install lxml --upgrade
或 pip install lxml==3.6.4
都会成功。
2016年9月13日
我们用pip安装Python软件库时有时会特别慢,这是因为从国内访问缺省的国外pypi服务器非常慢,幸亏国内有pypi镜像,访问这些镜像服务器就快得多了。
根据我们经验豆瓣和阿里的镜像速度、稳定性、更新频率算好的,地址分别是:
http://pypi.douban.com/simple
http://mirrors.aliyun.com/pypi/simple
用pip时可以直接使用这些镜像,比如安装selenium,版本2.52.0:
pip3 install selenium==2.52.0 -i http://pypi.douban.com/simple
pip3 install selenium==2.52.0 -i http://mirrors.aliyun.com/pypi/simple
如果你pip版本较新,访问非https必须加trusted-host:
pip3 install selenium==2.52.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip3 install selenium==2.52.0 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
如果要让pip以后都用国内镜像,而省去每次打那么多字,可以修改pip配置文件:
mkdir -p ~/.pip
vi ~/.pip/pip.conf # vi可用emacs, pico其他文本编辑器代替
文本内容:
[global]
index-url=http://pypi.douban.com/simple
trusted-host=pypi.douban.com
或者用阿里:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple
trusted-host=mirrors.aliyun.com
如果你需要更高的速度和稳定性,你可以选择自己建Pypi镜像,请看相关文章。
2016年9月12日
一般来讲,你可以直接:
sudo apt-get install python3
来安装Python3,然后再装我们经常用到的venv:
sudo apt-get install python3.4-venv`
新的Ubuntu如16.04里python缺省就是python3.5,所以什么也不用做。
但是如果你需要更新的Python版本,比如你要用asyncio,它只在3.5以后才有,你的ubuntu 14.04的python3是3.4,或者你想用f字串,3.6才有,你的Ubuntu16.04的Python是3.5,或者你就是不喜欢Ubuntu提供的版本,这些情况你就只有自己装了。
步骤
除了build-essential libz-dev libssl-dev libxml2-dev
等一般编译所需要的包外,最好安装这些额外的包:
sudo apt-get install liblzma-dev libbz2-dev libsqlite3-dev libreadline6-dev
去官网下载你要的版本的源码,我们以3.6.0b1为例。
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0b1.tar.xz
通常的解压、配置、编译
tar xfJ Python-3.6.0b1.tar.xz
cd Python-3.6.0b1/
./configure
make
把可执行文件、库、头文件装到/usr/local
下
/usr/local/bin
里python3,pip3,pyvenv这三个可执行文件就可供使用了。
2016年9月11日
下载安装openssl
一般系统自带的openssl版本比较老,不能支持HTTP2,我们需要自己下载编译openssl。
选取一个位置,到openssl官网下载openssl源码,现在(2016/9)已经有1.1版本,但它刚出来,鉴于稳定性考虑,笔者还是推荐1.0版。
下面以用户下downloads目录为例,下载1.0.2h版openssl:
cd ~/downloads
wget https://www.openssl.org/source/openssl-1.0.2i.tar.gz
tar xfz openssl-1.0.2i.tar.gz
cd openssl-1.0.2i/
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make depend
make
sudo make install
下载安装nginx
去nginx官网下载源码,配置、编译、安装。
cd ~/downloads
wget http://nginx.org/download/nginx-1.11.4.tar.gz
tar xfz nginx-1.11.4.tar.gz
cd nginx-1.11.4/
# 下面最好先 ./configure --help > my-configure
# 然后编辑my-configure,配置好你需要的,再打`sh my-configure`执行
# 这里就用一行命令行以清晰表达
./configure \
--prefix=/usr/local \
--conf-path=/usr/local/etc/nginx/nginx.conf \
--user=nobody \
--group=nogroup \
--with-http_ssl_module \
--with-openssl=/home/yourname/downloads/openssl-1.0.2i \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--without-http_fastcgi_module \
--without-http_uwsgi_module \
--without-http_scgi_module \
--without-http_memcached_module \
--http-client-body-temp-path=/usr/local/tmp/http-client-body-temp \
--http-proxy-temp-path=/usr/local/tmp/http-proxy-temp \
--with-cc-opt='-DTCP_FASTOPEN=23'
# 配置行结束
make
sudo make install
上面配置里可以加上你需要的nginx模块,比如:--with-http_realip_module
, --with-http_mp4_module
等。
安装后配置文件夹在/usr/local/etc/nginx
下,配置nginx是另外话题,就不在这里写了。
2016年9月5日