手把手教你搭建自己的个人博客(上)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011939264/article/details/84574316

前言

双十一的时候,趁着阿里云作活动,买了一年最便宜的云服务器,准备搭建一个自己的个人博客(当然主要是为了装13),目前域名正在备案之中,自己以前主要偏向于c++底层,基于Qt做一些网络通信方面的开发,对于服务器没有多少认识,也算是边实践边学习吧。

搭建环境

  • 服务器: 阿里云(1核/1GB)
  • 操作系统: CentOS / 7.5 x86_64 (64bit)
  • 本地计算机: Windows7 + SecureCRT+FlashFXP

几点说明

  • 服务器 : 本教程中我们使用的是阿里云的服务器,其实不管是百度还是阿里腾讯的服务器,没多大差别,选择自己喜欢的(便宜的)就好。
  • 操作系统 : 本教程使用的是Linux 发行版本的Centos 7.5,Linux发行版有redhat和Ubuntu、Centos等等,不同的Linux 发行版配置方式有差异,初学者一般用Ubuntu,工程实践建议使用Centos。
  • 本地计算机 : 配置该环境需要远程连接服务器,连接服务器软件的软件有很多,本人比较喜欢用SecureCRT(具体的使用教程见左边超链接),FlashFXP主要用来使本地和服务器端进行文件共享,具体的使用教程见左边超链接。

安装部分教程

Nginx

在Centos上,我们一般用 yum install命令来安装Linux源中自带的软件,该方法是不用自己下载相关的依赖项,直接一键全部安装好,在Ubuntu中我们一般使用apt-get install命令来安装软件,同样的相对于二进制编译安装的好处就是不用配置想相应的环境和依赖项。

首先通过yum方式来安装Nginx

#yum install为centos下安装软件的方式,-y表示表示“yes”,不用直接输入确认
yum -y install nginx

在这里插入图片描述

安装成功,接下来我们测试Nginx是否正常

1.启动Nginx,在命令行直接输入 nginx 启动nginx

2.打开浏览器,在地址栏输入自己的ip地址,出现如下界面表示nginx安装正常
在这里插入图片描述

3. 输入 nginx -V可以查看nginx的版本

在这里插入图片描述

我们注意两个文件路径

/usr/share/nginx/html
#该路径里面放的就是我们网站的内容,可以试着更改html里面的index.html内容,
刷新网站,会发现显示内容也会改变。将index.html里面的内容删掉,改为"hello",
刷新网站,显示如下:

在这里插入图片描述

/etc/nginx/nginx.conf
#此文件为nginx的配置文件,我们后面会修改此配置文件

nginx此时已经安装完成,具体配置会在后面详细说明。


PHP

使用yum方式安装PHP时,不能安装php7,只能安装php5,本教程中我们安装php5,新版本和旧版本的区别不是很大,没有必要纠结。

#下载php相关的软件,php-fpm是我们管理php的软件
yum install -y php php-fpm php-curl php-gd* php-mysql

安装完成。
在这里插入图片描述
启动php软件

service php-fpm start

查看php的版本

php -v

php安装成功。


Mysql

centos已经将mysql7从库中删除了,所以我们不能使用yum install命令从源中下载,我们需要使用自己的源文件。

1. 先下载mysql源文件,推荐5.7版本mysql57-community-release-el7-11.noarch.rpm,csdn论坛上就有,大家可以去上面下载源文件。

2. 将下载下来的mysql源文件用FlashFxp共享到自己的服务器,路径可以自己定。

3. 进入到mysql所在的源文件目录,然后导入这个源

# localinstall 安装本地rpm包 后面是包的名字
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm


4. 这样yum的MySQL库就导入成功了~我们可以通过这个源安装MySQL

yum -y install mysql-community-server

安装这个过程很慢,跟自己个人电脑的配置有关

5. 启动MySQL服务

systemctl start mysqld

启动之后,默认我们需要修改密码,MySQL5.7不同于之前,会在root目录下生产一个.mysql_secret来放置随机初始密码,但是比较方便的获得方法是在log文件中搜索。localhost:后面的就是我们随机生成的密码,保留下来,后面我们会用到他。

grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述
6. 修改密码规范
如果我们将密码设置成123456等简单密码时,mysql会报错,必须修改密码规范,才允许修改。

mysql -uroot -p

输入刚才得到的随机密码,进入数据库,输入如下命令:

mysql>  set global validate_password_policy=0;
mysql> set global validate_password_length=1;

输入exit退出数据库

重启数据库

service mysqld restart

使用数据库安全向导配置
输入命令:mysql_secure_installation,依次会出现下面的提示

[root@instance-qtpmsyaj bin]# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:         # 这里需要你输入过程的随机密码
The existing password for the user account root has expired.
 Please set a new password.

New password:                               # 设置新的密码

Re-enter new password:                     # 重新输入一遍密码
                              #这是密码验证的提示,验证你密码的强度
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.

Using existing password for root.
# 这里是你的密码强度,我的是60
Estimated strength of the password: 60

# 问你是否要改变你的密码y就是改变,其他就是不改变
# (这里不改变的意思就是用你刚才输入的密码)

Change the password for root ? ((Press y|Y for Yes, any 
other key for No) : n
#  不改变

 ... skipping.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for 
No) : y
 # 是否删除匿名用户,生产环境建议删除y
 ... skipping.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any 
other key for No) : n
# 是否禁止root远程登录,不禁止  n
 ... skipping.
 
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for 
Yes, any other key for No) : y    # 是否删除test数据库,删除 y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any 
other key for No) : y
Success.  # 是否重新加载权限表  y
All done!

至此,mysql就已经完全安装好了,后面需要和php进行联合配置。


联合配置

nginx + php

在前面我们分别安装好了nginx和php,现在将nginx和php联合配置起来。

将nginx和php设置为开机自启动。

systemctl enable nginx.service
systemctl enable php-fpm.service

打开nginx的配置文件,前面提到过配置文件的路径

vim /etc/nginx/nginx.conf

打开后界面如下图:

# nginx运行的用户名
user nginx;
# nginx启动进程,通常设置成和cpu的数量相等,这里为自动
worker_processes auto;

# errorlog文件位置
error_log /var/log/nginx/error.log;
# pid文件地址,记录了nginx的pid,方便进程管理
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

# 用来加载其他动态模块的配置
include /usr/share/nginx/modules/*.conf;
# 工作模式和连接数上限
events {
    # 每个worker_processes的最大并发链接数
    # 并发总数:worker_processes*worker_connections
    worker_connections 1024;
}

# 与提供http服务相关的一些配置参数类似的还有mail
http {
    # 设置日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    # access_log记录访问的用户、页面、浏览器、ip和其他的访问信息
    access_log  /var/log/nginx/access.log  main;

    # 这部分下面会单独解释
    # 设置nginx是否使用sendfile函数输出文件
    sendfile            on;
    # 数据包最大时发包(使用Nagle算法)
    tcp_nopush          on;
    # 立刻发送数据包(禁用Nagle算法)
    tcp_nodelay         on;
    # 链接超时时间
    keepalive_timeout   65;
    # 这个我也不清楚...
    types_hash_max_size 2048;

    # 引入文件扩展名与文件类型映射表
    include             /etc/nginx/mime.types;
    # 默认文件类型
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    # http服务上支持若干虚拟主机。
    # 每个虚拟主机一个对应的server配置项
    # 配置项里面包含该虚拟主机相关的配置。
    server {
        # 端口
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 访问的域名
        server_name  _;
        # 默认网站根目录(www目录)
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        # 默认请求
        location / {
        }

        # 错误页(404)
        error_page 404 /404.html;
            location = /40x.html {
        }

        # 错误页(50X)
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

我们要更改配置的只需要server部分就可以了。进入vim编辑模式,或者用FlashFXP将配置文件共享到桌面来更改即可。

只需要改动三处即可

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 这里改动了,也可以写你的域名,我用的是IP地址
        server_name  106.12.129.252;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            # 这里改动了 定义首页索引文件的名称
            index index.php index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

        # 这里新加的
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP,Python)沟通的协议.
        location ~ \.php$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }
    }

更改后的配置文件为:
在这里插入图片描述

重启nginx服务器

nginx -s reload

此时,nginx和php已经联合配置完成了,但是我们并不知道实际配置效果如何,这个时候我们可以写一个小的测试脚本来验证一下。
之前提过了/usr/share/nginx/html是Nginx的网站根目录,我们可以在此目录下建立一个php测试脚本。

# phpinfo.php是我要建立的文件名
vim /usr/share/nginx/html/phpinfo.php

打开编辑器后,在里面输入

<?php
phpinfo();// 输出PHP的一些信息
?>

保存退出后,在浏览器中输入http://106.12.129.252/phpinfo.php,我这里的ip是106.12.129.252,你换成你们自己的即可。如图出现:
在这里插入图片描述

Nginx和php已经配置完成了。


Mysql+PHP
我习惯使用phpMyAdmin来管理数据库。

1. 先要安装phpMyAdmin

yum -y install phpmyadmin

2. 将phpMyAdmin目录软连接到网站根目录中(前面提到过网站根目录)

ln -s /usr/share/phpMyAdmin/ /usr/share/nginx/html/phpmyadmin

3. 查看一下是否成功

ls /usr/share/nginx/html/

如果出现phpMyAdmin文件则说明连接成功了。

4. 接下来需要修改PHP的配置,打开session服务(对vim命令不熟的同学推荐直接使用FlashFxp打开修改配置)

vim /etc/php.ini

根据查找到的信息我们输入’i’进入编辑模式。

session.save_path = "N;/path"改为

session.save_path = “/var/lib/php/session”

点击’Esc’键进入一般模式,然后输入’:wq’报保存信息并退出。

5. 将目录的拥有者改为nginx然后更改文件夹权限

# chown 改变文件拥有者 -R 递归变更 账号名称:组名 目录
chown -R nginx:nginx /var/lib/php/session 
# 开启文件夹的权限
chmod 777 /var/lib/php/session/

重启服务

systemctl restart nginx.service
systemctl restart php-fpm.service

在浏览器输入:你的IP/phpmyadmin/,例如我的ip 106.12.129.252/phpmyadmin/

用户名和密码就是我们最开始设置的用户名和密码。

到此,我们搭建一个博客的前期铺垫工作已经做好了,熟悉的朋友应该知道,这个就是应用广泛的LNMP (Linux+Nginx+Mysql+Php),很多网站就是基于此结构设计的,在后面我们会在此基础上搭建出自己的个人博客。


关于我自己

  • 一个正派但不正经的程序员

  • 18年计算机专业硕士毕业生,腾讯SNG部门实习生,现加盟快手科技 ,后端研发工程师一枚

  • 喜欢技术,喜欢互联网

  • 民遥控 ,赵雷、陈粒、宋冬野

  • 公众号:编程美学,时不时写篇文章,偶尔数羊,其实说到底,只是想和你聊聊
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011939264/article/details/84574316