`
kevinflynn
  • 浏览: 39116 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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文件中配置的,如下所示:

<Host name="localhost"  appBase="webapps"

            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

<Server port="8005" shutdown="SHUTDOWN">【停止tomcat时的端口】

 <Connector port="8081" protocol="HTTP/1.1"

               connectionTimeout="20000"

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

 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />【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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <command> [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 <command> -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 <server:port> 当为从时,指定主的地址和端口
--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没有创建数据库的命令,但有类似的命令
 
<iframe id="cproIframe_u1892994_2" src="http://pos.baidu.com/acom?adn=3&amp;at=231&amp;aurl=&amp;cad=1&amp;ccd=24&amp;cec=GBK&amp;cfv=17&amp;ch=0&amp;col=zh-CN&amp;conBW=0&amp;conOP=1&amp;cpa=1&amp;dai=2&amp;dis=0&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DjrIw4FV4u2x_X9sRqeXwBZ9InLAZ4z0ubJsIUPKnax3ZYaKs-MLq7J8qOVId5Wqr%26wd%3D%26eqid%3D9291429100128f770000000555d549a5&amp;ltu=http%3A%2F%2Fwww.jb51.net%2Farticle%2F48217.htm&amp;lu_161=0&amp;lunum=6&amp;n=jb51_cpr&amp;pcs=1216x638&amp;pis=10000x10000&amp;ps=516x143&amp;psr=1280x800&amp;pss=1216x517&amp;qn=af505fb17bc2b339&amp;rad=&amp;rsi0=580&amp;rsi1=90&amp;rsi5=4&amp;rss0=%23FFFFFF&amp;rss1=%23F7FCFF&amp;rss2=%230000ff&amp;rss3=%23444444&amp;rss4=%23008000&amp;rss5=&amp;rss6=%23e10900&amp;rss7=&amp;scale=&amp;skin=tabcloud_skin_3&amp;stid=5&amp;td_id=1892994&amp;titFF=%E5%AE%8B%E4%BD%93&amp;titFS=12&amp;titTA=left&amp;tn=text_default_580_90&amp;tpr=1440041384412&amp;ts=1&amp;version=2.0&amp;xuanting=0&amp;dtm=BAIDU_DUP2_SETJSONADSLOT&amp;dc=2&amp;di=u1892994&amp;ti=MongoDB%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4%E5%A4%A7%E5%85%A8_MongoDB_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&amp;tt=1440041384397.102.115.119" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" align="center,center" width="580" height="90"></iframe>

如:如果你想创建一个“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 <db name>:切换当前数据库,这和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 

 

 

1
7
分享到:
评论

相关推荐

    在线考试系统文献综述

    基于本系统Web应用程序部署在Web服务器上,客户端无需安装任何软件,只要有Internet Explore5.0以上浏览器,遵守TCP/IP协议都可以登录访问Web服务器的网上考试系统,这也充分体现了B/S结构应用的优越性。 参考...

    IT安全策略汇总-安全中国

    随着2010年的结束,新的攻击类型已经突破了今天传统的防御措施,这给我们敲响了警钟。因为疏忽,谷歌、Adobe和Gawker在安全方面都打了盹,也都... Linux服务器系统最佳安全实践 Windows Server 2008用户权限管理简介

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    史上最全韩顺平毕业班视频------这里只有10月份,8,9,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    史上最全传智播客PHP就业班视频课,8月份视频

    史上最全韩顺平毕业班视频------这里只有8月份,9,10,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    史上最全韩顺平毕业班视频------这里只有9月份,8,10,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    IEP课程管理系统需求文档.docx

    支持运行在Windows或Linux服务器;要基于目前流行的,扩展性、兼容性强的 SSH(Struts+Spring+Hibernate)通用开发框架;系统全面支持B/S结构,客户端支持IE6.0/7.0/8.0。 系统可靠性 系统部署时应充分考虑关键内容...

    (全)传智播客PHP就业班视频完整课程

    8-16 3.web服务器介绍 apache服务器安装 8-16 4.apache服务器使用及配置① 启动和停止 端口配置 8-16 5.apache服务器使用及配置② apache目录结构 8-16 6.apache服务器使用及配置③ apache虚拟目录 8-17 1.apache...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    8-16 3.web服务器介绍 apache服务器安装 8-16 4.apache服务器使用及配置① 启动和停止 端口配置 8-16 5.apache服务器使用及配置② apache目录结构 8-16 6.apache服务器使用及配置③ apache虚拟目录 8-17 1.apache...

    单点登录源码

    单点登录, SSM框架公共模块 ├── zheng-admin -- 后台管理模板 ├── zheng-ui -- 前台thymeleaf模板[端口:1000] ...## 环境搭建(QQ群内有“zheng环境搭建和系统部署文档.doc”) #### 开发工具: ...

Global site tag (gtag.js) - Google Analytics