与linux服务器打了这么多年交道,总结下来,觉得一个Linux服务器最基本需要提供的服务如下:
1 SSH,供远程访问,基础中的基础。
2 Apache + PHP,做一些最基本的web响应,从开发角度来说,也确实有everything on web的趋势。
3 mysql:一个基本的关系型数据库,应付一般的数据库需求尚可。
4 phpmyadmin:一个基于web的对mysql进行管理的界面,是everything on web的一个实现。
5 svn:版本库管理,这是基本的软件开发必须的协作工具。
6 svn over http: svn在web上面可以访问之后,提供了很多的灵活性。
7 zentaopms:禅道管理系统,是国内做的比较完善的一个项目管理,bug管理,产品管理的界面。
8 VNC: 这个最好有,是低priority的要求。以前文章有所描述,本文不再涉及。
看起来比较复杂,但是其实并不多。现在用ubuntu16.04为例来说明一下:
1 系统安装,标准的U盘安装即可。
2 在显示终端安装ssh与vim,之后就可以把服务器放好,远程连接,不再使用显示器了。
之所以重新安装vim,是因为内置的vim有问题,重装之后,那些键盘命令(PgUp PgDn Del等)才不会被误解析。
sudo apt-get install ssh sudo apt-get install vim
3 然后开始安装apache2和php,我写文章的时候,php的默认安装版本为7.0,如果需要早先的版本,比如5.6,会需要一些特殊的源,这些最后再说。
sudo apt-get install apache2 sudo apt-get install php libapache2-mod-php sudo service apache2 start
这样子访问SERVER_NAME之后,就会出现如下页面。
此时,因为php也安装好了。就可以在网站根目录(默认/var/www/html)下面放一个phpinfo的文件,自己好查询php的相关情况:
此处指明了起作用的php的版本,php.ini的位置等等。
4 安装mysql,安装的过程中会让你输入数据库root用户的密码,记得把此密码与系统管理员root的密码与身份区分开来。mysql会默认监听3306端口。
sudo apt-get install mysql-server sudo service mysql start
5 安装phpmyadmin,这是一个mysql的网络管理界面,一方面,如果没有这个,那么你就需要在数据库的命令行执行这个命令,查询等。有了phpmyadmin,就使用web+浏览器的UI来管理数据库,一方面没有GUI的压力,而且没有CUI的难用,我早先单一有一篇文章对比此三种情况的优缺点。
sudo apt-get install phpmyadmin
期间会让你配置phpmyadmin本身账户的密码,此密码也要和mysql的root密码区分开来。
配置完成,就可以直接用SERVER_NAME/phpmyadmin来管理数据库了。
6 接下来,开始部署禅道系统。禅道有很多的安装方法,其实因为我们已经架设了apache php mysql,最稳定,最透明度的安装方法为源代码安装。直接去官网下载ZenTaoPMS.11.1.stable.zip,用WinSCP传送到服务器上。
另外需要说明的是,zentaopms需要php的curl模块,因此,先安装好。
sudo apt-get install php7.0-curl
然后把zip copy到网站根目录,解压,把代码准备好。
cp ZenTaoPMS.11.1.stable.zip /var/www/html/ unzip ZenTaoPMS.11.1.stable.zip
然后直接访问SERVER_NAME/zentaopms/w就开始安装了。执行的是其install.php文件。
安装完成之后,会提示你输入一个网站管理员账户。此账户是禅道系统的root账户。把用户名,密码保存好。
安装完成,就可以使用了。非常方便:
7 接下来要安装SVN与svn over http。svn的步骤如下:
sudo apt-get install subversion
安装完成,就要创建版本库了。我的习惯是在/data下面放数据,因为此目录以后可以加载单独的大容量硬盘。
创建目录
mkdir /data cd /data mkdir SVN cd SVN
然后在目录下创建自己的版本库:
svnadmin create 版本库名字
因为以后还有其他的版本库,因此我推荐是吧passwd和authz文件放到SVN根目录下,方便集中管理,因此,修改版本库的文件指向(此处我的版本库名字为delta_river):
vi /data/SVN/delta_river/conf/svnserve.conf
此处谨记,配置文件的行必须顶格,不要有空格或者tab,必须顶格,避免问题。
然后把passwd和authz文件copy到SVN根目录,如下:
passwd和authz格式的说明我不细说了。这个网上是说的非常清楚的。
然后执行
svnserve -d -r /data/SVN
即可启动服务:
可以把启动svn的文件写一个脚本,放到/etc/init.d/下面自动启动。命令内容如下:
lz@lz-HP-Compaq-8100-Elite-SFF-PC:~$ cat start_svn.sh #!/bin/bash svnserve -d -r /data/SVN/
服务启动后,可以用windows的svn client来连接试试看,也可以用如下命令来看看svn是否已经正常运行:
svn list svn://10.239.46.134/delta_river
8 svn配置完成,就要处理svn over http了。此处需要用libapache2-svn
sudo apt-get install libapache2-svn
其配置文件如下:
sudo vi /etc/apache2/mods-available/dav_svn.conf
此处需要说明的是,svn与svn over http是用的两套验证模式,两者之间关系并不大。svn的验证如上所述,是passwd与authz,虽然svn over http也是使用的相似的极致,但是文件位置可以毫无关系。
我的dav_svn.conf如下:
可见我把svn over http的配置放在了/etc/apache2目录下面。
此地有几处需要注意,第一,authz文件可以直接从SVN根目录copy过来,或者建一个符号链接。
第二,SVN的目录建议把owner修改为www-data:
cd /data sudo chown -R www-data:www-data SVN/
第三,dav_svn.passwd的内容是加密的,需要用htpasswd来生成
cd /etc/apache2/ sudo touch dav_svn.passwd
sudo htpasswd dav_svn.passwd 用户名
然后输入两次密码,dav_svn.passwd就好了。
此处的密码未必和SVN根目录下的密码相同,反正自己记得就行了。协议不同,使用的密码可以不同。
然后重启apache2就可以了。
sudo service apache2 restart
此时,用svn协议,与http协议都可以用svn client访问,用浏览器也可以看到大致的文件内容。
比较有用的命令:
看当前服务器提供的服务:
sudo netstat -antp
重启apache服务
sudo service apache2 restart
重启mysql服务
sudo service mysql restart
后记:如果需要php5.6的模块,需要执行如下命令就可以了。主要是找到5.6的安装源:
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get -y install php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl php5.6-zip
执行后,就会安装php5.6相应的模块:
The following addiTIonal packages will be installed:
libapache2-mod-php5.6 libzip5 php5.6-common php5.6-json php5.6-opcache php5.6-readline php5.6-xml
The following NEW packages will be installed:
libzip5 php5.6-curl php5.6-gd php5.6-intl php5.6-mcrypt php5.6-xml php5.6-xsl php5.6-zip
The following packages will be upgraded:
libapache2-mod-php5.6 php5.6 php5.6-cli php5.6-common php5.6-json php5.6-mbstring php5.6-mysql php5.6-opcache php5.6-readline
9 upgraded, 8 newly installed, 0 to remove and 409 not upgraded.