由于对数据库容量要求比较大,年费用300左右的普通虚拟主机只能提供500M-1G的数据库,不能满足要求,故寻找到同样费用的云服务器单核、1G内存、系统盘50G,缺点是只提供基本系统centos,其他要自己搭建,经过一周摸索终于能正常运行。

全部安装完成后占用硬盘8G左右,包括2G的扩充虚拟内存。原机提供的1G内存很容易用完(mysql占用40%-60%内存),这样系统会杀死一些进程,使得网站可能不能正常使用。所以要扩充虚拟内存。

这里使用的是HK的云服务器,有些服务商安装初始系统时已经给配置了虚拟内存,用 free -h 查看swap情况。

这里系统软件选择的是centos8

*****************************每部分间隔*****************************************

0、前期准备

a、一般通过SSH协议终端模拟器软件远程操作服务器,所以要下载相关软件,这里用Xshell,软件下载、使用都很简单的,这里就不介绍了。

b、由于要经常使用vi编辑文件,vi默认没有显示行号,下面先增加行号显示

echo 'set nu' >> /etc/virc

//没有行号无所谓的可以略过

c、为了传文件方便,安装上传下载软件,可以不装
yum install lrzsz -y

d、暂时先关闭防火墙,如果没开就略过

systemctl stop firewalld

*****************************每部分间隔*****************************************

1、扩充虚拟内存

如果服务商已经扩充了虚拟内存,可跳到第2步。

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意)1m*2048=2G ,内存大小根据需要来定。
dd  if=/dev/zero  of=/var/swapfile  bs=1M  count=2048 

对交换文件格式化并转换为swap分区
mkswap  /var/swapfile

挂载并激活分区
swapon   /var/swapfile

//如果不能正常开通,就增加权限  chmod -R 0600 /var/swapfile

开机启动设置

echo  "/var/swapfile   swap  swap  defaults  0  0" >>  /etc/fstab

vi /etc/sysctl.conf
//在最后一行加上“vm.swappiness=30”  一般是60,
或 echo "vm.swappiness = 30"  >>  /etc/sysctl.conf

//开关wsap
swapoff  /var/swapfile
swapon  /var/swapfile

free -h 检查swap

*****************************每部分间隔*****************************************

2、安装Apache

Web服务器软件之一,Apache HTTP Server ,简称Apache,也可安装其他服务器软件,自己搜索

a、安装apache
yum install httpd -y

查看httpd安装位置
rpm -ql httpd

b、修改配置文件httpd.conf
vi /etc/httpd/conf/httpd.conf

//vi操作,按字母i开始修改增加文件内容,完成后按ESC退出编辑模式(不是退出vi), :wq!  保存文件并退出vi 

106行   128
AllowOverride None 全部修改为 AllowOverride All  #修改前看看相关文章,也可以不改

167行  增加默认启动文件,排前面的有优先权
在 DirectoryIndex index.html 后面加上 index.htm default.php index.php index.shtml

c、启动apache

----------额外提示开始--------------

//注意:空格,有时候复制的命令不能正确执行原因是空格(空格可能是非英文的空格)造成的。辨别方法,复制这个命令粘贴到Notepad++ 空白文件里,尽量放大,观察空格的形态,如果空格里有个淡橙色的小点,说明空格是正确的,如果空格区域说明都没有,那这个空格就不是纯英文的空格,注意图中2个空格对比。

计算云服务器项目占用资源 云服务占用空间吗_php

 

计算云服务器项目占用资源 云服务占用空间吗_php_02

 //比如执行这个命令systemctl enable httpd.service 

//会出行错误提示-bash: systemctl enable httpd.service: command not found

---------------额外提示结束---------------

systemctl start httpd.service     //systemctl start httpd 也可以

systemctl enable httpd.service      //开机自启apache服务器

提示:如果启动失败,很有可能是因为80端口被占用。此时,需要修改监听端口。

vi /etc/httpd/conf/httpd.conf,找到 Listen 80,修改为 Listen 8080。

*****************************每部分间隔*****************************************

3、尝试访问网站

一般来说,这样就可以通过ip地址、域名(域名要解析到服务器的Ip,此时域名访问不能使用https://.....  方式访问,只能使用http://...... 访问)进行正常访问网站

域名解析如下图, 对应值是服务器的ip,各域名服务商可能不一样,大致差不多。

计算云服务器项目占用资源 云服务占用空间吗_php_03

 其实只要安装了apache,启动apache,不做任何设置就可以通过ip来访问, http://服务器IP

注意:新安装的apache不支持 https://服务器ip  ,装了SSL证书才能用https://....  访问

*****************************每部分间隔*****************************************

4、安装SSL服务器证书

SSL 证书,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能,使用HTTPS访问网站。简单来说HTTPS是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。

在阿里云申请免费SLL,有效期一年,个人可以免费申请20张   申请免费DV单域名试用证书,  介绍说不支持为公网IP申请免费证书,我试过可以,可能要看服务器商提供IP情况。

域名注册服务商有的提供1元购买SSL,有效期也是一年,具体情况问自己的域名服务商。

将阿里的ssl文件解压,得到3个文件,为了省事(少敲键盘)把长文件名改了部分,ali是修改的,其他不没修改。

计算云服务器项目占用资源 云服务占用空间吗_php_04

a、把3个文件上传到服务器,

cd /

mkdir cert   

#文件夹名称随意,而且位置随意,看个人喜欢,但一定要和下面的85  93  102行的目录名称一致

cd cert

rz -y  //上传文件,会出来一个对话框,找到下载的3个文件,点确定,上传结束后窗口会关闭

b、默认apache是没有安装SSL模块的,所以需要安装,接着使用命令:
yum install -y mod_ssl

c、编辑ssl配置文件

vi /etc/httpd/conf.d/ssl.conf

//下面说的行号,可能会有小小不同,如果行号不对,就查找对应语句

第5行 看443是否打开监听,一般是去掉每行第一个字符#

#Listen 443 https  --> Listen 443 https

//阿里的免费 SSL,一定要把3个文件都加上
85   SSLCertificateFile /cert/ali_public.crt  #修改证书的保存位置
93   SSLCertificateKeyFile /cert/ali.key
102 SSLCertificateChainFile /cert/ali_chain.crt

//去掉#号,域名换你的域名,
43  DocumentRoot "/var/www/html"
44  ServerName www.example.com:443

然后保存退出

d、将http强制转换https

vi /etc/httpd/conf/httpd.conf

107行后加入    (<Directory>.....</Directory>中)

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

保存退出

重启apache
systemctl restart httpd.service   //apachectl restart

e、访问网站,一般就可以正常访问了
https://*****.com ,如果浏览器只显示缓存内容,按F5刷一下

*****************************每部分间隔*****************************************

5、安装PHP

查看是否安装过php旧版本
rpm -qa|grep php*   or  yum list installed |grep php

如果有就删除
yum remove php*

安装php

sudo dnf install php php-opcache php-gd php-curl php-mysqlnd

//yum install php php-devel   //这个在启动systemctl restart php-fpm.service,出现php-fpm错误,放弃

php要使用mysql数据库,必须安装对应模块,否则无法对接mysql。如果不需要可以不装
a、yum search php  //查找安装源里与php相关的软件,找到php-mysq* 等软件名称,这里选的是        php-mysqlnd.x86_64
b、安装mtsql模块:yum -y install php-mysqlnd.x86_64
c、再安装常用的PHP模块,比如GD库,curl,mbstring,… ,也可以不装
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel

------------php时区问题开始-------------------

关于php时区问题,由于服务器所处的位置,国家、地区不同,php默认的时区有可能不是北京时间,那么在时间读取上会有时差,所以要确认时区,如果已知时间正常可以不不=管时区的问题。

修改php时区,设置date.timezone =Asia/Shanghai,注意去掉该行排头的分号;
vi /exc/php.ini
902 date.timezone=Asia/Shanghai

重启php
ps -ef | grep php* //查询php进程,用来确定重启的文件名,不同版本php具体名称可能不同
systemctl restart php-fpm.service

------------php时区问题结束-------------------

重启apache 
systemctl restart httpd.service

---------------------
如果php不能执行,
你的apache 还不支持解析php
打开 httpd.conf 文件 找到 #AddType application/x-tar .tgz
在后面添加 AddType application/x-httpd-php .php
重启systemctl restart httpd.service

如果还不行,再检查 php.ini 的short_open_tags 选项是否打开 
---------------------------------------------

6、安装mysql

安装MySQL ,适合centos8的
yum install mysql mysql-server mysql-devel -y

#查看数据库版本
mysqladmin --version

启动mysql服务并设置为开机启动
systemctl enable --now mysqld

systemctl start mysqld //启动mysql 
systemctl stop mysqld   //

service mysqld restart //重启MySQL服务

systemctl status mysqld  //查看数据库状态

mysql -u root -p  //登录mysql,如果是新安装的直接按回车

进入mysql后,建立一个演示用的数据库,注意大写部分
CREATE DATABASE testdb;

显示数据库,就可以看到刚建立的数据库
show databases;

--------------mysql增加新用户及权限设置开始-------------------------------

php要操作mysql,必须要有一个用户名、密码、及相应的权限,直接用root也可以,但是不建议这么做。

1、生成新用户
CREATE USER 't123'@'localhost' IDENTIFIED BY '123456';  

2、给新用户增加权限,否则php无法访问数据库
GRANT ALL ON testdb.* TO 't123'@'localhost';  //只能本地用户t123访问testdb数据库

--------------mysql增加新用户及权限设置结束-------------------------------

 7、编写php代码,连接testdb数据库

<?php
header("content-type:text/html; charset=UTF-8");

$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 't123';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$dbname = "testdb";  //数据库名称
$conn=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
if (!$conn)
{
    die("连接失败,错误: " . mysqli_connect_error());
}else{
    die("连接成功!");
}
?>

运行代码,测试是否连接成功

至此,云服务器centos8搭建网站 apache+php+mysql 搭建过程全部完成。