本文基于Ubuntu 16.04 搭建Web服务器(Apache和PHP)、MySQL数据库服务器,以及FTP服务器,并通过对用户权限的设置,实现FTP与Apache协同工作。
基于Linux搭建Web服务器是主流的SaaS云服务部署方式,由于CentOS从8.0开始一直在折腾,现在的Stream 9和10,虽然与之前的CentOS 7有连续性,但是让部分人对CentOS失去了信心,转移到Ubuntu上的越来越多。本文基于Ubuntu 16.04 搭建Web服务器(Apache和PHP)、MySQL数据库服务器,以及FTP服务器,并通过对用户权限的设置,实现FTP与Apache协同工作。
1 安装前的准备
安装软件前,需要更新软件源,这样才可以获取最新版本的服务器软件,包括apache2和php74等。
sudo apt-get update
2 安装apache2
安装指令和重启指令的总结如下:
安装指令
sudo apt-get install apache2
安装完成,运行如下命令重启
sudo /etc/init.d/apache2 stop/start
sudo /etc/init.d/apache2 restart
也可以通过以下命令
sudo service apache2 restart
关联PHP需要等安装PHP完成后执行指令
sudo apt-get install libapache2-mod-php7.2
启用 apache2 的 .htaccess 功能
sudo a2enmod rewrite
安装完成后,在浏览器里输入http://localhost或者是http://IP地址,如果看到了“It works! ” ,那就说明Apache就成功的安装了。
Apache的默认安装,会在/var下建立一个名为www的目录,这个就是Web目录了,所有要能过浏览器访问的Web文件都要放到这个目录里。这个目录也可以修改为其他目录,只要Linux用户权限与FTP等虚拟用户一致即可。以下是一个网站的虚拟网站的配置脚本:
<Directory "/data/website/mytp6project/public/">
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerAdmin help@abot.cn
DocumentRoot "/data/website/mytp6project/public/"
ServerName tp6new.abot.cn
DirectoryIndex index.html index.php
ErrorLog /data/httpd_logs/dummy-mytp6project-error-20220324.log
CustomLog /data/httpd_logs/dummy-mytp6project-access-20220324.log vhost_combined
</VirtualHost>
3 安装PHP
安装前已经执行了“sudo apt-get update”,所以可以查询到7.2这个版本。
指定版本安装PHP
sudo apt-get -y install php7.2
安装与apache的关联关系
sudo apt-get install libapache2-mod-php7.2
重启php-fpm
sudo service php-fpm restart
如果通过这种方式重启不成功,可以通过以下命令重启:
whereis php-fpm
ps -ef|grep php
sudo kill -9 22385
sudo /usr/sbin/php-fpm7.2
安装常用扩展(建议安装)
sudo apt-get -y install php7.2-fpm php7.2-mysql php7.2-curl php7.2-json php7.2-mbstring php7.2-xml php7.2-intl php7.2-odbc php7.2-cgi
更多扩展安装
sudo apt-get install php7.2-gd php7.2-soap php7.2-gmp php7.2-pspell php7.2-bcmath php7.2-enchant php7.2-imap php7.2-ldap php7.2-opcache php7.2-readline php7.2-sqlite3 php7.2-xmlrpc php7.2-bz2 php7.2-interbase php7.2-pgsql php7.2-recode php7.2-sybase php7.2-xsl php7.2-dba php7.2-phpdbg php7.2-snmp php7.2-tidy php7.2-zip
与apache的关联关系这个指令会在apache的配置目录下(/etc/apache2/mods-enabled)增加两个文件:php7.2.conf和php7.2.load,如上图所示,php7.2.load 指定了使用哪个版本的PHP,php7.2.conf制定了具体的调用方式为fpm。
4 安装MySQL数据库
MySQL数据库的安装相对简单,但是有以下几个主要的坑点:
- (1)没有输入默认的root密码的操作,需要通过非常规手段重置。
- (2)默认外网不能访问,需要修改配置文件放开权限。
- (3)需要根据业务需要调整数据库文件在硬盘上的的保存位置。
以上几个问题设计的解决方案内容校对较多,所以另文说明。
5 安装vsftpd
安装vsftpd,除了解决上传文件的问题之外,还需要关联Linux虚拟用户与Apache服务的权限关系,这样才能实现平滑的FTP和Web服务的联动使用。安装vsftpd的指令如下:
sudo apt-get install vsftpd
安装完成后,编辑vsftpd 的配置文件,关联Ubuntu中已有的用户名,用于FTP虚拟用户,分配虚拟用户权限。因为涉及到的细节太多,所以总结了一个说明文档《Ubuntu18.04安装apache mysql php vsftpd等》,可以关注公众号“万能的CTO”,回复“07770755”获取。之所以使用这个数字,是考虑好多小伙伴输入“Ubuntu”或者“ubuntu”容易输入错误,汉字又无法表达,而0777和0755是我们在Linux下设置目录权限经常用到的两组参数。