在ubuntu下安装一个web环境,应该说非常简单。
预习:SSH如果经常断掉,很容易出现多个root同时登陆的情形,
--------ssh踢人-----
who
root pts/0 2017-05-23 22:04 (42.88.103.116)root pts/1 2017-05-23 22:12 (42.88.103.116)root pts/2 2017-05-23 23:04 (42.88.103.116)
pkill -kill -t pts/0 一般最后一个是当前会话,前面的可以踢出去了
-------------
首先是防火墙: 参考地址
------------
sudo apt-get install ufw 安装
sudo systemctl start ufw 启动
sudo systemctl enable ufw 启用sudo ufw allow ssh 用法
sudo ufw allow 22sudo ufw deny 111sudo ufw allow 80/tcpsudo ufw allow http/tcp允许从一个 IP 地址连接:sudo ufw allow from 123.45.67.89
允许特定子网的连接:sudo ufw allow from 123.45.67.89/24允许特定 IP/ 端口的组合:sudo ufw allow from 123.45.67.89 to any port 22 proto tcpsudo ufw delete allow 80sudo ufw status 状态
sudo ufw disable 禁用-----------------
再者,为了安全性考虑,建议禁止口令登录,仅允许使用密钥登录。
京东vps上下载下来的是pem文件,需要使用puttygen生成ppk文件,保存私钥,并且最好加一个密码。
-----------禁止口令登录------------
#编辑sshd_config文件
vi /etc/ssh/sshd_config#禁用密码验证
PasswordAuthentication no 正常情况只修改这一条就可以了#启用密钥验证RSAAuthentication yesPubkeyAuthentication yes#指定公钥数据库文件AuthorsizedKeysFile .ssh/authorized_keys-----------
#RHEL/CentOS系统
service sshd restart#ubuntu系统service ssh restart#debian系统/etc/init.d/ssh restart---------------------
sudo apt-get install apache2 php7.0 php7.0-mysql libapache2-mod-php7.0 mysql-server phpmyadmin
这个命令中途会要求你输入mysql的root密码,和phpmyadmin的密码,根据情况输入。
安装好之后访问http://ip 如果能看到apache的提示页面,说明服务器已经安装正常了。
这个时候的phpmyadmin在/usr/share/phpmyadmin下面,用户名密码在安装过程中要求设置过了,现在需要建立一个虚拟目录,才能被web访问到。
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin pmt
先可以通过http://ip/pmt访问到该工具。
在/var/www/html下新建一个phpinfo.php 写入代码<?php phpinfo(); ?> 如果正常运行,说明php7.0也已经就绪。
让ubuntu下的apache2支持地址重写,sudo a2enmod rewrite / service apache2 restart
关于虚拟主机的配置,全部在/etc/apache2/下面。sites-enabled下面的 配置文件。
----新建一个虚拟主机----------
把域名解析过来,
在/etc/apache2/sites-enable下面新建一个conf文件,名称最好是域名,分辨起来简单,内容如下:
ServerName www.ex.comServerAlias c.ex.comServerAdmin webmaster@ex.comDocumentRoot "/www/www.ex.com/public_html"DirectoryIndex index.html index.php Options -Indexes +FollowSymLinks #MultiViews AllowOverride All Require all granted # Require host ip # Order allow,deny # Allow from all ErrorLog /www/_logs/www.ex.com_error.log# Possible values include: debug, info, notice, warn, error, crit,# alert, emerg.LogLevel warnCustomLog /www/_logs/www.ex.com_access.log combined
这里要注意,需要命令行下建立web目录和日志目录,同时赋予相应的权限。
重启apache2 : sudo /etc/init.d/apache2 restart
---------------
关于ftp的安装一直是个比较麻烦的问题。
sudo apt-get install pure-ftpd
建立 名为 ftp(也可以叫ftpuser,自己起个好记点的)的帐号
禁止匿名用户登录: /etc/pure-ftpd/conf/NoAnonymous 内容为YES (默认就是)
重启FTP服务,sudo /etc/init.d/pure-ftpd restart
设置虚拟用户
建立系统用户和虚拟用户
为了安全可以让所有虚拟用户共享同一个系统用户。
groupadd ftpgroup
useradd -g ftpgroup -s /dev/null ftp_local_user
pure-pw useradd test01 -u ftp_local_user -d /home/ftp/test01 -m
pure-pw useradd 虚拟用户名 -u 系统用户 -d 目录 -m
按理说,到这一步,FTP也就可以用了,如果遇到530错误,解决方法:在/etc/pure-ftpd/auth下,创建一个软链接ln -s /etc/pure-ftpd/conf/PureDB 60puredb
大功告成,接下来重启pureftpd会发现参数变成如下,即可用虚拟用户登陆了
Restarting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -E -B
注:pureftpd 默认是没有.conf的配置文件的,所以一切配置都体现在启动脚本下,如果要对其做什么细节改变,可以参见./pureftpd --help
服务重启: sudo /etc/init.d/pure-ftpd restart
------------
解释:-u将虚拟用户 test01 同系统用户 ftp_local_user关联在一起。-d参数使 test01 只能访问其 home 目录。而如果想让他访问整个文件系统,可以用 -D 选项。
其他选项:
-t 下载带宽限制
-T 上传带宽限制-n 最大文件数目-N 磁盘配额(单位M)-q 上传速度限制-Q 下载速度限制-r 允许某些ip/网段的客户端访问-R 拒绝某些ip/网段的客户端访问-i 允许本地某些ip/网段访问(allow local host)-I 拒绝本地某些ip/网段访问(deny local host)-y 同时最大连接数目-z 允许连接服务器的时间段,格式hhmm-hhmm,如 -z 0412-1618代表用户只能在凌 晨4点12分至下午4点18分连接服务器-f passwd_file-F puredb_file-m 不必重启Pure-FTPd以及重新生成puredb_file文件如果进行帐户操作时,没有带-m 参数,那就应该手动更新一下pdb数据:/usr/local/stow/pure-ftpd-1.0.21/bin/pure-pw mkdb pureftpd.pdbpure-pw useradd 添加用户
pure-pw userdel 删除用户
pure-pw usermod 修改用户
pure-pw show 查看用户详细信息
pure-pw list 查看所有用户设置
pure-pw mkdb 生成数据文件
pure-ftpd不是用配置文件而是用命令行参数,这种方式比较怪异。不过pure-ftpd的作者还是为偏好配置文件的用户提供了wrapper,可以man一下pure-ftpd-wrapper. 在Debian/Ubuntu下的wrapper比较怪,是在/etc /pure-ftpd/conf下以设置项作为文件名,该项的设置值作为文件的内容,如需要设置ClientCharset=gbk,就建立一个名为“ClientCharset”的文件,内容为“GBK”.
实验室的FTP需要给每个人配一个私有账号,相当于一个网络硬盘;同时允许匿名登录用于上传公共资料与数据交换。由于是内部服务器,需要改一下端口号,最后还需要一个管理员帐号。我使用的设置如下(用传统赋值写法),一些不常用的就不写了:ClientCharset=gbk #必设,防止Windows登录出现中文乱码
DontResolve=yes #不解析域名,可以节省登录时间BrokenClientsCompatibility=yes #兼容IE等非标准FTP clientChrootEveryone=yes #把所有用户限制在其homedir下KeepAllFiles=yes #禁止用户删除文件,TrustedGID组中的除外TrustedGID=1001 #管理员组ftpadmins的GID,允许管理员删除文件CreateHomeDir=yes #当虚拟用户第一次登录时,自动创建homedirMaxClientsPerIP=2 #每个IP限制2个连接MaxClientsNumber=20 #最大并发连接数,默认值是50MaxDiskUsage=90 #分区已使用空间超过90%时不再接受上传NoAnonymous=no #允许匿名登录Bind=,8821 #改变端口号 每次修改服务器设置后都需要重新启动服务:sudo /etc/init.d/pure-ftpd restart
设置配置文件 ,一般不需要管
ChrootEveryone yes #限制所有用户在其主目录中
BrokenClientsCompatibility no #兼容ie等比较非正规化的ftp客户端
MaxClientsNumber 50 #服务器总共允许同时连接的最大用户数
Daemonize yes #做为守护(doemon)进程运行(Fork in background)
MaxClientsPerIP 8 #同一IP允许同时连接的用户数
VerboseLog no #如果你要记录所有的客户命令,设置这个指令为 "yes"
DisplayDotFiles yes #即使客户端没有发送 '-a' 选项也列出隐藏文件
AnonymousOnly no #不允许认证用户 - 仅作为一个公共的匿名FTP。
NoAnonymous yes #不允许匿名连接,仅允许认证用户使用。
SyslogFacility ftp #缺省的功能( facility )是 "ftp"。 "none" 将禁止日志。
DontResolve yes #在日志文件中不解析主机名。
MaxIdleTime 15 #客户端允许的最大的空闲时间(分钟,缺省15分钟)
PureDB /usr/local/pureftp-1.0.22/etc/pureftpd.pdb #PureDB 用户数据库
LimitRecursion 2000 8 #'ls' 命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度。
AnonymousCanCreateDirs no #允许匿名用户创建新目录?
MaxLoad 4 #如果系统被 loaded 超过下面的值,匿名用户会被禁止下载。
AntiWarez yes #不接受所有者为 "ftp" 的文件的下载。
Bind 10.10.10.10,21 #服务监听的IP 地址和端口。
Umask 133:022 #新建目录及文件的属性掩码值。<文件掩码>;:<目录掩码>; .
MinUID 99 #认证用户允许登陆的最小组ID(UID) 。
AllowUserFXP yes #仅允许认证用户进行 FXP 传输。
AllowAnonymousFXP no #对匿名用户和非匿名用户允许进行匿名 FXP 传输。
ProhibitDotFilesWrite no #用户不能删除和写点文件(文件名以 '.' 开头的文件)
ProhibitDotFilesRead no #禁止读点文件(文件名以 '.' 开头的文件) (.history, .ssh...)
AutoRename no #永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如: file.1, file.2, file.3, ...
AnonymousCantUpload no #不接受匿名用户上传新文件( no = 允许上传)
AltLog clf #使用类似于Apache的格式创建一个额外的日志文件
MaxDiskUsage 99 #来保护日志文件。当所在磁盘分区使用超过百分之 X 时,将不在接受新的上传。
CustomerProof yes
UnixAuthentication no #不起用 简单的 Unix系统 认证方式(/etc/passwd)。
更多的配置信息请参考:http://bbs.chinaunix.net/viewthread.php?tid=145846
ubuntu 的 pure-ftpd 的配置文件很特别,都是放到 “/etc/pure-ftpd/conf” 目录下,而且是以选项为文件名,选项值为文件内容。譬如你需要启用--trustedgid选项,你只需要在该目录下建立一个名为:TrustedGID的文件,并且把信任的GID写入到文件中即可。