登錄
手機訪問
街坊 · 留言 關於我 小遊戲 FlagList
为了更好的体验请切换为竖屏
回到顶部
分享页面
生成海报
邮箱订阅
今日访问
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
正在创建海报

配置阿里云Ubuntu服务器(Nginx,MySQL,PHP,SSL证书)

2019-10-09
伍子蛇 发布在 雜文, 電腦技術
6348
16min
437 °C
小科普

很多人不了解服务器是什么,总感觉是个很高端的东西,那么我就来简单解释一下。服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。

说白了,服务器就是计算机。那么我们自己的电脑可不可以当做服务器呢?

先要了解一个东西叫做端口,一般80作为网页服务器的访问端口,比如一个网站的ip地址是123.123.123.123,我们访问的是123.123.123.123:80 只是80是默认端口可以省略,然而我们的网络商应信产部要求,80端口是被封了的,以此做的目的应该是为了规范网络,必须进行备案后才可以使用。

另外一个东西叫做IP,在互联网中唯一定位一台主机的方法是通过公网的IP地址,但固定IP是一种非常稀缺的资源,不可能给每个人都分配一个,我们也不愿意为高昂的费用买单,多数用户直接或间接的拨号上网,电信部门会给接入网络的用户分配IP地址,所以我们使用的都是动态IP,动态IP就是常常会变化的IP地址。把路由器插头拔掉,等一段时间,下次联网的时候应该就是一个全新的IP地址了。那么我们就不能将域名和IP进行映射,因为IP时刻在变。

但是普通PC也是可以当服务器的,具体如何实现我就不细说了,可以查询“内网穿透”进一步了解。对于普通用户没必要做这种吃力不讨好的事情,在主流平台购买服务就好了。

这篇文章主要来讲一讲买了一个Ubuntu系统的阿里云服务器如何配置。Ubuntu是基于linux的操作系统,在文中我们还要继续安装的Nginx,它是一个高性能的HTTP和反向代理web服务器,简单来说我们用Nginx将域名映射到相应的文件夹,文件夹内放入我们的程序,就可以通过域名访问到这个文件夹了。

第一步,阿里云相关操作以及连接服务器

首先在阿里云网页给服务器重置密码,并重启服务器,否则无法ssh连接。在服务器的安全组中确认是否22端口开启,没有的话创建22端口,然后命令行中输入: ssh root@xx.xx.xxx.xxx

即可正常登陆。继续在阿里云网页,服务器的安全组中添加80端口和3306端口,授权对象处都输入0.0.0.0/0。80端口是为了nginx可以正确访问,3306端口是为了可以用比如Navicat等软件远程连接MySQl的默认端口。如需要https,继续添加443端口。

然后将已备案的域名解析到服务器的IP上。至此完成阿里云网页上的所有操作。

第二步,安装nginx

① 安装nginx

// 更新包 sudo apt-get update // 下载安装nginx sudo apt-get install nginx

② 测试安装

在命令行中输入: sudo nginx -t

窗口显示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

在浏览器中输入IP,可见Welcome to nginx!则安装成功。

第三步,安装mySql

通过键入以下命令安装MySQL: sudo apt install mysql-server

为了确保安装安全,MySQL附带了一个脚本,该脚本将询问我们是否要修改一些不安全的默认值。通过键入以下命令来启动脚本: sudo mysql_secure_installation

回答Y,后输入0,再输入root密码,密码最好大小写加上特殊符号。

终端打开MySQL则输入: sudo mysql

接下来,使用以下命令检查每个MySQL用户帐户使用的身份验证方法:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

在此示例中,您可以看到root用户实际上确实在使用auth_socket插件进行身份验证。要将帐户配置为使用密码进行身份验证,请运行以下ALTER USER命令。确保更改password为您选择的强密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行FLUSH PRIVILEGES告诉服务器重新加载授权表并使新的更改生效:

再次检查每个用户使用的身份验证方法,以确认root不再使用auth_socket插件进行身份验证:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

可以看到root的host是localhost,这样是不可以用软件远程访问的,执行一下sql语句,将root的host改为%;

use mysql;

update user set host="%" where user="root";

再退出mysql,输入:exit

以后要用命令进入mysql不可以再sudo mysql了,需要sudo mysql -u root -r

以上操作完即可远程连接服务器。

第四步,安装PHP并配置Nginx以使用PHP处理器

universe在安装php-fpm软件包之前,您可能需要添加Ubuntu的存储库,其中包括由Ubuntu社区维护的免费和开源软件,具体取决于您的云提供商。您可以通过键入以下内容来执行此操作:

sudo add-apt-repository universe

安装该php-fpm模块以及一个附加的帮助程序包,php-mysql它将允许PHP与您的数据库后端进行通信。安装将引入必要的PHP核心文件。通过键入以下内容:

sudo apt install php-fpm php-mysql

/etc/nginx/sites-available/目录中打开一个新的服务器块配置文件。在此示例中,新的服务器块配置文件名为example.com,尽管您可以根据自己的喜好命名:

sudo nano /etc/nginx/sites-available/example.com

将以下内容(从默认服务器块配置文件中获取并稍作修改)添加到新的服务器块配置文件中:/etc/nginx/sites-available/example.com

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

上面的example.com就是刚才创建的文件,后面的php7.2-fpm.sock需要修改为正确的名称,输入以下:

ls -lAF /run/php/

可以看到是php7.4-fpm.sock。按照实际情况修改好。

在配置的映射文件中创建php文件,并输入<?php phpinfo();

访问这个文件,可以看到php的情况则php安装完成。

如果有的Php执行不了,可能是权限问题,默认是给了root权限,将root用户修改为php的www-data用户:

chown -R www-data:www-data .

如果需要安装php扩展:

apt-get install php版本号再按两下tab,就会列出所有的扩展。

重启php service php再按两下tab会补全,然后在输入restart,比如:

service php7.0-fpm restart

「 How To Install Linux, Nginx, MySQL, PHP 」
参考网站
digitalocean
SSL证书

① 在阿里云购买证书,点击此处

② 在证书页面获取DNS数据,去域名解析处添加解析,再到证书页面去验证,验证通过下发证书了就可以下载了。

「 HTTPS配置 」
参考网站
阿里云

③ 将域名nginx的配置文件修改

# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name localhost;  #将localhost修改为您证书绑定的域名,例如: 
    www.example.com。
    root html;
    index index.html index.htm;
    ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM- 
    SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;   
    location / {
        root html;   #站点目录。
        index index.html index.htm;   
    }
} 

④ 用ssh链接服务器,nginx -t查看是否代码有写错,没有写错的话重启nginx,service nginx restart

⑤ 如果需要让访问http的时候直接跳转https,可以写一个80端口监听并重写:

server {
    listen 80;
    server_name localhost;   #将localhost修改为您证书绑定的域名,例如:    
    www.example.com。
    rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
    location / {
        index index.html index.htm;
    }
}
「 在Nginx/Tengine服务器上安装证书 」
参考网站
阿里云
送TA咖啡
- 请作者喝一杯咖啡吧!速溶的也可以 -
点点广告也是支持作者哦
討論區

Leave a Reply

Your email address will not be published.

@
+
=
取消
發送
最新文章
Latest articles
因利来,因利走
2020-07-30 38 °C
为什么你觉得头(大脑)很重要?
2020-06-23 429 °C
自己的近况,Better man?
2020-06-10 662 °C
构建梦境的库,GoodNight.js
2020-06-06 1086 °C
最新活动
Latest events
随机推送 / Random push
960 °C
饮中八仙 丨 陳老茂
628 °C
红线里被软禁的红 丨 夢境
608 °C
刀叉情侣生活 | 小程序上线 丨 雜文
2407 °C
梯中窥人 丨 陳老茂
×
当前选择的是支付宝