注意:本教程使用干净的 CentOS 7进行安装,若是您已安装其余环境或软件,涉及到内核升级,请您妥善备份,可能致使您已安装的软件不兼容或出现其余问题。php
免责声明:本教程仅以我的经验撰写,未必适合全部系统环境。如在使用本教程途中,出现没法挽救的损失(如数据丢失等),本人概不负责。html
再次提醒:使用本教程前请妥善备份现有数据!使用本教程前请妥善备份现有数据!使用本教程前请妥善备份现有数据!python
若是您使用本教程的方法过程当中出现问题,您可留言,我将在能力范围内尽量协助解决。mysql
本文最终服务器环境配置:c++
Apache 2.7.28 subversion 1.11.0 MariaDB 10.3.11 php 7.3.0
下面开始进入教程吧。sql
[root@instance-l79ltvo6 ~]# yum -y update ... Complete!
直到控制台输出Complete!说明升级完成,最好仍是重启一下吧apache
[root@instance-l79ltvo6 ~]# reboot
先安装一些基本依赖vim
[root@instance-l79ltvo6 ~]# yum install -y gcc gcc-c++ openssl-devel zlib-devel //在root目录下建立一个soft文件夹,咱们本次教程的软件将都放在该目录下 [root@instance-l79ltvo6 ~]# mkdir soft [root@instance-l79ltvo6 ~]# cd soft
而后开始安装apr、apr-util、pcre 3个依赖,最后再安装 apache
[root@instance-l79ltvo6 ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz [root@instance-l79ltvo6 ~]# tar zxf apr-1.6.5.tar.gz [root@instance-l79ltvo6 ~]# cd apr-1.6.5/ [root@instance-l79ltvo6 ~]# ./configure --prefix=/usr/local/apr [root@instance-l79ltvo6 ~]# make && make install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
由于咱们使用了 apr 1.6.5 的依赖,因此下面咱们必需要用 apr-util 1.6.1 版本,apr-util 1.6.1
再也不捆绑安装 expat ,但又须要 expat 的支持,因此咱们得手动先安装 expat。否则编译 apache 的时候会报错。
[root@instance-l79ltvo6 ~]# wget https://sourceforge.net/projects/expat/files/expat/2.2.3/expat-2.2.3.tar.bz2 [root@instance-l79ltvo6 ~]# tar jxf expat-2.2.3.tar.bz2 //使用minimal安裝的centos请先执行yum install -y bzip2 [root@instance-l79ltvo6 ~]# cd expat-2.2.3/ [root@instance-l79ltvo6 ~]# ./configure --prefix=/usr/local/expat [root@instance-l79ltvo6 ~]# make && make install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
[root@instance-l79ltvo6 ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz [root@instance-l79ltvo6 ~]# tar zxf apr-util-1.6.1.tar.gz [root@instance-l79ltvo6 ~]# cd apr-util-1.6.1/ [root@instance-l79ltvo6 ~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-expat=/usr/local/expat [root@instance-l79ltvo6 ~]# make && make install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
[root@instance-l79ltvo6 ~]# wget http://sourceforge.mirrorservice.org/p/pc/pcre/pcre/8.41/pcre-8.41.tar.gz [root@instance-l79ltvo6 ~]# tar zxf pcre-8.41.tar.gz [root@instance-l79ltvo6 ~]# cd pcre-8.41/ [root@instance-l79ltvo6 ~]# ./configure --prefix=/usr/local/pcre [root@instance-l79ltvo6 ~]# make && make install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
[root@instance-l79ltvo6 ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.gz [root@instance-l79ltvo6 ~]# tar zxf httpd-2.4.37.tar.gz [root@instance-l79ltvo6 ~]# cd httpd-2.4.37/ [root@instance-l79ltvo6 ~]# ./configure \ --prefix=/usr/local/apache \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --with-pcre=/usr/local/pcre \ --with-ssl \ --with-zlib \ --with-mpm=worker \ --enable-rewrite \ --enable-so \ --enable-ssl \ --enable-cache \ --enable-disk-cache \ --enable-file-cache \ --enable-mem-cache \ --enable-headers \ --enable-expires \ --enable-deflate \ --enable-dav \ --enable-dav-fs \ --enable-cgi \ --enable-proxy \ --enable-proxy-fcgi //这里请根据自身实际状况开启相关模块 [root@instance-l79ltvo6 ~]# make && make install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
编辑/usr/local/apache/conf/httpd.conf
#LoadModule ssl_module modules/mod_ssl.so //去掉#开启 SSL #LoadModule rewrite_module modules/mod_rewrite.so //去掉#开启 rewrite #ServerName www.example.com:80 //去掉#并把 www.example.com:80 修改成你的IP:80或者域名 #Include conf/extra/httpd-vhosts.conf //去掉#,开启虚拟主机配置 //若是你须要安装svn服务,你须要开启 #LoadModule dav_module modules/mod_dav.so//去掉#
找到如下代码并更换
<Directory /> AllowOverride none Require all denied </Directory> //修改成 <Directory /> Options Indexes FollowSymLinks //如不须要显示目录,把 Indexes 去掉 AllowOverride ALL //开启rewrite Require all granted </Directory>
编辑/usr/local/apache/conf/extra/httpd-vhosts.conf,删除所有,并添加下列代码
<VirtualHost *:80> DocumentRoot "/usr/local/apache/htdocs" ServerName your IP //你的IP地址 ErrorLog "logs/你的IP-error_log" CustomLog "logs/你的IP-access_log" common </VirtualHost>
[root@instance-l79ltvo6 ~]# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/ [root@instance-l79ltvo6 ~]# mv /etc/rc.d/init.d/apachectl /etc/rc.d/init.d/httpd [root@instance-l79ltvo6 ~]# cd /etc/rc.d/init.d/
编辑 httpd ,在 #!/bin/sh 下面添加下面代码
# Comments to support chkconfig on RedHat Linux # chkconfig: 2345 90 90 # description:http server
注册服务
[root@instance-l79ltvo6 ~]# chkconfig --add httpd [root@instance-l79ltvo6 ~]# chkconfig httpd on
把 apache 加入系统环境变量
[root@instance-l79ltvo6 ~]# vim /etc/profile.d/httpd.sh //写入 export PATH=$PATH:/usr/local/apache/bin //保存后赋予执行权限 [root@instance-l79ltvo6 ~]# chmod 0777 /etc/profile.d/httpd.sh [root@instance-l79ltvo6 ~]# source /etc/profile.d/httpd.sh
首先检查配置文件是否出错
[root@instance-l79ltvo6 ~]# /usr/local/apache/bin/apachectl -t Syntax OK //说明没问题,能够直接启动
启动 apache
[root@instance-l79ltvo6 ~]# systemctl start httpd.service
而后打开浏览器,输入你的IP地址,看到It works!,说明apache成功启动了
It works!
(如不须要svn服务请跳过)
[root@instance-l79ltvo6 ~]# cd /root/soft [root@instance-l79ltvo6 ~]# wget http://sourceforge.mirrorservice.org/s/sc/scons/scons/2.5.1/scons-2.5.1.tar.gz [root@instance-l79ltvo6 ~]# tar zxf scons-2.5.1.tar.gz [root@instance-l79ltvo6 ~]# cd scons-2.5.1/ [root@instance-l79ltvo6 ~]# python setup.py install --prefix=/usr/local/scons [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
[root@instance-l79ltvo6 ~]# wget http://mirror.bit.edu.cn/apache/serf/serf-1.3.9.tar.bz2 [root@instance-l79ltvo6 ~]# tar xf serf-1.3.9.tar.bz2 [root@instance-l79ltvo6 ~]# cd serf-1.3.9/ [root@instance-l79ltvo6 ~]# /usr/local/scons/bin/scons prefix=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util [root@instance-l79ltvo6 ~]# /usr/local/scons/bin/scons install [root@instance-l79ltvo6 ~]# cd .. //返回上级目录
[root@instance-l79ltvo6 ~]# wget http://www.sqlite.org/2017/sqlite-amalgamation-3190300.zip [root@instance-l79ltvo6 ~]# wget https://mirror.bit.edu.cn/apache/subversion/subversion-1.11.0.tar.gz [root@instance-l79ltvo6 ~]# tar zxf subversion-1.11.0.tar.gz [root@instance-l79ltvo6 ~]# unzip sqlite-amalgamation-3190300.zip [root@instance-l79ltvo6 ~]# mv /root/soft/sqlite-amalgamation-3190300 /root/soft/subversion-1.11.0/sqlite-amalgamation [root@instance-l79ltvo6 ~]# cd subversion-1.11.0/ [root@instance-l79ltvo6 ~]# ./configure \ --prefix=/usr/local/svn \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --with-serf=/usr/local \ --enable-mod-activation \ --with-apache-libexecdir=/usr/local/apache/modules \ --with-apxs=/usr/local/apache/bin/apxs \ --without-berkeley-db \ --with-lz4=internal \ --with-utf8proc=internal [root@instance-l79ltvo6 ~]# make && make install
给SVN建立一个名为svn的非登陆用户
[root@instance-l79ltvo6 ~]# useradd svn -s /sbin/nologin
把svn加入到系统环境变量
[root@instance-l79ltvo6 ~]# vim /etc/profile.d/svn.sh //添加 export PATH=$PATH:/usr/local/svn/bin 保存后赋予执行权限 [root@instance-l79ltvo6 ~]# chmod 0777 /etc/profile.d/svn.sh [root@instance-l79ltvo6 ~]# source /etc/profile.d/svn.sh
在/etc/ld.so.conf.d/建立一个serf-1.3.9.conf,指定lib目录,否则svn启动会报错
[root@instance-l79ltvo6 ~]# vim /etc/ld.so.conf.d/serf-1.3.9.conf //添加 /usr/local/lib 保存后刷新 [root@instance-l79ltvo6 ~]# /sbin/ldconfig -v
下面咱们先建立一个 test 项目
[root@instance-l79ltvo6 ~]# mkdir -p /data/svn [root@instance-l79ltvo6 ~]# cd /data/svn [root@instance-l79ltvo6 ~]# svnadmin create test
而后咱们打开 /data/svn/test /就会发现里面自动建立了一些目录
conf db format hooks locks README.txt
在conf里面的文件就是配置该项目的人员和权限,但若是多个项目,开发人员同样,那就要配置不少次了,这样很麻烦,因此咱们要弄成配置一次权限就能直接应用到全部项目里面。
[root@instance-l79ltvo6 ~]# cp /data/svn/test/conf/authz /data/svn/authz [root@instance-l79ltvo6 ~]# cp /data/svn/test/conf/passwd /data/svn/passwd [root@instance-l79ltvo6 ~]# cp /data/svn/test/conf/svnserve.conf /data/svn/svnserve.conf //而后设置一个用户密码,这里以建立root用户为例,这里的演示是将密码加密而非明文存储 [root@instance-l79ltvo6 ~]# htpasswd -c /data/svn/passwd root New password: //输入密码 Re-type new password: //再次输入密码
这样 root 用户就建立完成了,建立其余用户同理。 接下来咱们须要修改配置文件
[root@instance-l79ltvo6 ~]# vim /data/svn/svnserve.conf //删除全部内容,增长下面的代码 [general] anon-access = read auth-access = write password-db = passwd authz-db = authz [sasl] //保存 [root@instance-l79ltvo6 ~]# vim /data/svn/authz //删除全部内容,增长下面的代码 [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] administrators = root [/] @administrators=rw [test:/] * = r //保存
咱们尝试启动下svn服务
[root@instance-l79ltvo6 ~]# svnserve --config-file /data/svn/svnserve.conf -d -r /data/svn
没有报错,说明启动成功了
把/data/svn/目录的拥有者更改成svn
[root@instance-l79ltvo6 ~]# chown -R svn:svn /data/svn
最后咱们须要修改 apache 的相关配置文件
编辑/usr/local/apche/conf/httpd.conf
//找到 User daemon Group daemon //修改成 User svn Group svn
编辑/usr/local/apache/conf/extra/httpd-vhost.conf,把刚刚那次编辑的内容更换为
<VirtualHost *:80> ServerName 你的IP ErrorLog "logs/你的IP-error_log" CustomLog "logs/你的IP-access_log" common <Location /svn> DAV svn #support more repositories SVNParentPath /data/svn #list all repositories #SVNListParentPath on AuthType Basic AuthName "Please input Username and Password" AuthUserFile /data/svn/passwd AuthzSVNAccessFile /data/svn/authz Require valid-user </Location> </VirtualHost>
而后中止 apache 服务
[root@instance-l79ltvo6 ~]# systemctl stop httpd.service
检查 apache 配置文件是否出错
[root@instance-l79ltvo6 ~]# /usr/local/apache/bin/apachectl -t Syntax OK //说明没问题,能够直接启动
从新启动 apache
[root@instance-l79ltvo6 ~]# systemctl start httpd.service
打开浏览器访问 http://你的ip/svn/test,提示输入帐号密码 也可使用TortoiseSVN进行操做
输入刚刚设置的帐号密码后显示
test - Revision 0: /
说明配置成功,apache+svn服务启动成功
参考 https://segmentfault.com/a/11...,把相关版本号更换为10.3.11便可(第6步无需操做:6. 复制MariaDB配置文件到/etc目录)
先安装基本依赖
[root@instance-l79ltvo6 ~]# yum -y install gcc gcc-c++ autoconf automake libtool re2c flex bison php-mcrypt libmcrypt libmcrypt-devel openssl-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel zlib-devel mcrypt bzip2-devel libicu-devel systemd-devel mhash postgresql-devel libxslt libxslt-devel
安装libzip
[root@instance-l79ltvo6 ~]# cd /root/soft [root@instance-l79ltvo6 ~]# wget https://nih.at/libzip/libzip-1.2.0.tar.gz [root@instance-l79ltvo6 ~]# tar -zxvf libzip-1.2.0.tar.gz [root@instance-l79ltvo6 ~]# cd libzip-1.2.0 [root@instance-l79ltvo6 ~]# ./configure [root@instance-l79ltvo6 ~]# make && make install
即便安装了 libzip ,编译PHP的时候也可能会出现找不到 zipconf.h,因此手动复制一下
[root@instance-l79ltvo6 ~]# cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
添加搜索路径到配置文件
[root@instance-l79ltvo6 ~]# echo '/usr/local/lib64 /usr/local/lib /usr/lib /usr/lib64'>>/etc/ld.so.conf //更新配置 [root@instance-l79ltvo6 ~]# ldconfig -v
编译 PHP
[root@instance-l79ltvo6 ~]# cd /root/soft [root@instance-l79ltvo6 ~]# wget http://cn2.php.net/distributions/php-7.3.0.tar.gz [root@instance-l79ltvo6 ~]# tar zxf php-7.3.0.tar.gz [root@instance-l79ltvo6 ~]# cd php-7.3.0/ [root@instance-l79ltvo6 ~]# ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-curl \ --with-freetype-dir \ --with-gd \ --with-gettext \ --with-iconv-dir \ --with-kerberos \ --with-libdir=lib64 \ --with-libxml-dir \ --with-mysqli \ --with-openssl \ --with-pcre-regex \ --with-pdo-mysql \ --with-pdo-sqlite \ --with-pear \ --with-png-dir \ --with-xmlrpc \ --with-xsl \ --with-zlib \ --with-mhash \ --enable-fpm \ --enable-bcmath \ --enable-libxml \ --enable-inline-optimization \ --enable-mbregex \ --enable-mbstring \ --enable-opcache \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-sysvsem \ --enable-xml \ --enable-zip \ --enable-mysqlnd [root@instance-l79ltvo6 ~]# make && make install ... //漫长的等待
编译成功
[PEAR] Archive_Tar - installed: 1.4.3 [PEAR] Console_Getopt - installed: 1.4.1 [PEAR] Structures_Graph- installed: 1.1.1 [PEAR] XML_Util - installed: 1.4.2 [PEAR] PEAR - installed: 1.10.5 Wrote PEAR system config file at: /usr/local/php/etc/pear.conf You may want to add: /usr/local/php/lib/php to your php.ini include_path /root/soft/php-7.1.8/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin ln -s -f phar.phar /usr/local/php/bin/phar Installing PDO headers: /usr/local/php/include/php/ext/pdo/
这里提示让咱们从源码包复制一份 php.ini 到 /usr/local/php/lib/
[root@instance-l79ltvo6 ~]# cp php.ini-development /usr/local/php/lib/php.ini
修改 apache ,让 apache 支持 php
编辑/usr/local/apache/conf/httpd.conf
LoadModule php7_module modules/libphp7.so //默认是开启php7.so //找到 <IfModule mime_module>,在</IfModule>前面增长 AddType application/x-httpd-php .php .php3 .phtml .inc AddType application/x-httpd-php-source .phps //找到 DirectoryIndex index.html,增长index.php DirectoryIndex index.html index.shtml index.cgi index.php index.phtml index.php3
保存后看看httpd.conf有没有出错
[root@instance-l79ltvo6 ~]# /usr/local/apache/bin/apachectl -t Syntax OK //说明没问题,能够直接启动
把PHP加入环境变量
[root@instance-l79ltvo6 ~]# vim /etc/profile.d/php.sh //加入 export PATH=$PATH:/usr/local/php/bin //保存后赋予执行权限 [root@instance-l79ltvo6 ~]# chmod 0777 /etc/profile.d/php.sh [root@instance-l79ltvo6 ~]# source /etc/profile.d/php.sh
中止 apache,而后从新启动 apache
[root@instance-l79ltvo6 ~]# systemctl stop httpd.service [root@instance-l79ltvo6 ~]# systemctl start httpd.service
测试PHP
[root@instance-l79ltvo6 ~]# vim /usr/local/apache/htdocs/phpinfo.php //加入 <?php phpinfo(); ?>
保存后访问http://你的IP/phpinfo.php
若是成功访问到PHP的相关信息,那么PHP环境配置成功。segmentfault教程结束
本次教程本人在 CentOS 7.3 下搭建成功。
若是出现编译失败也不要灰心,通常都是缺乏相关依赖,善于利用搜索引擎。若是实在不知道怎么解决,给我留言,我会在能力范围尽量的协助解决。
以为本文章有用,别忘了点赞和收藏喔。centos