linux一键配置

2006-12-29 16:29:00 jiangxinyu 阅读数 0

[学习linux]Linux一键搭建PHP环境

软件介绍:
  Moon_LServer(月亮)是一款Linux下一键搭建Apache+PHP+MySQL+Zend+PHPMyAdmin+GD库的软件,安装方法非常简单,适合经常搭建服务器和菜鸟以及懒人使用。
  Moon_LServer里的软件均为原开发商开发的源代码,经过现场编译、模拟手工进行安装。
  Moon_LServer V1.2所包含的程序及版本:
  Apache 2.2.3
  PHP 5.1.6
  MySQL 5.0.27
  Zend
  PHPMyAdmin
  Jpeg/PNG等图像函数库

更新历程:
  V1.0RC2:将Apache改为现场编译与make,使其可以在更多Linux平台运行(目前测试平台有:CentOS4.4/Redhat AS4)
  V1.0RC3:全部采用原始未编译过的代码,现场编译。这样,体积缩小了不少,而且,兼容性增加了许多。
  V1.0正式版:修正了zlib目录错误,浓缩了MySQL安装代码。
  V1.1:PHP由原来的5.1.4更新至最新的5.1.6;增加了两款PHPMyAdmin的风格;将安装脚本加上中文注释,更有利于自己DIY。
  V1.2:加入GD,更好的兼容CentOS4,加入Apache的Rewrite功能。
  V1.3:重新改编默认虚拟主机配置文件larkmoon.conf,解决乱码问题;增加卸载脚本;MySQL更新至5.0.27(标准版);加入ProFtpd。



下载地址:
  网通 FTP ftp://moon:lserver@cnc.larkmoon.com/moon_lserver_1.3.tar.gz
  电信HTTP http://vnet.larkmoon.com/download/moon_lserver_1.3.tar.gz


安装方法:
  如果您还没有安装Linux,我们强烈推荐您安装CentOS4.4系统(本帖二楼有下载地址)
  如何服务器已安装Apache或MySQL,请卸载并重启后再安装,切记!
  这里是在线安装方法.也可以自行下载然后上传至服务器进行安装.

  1.使用root使用系统,并且进入root目录(一定要进入root目录执行!)
  # cd /root
  2.然后进行下载
  # wget (下载地址)
  3.解压
  # tar zxvf moon_lserver_1.2.tar.gz
  4.加入执行权限,进行安装
  # cd /root/serverd
  # chmod 744 setup.sh
  # ./setup.sh

  5.在安装Zend的时候,一直按回车,当提示输入php.ini路径时,输入“/usr/local/php/lib”(不包括引号)。
  6.在最后,会安装Proftpd,安装完后,会让你输入FTP用户"larkmoon"的密码,输入即可,然后,就可以用这个用户及你输入的密码登陆系统了,如果你不想用这个用户,请在系统用户中删掉它,然后,自己建立系统账户,然后修改proftpd的配置文件(/usr/local/ftpd/etc/proftpd.conf)。【如果你不想安装proftpd,请用vi或其它编辑器打开setup.sh删除底部#FTP#那一段】
  7.最后,重新启动计算机(如果不重启,MySQL和FTP可能会很反常)。重启之后,打开浏览器,输入服务器的IP,本机输入http://localhost,如果页面正常,就OK了
  MySQL默认用户名为root,默认密码为larkmoon.com

  
推荐环境:推荐定制安装CentOS4.3(或CentOS4.4)

  
  
FAQ

  问:如何建立虚拟主机?
  答:/usr/local/apache2/conf/vhosts为虚拟主机目录,里面已经有一个配置文件,你可以打开修改,如果再建立一个虚拟主机,在文件后面添加内容也行,再创建一个配置文件也行,凡是在/usr/local/apache2/conf/vhosts里的配置文件,不管文件名是什么,都有效。
友情提示:如果使用的是Linux图形模式下的文件编辑器编辑的话,建议取掉自动备份,否则,可能会出错。
  
  问:默认wwwroot目录在哪里?如何改理默认目录?
  答:/usr/local/apache2/htdocs,如果要更改,打开/usr/local/apache2/conf/vhosts下的配置文件,把两个/usr/local/apache2/htdocs改成你想要的目录。

  问:FreeBSD系统下可以使用吗?
  答:我们只在Linux下测试过,FreeBSD没有进行测试,具体能否使用,还是个未知数。

  问:Moon_LServer在什么环境下运行最佳?
  答:如何您还没有安装Linux的话,我们推荐您安装CentOS4.4.安装时一定要安装开发工具!切记,否则,本程序可能无法运行。

  问:安装时出现错误,但可以正常使用,会影响今后的使用吗?
  答:如果系统以前安装过jpeg/png图像库,再次安装肯定会出错,如果可以正常使用,说明一切都装好了,装PHP的时候,会挂载前面所有安装过的程序,如果PHP安装正常,前面的就全部装好了,放心使用就可以了。

  问:如何卸载?
  答:执行安装包里的uninstall.sh就可以了。

附上centos4.4的下载地址:(前3cd就可以了)

    CD 1 : http://mirror.tini4u.net/centos/4.4/isos/i386/CentOS-4.4-i386-bin1of4.iso
    CD 2 : http://mirror.tini4u.net/centos/4.4/isos/i386/CentOS-4.4-i386-bin2of4.iso
    CD 3 : http://mirror.tini4u.net/centos/4.4/isos/i386/CentOS-4.4-i386-bin3of4.iso
    CD 4 : http://mirror.tini4u.net/centos/4.4/isos/i386/CentOS-4.4-i386-bin4of4.iso
    md5校验码:http://mirror.tini4u.net/centos/4.4/isos/i386/md5sum

详细的安装步骤: http://centospub.com/make/install.html

在这感谢Lserver作者煊煊
2016-09-07 15:57:28 dawangxiong123 阅读数 9298

之前每次配置web环境都是百度找度娘,然后一个一个看,发现都太啰嗦了,找的人也累,所以今天自己整理了一份,也便于以后自己参考

这里用的是阿里云服务器centos

安装说明

1、首先到阿里云市场搜“Linux一键安装web环境”下载安装包,也就2块钱,或者找度娘有人会分享免费的出来

一键安装包sh-1.x.x,可在阿里云所有linux系统上部署安装,此安装包包含的软件:

nginx / apache /mysql / php / php扩展 / JDK / Tomcat / ftp /phpwind / phpmyadmin

2、执行一键安装包(./install.sh),会自动清理之前一键安装包安装过的环境,将软件安装在/alidata目录下

如果您已经安装过一键安装包,再次执行安装,如若有重要数据,请自行备份/alidata目录。

执行以下命令可以卸载:

 chmod  777 -R sh-1.x.x

 cd sh-1.x.x

./uninstall.sh

开始安装

1、首先准备好连接linux服务器的工具,推荐用xshell和xftp

2、打开xshell,填写IP地址,用户名,密码就进入如下页面



3、打开xftp,上传一键安装文件



4、回到shell页面,ls看到多了sh-1.x.x目录


接下来按照说明,分步骤敲入安装命令

输入命令:chmod –R 777 sh-1.4.4

                    cd sh-1.4.4

                   ./install.sh


根据提示,选择你就安装的版本,一直往下,


到这里已经安装结束了,但不能保证就是安装成功的,

输入命令 :netstat  -tunpl


我们可以看到正在运行状态的服务及端口:9000端口是php进程服务,3306端口是mysql服务,80端口是nginx服务,21端口是ftp服务

如果看到以上信息,则说明安装没有异常

到这里安装就真正的结束了,一切OK。


备注:

那我怎么登录ftp和mysql?

在命令行里输入: cat account.log

或者在./sh-1.x.x下面的account.log文件中查看




网站目录:/alidata/www
服务器软件目录:/alidata/server

Mysql 目录 /alidata/server/mysql

Php目录/alidata/server/php


选择了nginx 那么会有一个nginx 目录在 /alidata/server/nginx/

Nginx 配置文件在/alidata/server/nginx/conf

Nginx虚拟主机添加 你可以修改/alidata/server/nginx/conf/vhosts/phpwind.conf

选择了apache那么会有一个httpd 目录在 /alidata/server/httpd


apache 配置文件在/alidata/server/httpd/conf

apache虚拟主机添加 你可以修改/alidata/server/httpd/conf/vhosts/phpwind.conf

 

各个服务操作命令汇总:

nginx

/etc/init.d/nginx start/stop/restart/reload)

apache:

/etc/init.d/httpd start/stop/restart/...

mysql:

/etc/init.d/mysqld  start/stop/restart/...

php-fpm:

/etc/init.d/php-fpm  start/stop/restart/...

ftp:

/etc/init.d/vsftpd  start/stop/restart/...

比如启动nginx:

/etc/init.d/nginx start


备注:MySQL远程,SVN配置,防火墙设置

grant ALL PRIVILEGES ON *.* to wangxiong@"%" identified by "123456";
FLUSH PRIVILEGES;
vi :wq保存退出
   :q退出

mkdir /opt/svn/repos
svnadmin create /opt/svn/repos
===先设置passwd
[users]
# harry = harryssecret
# sally = sallyssecret
hello=123
用户名=密码
===再设置权限authz
[/]
hello= rw
===最后设定snvserv.conf
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz   # 访问控制文件
realm = /opt/svn/repos # 认证命名空间
以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
===连接
启动svn: svnserve -d -r /opt/svn/repos
查看SVN进程
ps aux|grep svnserve
停止重启SVN
killall svnserve //停止
或kill -9 进程id
svn: svnserve -d -r /opt/svn/repos // 启动
如果已经有svn在运行,可以换一个端口运行
svnserve -d -r /opt/svn/repos --listen-port 3391
这样同一台服务器可以运行多个svnserver
svn://your server address (如果指定端口需要添加端口  :端口号)
服务器svn checkout
同步 svn://127.0.0.1/Test 到 /www/Test
cd /www
svn checkout svn://127.0.0.1/Test ./


iptables -L -n  查看防火墙的配置
service iptables status 查看防火墙状态
service iptables start|restart|stop 开启|重启|关闭

centos7默认防火墙为firewalld
关闭firewalld用iptables
systemctl status firewalld   查看状态
systemctl stop firewalld     停止
systemctl disable firewalld  禁止开机启动
systemctl mask firewalld     禁用firewalld

yum install iptables-services 安装iptables
vi /etc/sysconfig/iptables    #编辑防火墙配置文件

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT


systemctl restart iptables 重启iptables
systemctl restart ip6tables
systemctl enable iptables  设置开机启动
systemctl enable ip6tables

systemctl unmark iptables  开启

2016-07-07 18:55:43 zt924411018 阅读数 0

Linux一键部署Web环境

您可以根据业务需要,选择下列任意一种方式部署云服务器 ECS 实例的使用环境:

  • 镜像部署
  • 手动部署

下表列出了两种部署方式的特点。一般推荐镜像部署。如果您需要个性化定制部署,建议使用手动部署。

对比项镜像部署手动部署
部署所需时间3-5分钟,快速部署上云1-2天。选择适合的操作系统、中间件、数据库、各类软件、插件、脚本,再进行安装和配置
专业性 IOPS由运维过万级用户的优质服务商提供依赖开发人员的开发水平
个性化支持主流应用场景可满足个性化的部署要求
安全性经过严格安全审核,集成最稳定安全的版本依赖开发人员的开发水平
售后服务专业售后工程师团队支持依赖运维人员的经验,或由外包团队支持

注意: 本文档只介绍通用的操作步骤。一般镜像软件安装包都包含了操作指南,请阅读镜像操作指南进行具体的安装和配置。

阿里云的云市场提供了丰富的镜像资源。镜像集成了操作系统和应用程序。在创建实例时,您可以选择包含了应用环境的镜像,创建后无需再部署环境。

注意:云服务器 ECS 不支持虚拟化软件(如 KVM、Xen、VMware 等)的安装部署。

示例 I:从镜像市场购买镜像(操作系统+应用)、部署环境

说明:本节介绍的方法适用于已经购买实例、但想使用镜像重新部署环境的用户。此外,您也可以在创建实例的时候就选择镜像,请参考创建实例

如果您想使用镜像市场的镜像来替换当前实例的操作系统,可以通过本节介绍的更换系统盘的方法来实现。

更换系统盘的时候,数据盘的数据则不会受到影响。因此建议您将系统盘的个人数据备份到数据盘中,或采用其他方式进行备份。

更换系统盘后,IP 地址不会改变。

如果您购买的实例已经开始运行,但是您想使用镜像市场中的镜像重新部署环境,操作步骤如下:

  1. 登录云服务器管理控制台

  2. 找到需要重新部署环境的实例。

  3. 如果该实例刚刚创建,可以直接停止实例。如果实例已经运行了一段时间,您想保留其中的数据,请在操作前将数据备份到数据盘中。
    注意在更换镜像后,系统盘的数据会全部被清空,服务器的自动备份的快照和手动备份的快照也将全部清空。因此务必做好数据备份工作

  4. 停止实例。

  5. 确认停止实例。

  6. 实例停止后,单击实例名称,或者单击右侧的 管理

  7. 在左侧的 配置信息 中,单击 更多 > 更换系统盘

  8. 在提示消息中,单击 确定,更换系统盘

  9. 单击 镜像市场,然后单击 从镜像市场选择(含操作系统)

  10. 镜像市场列表的左侧是镜像的分类。您可以根据分类,选择想使用的镜像。找到需要的镜像后,单击镜像右下方的 同意并使用
    注意在左侧最下方,有两个按钮:已购买的镜像已订阅的镜像。如果您已经购买过镜像,可以直接单击已购买的镜像,选择镜像。

    下图是选择已经购买的镜像的示例。单击 同意并使用
    注意:在此页面,不要单击镜像连接,否则会直接引导您到购买镜像页面,引起误解。

  11. 继续选择系统盘,输入登录密码,然后单击 去支付

  12. 您会看到更换操作系统的提示。单击 确定

您成功使用镜像部署了环境。现在可以启动、并登录实例,开始使用您的环境了。

示例 II:手动部署阿里云 Linux 一键安装 Web 环境(仅应用,不包含操作系统)

本节以CentOS为例,介绍如何使用阿里云镜像,一键部署Web环境。该示例不需要更换系统盘。

部署之前,请确保:

  • 您的实例可以连接公网。
  • 已经安装用于连接 Linux 实例的工具,如 Xshell 和 Xftp。本文将以这两个工具为例介绍操作步骤。

注意:阿里云 Linux 一键安装 Web 环境安装包暂不支持自动挂载 I/O 优化的数据盘。

  1. 在浏览器中打开阿里云的云市场

  2. 搜索 阿里云linux一键安装web环境,然后购买该软件。

  3. 登录云服务器管理控制台。打开 产品与服务 > 云市场

  4. 单击 已购买的服务。在 阿里云Linux一键安装Web环境 的右侧,单击 管理

  5. 点击 下载地址,一键下载安装包。

  6. 解压缩安装包。

  7. 确保您安装了连接 Linux 实例的工具,如 Xshell 和 Xftp。

  8. 打开Xshell,设置登录实例所需的信息:登录账号、字符集编码选择 UTF-8。然后单击 OK 确认保存。

  9. 输入用户名 root 和密码。

  10. 单击 Xshell 工具栏的 Xftp 图标 (新建文件传输),或通过 窗口 >传输新建文件,或使用快捷键 CTRL + ALT + F 打开 Xftp,然后通过 Xftp 上传一键安装包文件。

  11. 依次键入以下安装命令。

    1. chmod -R 777 sh-1.4.5
    2. cd sh-1.4.5
    3. ./install.sh
  12. 根据需要选择 1 (nginx) 或者 2 (apache)。如直接回车,或输入错误字符,则默认选择 nginx。在示例中,此处选择 nginx。
    注意:如果要使用 Java 环境(安装 tomcat+JDK),必须选择 nginx 服务器。

  13. 依次选择要安装的 nginx 版本、PHP 版本、MySQL 版本。

  14. 输入 y 开始安装。一般需要半个小时左右安装完毕。

  15. 检查安装结果,输入下面命令。

    1. netstat -tunpl


    端口与服务信息如下:
    -9000: PHP进程服务。如果安装的是Apache,则没有此端口。
    -3306: MySQL服务
    -80: HTTPD 或者 nginx 服务
    -21: FTP服务

  16. 输入以下命令,查看默认的 FTP 和 MySQL 的账号信息:

    1. cat account.log

    输入该命令后,系统会在屏幕上显示 FTP 和 MySQL 的用户名和密码。其中 FTP 的用户名是 www,MySQL的用户名是 root

    1. FTP:
    2. account:www
    3. password:xxxxxx
    4. MySQL:
    5. account:root
    6. password:xxxxxx
  17. 修改 FTP 密码:用 root 登录,执行下列命令,然后输入您的 FTP 新密码:

    1. passwd www
    2. Changing password for user www.
    3. New password:
    4. Retype new password:
    5. passwd: all authentication tokens updated successfully.
  18. 修改 MySQL 密码。注意: -p 和旧密码之间没有空格;而 password 和新密码之间有空格。

    1. mysqladmin -uroot -p旧密码 password 新密码
  19. 输入命令 cat /alidata/website-info.log,查看刚才安装软件的版本信息。至此所有配置结束。

  20. 安装 phpwind 和 phpMyAdmin。可以通过访问一键安装包默认安装的 phpwind 论坛进行安装。直接在浏览器中输入您的域名或者IP。如果是第一次访问 phpwind,系统会自动跳转到安装页面。单击 接受 进行安装。

  21. 选择数据库类型为 MySQL,数据库用户名和密码填写 account.log 中的用户名和密码。然后设置数据库名称、管理员账号和密码等信息。单击 下一步

  22. 接下来访问 phpMyAdmin。在浏览器中输入域名,或者 IP/phpmyadmin 路径 (如 http://127.0.0.1/phpmyadmin ),访问 phpMyAdmin。输入 MySQL 用户名和密码,即可登录。

  23. 从 phpMyAdmin 即可操作 MySQL。

您已经成功部署了 Web 环境,可以开始制作和发布自己的站点了。

卸载一键安装包

如果需要卸载一键安装包,执行下列命令:

  1. ```
  2. chmod 777 -R sh-1.4.5
  3. cd sh-1.4.5
  4. ./uninstall.sh
  5. ```

环境目录

  • 网站目录: /alidata/www
  • 服务器软件目录: /alidata/server
  • MySQL 目录: /alidata/server/mysql
  • PHP 目录: /alidata/server/php
  • nginx目录(如有): /alidata/server/nginx/
  • nginx 配置文件: /alidata/nginx/conf
  • nginx 虚拟主机添加,您可以修改 /alidata/server/nginx/conf/vhosts/phpwind.conf
2018-11-19 08:57:26 wf19930209 阅读数 987

分享一个linux下一键安装node+npm脚本。

使用方式为: ./install-node.sh,然后输入版本号,node.js版本查询

切记不需要加 sudo 执行!!!

默认安装10.15.0。

#! /bin/bash

############################################################
#                 此脚本为一键安装node-npm脚本                 #
#                        2018-08-24                        #
#       使用方式为:./install-node.sh                        #
############################################################

nodeVersion="10.15.0"  # 安装的默认版本
VERSIONPATTERN="[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}"

echo -n "Please input a  node version number (Enter 10.15.0): "
read customVersion # user custom version, eg. 10.15.0

if [ ! -z $customVersion ]  # 如果输入的版本不为空
then
    macthResult=$(echo $customVersion | grep -E -x $VERSIONPATTERN )
    if [ -z $macthResult ]
    then
        echo "Please input a  right version number. eg. 8.11.4 or 10.15.0"
        exit 1
    fi
    nodeVersion=$customVersion
fi
# 下载网址
downloadAddress="https://nodejs.org/download/release/v${nodeVersion}/node-v${nodeVersion}-linux-x64.tar.gz"
downloadPath="/opt/"  # 默认安装的路径

nodePath="/opt/node/"
packageName="node.tar.gz"
sysPathFileForNode="/etc/profile.d/node.sh"  # system PATH file name for node.

currentUser=$(whoami)

if [[ $currentUser == "root" ]]
then
  echo "please execute script by user! Not root!"
  exit
fi

isReinstall="n"
# Check if node is already installed.
checkNodeIsExist() {
  # 1.Check whether the node command exists.
  if [[ $(checkCmd node) == "y" ]]
  then
  	echo -n "The node command already exists,whether to reinstall [y/n]? :"
  	read isReinstall
    if [[ "${isReinstall}" == "y" ]] || [[ "{$isReinstall}" == "Y" ]]  # not reinstall
    then
      echo
    else
      exit 1
    fi
  fi
  echo "Check local node has been completed."
}

download() {
    echo "Download version is $nodeVersion"
    echo
    sudo wget -O $packageName $downloadAddress
    if [ $? -ne "0" ]
    then
        echo "The node package download faild !"
        exit 1
    fi
    sudo mv ./$packageName $downloadPath
    echo "The node v${nodeVersion} has been downloaded."
}

decompress() {
    sudo tar -zxf ${downloadPath}${packageName} -C $downloadPath

    # check isReinstall
    if [[ "$isReinstall" == "y" ]] || [[ "$isReinstall" == "Y" ]]
    then
    	# update node binary file
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/bin/node ${downloadPath}node/bin/
	# update npm
	sudo rm -rf ${downloadPath}node/lib/node_modules/npm
	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/lib/node_modules/npm/ ${downloadPath}node/lib/node_modules/
	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/bin/npm ${downloadPath}node/bin/
    	# update npx link file
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/bin/npx ${downloadPath}node/bin/
    	# remove include/node folder
    	sudo rm -rf ${downloadPath}node/include/node
    	# update include/node flder 
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/include/node ${downloadPath}node/include/
    	# remove share folder
    	sudo rm -rf ${downloadPath}node/share
    	# update share folder
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/share ${downloadPath}node/
    	# update CHANGELOG.md 、LICENSE 、README.md file
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/CHANGELOG.md ${downloadPath}node/
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/LICENSE ${downloadPath}node/
    	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64/README.md ${downloadPath}node/

	sudo rm -rf ${downloadPath}node-v${nodeVersion}-linux-x64
	sudo rm -rf ${downloadPath}${packageName}
   else
	sudo mv ${downloadPath}node-v${nodeVersion}-linux-x64 ${downloadPath}node
	sudo rm ${downloadPath}${packageName}
	if [ $? -ne "0" ]
	then
	    echo "Faild to decompressed!"
	    exit 1
	fi
    fi


    echo "The node package has been decompressed."
}

changePermission() {
    sudo chown ${currentUser}:${currentUser} ${nodePath} -R
    echo "The node folder permission has been changed."
}

# Configure system environment variables and export executable paths of node and NPM.
configSysPath() {
    local tempFile="node.sh"
    touch $tempFile
    echo 'export NODE_HOME=/opt/node' > $tempFile
    echo 'export PATH=$PATH:$NODE_HOME/bin' >> $tempFile
    echo 'export NODE_PATH=$PATH:$NODE_HOME/lib/node_modules' >> $tempFile
    sudo mv ./$tempFile $sysPathFileForNode
}

checkCmd() {
  local cmd=$1

  which $cmd > /dev/null 2>&1

  if [[ $? == 0 ]]
  then
    echo 'y'
  else
    echo 'n'
  fi
}

npmCompletion() {
    local temp="/tmp/npm_completion"

    echo 'if type complete &>/dev/null; then
  _npm_completion () {
    local words cword
    if type _get_comp_words_by_ref &>/dev/null; then
      _get_comp_words_by_ref -n = -n @ -n : -w words -i cword
    else
      cword="$COMP_CWORD"
      words=("${COMP_WORDS[@]}")
    fi

    local si="$IFS"
    IFS=$'\n' COMPREPLY=($(COMP_CWORD="$cword" \
                           COMP_LINE="$COMP_LINE" \
                           COMP_POINT="$COMP_POINT" \
                           npm completion -- "${words[@]}" \
                           2>/dev/null)) || return $?
    IFS="$si"
    if type __ltrim_colon_completions &>/dev/null; then
      __ltrim_colon_completions "${words[cword]}"
    fi
  }
  complete -o default -F _npm_completion npm
elif type compdef &>/dev/null; then
  _npm_completion() {
    local si=$IFS
    compadd -- $(COMP_CWORD=$((CURRENT-1)) \
                 COMP_LINE=$BUFFER \
                 COMP_POINT=0 \
                 npm completion -- "${words[@]}" \
                 2>/dev/null)
    IFS=$si
  }
  compdef _npm_completion npm
elif type compctl &>/dev/null; then
  _npm_completion () {
    local cword line point words si
    read -Ac words
    read -cn cword
    let cword-=1
    read -l line
    read -ln point
    si="$IFS"
    IFS=$'\n' reply=($(COMP_CWORD="$cword" \
                       COMP_LINE="$line" \
                       COMP_POINT="$point" \
                       npm completion -- "${words[@]}" \
                       2>/dev/null)) || return $?
    IFS="$si"
  }
  compctl -K _npm_completion npm
fi' > $temp
    sudo mv $temp /etc/bash_completion.d/
}

main() {
    echo "------------------------START-------------------------"
    # 1. check node installation
    checkNodeIsExist
    # 2. download node package
    download
    # 3. decompree node package
    decompress
    # 4. change node folder permission
    changePermission
    # 5. install npm completion
    npmCompletion
    # 6. configure node config
    configSysPath

    source $sysPathFileForNode # Enable the configuration to take effect immediately.
    echo "------------------------END-------------------------"
    echo -e "Successfully installed node and NPM.\nPlease try : node -v and npm -v"
}

main
2017-11-12 14:40:00 weixin_34067102 阅读数 0
#!/bin/bash
yum install vsftpd pam pam-* db4 db4-* -y
cd /etc/vsftpd/
touch virtual_login
read -p "请输入用户名:" username
read -p "请输入密码:" password
echo $username >> virtual_login
echo $password >> virtual_login
db_load -T -t hash -f /etc/vsftpd/virtual_login /etc/vsftpd/virtual_login.db
sed -ir 's/^/#/g' /etc/pam.d/vsftpd
echo -n ' 
auth    required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtual_login 
account required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtual_login 
' >> /etc/pam.d/vsftpd
useradd -s /sbin/nologin vsftpd
useradd -d /var/ftp/$username -s /sbin/nologin $username
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
awk '! /^(#|$)/' /etc/vsftpd/vsftpd.conf.bak
echo -n '
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
nopriv_user=vsftpd
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to $username FTP service
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_config
'>/etc/vsftpd/vsftpd.conf
mkdir /etc/vsftpd/vsftpd_config/
touch /var/log/vsftpd.log
chmod 600 /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log
touch /etc/vsftpd/chroot_list
cd /etc/vsftpd/vsftpd_config/
cat > $username <<EOF
guest_enable=yes
guest_username=$username
local_root=/var/ftp/$username
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=0
EOF
sed -ir 's/[ ]*$//g'  /etc/vsftpd/vsftpd.conf
sed -ir 's/[ ]*$//g'  /etc/vsftpd/vsftpd_config/$username
setsebool ftp_home_dir 1
/etc/init.d/vsftpd start
 

参考:http://dngood.blog.51cto.com/446195/1094079/


本文转自 luoguo 51CTO博客,原文链接:http://blog.51cto.com/luoguoling/1629639