在ubuntu下安装一个web环境,应该说非常简单。
首先是防火墙:http://wiki.ubuntu.org.cn/Ufw%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97 参考地址https://linux.cn/article-8087-1.html
------------
sudo apt-get install ufw 安装
sudo systemctl start ufw 启动
sudo systemctl enable ufw 启用
sudo ufw allow ssh 用法
sudo ufw allow 22
sudo ufw deny 111
sudo ufw allow 80/tcp
sudo 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 tcp
sudo ufw delete allow 80
sudo ufw status 状态
sudo ufw disable 禁用
-----------------
再者,为了安全性考虑,建议禁止口令登录,仅允许使用密钥登录。
京东vps上下载下来的是pem文件,需要使用puttygen生成ppk文件,保存私钥,并且最好加一个密码。
-----------禁止口令登录------------
#编辑sshd_config文件
vi /etc/ssh/sshd_config
#禁用密码验证
PasswordAuthentication no 正常情况只修改这一条就可以了
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication 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的提示页面,说明服务器已经安装正常了。
在/var/www/html下新建一个phpinfo.php 写入代码<?php phpinfo(); ?> 如果正常运行,说明php7.0也已经就绪。
关于虚拟主机的配置,全部在/etc/apache2/下面。sites-enabled下面的 配置文件。
----新建一个虚拟主机----------
把域名解析过来,
在/etc/apache2/sites-enable下面新建一个conf文件,名称最好是域名,分辨起来简单,内容如下:
<VirtualHost *:80> ServerName www.ex.com ServerAlias c.ex.com ServerAdmin [email protected] DocumentRoot "/www/www.ex.com/public_html" DirectoryIndex index.html index.php <Directory "/www/www.ex.com/public_html"> Options -Indexes +FollowSymLinks #MultiViews AllowOverride All Require all granted # Require host ip # Order allow,deny # Allow from all </Directory> ErrorLog /www/_logs/www.ex.com_error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /www/_logs/www.ex.com_access.log combined </VirtualHost>
这里要注意,需要命令行下建立web目录和日志目录,同时赋予相应的权限。
---------------
关于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.pdb
pure-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 client
ChrootEveryone=yes #把所有用户限制在其homedir下
KeepAllFiles=yes #禁止用户删除文件,TrustedGID组中的除外
TrustedGID=1001 #管理员组ftpadmins的GID,允许管理员删除文件
CreateHomeDir=yes #当虚拟用户第一次登录时,自动创建homedir
MaxClientsPerIP=2 #每个IP限制2个连接
MaxClientsNumber=20 #最大并发连接数,默认值是50
MaxDiskUsage=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写入到文件中即可。