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?是不是以后所有命令都需要我一个一个教你?”
是的,就是这么不靠谱。
总之,一星期,忙碌、纠结、快乐。
发表回复