Background and 悲剧 Ground
由于实在厌烦了服务器每天被攻击、一星期就得重启一次、远程连接莫名其妙连不上、apache 莫名其妙不能提供服务、用户帐户里面发现 5 个隐藏账户、一直出现 Findpassword 之类的软件和 nc.exe 这样的知名软件,一怒之下把服务器做成了 Ubuntu。
Why Ubuntu ?
当时在和丁延鹏商量,用什么 Linux 。首选肯定是 Cent OS 了,有图形界面,各种支持也都不错。然后就在他的虚拟机上安了一个。默认安装方式下来——没桌面……
那好,重新安一下吧。选择 “带有桌面环境的 Web 服务器”。20 分钟,好了。进入系统,没有发现 Apache、Mysql……败了……(我可不想自己安装然后再配置……我懒……)
然后就下载了 Ubuntu 14.04 LTS 。 这次竟然是 LTS 。记得上一个 LTS 是 12.04 吧。一路比较顺利。而且我也知道 Ubuntu 安出来没桌面环境——去年就做过这方面的铺垫了。只是当时 VNC 一直搞不定,于是就放弃了。
虚拟机测试正常,就去服务器那儿安装了。
Install
制作了启动 U 盘。插上去……嘀~ Windows Server 2003 正在启动……
不对啊~换到自己的笔记本上试试? Ubuntu Installer ……
难道是启动 U 盘有问题?换个格式写入,USB-ZIP+ 还是不行。
逼我去买 CD 的节奏啊这是……幸好一个 Ubuntu Server 的大小是 500MB,不像 Ubuntu Desktop 那样一张 CD 刚刚好刻录不下。
刻录好,放进 CD,立刻熟悉的 Installer 展现在眼前。
使用整个磁盘。由于不知道下面的几个选项都是啥意思,又懒得自己分区,所以选择这个。
后面……检测网络的时候按 ESC,手动配置网络。
再后面……选择安装什么组件。SSH 肯定是需要的了,然后 Lamp,然后没了。一是用不到,二是不会配置。
Over。
一看能启动了,能登录了,走人。网络中心里面快动成冰棍了。
Configuration
网站
回去下了 PuTTy 和 Filezilla。
PuTTy 连接。首先 apt-get update
,然后 apt-get upgrade
。由于是教育网,速度不错。
apt-get install unzip zip wget rsync 7z 7zip unrar vsftpd
然后就是上传个 demo 页面进去。 /var/www
竟然没有权限。sudo chmod -Rf 777 www
或者 sudo chowm -Rf me:me www
就好了。实在不忍心给 777 权限。上传个 PhpMyAdmin 先,毕竟喜欢图形。
Ubuntu 下 Apache 启用/禁用配置文件的方法如下表:
项目 | 语法 |
---|---|
启用模块 | a2enmod XXX |
禁用模块 | a2dismod XXX |
启用站点 | a2ensite XXX |
禁用站点 | a2dissite XXX |
启用配置文件 | a2enconf XXX |
禁用配置文件 | a2disconf XXX |
很方便是吧。实际上它是做了 XX-available 到 XX-enabled 的一个软连接。自己写也可以。看喜好。
做完这些之后,service apache2 reload
或者 servica apache2 restart
都可以。restart 可能造成外网访问突然中断一下……但是好像比较彻底吧,各种错误 Restart 的时候都能检测出来。
去配置/etc/apache2/apache2.conf
。好像没有什么要配置的。
去配置 etv/apache2/conf-available/security.conf
。设置如下:
项目 | 值 |
---|---|
ServerTokens | Prod |
ServerSignature | Off |
去配置 /etc/apache2/conf-available/charset.conf
。写上 AddDefaultCharset UTF-8
,保存退出。
去 /etc/apache2/sites-available
写一份模板出来:
# <Directory /var/www/Example >
# Options FollowSymLinks
# AllowOverride All
# Require all granted
# </Directory>
<VirtualHost *:80>
ServerName www.example.com
# ServerAdmin [email protected]
DocumentRoot /var/www/Example
# ErrorLog ${APACHE_LOG_DIR}/error_Example.log
# CustomLog ${APACHE_LOG_DIR}/access_Example.log combined
<Directory /var/www/Example >
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
上面那个 Directory 是为了避免以后将网站数据放在其他地方导致 Apache 不能访问 (403)。
MySQL
默认的 MySQL 是不能远程访问的,即使你新建一个% 的用户也不行。
需要修改 /etc/mysql/my.cnf
,找到 bind-address
,后面的值改成本机 IP 即可。
FTP
上面用 apt-get install vsftpd
安装了 vsftpd 了,下面看一下是否在监听 21 端口。
查看端口占用 netstat -nat
查看 vsFTPd 状态 ps -ef |grep vsftpd
开启本地登录,开启本地用户写入,开启监牢,关闭匿名登录。
service vshttpd restart
有了这些就好办了。useradd XXX
,新建用户,在 /home/XXX
里面新建 www
文件夹,当作这个用户的网站文件夹。
当然,更推荐的是 adduser XXX
的方式然后手动给他创建 home。 adduser 出来的用户是个 “三无” 用户,感觉更安全一点。当然,用 useradd 方便。
设置/home/xxx
的权限为 655,不用递归。
新建一个 www 文件夹存放这个用户的网站。权限任意。
然后,为了让这些 “准 FTP 用户” 只能登录 FTP 不能登陆 ssh,需要用 usermod -s /sbin/nologin ExampleUser
来不准他登陆。但这样会导致 ftp 也无法登录。
这时候需要这样做: sudo vi /etc/shells
,然后添加/usr/bin/nologin
。Over。
上传一大堆网站数据……建议打包上传然后用命令解压。会快一点。或者,上传个 php 在线解压的东西也很方便。
复制 Vhosts 模板文件,稍加修改,然后 a2ensite XXX
,一个站点就启用了。
其他小设置
安装桌面:
sudo apt-get install –no-install-recommends ubuntu-desktop
下面的远程桌面服务我没成功过。就不写了。
后记
看着简单是吧?整整一个星期。
首先是权限。权限折腾了三天,终于理清思路了。
然后是 FTP 的问题。归根到底还是权限的问题。实在没办法,开启监牢,禁止 ssh,Over。花了三天。
无数次尝试 sudo,无数次尝试 chmod,chown,ll。
BTW:这些命令都是刚刚学会的。
我,一个轻度使用 Ubuntu 四年,只会使用 apt-get 的人。正式使用 Ubuntu 是这个暑假,发上一个 “在 Ubuntu 里安装 Theano 和 CUDA” 博文的时候。vim 是那天中午在高中机房里面看了半小时学会的,能当记事本用了。其他的,都是临时找的。
给网络中心一同学说想把服务器换成 Linux,“吓死我了,有人敢挑战 linux,大神……”
在群里面问如何设置,直接被骂死:“擦擦什么都不会还敢实体配置 Ubuntu Server?是不是以后所有命令都需要我一个一个教你?”
是的,就是这么不靠谱。
总之,一星期,忙碌、纠结、快乐。
发表回复