Linux服务器上环境部署汇总

1.jdk的安装

2.nginx的安装

3.tomcat的安装

4.mysql的安装

5.scrapy的安装

6.mongodb的安装

 

作为爬虫工程师,Linux工程师,系统管理员,软件的部署安装是必备技能。下面是我在工作学习中的总结,希望对网友们有所借鉴和帮助。

环境:

阿里云服务器 CentOS7.0

一.JDK的安装

1.查看linux机器是32位还是64位的方法:

 

$ getconf LONG_BIT

64

2.下载对应系统的jdk版本  linux 64bit  jdk1.8

     下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

     http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3.安装正式开始:

创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: 

# mkdir /usr/java

 

1、jdk-6u11-linux-i586.bin 这个是自解压的文件,在linux上安装如下: 

# chmod 755 jdk-6u11-linux-i586.bin 

# ./jdk-6u11-linux-i586.bin (注意,这个步骤一定要在jdk-6u11-linux-i586.bin所在目录下)

在按提示输入yes后,jdk被解压。

出现一行字:Do you aggree to the above license terms? [yes or no]

 安装程序在问您是否愿意遵守刚才看过的许可协议。当然要同意了,输入"y" 或 "yes" 回车。

2、若是用jdk-6u11-linux-i586-rpm.bin 这个也是一个自解压文件,不过解压后的文件是jdk-6u11-linux-i586-rpm 包,执行rpm命令装到linux上就可以了。安装如下: 

#chmod 755 ./jdk-6u11-linux-i586-rpm

# ./jdk-6u11-linux-i586-rpm .bin 

# rpm -ivh jdk-6u11-linux-i586-rpm

 

出现一行字:Do you aggree to the above license terms? [yes or no]

 安装程序在问您是否愿意遵守刚才看过的许可协议。当然要同意了,输入"y" 或 "yes" 回车。

安装软件会将JDK自动安装到 /usr/java/目录下。

4.配置

#vi /etc/profile

 在里面添加如下内容

export JAVA_HOME=/usr/java/jdk1.6.0_27

export JAVA_BIN=/usr/java/jdk1.6.0_27/bin

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

让/etc/profile文件修改后立即生效 ,可以使用如下命令:

# . /etc/profile

注意: . 和 /etc/profile 有空格.

重启测试

 java -version

 屏幕输出:

 java version "jdk1.6.0_02"
 Java(TM) 2 Runtime Environment, Standard Edition (build jdk1.6.0_02)
 Java HotSpot(TM) Client VM (build jdk1.6.0_02, mixed mode)

 

 javac

会打印出一些帮助信息,说明安装配置成功

 

二.Nginx:

参考url:http://www.linuxidc.com/Linux/2015-03/114988.htm

参考url:http://www.linuxidc.com/Linux/2015-03/114986.htm

1. 从Nginx官网下载Nginx。目前最新的稳定版为:1.6.2

2. 将下载下来的Nginx上传到/opt/nginx目录下。运行“tar -zxvf nginx-1.6.2.tar.gz”进行解压。

3. 切换到/opt/nginx/nginx-1.6.2目录下,运行./configure进行初始化配置。如出现下面的提示,说明该机器没有安装PCRE,而Nginx需要依赖PCRE,需要手动安装PCRE,见 http://www.linuxidc.com/Linux/2015-03/114986.htm。

4. 安装完PCRE后,再次运行./configure进行初始化即可。注意这里生成的配置文件,尤其箭头所指的方向,是启动nginx时的路径。

5. 运行 make install 进行编译。

6. 切换到步骤4生成的nginx运行目录下,运行./nginx,启动Nginx。

如出现下面所述的错误,在已安装PCRE库的情况下,需要配置PCRE共享库。具体操作看这里 http://www.linuxidc.com/Linux/2015-03/114985.htm 。

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

7.  在浏览器中输入IP:端口号,出现如下图所示,说明安装成功。

如出现nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)。可能是端口号被占用,切换到/usr/local/nginx/conf/目录下,更改nginx.conf下的端口号。也有可能是不小心nginx重启了多次,关闭nginx进程,重启即可。

8. 关闭Nginx

使用 ps -ef|grep nginx 查看nginx的进程,可以看到nginx有两个进程:

[root@linuxidc sbin]# ps -ef|grep nginx 

root      7276    1  0 14:21 ?        00:00:00 nginx: master process ./nginx

www      7277  7276  0 14:21 ?        00:00:00 nginx: worker process

root      7279  5197  0 14:21 pts/1    00:00:00 grep nginx

8.1 从容停止nginx

kill - QUIT nginx 主进程号

8.2 停止nginx所有进程

[root@linuxidc sbin]# pkill -9 nginx

 

三.Tomcat的安装

1.下载tomcat(http://tomcat.apache.org/)

2.解压缩

[root@master ~]# unzip apache-tomcat-6.0.30.zip

[root@master ~]# mv apache-tomcat-6.0.30/ /usr/local/

[root@master ~]cd /usr/local/

[root@master local]# ln -s /usr/local/apache-tomcat-6.0.30/ /usr/local/tomcat

[root@master local]# cd tomcat/bin/

[root@master bin]#ls

[root@master bin]#vim catalina.sh

添加以下内容:

CATALINA_HOME=/usr/local/apache-tomcat-6.0.30/

[root@master local]#chmod +x *.sh

3.启动tomcat服务器

[root@master tomcat]# /usr/local/tomcat /bin/catalina.sh start

Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.30/

Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.30/

Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.30//temp

Using JRE_HOME:        /usr/local/jdk1.6.0_05

Using CLASSPATH:       /usr/local/apache-tomcat-6.0.30//bin/bootstrap.jar

[root@master logs]# cd /usr/local/tomcat/logs/

[root@master logs]# tail -f catalina.out

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Jul 4, 2011 11:06:57 AM org.apache.coyote.http11.Http11Protocol pause

INFO: Pausing Coyote HTTP/1.1 on http-8080

Jul 4, 2011 11:06:58 AM org.apache.catalina.core.StandardService stop

INFO: Stopping service Catalina

Jul 4, 2011 11:06:58 AM org.apache.coyote.http11.Http11Protocol destroy

INFO: Stopping Coyote HTTP/1.1 on http-8080

4.在浏览器中输入

http://localhost:8080/(如果不是本机,则输入对应的ip地址)

测试出现tomcat页面则测试成功

ps:需要说明的是tomcat的默认测试页面是放在webapps下面,这个其实是在server.xml文件中配置的,如下所示:

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

[root@SOR_SYS apache-tomcat-6.0.30]# ls

LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  temp  webapps  work

        1)webapps文件夹主要用于web应用程序部署,比如你可以把你的应用程序包,如war文件拷到该目录下,容器会自动部署。

  2)conf文件夹下主要是放置tomcat的服务器的相关配置文件

5.添加应用,再次进行测试

在webapps目录下放测试包(注意:webaapps目录下面主要是放应用包的.war在tomcat重启访问后会自动解压

[root@master webapps]# pwd
/usr/local/tomcat/webapps

[root@master webapps]# tar -zxvf moni2.tar.gz 

[root@master webapps]# ls
docs  examples  host-manager  manager
  moni2  moni2.tar.gz  ROOT

[root@master webapps]# /usr/local/tomcat/bin/catalina.sh start(重启tomcat)
Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.30/
Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.30/
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.30//temp
Using JRE_HOME:        /usr/local/jdk1.6.0_05
Using CLASSPATH:       /usr/local/apache-tomcat-6.0.30//bin/bootstrap.jar

在浏览器中输入如下地址:

http://192.168.55.229:8080/moni2/

6.修改tomcat的监听端口

[root@master ~]#  cd  /usr/local/tomcat/conf

[root@master ~]# ls

[root@master ~]# vim server.xml

【停止tomcat时的端口】

 

               connectionTimeout="20000"

               redirectPort="8443" /> 【tomcat默认的监听端口是8080,现在改成8081】

 【apache+tomcat模式时访问tomcat的端口】

 

现在重启tomcat。访问http://192.168.55.229:8081/moni2/【注意:这时就需要修改端口了,嘿嘿。。。】

 

四.MySQL的安装

在Linux中安装MySQL,通常为RPM与源码方式安装。对于生产环境而言,由于需要自定义诸如安装路径、数据文件位置、字符集以及支持的存储引擎等多以源码方式来进行安装。之前有写过一篇关于源码安装的文章,Linux下基于源码方式安装MySQL 5.6(http://www.linuxidc.com/Linux/2014-10/108040.htm),但不是很完整,因此该文可以作为其补充。以下为具体安装步骤,供大家参考。

1、安装前的有关描述
必备的包和工具
  gcc/g++ :MySQL 5.6开始,需要使用g++进行编译。
  cmake  :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以上版本。
  bison  :MySQL语法解析器需要使用bison进行编译。
  ncurses-devel :用于终端操作的开发包。
  zlib    :MySQL使用zlib进行压缩

功能需要的包
  libxml  :用于XML输入输出方式的支持。
  openssl  :使用openssl安全套接字方式通信。
  dtrace  :用于诊断MySQL问题。

有关MySQL编译参数
  CMAKE_BUILD_TYPE            编译的版本类型:RelWithDebInfo和Debug,不同之处是RelWithDebInfo会进行优化。
  CMAKE_INSTALL_PREFIX        指定make install安装的目标路径。
  SYSCONFDIR                  指定配置文件的默认路径。
  MYSQL_DATADIR              指定data目录的默认路径。
  WITH_DEBUG                  指定是否有debugging信息,一般用于源码调试时,打开WITH_DEBUG,生产环境关闭。
  ENABLED_PROFILING          指定是否可以使用show profile显示操作执行的详细信息。
  DEFAULT_CHARSET            指定默认字符集,可以在启动的配置文件中指定。
  DEFAULT_COLLATION          指定默认字符比较、排序的规则。
  WITH_EXTRA_CHARSETS        指定其他可能使用的字符集。
  WITH_SSL                    指定SSL的类型,从5.6.6开始默认bundled类型,此外也可以指定SSL库的路径地址。
  WITH_ZLIB                  指定zlib的类型,用于压缩功能。
  ENABLED_LOCAL_INFILE        指定是否允许使用load data infile功能。
  WITH_EMBEDDED_SERVER        指定是否编译libmysqld嵌入式库。
  INSTALL_LAYOUT              指定安装的布局类型。
  WITH_storage_STORAGE_ENGINE 指定编译支持的存储引擎,默认支持MyISAM,MERGE,MEMORY,CSV存储引擎。
  更多详细参数可参考 http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html

 

本次安装环境
  [root@SZ-RD03 ~]# cat /etc/issue
  CentOS release 5.9 (Final)
  Kernel \r on an \m
  
  [root@SZ-RD03 ~]# uname -a
  Linux SZ-RD03 2.6.18-348.el5 #1 SMP Tue Jan 8 17:53:53 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
  
  MySQL版本:5.6.12-log Source distribution
  安装目录为:/app/soft/mysql/
  数据目录为:/data/mysqldata 
  存储引擎包括:MEMORY,MyISAM,InnoDB等 
  字符集为:UTF8

2、源码安装MySQL 
先安装需要用到的库:
  yum -y install gcc gcc-c++
  yum -y install ncurses-devel

下载所需软件包:
  #将下载的文件都放到/usr/local/src目录下,如下
  # cd /usr/local/src
  # wget http://www.cmake.org/files/v2.8/cmake-2.8.11.1.tar.gz
  # wget http://ftp.gnu.org/gnu/bison/bison-2.7.tar.gz
  # wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.gz
  # wget http://www.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz/from/http://cdn.mysql.com/

 

安装cmake编译器
  # cd /usr/local/src
  # tar -xvf cmake-2.8.11.1.tar.gz
  # cd cmake-2.8.11.1
  # ./bootstrap
  # make && make install

安装m4
  # cd /usr/local/src
  # tar -xvf m4-1.4.16.tar.gz
  # cd m4-1.4.16
  # ./configure && make && make install

安装bison
  # cd /usr/local/src
  # tar -xvf bison-2.7.tar.gz
  # cd bison-2.7
  # ./configure && make && make install

 

创建mysql用户与组,相关目录
  # /usr/sbin/groupadd mysql
  # /usr/sbin/useradd -g mysql mysql
  # mkdir -p /app/soft/mysql
  # chown -R mysql:mysql /app/soft/mysql
  # mkdir -p /data/mysqldata
  # chown -R mysql:mysql /data/mysqldata/

安装mysql
  # cd /usr/local/src
  # tar -xvf mysql-5.6.12.tar.gz 
  # export CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
  # export CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
  # export CXX=g++
  # cd mysql-5.6.12
  # cmake -DCMAKE_INSTALL_PREFIX=/app/soft/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
    -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=utf8,gbk  
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysqldata/ -DSYSCONFDIR=/app/soft/mysql/ 
    -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1
  # make && make install

 

初始化数据库
  # cd /app/soft/mysql/
  # ./scripts/mysql_install_db --user=mysql --ldata=/data/mysqldata

 

3、安装后的收尾工作
配置运行环境
  # vi /etc/profile
  # PATH=/app/soft/mysql/bin:/app/soft/mysql/lib:$PATH
  # export PATH
  # source /etc/profile

创建开机启动
  # cp support-files/my-default.cnf /etc/my.cnf  #也可以将my.cnf直接复制到安装文件位置
  # cp support-files/mysql.server /etc/init.d/mysqld 
  # chkconfig --level 35 mysqld on 
  # service mysqld start


查检是否启动成功
  netstat -ntlp  | grep mysql

设置root密码
  # mysqladmin -u root password 'xxx'

登陆账号

  # mysql -uroot -pxxx

配置参数
  根据系统及业务需求配置my.cnf文件

 

若出现错误,vim /etc/my.cnf  修改其中的参数

[client]
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8


[mysqld]
datadir=/app/soft/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8

[mysql]
socket=/var/lib/mysql/mysql.sock
no-auto-rehash
default-character-set=utf8

[mysqldump]
socket=/var/lib/mysql/mysql.sock

[mysqladmin]
socket=/var/lib/mysql/mysql.sock

 

 

操作MySql非常简单,就5步骤,如下:

1.进入 mysql:

?
1
/usr/ local /mysql/bin/mysql -u root -p

2.使用 mysql库 :

?
1
use mysql;

3.查看用户表 :

?
1
SELECT `Host`,` User ` FROM user ;

 

五.Scrapy的安装

参考url:http://www.cnblogs.com/xiaoruoen/archive/2013/02/27/2933854.html

参考url:http://www.coder4.com/archives/3660

Centos下安装Scrapy

Scrapy是一个开源的机遇twisted框架的python的单机爬虫,该爬虫实际上包含大多数网页抓取的工具包,用于爬虫下载端以及抽取端。

安装环境:

 

centos5.4
python2.7.3

 

安装步骤:

1.下载python2.7  http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz

复制代码
[root@zxy-websgs ~]# wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz -P /opt

[root@zxy-websgs opt]# tar xvf Python-2.7.3.tgz 

[root@zxy-websgs Python-2.7.3]# ./configure 

[root@zxy-websgs Python-2.7.3]# make && make install
复制代码

 验证python2.7安装

[root@zxy-websgs Python-2.7.3]# python2.7
Python 2.7.3 (default, Feb 28 2013, 03:08:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

2.安装setuptools,http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz

[root@zxy-websgs ~]# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz -P /opt/
[root@zxy-websgs opt]# tar zxvf setuptools-0.6c11.tar.gz 
[root@zxy-websgs setuptools-0.6c11]# python2.7 setup.py  install

 

3.安装Twisted

[root@zxy-websgs setuptools-0.6c11]# easy_install Twisted
......
Installed /usr/local/lib/python2.7/site-packages/Twisted-12.3.0-py2.7-linux-x86_64.egg
......
Installed /usr/local/lib/python2.7/site-packages/zope.interface-4.0.4-py2.7-linux-x86_64.egg

Twisted要安装zope.interface,可以从下面地址下载

zope.interface:http://pypi.python.org/packages/source/z/zope.interface/zope.interface-4.0.1.tar.gz

twisted:http://twistedmatrix.com/Releases/Twisted/12.1/Twisted-12.1.0.tar.bz2

5.安装w3lib

复制代码
[root@zxy-websgs setuptools-0.6c11]# easy_install -U w3lib
Searching for w3lib
Reading http://pypi.python.org/simple/w3lib/
Reading http://github.com/scrapy/w3lib
Best match: w3lib 1.2
Downloading http://pypi.python.org/packages/source/w/w3lib/w3lib-1.2.tar.gz#md5=f929d5973a9fda59587b09a72f185a9e
Processing w3lib-1.2.tar.gz
Running w3lib-1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-wm_1BB/w3lib-1.2/egg-dist-tmp-2DQHY_
zip_safe flag not set; analyzing archive contents...
Adding w3lib 1.2 to easy-install.pth file

Installed /usr/local/lib/python2.7/site-packages/w3lib-1.2-py2.7.egg
Processing dependencies for w3lib
Finished processing dependencies for w3lib
复制代码

w3lib:http://pypi.python.org/packages/source/w/w3lib/w3lib-1.2.tar.gz

6.安装libxml2或者用easy_install安装lxml

[root@zxy-websgs lxml-3.1.0]# easy_install lxml

验证lxml安装

[root@zxy-websgs lxml-3.1.0]# python2.7
Python 2.7.3 (default, Feb 28 2013, 03:08:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
>>> exit()

也可以安装libxml2,官网上推荐安装2.6.28或者以上的版本,但在官网上没找到,我先是安装的2.6.9的版本,运行scrapy时报以下错误

复制代码
Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 5, in 
    pkg_resources.run_script('Scrapy==0.14.4', 'scrapy')
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 489, in run_script
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 1207, in run_script
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/EGG-INFO/scripts/scrapy", line 4, in 
    execute()
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/cmdline.py", line 112, in execute
    cmds = _get_commands_dict(inproject)
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/cmdline.py", line 37, in _get_commands_dict
    cmds = _get_commands_from_module('scrapy.commands', inproject)
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/cmdline.py", line 30, in _get_commands_from_module
    for cmd in _iter_command_classes(module):
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/cmdline.py", line 21, in _iter_command_classes
    for module in walk_modules(module_name):
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/utils/misc.py", line 65, in walk_modules
    submod = __import__(fullpath, {}, {}, [''])
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/commands/shell.py", line 8, in 
    from scrapy.shell import Shell
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/shell.py", line 14, in 
    from scrapy.selector import XPathSelector, XmlXPathSelector, HtmlXPathSelector
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/selector/__init__.py", line 30, in 
    from scrapy.selector.libxml2sel import *
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/selector/libxml2sel.py", line 12, in 
    from .factories import xmlDoc_from_html, xmlDoc_from_xml
  File "/usr/local/lib/python2.7/site-packages/Scrapy-0.14.4-py2.7.egg/scrapy/selector/factories.py", line 14, in 
    libxml2.HTML_PARSE_NOERROR + \
AttributeError: 'module' object has no attribute 'HTML_PARSE_RECOVER'
复制代码

升级到2.6.21版本以后解决了。

libxml2.6.1:ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.21.tar.gz

7.安装pyOpenSSL(这个是可选安装的,主要为了使scrapy能够支持https)

用easy_install pyOpenSSL安装的是pyOpenSSL-0.13版本,没安装成功,于是手动下载.011版本来进行安装。

[root@zxy-websgs opt]# wget http://launchpadlibrarian.net/58498441/pyOpenSSL-0.11.tar.gz -P /opt
[root@zxy-websgs opt]# tar zxvf pyOpenSSL-0.11.tar.gz 
[root@zxy-websgs pyOpenSSL-0.11]# python2.7 setup.py install

pyOpenSSL:http://launchpadlibrarian.net/58498441/pyOpenSSL-0.11.tar.gz

8.安装scrapy

[root@zxy-websgs pyOpenSSL-0.11]# easy_install -U Scrapy

验证安装

复制代码
[root@zxy-websgs pyOpenSSL-0.11]# scrapy
Scrapy 0.16.4 - no active project

Usage:
  scrapy  [options] [args]

Available commands:
  fetch         Fetch a URL using the Scrapy downloader
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

  [ more ]      More commands available when run from project directory

Use "scrapy  -h" to see more info about a command
复制代码

scrapy:http://pypi.python.org/packages/source/S/Scrapy/Scrapy-0.14.4.tar.gz

总结:

pyOpenSSL单独安装的时候不成功,也可以先下载pyOpenSSL0.11进行安装,再使用easy_install -U Scrapy进行全程安装

 

Python安装lxml(编译安装其依赖的库)

依赖说明:

lxml是libxml2、libxslt的PythonBinding,依赖于libxml2和libxslt。libxslt依赖于libxml2。

由于我们的程序可能要分发到别的机器运行,所以要提取出一个可独立拷贝走的运行时环境,假设该目录为/home/liheyuan/env

1、安装libxml2

2、安装libxslt

3、安装lxml

依赖的库都搞定了,终于轮到Python的Binding了。

我们假设Python已经通过编译安装的方式,放到了同样的目录下:/home/liheyuan/env

最后看下效果:

错误提示,提示etree.so依赖错误!

由于so是我们自己build的,且不在系统默认环境变量路径内,所以我们需要把path加到系统环境变量(so)路径内,如下:

下次重新登陆Terminal就可以了!

 

六.MongoDB的安装


Linux下Mongodb安装和启动配置

1.下载安装包
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
下载完成后解压缩压缩包
tar zxf mongodb-linux-i686-1.8.2.tgz
 
2. 安装准备
将mongodb移动到/usr/local/mongdb文件夹
mv mongodb-linux-i686-1.8.2 /usr/local/mongodb
 
创建数据库文件夹与日志文件
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs
 
======在下一步启动mongodb的时候,有可能提示要安装一些包,如果yum配置是最新最全的话,直接yum install ***(依赖包名)  安装即可! 
3. 设置开机自启动
将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动 
echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data –logpath=/usr/local/mongodb/logs –logappend  --auth –port=27017" >> /etc/rc.local
 
4. 启动mongodb
cd到mongodb目录下的bin文件夹启动mongodb
 

./mongod --dbpath=/mnt/softs/mongodb/data --fork --logpath=/mnt/softs/mongodb/logs

//下面这个是需要权限的登录方式, 用户连接需要用户名和密码
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend  --auth  --port=27017 --fork
 
 
//这个是不需要密码的
/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --port=27017 --fork
 
 
5. 参数解释: --dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
 
 
-h [ --help ]             show this usage information
--version                 show version information
-f [ --config ] arg       configuration file specifying additional options
--port arg                specify port number
--bind_ip arg             local ip address to bind listener - all local ips
                           bound by default
-v [ --verbose ]          be more verbose (include multiple times for more
                           verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles    指定数据存放目录
--quiet                   quieter output   静默模式
--logpath arg             file to send all output to instead of stdout   指定日志存放目录
--logappend               appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件
--fork                    fork server process   以创建子进程的方式运行
--cpu                     periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
--noauth                  run without security 无认证模式运行
--auth                    run with security 认证模式运行
--objcheck                inspect client data for validity on receipt 检查客户端输入数据的有效性检查
--quota                   enable db quota management   开始数据库配额的管理
--quotaFiles arg          number of files allower per db, requires --quota 规定每个数据库允许的文件数
--appsrvpath arg          root directory for the babble app server 
--nocursors               diagnostic/debugging option 调试诊断选项
--nohints                 ignore query hints 忽略查询命中率
--nohttpinterface         disable http interface 关闭http接口,默认是28017
--noscripting             disable scripting engine 关闭脚本引擎
--noprealloc              disable data file preallocation 关闭数据库文件大小预分配
--smallfiles              use a smaller default file size 使用较小的默认文件大小
--nssize arg (=16)        .ns file size (in MB) for new databases 新数据库ns文件的默认大小
--diaglog arg             0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
--sysinfo                 print some diagnostic system information 打印系统诊断信息
--upgrade                 upgrade db if needed 如果需要就更新数据库
--repair                  run repair on all dbs 修复所有的数据库
--notablescan             do not allow table scans 不运行表扫描
--syncdelay arg (=60)     seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s
 
Replication options:
--master              master mode 主复制模式
--slave               slave mode 从复制模式
--source arg          when slave: specify master as 当为从时,指定主的地址和端口
--only arg            when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
--pairwith arg        address of server to pair with
--arbiter arg         address of arbiter server 仲裁服务器,在主主中和pair中用到
--autoresync          automatically resync if slave data is stale 自动同步从的数据
--oplogSize arg       size limit (in MB) for op log 指定操作日志的大小
--opIdMem arg         size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小
 
Sharding options:
--configsvr           declare this is a config db of a cluster 指定shard中的配置服务器
--shardsvr            declare this is a shard db of a cluster 指定shard服务器
 
6. 进入数据库的CLI管理界面
cd到mongodb目录下的bin文件夹,执行命令./mongo
运行如下:
[root@namenode mongodb]# ./bin/mongo
MongoDB shell version: 1.8.2
connecting to: test
> use test;
switched to db test
 
若数据库出现如不能连上,则是一个data目录下的mongod.lock文件的问题,可以用如下的修复的命令,
mongod --repair
 
 
mongodb的操作:

MongoDB常用操作命令大全

成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令
 

如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。

一、数据库常用命令
1、Help查看命令提示

复制代码代码如下:
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();

2、切换/创建数据库
复制代码代码如下:
use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库

3、查询所有数据库
复制代码代码如下:
show dbs;

4、删除当前使用数据库
复制代码代码如下:
db.dropDatabase();

5、从指定主机上克隆数据库
复制代码代码如下:
db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库
复制代码代码如下:
db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

7、修复当前数据库
复制代码代码如下:
db.repairDatabase();

8、查看当前使用的数据库
复制代码代码如下:
db.getName();
db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态
复制代码代码如下:
db.stats();

10、当前db版本
复制代码代码如下:
db.version();

11、查看当前db的链接机器地址
复制代码代码如下:
db.getMongo();

 

二、Collection聚集集合
1、创建一个聚集集合(table)

复制代码代码如下:
db.createCollection(“collName”, {size: 20, capped: 5, max: 100});//创建成功会显示{“ok”:1}
//判断集合是否为定容量db.collName.isCapped();

2、得到指定名称的聚集集合(table)
复制代码代码如下:
db.getCollection("account");

3、得到当前db的所有聚集集合
复制代码代码如下:
db.getCollectionNames();

4、显示当前db所有聚集索引的状态
复制代码代码如下:
db.printCollectionStats();

三、用户相关 
1、添加一个用户
复制代码代码如下:
db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式
复制代码代码如下:
db.auth("userName", "123123");

3、显示当前所有用户
复制代码代码如下:
show users;

4、删除用户
复制代码代码如下:
db.removeUser("userName");

四、聚集集合查询 
1、查询所有记录
复制代码代码如下:
db.userInfo.find();
相当于:select* from userInfo;

默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”
但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
2、查询去掉后的当前聚集集合中的某列的重复数据
复制代码代码如下:
db.userInfo.distinct("name");
会过滤掉name中的相同数据
相当于:select distict name from userInfo;

3、查询age = 22的记录
复制代码代码如下:
db.userInfo.find({"age": 22});
相当于: select * from userInfo where age = 22;

4、查询age > 22的记录
复制代码代码如下:
db.userInfo.find({age: {$gt: 22}});
相当于:select * from userInfo where age >22;

5、查询age < 22的记录
复制代码代码如下:
db.userInfo.find({age: {$lt: 22}});
相当于:select * from userInfo where age <22;

6、查询age >= 25的记录
复制代码代码如下:
db.userInfo.find({age: {$gte: 25}});
相当于:select * from userInfo where age >= 25;

7、查询age <= 25的记录
复制代码代码如下:
db.userInfo.find({age: {$lte: 25}});

8、查询age >= 23 并且 age <= 26
复制代码代码如下:
db.userInfo.find({age: {$gte: 23, $lte: 26}});

9、查询name中包含 mongo的数据
复制代码代码如下:
db.userInfo.find({name: /mongo/});
//相当于%%
[code]select * from userInfo where name like ‘%mongo%';

10、查询name中以mongo开头的
复制代码代码如下:
db.userInfo.find({name: /^mongo/});
select * from userInfo where name like ‘mongo%';

11、查询指定列name、age数据
复制代码代码如下:
db.userInfo.find({}, {name: 1, age: 1});
相当于:select name, age from userInfo;

当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
12、查询指定列name、age数据, age > 25
复制代码代码如下:
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
相当于:select name, age from userInfo where age >25;

13、按照年龄排序
复制代码代码如下:
升序:db.userInfo.find().sort({age: 1});
降序:db.userInfo.find().sort({age: -1});

14、查询name = zhangsan, age = 22的数据
复制代码代码如下:
db.userInfo.find({name: 'zhangsan', age: 22});
相当于:select * from userInfo where name = ‘zhangsan' and age = ‘22';

15、查询前5条数据
复制代码代码如下:
db.userInfo.find().limit(5);
相当于:selecttop 5 * from userInfo;

16、查询10条以后的数据
复制代码代码如下:
db.userInfo.find().skip(10);
相当于:select * from userInfo where id not in (
selecttop 10 * from userInfo
);

17、查询在5-10之间的数据
复制代码代码如下:
db.userInfo.find().limit(10).skip(5);

可用于分页,limit是pageSize,skip是第几页*pageSize
18、or与 查询
复制代码代码如下:
db.userInfo.find({$or: [{age: 22}, {age: 25}]});
相当于:select * from userInfo where age = 22 or age = 25;

19、查询第一条数据
复制代码代码如下:
db.userInfo.findOne();
相当于:selecttop 1 * from userInfo;
db.userInfo.find().limit(1);

20、查询某个结果集的记录条数
复制代码代码如下:
db.userInfo.find({age: {$gte: 25}}).count();
相当于:select count(*) from userInfo where age >= 20;

21、按照某列进行排序
复制代码代码如下:
db.userInfo.find({sex: {$exists: true}}).count();
相当于:select count(sex) from userInfo;

五、索引
1、创建索引
复制代码代码如下:
db.userInfo.ensureIndex({name: 1});
db.userInfo.ensureIndex({name: 1, ts: -1});

2、查询当前聚集集合所有索引
复制代码代码如下:
db.userInfo.getIndexes();

3、查看总索引记录大小
复制代码代码如下:
db.userInfo.totalIndexSize();

4、读取当前集合的所有index信息
复制代码代码如下:
db.users.reIndex();

5、删除指定索引
复制代码代码如下:
db.users.dropIndex("name_1");

6、删除所有索引索引
复制代码代码如下:
db.users.dropIndexes();

六、修改、添加、删除集合数据
1、添加
复制代码代码如下:
db.users.save({name: ‘zhangsan', age: 25, sex: true});

添加的数据的数据列,没有固定,根据添加的数据为准
2、修改
复制代码代码如下:
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);
相当于:update users set name = ‘changeName' where age = 25;
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);
相当于:update users set age = age + 50 where name = ‘Lisi';
db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);
相当于:update users set age = age + 50, name = ‘hoho' where name = ‘Lisi';

3、删除
复制代码代码如下:
db.users.remove({age: 132});

4、查询修改删除
复制代码代码如下:
db.users.findAndModify({
    query: {age: {$gte: 25}}, 
    sort: {age: -1}, 
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
    remove: true
});
db.runCommand({ findandmodify : "users", 
    query: {age: {$gte: 25}}, 
    sort: {age: -1}, 
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
    remove: true
});

update 或 remove 其中一个是必须的参数; 其他参数可选。
参数    详解     默认值 
query    查询过滤条件    {} 
sort    如果多个文档符合查询过滤条件,将以该参数指定的排列方式选择出排在首位的对象,该对象将被操作    {} 
remove    若为true,被选中对象将在返回前被删除    N/A 
update    一个 修改器对象
N/A 
new    若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。    false 
fields    参见Retrieving a Subset of Fields (1.5.0+) 
All fields 
upsert    创建新对象若查询结果为空。 示例 (1.5.4+) 
false 
七、语句块操作 
1、简单Hello World
复制代码代码如下:
print("Hello World!");

这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;
2、将一个对象转换成json
复制代码代码如下:
tojson(new Object());
tojson(new Object('a'));

3、循环添加数据
复制代码代码如下:
> for (var i = 0; i < 30; i++) {
... db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});
... };

这样就循环添加了30条数据,同样也可以省略括号的写法
复制代码代码如下:
> for (var i = 0; i < 30; i++) db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});

也是可以的,当你用db.users.find()查询的时候,显示多条数据而无法一页显示的情况下,可以用it查看下一页的信息;
4、find 游标查询
复制代码代码如下:
>var cursor = db.users.find();
> while (cursor.hasNext()) { 
    printjson(cursor.next()); 
}

这样就查询所有的users信息,同样可以这样写
复制代码代码如下:
var cursor = db.users.find();
while (cursor.hasNext()) { printjson(cursor.next); }

同样可以省略{}号
5、forEach迭代循环
复制代码代码如下:
db.users.find().forEach(printjson);

forEach中必须传递一个函数来处理每条迭代的数据信息
6、将find游标当数组处理
复制代码代码如下:
var cursor = db.users.find();
cursor[4];

取得下标索引为4的那条数据
既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者cursor.count();
那样我们也可以用循环显示数据
复制代码代码如下:
for (var i = 0, len = c.length(); i < len; i++) printjson(c[i]);

7、将find游标转换成数组
复制代码代码如下:
> var arr = db.users.find().toArray();
> printjson(arr[2]);

用toArray方法将其转换为数组
8、定制我们自己的查询结果
只显示age <= 28的并且只显示age这列数据
复制代码代码如下:
db.users.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);
db.users.find({age: {$lte: 28}}, {age: true}).forEach(printjson);

排除age的列
复制代码代码如下:
db.users.find({age: {$lte: 28}}, {age: false}).forEach(printjson);

9、forEach传递函数显示信息
复制代码代码如下:
db.things.find({x:4}).forEach(function(x) {print(tojson(x));});

 

八、其他 
1、查询之前的错误信息

复制代码代码如下:
db.getPrevError();

2、清除错误记录
复制代码代码如下:
db.resetError();

查看聚集集合基本信息
1、查看帮助  db.yourColl.help();
2、查询当前集合的数据条数  db.yourColl.count();
3、查看数据空间大小 db.userInfo.dataSize();
4、得到当前聚集集合所在的db db.userInfo.getDB();
5、得到当前聚集的状态 db.userInfo.stats();
6、得到聚集集合总大小 db.userInfo.totalSize();
7、聚集集合储存空间大小 db.userInfo.storageSize();
8、Shard版本信息  db.userInfo.getShardVersion()
9、聚集集合重命名 db.userInfo.renameCollection("users"); 将userInfo重命名为users
10、删除当前聚集集合 db.userInfo.drop();

 

 

复制代码代码如下:
show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表) 
show users:显示用户 
use :切换当前数据库,这和MS-SQL里面的意思一样 
db.help():显示数据库操作命令,里面有很多的命令 
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

 

http://blog.csdn.net/wwwyuanliang10000/article/details/38661561 

 

 

你可能感兴趣的:(Linux服务器上环境部署汇总)