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

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

2019-10-09
伍子蛇 发布在 雜文, 電腦技術
6199
16min
2687 °C
第一步,网页相关操作以及连接服务器

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

即可正常登陆。继续在所在服务器管理平台,服务器的安全组中添加80端口和443端口,授权对象处都输入0.0.0.0/0。80端口是http,443是https的默认端口。

切勿打开3306端口,因为例如使用navicat通过3306远程的时候是明文传输的,可以套一层ssh再连接3306

然后将已备案的域名解析到服务器的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

卸载步骤1.查看mysql的依赖 dpkg --list|grep mysql 2.卸载 sudo apt-get remove mysql-common 3.卸载(按照具体版本号) sudo apt-get autoremove --purge mysql-server-x.x 4.清除残留数据 dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P

通过键入以下命令安装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

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

更多说明如果账号密码忘记或者设置错误无法进入mysql,可以进入etc/mysql/debian.cnf 里面有debian-sys-maint的密码,可以用这个用户登录

8.0的mysql配置远程访问,还需要先关停服务 sudo systemctl stop mysql 然后修改/etc/mysql/mysql.conf.d/mysqld.cnf 注释掉#bind-address = 127.0.0.1 然后重启服务 sudo service mysql start
「 ubuntu20 安装和配置mysql8.0.23 」
参考网站
segmentfault
第四步,安装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咖啡
- 请作者喝一杯咖啡吧!速溶的也可以 -
再不济留个言吧

文章分类 : 雜文, 電腦技術

作者 : 伍子蛇

留言 : 1 条 »

写于 : 2019年10月09日     下午10:51

討論區

发表回复

您的电子邮箱地址不会被公开。

@
+
=
取消
發送
最新文章
Latest articles
由攻壳机动队思考永生
2022-08-15 44 °C
陪你很久很久
2022-08-10 98 °C
君の名は。
2022-07-31 105 °C
天道——遥远的救世主
2022-07-28 167 °C
随机推送 / Random push
3887 °C
相思雨 丨 优选陳老茂
3745 °C
刀叉 丨 明信片 丨 信天翁
3404 °C
三年前的信 丨 信天翁
1579 °C
Cyber Punk 2077 丨 雜文
×
当前选择的是支付宝