Xinu's Note - linux
type: channel
link: http://xbug.top/index.php/tag/linux
items: Linux下Python3安装及错误处理
items: Nginx基础配置详解【能用级别】
items: Nginx--Linxu下编译安装Nginx
items: Apache服务器设置多种php运行方式
items: Apache基础配置详解【能用级别】
items: Mysql权限管理控制及安全相关
items: Linux下通用service服务shell脚本
items: Linux下搭建蚂蚁私有云笔记
items: Mongodb三种集群部署方式详解
items: sh脚本异常：/bin/sh^M:bad interpreter: No such file or directory

Linux下Python3安装及错误处理
type: item
date: 2019-06-09T20:33:00+08:00
description: 获取python3 wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz安装python3mkdir -p /server/python3 tar -zxvf Python-3.7.3.tgz cd Python-3.7.3 # 安装依赖 yum -y install zlib zlib-devel yum -y install bzip2 bzip2-devel yum -y install ncurses ncurses-devel yum -y install readline readline-devel yum -y install openssl openssl-devel yum -y install openssl-static yum -y install xz lzma xz-devel yum -y install sqlite sqlite-devel yum -y install gdbm gdbm-devel yum -y install tk tk-devel yum -y install libffi libffi-devel ./configure --prefix=/server/python3 --enable-shared CFLAGS=-fPIC make make install # 创建软链接 ln -s /server/python3/bin/python3.7 /usr/bin/python3 # 查看版本 python3 -V 如图所示安装成功错误处理如出现如下错误python3: error while loading shared libraries: libpython3.7m.so.1.0:cannot open shared object file: No such file or directoryldd python3 名为libpython3.7m.so.1.0的动态链接库找不到，找到它的路径，加载进去即可 find / -iname 'libpython3.7m.so.1.0' # 配置文件的名字可以随便起，起的有意义比较好 vim /etc/ld.so.conf.d/python3.conf # 将路径添加进去 然后保存 /server/python/lib # 加载动态链接库 ldconfig # 查看依赖 已经全部找到了 ldd python3关于ldconfigldconfig动态链接库管理命令ldconfig命令 的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下，搜索出可共享的动态链接库（格式如lib.so）,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache，此文件保存已排好序的动态链接库名字列表，为了让动态链接库为系统所共享，需运行动态链接库的管理命令ldconfig，此执行程序存放在/sbin目录下。ldconfig通常在系统启动时运行，而当用户安装了一个新的动态链接库时，就需要手工运行这个命令。ldconfig几个需要注意的地方：往/lib和/usr/lib里面加东西，是不用修改/etc/ld.so.conf的，但是完了之后要调一下ldconfig，不然这个library会找不到。想往上面两个目录以外加东西的时候，一定要修改/etc/ld.so.conf，然后再调用ldconfig，不然也会找不到。比如安装了一个mysql到/usr/local/mysql，mysql有一大堆library在/usr/local/mysql/lib下面，这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib，保存过后ldconfig一下，新的library才能在程序运行时被找到。如果想在这两个目录以外放lib，但是又不想在/etc/ld.so.conf中加东西（或者是没有权限加东西）。那也可以，就是export一个全局变量LD_LIBRARY_PATH，然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案，在没有权限或临时需要的时候使用。ldconfig做的这些东西都与运行程序时有关，跟编译时一点关系都没有。编译的时候还是该加-L就得加，不要混淆了。总之，就是不管做了什么关于library的变动后，最好都ldconfig一下，不然会出现一些意想不到的结果。不会花太多的时间，但是会省很多的事。再有，诸如libdb-4.3.so文件头中是会含有库名相关的信息的（即含“libdb-4.3.so”，可用stri…

Nginx基础配置详解【能用级别】
type: item
date: 2019-06-05T17:45:00+08:00
description: Nginx安装文档看 这里基础配置详解nginx.conf 配置结构... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... } location [PATTERN] { ... } } server { ... } ... #http全局块 } main全局块：配置影响nginx全局的指令。一般有运行nginx服务器的用户组，nginx进程pid存放路径，日志存放路径，配置文件引入，允许生成worker process数等。events块：配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数，选取哪种事件驱动模型处理连接请求，是否允许同时接受多个网路连接，开启多个网络连接序列化等。http块：可以嵌套多个server，配置代理，缓存，日志定义等绝大多数功能和第三方模块的配置。如文件引入，mime-type定义，日志自定义，是否使用sendfile传输文件，连接超时时间，单连接请求数等。server块：配置虚拟主机的相关参数，一个http中可以有多个server。location块：配置请求的路由，以及各种页面的处理情况。不同模块指令关系：server继承main；location继承server；upstream既不会继承指令也不会被继承，它有自己的特殊指令，不需要在其他地方的应用nginx内置全局变量变量名功能$host请求信息中的 Host，如果请求中没有Host行，则等于设置的服务器名$request_method客户端请求类型，如 GET、 POST$remote_addr客户端的 IP地址$args请求中的参数$content_length请求头中的 Content-length字段$http_user_agent客户端agent信息$http_cookie客户端cookie信息$remote_addr客户端的IP地址$remote_port客户端的端口$server_protocol请求使用的协议，如HTTP/1.0、·HTTP/1.1$server_addr服务器地址$server_name服务器名称$server_port服务器的端口号nginx.conf 基本配置模板每个指令必须有分号结束########### 每个指令必须有分号结束。################# #配置用户或者组，默认为nobody nobody。 user www www; #工作的进程数，系统会根据服务器自动生成 worker_processes 2; #指定nginx进程运行文件存放地址 pid /nginx/pid/nginx.pid; #制定错误日志路径，级别。这个设置可以放入全局块，http块，server块，级别依次为：debug|info|notice|warn|error|crit|alert|emerg error_log log/error.log debug; #工作模式及连接数上限 events { #设置网路连接序列化，防止惊群现象发生，默认为on accept_mutex on; #设置一个进程是否同时接受多个网络连接，默认为off multi_accept on; #事件驱动模型，select|poll|kqueue|epoll|resig|/dev/poll|eventport use epoll; #单个work进程允许的最大连接数，默认为512 worker_connections 1024; } #http服务器 http { #文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义 include mime.types; #默认文件类型，默认为text/plain default_type application/octet-stream; #取消服务访问日志 #access_log off; #自定义日志格式 log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #设置访问日志路径和格式。"log/"该路径为nginx日志的相对路径，mac下是/usr/local/var/log/。combined为日志格式的默认值 access_log log/access.log myFormat; rewr…

Nginx--Linxu下编译安装Nginx
type: item
date: 2019-06-03T22:57:00+08:00
description: 文档官网文档地址 http://nginx.org/en/docs/configure.html获取资源 wget wget http://nginx.org/download/nginx-1.16.0.tar.gz安装常用编译选项文件和权限--prefix=path定义 nginx 文件的安装路径。configure 的其他选项如果使用相对路径，那么以此路径为基础路径。(except for pathsto libraries sources)。nginx.conf 文件中的相对路径也以此为基础路径。默认--prefix=/usr/local/nginx--sbin-path=path设置 nginx 二进制程序的路径名，这个名字只在安装期间使用。 默认 --sbin-path=prefix/sbin/nginx--conf-path=path设置 nginx.conf 的路径。nginx 可在启动时手动以 -c file 参数指定其他配置文件。默认--conf-path=prefix/conf/nginx.conf--pid-path=path设置 nginx.pid 文件的路径。安装nginx之后，可在 nginx.conf 文件中使用 pid 指令修改该路径。默认--pid-path=prefix/logs/nginx.pid--error-log-path=path设置 nginx 错误日志的路径。安装nginx之后，可在 nginx.conf 文件中使用 error_log 指令修改该路径。默认--error-log-path=prefix/logs/error.log--http-log-path=path设置 nginx 访问日志的路径。安装nginx之后，可在 nginx.conf 文件中使用 access_log 指令修改该路径。默认--http-log-path=prefix/logs/access.log--user=name设置启动 worker 进程时所使用的非特权用户名。安装nginx之后，可在 nginx.conf 文件中使用 user指令修改用户名。默认 --user=nobody--group=name设置启动 worker 进程时所使用的非特权用户组名。安装nginx之后，可在 nginx.conf 文件中使用 group指令修改用户组名。默认 --group=nobody事件循环--with-select_module--without-select_module是否编译 select 模块。使用 select 模块可使 nginx 工作于 select() 模式。 如果 nginx不支持其他更合适的模块，如 kqueue, epoll 或者 /dev/poll，该模块被自动编译。--with-poll_module--without-poll_module是否编译 poll 模块。使用 poll 模块可使 nginx 工作于 poll() 模式。 如果 nginx 不支持其他更合适的模块，如kqueue, epoll 或者 /dev/poll，该模块被自动编译。可选模块--without-http_gzip_module不编译 gzip 压缩模块。压缩模块用于压缩 HTTP 响应报文。该模块的编译和运行依赖 zlib 库。--without-http_rewrite_module不编译 rewrite 模块。rewrite 模块用于重定向 HTTP 请求，也可以改写 HTTP 请求的 URI。该模块的编译和运行依赖PCRE 库。--without-http_proxy_module不编译代理模块--with-http_ssl_module编译 ssl 模块。ssl 模块使 nginx 支持 HTTPs 协议。该模块默认不编译。该模块的编译和运行依赖 OpenSSL 库。--with-pcre=path设置PCRE库源的路径。库分发（版本4.4-8.43）需要从PCRE站点下载并提取。其余由nginx的./configure和make完成。对于location指令中的正则表达式支持和ngx_http_rewrite_module模块，需要使用库。--with-pcre-jit编译 PCRE 库时，加入 “just-in-time compilation” 支持 (1.1.12, the pcre_jit directive)--with-zlib=path设置 zlib 库的源码路径。首先需要下载和解压 zlib 库。 要求 zlib 库的版本范围为 1.1.3 -1.2.8，设置之后，其余的就交给 ./configure 和 make 命令。gzip 压缩模块依赖 zlib 库。编译控…

Apache服务器设置多种php运行方式
type: item
date: 2019-05-30T09:25:00+08:00
description: php在apache服务器下运行方式主要有一下几种：模块化(效率最高)CGI方式(不推荐，效率低)FastCgiphpfpm1. 模块化方式在编译安装php的时候,增加--with-apxs2=/server/httpd/bin/apxs 选项，会自动生成php5_module。在http.conf文件中如下设置 # 加载模块 LoadModule php5_module modules/libphp5.so # 设置方式1 <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> # 设置方式2 # 在<IfModule mime_module>中添加如下内容 AddType application/x-httpd-php .php 2.CGI方式CGI是通用网关接口协议的缩写，是一种通用的规范协议，与语言无关，编译安装的php在bin下会存在一个php-cgi，就是php自带的CGI接口程序设置如下# 加载模块 LoadModule alias_module modules/mod_alias.so LoadModule cgid_module modules/mod_cgid.so(linux) LoadModule cgi_module modules/mod_cgi.so(windows) LoadModule actions_module modules/mod_actions.so # 在安装好的php目录下的bin下复制php-cgi到 /server/www/cgi-bin # /server/www/cgi-bin 此目录是在安装apache的时候自动生成的，/server/www/是apaceh服务器的网页根目录 # 将安装好的php-cgi复制到有执行CGI程序权限的目录下 # 这个目录可以是任意目录，只要在配置中给权限就好，建议放在官方推荐的位置，根据安装位置的不同，默认的位置不同 cp /server/php56/bin/php-cgi /server/www/cgi-bin/ # 在http.conf文件中查找ScriptAlias，规定了CGI执行目录 ScriptAlias /cgi-bin/ "/server/www/cgi-bin" <Directory "/server/www/cgi-bin"> AllowOverride None Options All Require all granted </Directory> AddType application/x-httpd-php .php Action application/x-httpd-php /cgi-bin/php-cgi # application/x-httpd-php 可以自定义 扩展.php的Mime 3.FastCgi方式FastCgi是对CGI方式的一个优化，效率有显著提升php官网中的FastCgi安装说明 点我不过FastCgi的官网已经倒闭了....好在Apache提供了新的模块mod_fcgid来支持FastCgi的实现mod_fcgid官方文档地址 点我# 安装 mod_fcgid 模块 wget http://mirror.bit.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz tar -zxvf mod_fcgid-2.3.9.tar.gz cd mod_fcgid-2.3.9 APXS=/server/httpd/bin/apxs ./configure.apxs make make install 查看http.conf文件，会发现配置文件LoadModule最后面会自动加了一行 LoadModule fcgid_module modules/mod_fcgid.so # 这里是通用设置所有的.php文件都会被处理 # 不同的虚拟机还可以配置不同的php版本处理 <IfModule fcgid_module> # 初始化设置 # CGI进程的最大请求个数 FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 #fcgi每个进程的最大请求数要<= 上面的PHP_FCGI_MAX_REQUESTS 否则会出现请求完不成的问题 FcgidMaxRequestsPerProcess 1000 #php-cgi最大的进程数 FcgidMaxProcesses 5 #最大执行时间 FcgidIOTimeout 120 FcgidIdleTimeout 120 AddHandler fcgid-script .php <FilesM…

Apache基础配置详解【能用级别】
type: item
date: 2019-05-30T09:14:00+08:00
description: Apache安装参看此文章 https://xbug.top/index.php/archives/195.html基础命令# 启动服务 /server/httpd/bin/apachectl -k start # 立即停止 kill -TERM `cat /server/httpd/logs/httpd.pid` # 立即停止2 /server/httpd/bin/apachectl -k stop # 优雅重启 # 此方式重启不会停止服务 # 在重启过程中确保有适当数量的进程和线程以响应客户端的请求 /server/httpd/bin/apachectl -k graceful # 立即重启 /server/httpd/bin/apachectl -k restart # 优雅停止 # 进程会完成现有的服务再退出，如果没有服务，立刻退出 /server/httpd/bin/apachectl -k graceful-stop # 检测配置文件语法错误 /server/httpd/bin/apachectl -t 配置文件详解主配置文件httpd.conf详解# 常用配置及配置详解 # apache安目录，编译时指定，不指定路径时默认路径为/usr/local/apache2 ServerRoot "/server/httpd" # 主站监听端口，可以监听多个端口 #Listen 12.34.56.78:80 # Listen 443 Listen 80 # 模块动态加载，这里只列举几个用到的模块 # 别名 LoadModule alias_module modules/mod_alias.so # url重写 LoadModule rewrite_module modules/mod_rewrite.so # php以模块的形式处理请求 LoadModule php5_module modules/libphp5.so # <Ifxxxx > 容器下文与详细说明 <IfModule unixd_module> # 运行httod服务的用户 User www # 运行httod服务的用户组 Group www </IfModule> # 管理员邮件地址 ServerAdmin you@example.com # 出错时是否显示服务器信息 ServerSignature On # On显示 # Off不显示,默认Off # Email,On的升级版，显示且点击ServerName就会向ServerAdmin中设置的邮箱发邮件 #显示的内容如下 # Apache/2.4.38 (Unix) PHP/5.6.38 Server at 192.168.73.129 Port 80 # 控制Response Header中的Server显示 ServerTokens Full # 选项有 Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full # 默认是Full 这里的选项也会影响ServerSignature的显示内容，主要是详细的服务器版本号内容 # 主站点名称，域名或者IP皆可 ServerName 127.0.0.1:80 # 保持长连接设置 KeepAlive On # 一个连接服务最多请求次数 MaxKeepAliveRequests 100 # 长连接持续时间,超过该时间没有请求数据则断开连接 KeepAliveTimeOut 15 # 记录父进程PID的文件,默认值如下 PidFile "logs/httpd.pid" # 常用的资源限制配置,可减轻DOS攻击 # 设置客户端发送的HTTP请求的最大字节数 默认0 不限制 LimitRequestBody 0 # 限制为500K # LimitRequestBody 512000 # 设置客户端向服务器请求中HTTP请求头域的数量 LimitRequestFields 100 # 默认值一般为100 # 设置客户端发送的HTTP请求头的最大字节数 一般不要改动 LimitRequestFieldsize 8190 # 设置客户端发送的HTTP请求行的最大字节数 # GET / HTTP/1.1 LimitRequestLine 8190 # Dirctory容器对根目录的限制 <Directory /> # indexs 没有默认文件的情况下展示目录结构 options更多选项下文详细叙述 options indexes # 禁用.htaccess文件 AllowOverride none Require all denied </Directory> # 主站访问的根目录 DocumentRoot "/server/…

Mysql权限管理控制及安全相关
type: item
date: 2019-05-19T11:29:00+08:00
description: 授权操作详解授权五要素要授予的权限【权限列表中的内容】被授予访问权限的数据库或表【授权级别表中的内容】用户名地址【地址列表中的内容，mysql.user表中的host字段】密码【非必须】授权立即生效flush privileges; # 使用flush privileges;立即使权限生效，否则需要重启服务授权取消授权 语句grant 权限 on 授权范围 to username@'地址' [identified by '密码']; # 授权给账户root所有权限，允许任意地址连接，密码为123456 grant all on *.* to root@'%' identified by '123456'; # all privileges 中的 privileges 可省略 flush privileges; # 回收权限 revoke 权限 on 授权范围 from username@'地址'; # 回收root用户的查询权限 revoke select on *.* from root@'%'; flush privileges; 常用操作注意: 用户名@host 才是唯一用户查看账号root@'%'的权限 show grants for root@'%';删除用户root@'%' drop user 'root'@'%';用户改名、修改hostrename user root@'%' to admin@'localhost';修改用户root@'localhost'密码set password for root@'localhost' = password('123456');导出数据表内容select * into outfile '/tmp/outfile.txt' from loadtest; # 上面的语句只能将文件导出到mysql服务所在的主机上 mysql -h192.168.1.1 -uroot -p123456 -P3306 -e"select * from testdb.testtable;" > /tmp/loadtest.txt # 此方式可将数据导出到客户机上 授权指定列 grant select(id, username, password) on testdb.users to root@'localhost';授权存储过程 grant execute on procedure testdb.pr_add to root@'localhost'; 安全性相关删除任何无关的管理员用户和空密码的管理员用户,有需求再开删除test库(5.7没了),因为这个库默认是所有人都有权限读写,存在漏洞 drop database test;删除存放数据库的表信息。 delete from mysql.db;SSL加密设置,用途就是把数据加密,防止被截取后破解,5.6要加ssl指定文件位置配置,5.7自动开,然后执行命令就可以了.#执行命令,在数据目录创建key文件,下面这个命令是封装了整个创建过程,就不用做那么多复杂的事了 #不过这个命令文件是5.7新加入的,5.6中没有这个命令文件,但是可以放到在5.6上面用,还算方便. /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data/ #然后看看开启了没有 mysql>SHOW VARIABLES LIKE 'have_ssl'; | have_ssl | YES | #进入mysql,授权ssl专用用户 mysql> grant all privileges on *.* to 'sslroot'@'%' identified by '123123' require ssl; #用ssl专用用户登录 mysql -usslroot -p'123123' -h127.0.0.1 #查看当前状态,SSL已启用 mysql> \s Current user: sslroot@127.0.0.1 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256不过开启SSL需要谨慎,因为数据进行了加密处理,毫无疑问服务器需要消耗资源来校验密文,官方说明可能会下降25%的性能,还是比较高的.对于高并发的环境自然是性能下降明显,除非安全要求非常高,不然不建议开,一般来说只要授权限制访问IP是内网的就已经可以解决安全问题.权限相关参考内容权限列表权限关键字级别说明ALL PRIVILEGES所有授予所有权限CREATE数据库、表或索引创建数据库、表或索引权限DROP数据库或表删除数据库或表权限GRANT OPTION数据库、表或保存的程序赋予权限选项REFEREN…

Linux下通用service服务shell脚本
type: item
date: 2019-05-19T10:16:19+08:00
description: 通用启动脚本参数设置EXECON程序启动的路径PID进程号记录文件路径service_name服务名称设置完成后保存在/etc/init.d目录下授权chmod +x 文件名service 文件名 (start stop restart status)注意事项：# chkconfig: 58 74 这条是不能删除的，不然会报错："service php-fpmd does not support chkconfig"chkconfig 文件名 --add 设置开机启动就设置不了了。# chkconfig: 58 74 （58是启动优先级，74是停止优先级，优先级范围是0－100，数字越大，优先级越低） # chkconfig 文件名 --add //设置开机启动 # chkconfig --list //查看service里设置列表脚本内容如下#!/bin/bash #-1------------配置 # 主程序脚本存放路径及脚本名称（这里的把主程序功能代码EXCON写进这个启动脚本了） EXECON="/usr/local/nginx/sbin/nginx" # 进程PID记录文件位置及名称 PID="/var/run/nginx.pid" [ ! -f $PID ] && : > $PID # 服务名称（提示信息服务名称,可以中英文） service_name="nginx" ############### # SysV Init Information # chkconfig: - 58 74 ### BEGIN INIT INFO # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 #-3--------------启动和关闭 server_id=`cat $PID` case "$1" in start) -n $server_id && echo "(server_id=$server_id) $service_name is runing..." && exit $EXECON & pid=$! echo $((pid+1)) > $PID echo "serverd to start successfully!" ;; stop) ! -n $server_id && echo -e "$service_name is not startd... \nYou can start it with start or restart..." && exit kill $server_id &> /dev/null : > $PID echo "serverd shut down successfully!" ;; status) if -n $server_id ;then echo "(server_id=$server_id) $service_name is runing..." else echo -e "$service_name is not startd... \nYou can start it with start or restart..." fi ;; restart) $0 stop $0 start ;; *) echo "Please use start, stop, restart or status as first argument" ;; esac

Linux下搭建蚂蚁私有云笔记
type: item
date: 2019-05-17T16:13:36+08:00
description: Linux下搭建蚂蚁笔记-- 蚂蚁私有云笔记官网蚂蚁笔记官网 蚂蚁笔记MongoDB数据库搭建蚂蚁笔记的后台使用的是MongoDB数据库MongoDB安装最详细指南戳这里个人自建日记的话，使用单机服务就可以满足需求，按说明启动MongoDB服务获取蚂蚁笔记下载地址： http://leanote.org/#downloadlinux获取 cd /www/wwwroot wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-386-v2.6.1.bin.tar.gz安装蚂蚁笔记tar -zxvf leanote-linux-386-v2.6.1.bin.tar.gz cd leanote vim conf/app.conf # 修改默认配置文件 app.secret=xxx # 这个一定要改 随便改 越复杂越好 i18n.default_language=en-us #默认是英文的，修改为中文 i18n.default_language=zh-cn //db的参数根据上一步启动的数据来填写，默认不需要更改 db.host=127.0.0.1 db.port=27017 db.dbname=leanote # required修改完配置文件保存即可导入初始数据mongorestore -h 127.0.0.1 -d leanote --dir /www/wwwroot/leanote/mongodb_backup/leanote_install_data启动服务mkdir -p /www/wwwroot/leanote.log nohup /bin/bash /www/wwwroot/leanote/bin/run.sh >> /www/wwwroot/leanote/log/run.log 2>&1 & //以守护进程的方式运行访问 服务器ip:9000即可

Mongodb三种集群部署方式详解
type: item
date: 2019-05-13T08:57:00+08:00
description: MongoDB数据库服务集群部署安装文档MongoDB服务安装1.1 获取MongoDB安装包当前登录用户角色为root 所在目录为/root 操作系统为 Centos6.1下载地址：https://www.mongodb.com/download-center/community根据服务器系统获取安装包，当前安装的机器为centos6.1版本，选择REHL 6.2版本wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.12.tgz1.2 安装MongoDB1.2.1 准备工作创建安装目录、数据存放目录、日志目录mkdir /opt/mongodb # 程序安装目录 mkdir -p /var/mongodb/data # 数据存放目录 mkdir -p /var/mongodb/log # mongodb日志目录 1.2.2 安装MongoDB# 解压缩文件 tar -zxvf mongodb-linux-x86_64-rhel62-3.6.12.tgz # 移动文件到/opt/mongodb mv mongodb-linux-x86_64-rhel62-3.6.12/* /opt/mongodb/ # 删除 空目录 rm mongodb-linux-x86_64-rhel62-3.6.12 -r 1.2.3 单实例MongoDB配置文件mongdodb的服务启动依赖配置文件的设置或者纯命令行参数来设置，命令行参数的方式测试还好，生成环境上不利于管理，这里创建配置文件用来设置mongodb，默认是不存在配置文件的。vim /opt/mongodb/mongodb.conf # 以下为配置文件详细配置 # 数据库文件位置 dbpath=/var/mongodb/data # 日志文件路径 logpath=/var/mongodb/log/mongodb.log # pid文件路径 pidfilepath=/opt/mongodb/mongod.pid # 追加的方式写日志 logappend=true # 绑定ip 默认绑定127.0.0.1 bind_ip=127.0.0.1 # 绑定端口 默认27017 port=27017 # 以守护进程的方式运行 fork=true # 不同数据库存放在不同目录 directoryperdb=true # 注意该参数需要服务器使用XFS filesystem # 上述参数如果服务器使用的非XFS filesystem，启动会出错，将该参数改为false wq 保存配置文件详细的配置参数可参考：https://www.cnblogs.com/cwp-bg/p/9479945.htmlhttps://www.03sec.com/3176.shtmlYAML格式配置文件创建MongoDB在2.6版本开始支持使用yaml格式的配置文件，官方建议使用yaml格式文档上述相同参数的yaml格式配置文件如下vim /opt/mongodb/mongodb.yaml # ------------以下为yaml格式配置文件内容---------------- systemLog: destination: "file" #日志使用文件 path: "/var/mongodb/log/mongod.log" #日志文件路径 logAppend: true #允许日志追加记录 processManagement: fork: true #后台守护进程启动 pidFilePath: "/opt/mongodb/mongod.pid" #pid文件路径 net: bindIp: "127.0.0.1" #绑定ip地址 port: 27017 #实例监听端口 storage: dbPath: "/var/mongodb/data" #数据文件路径 directoryPerDB: false #一个库一个文件,此参数与服务器使用的文件系统有关 注意：以下操作涉及到的配置文件如无特殊说明，均为yaml格式配置1.2.4 启动服务# -f 指定配置文件路径 等同 --config # 以下两个命令二选一 效果完全一致 /opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.conf /opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.yaml 启动成功后会提示如下child process started successfully, parent exiting使用ps查看是否成功启动 ps aux|grep 'mongod' 1.2.5 指定用户m…

sh脚本异常：/bin/sh^M:bad interpreter: No such file or directory
type: item
date: 2019-05-06T11:34:31+08:00
description: sh脚本异常：/bin/sh^M:bad interpreter: No such file or directory在windows系统中编辑的.sh文件可能有不可见字符，所以在Linux系统下执行会报以上异常信息。vim 目标脚本文件:set ff可以看到 fileformat=doc:set ff=unix可修改成功 wq保存