首页
联系
风尘
统计
留言
关于
Search
1
测试文章
43 阅读
2
WPS正式关闭广告!
30 阅读
3
typecho博客搭建教程
27 阅读
4
LNMP搭建教程
21 阅读
5
Windows安装时自定义各分区大小
4 阅读
生活
软件
硬件
服务器
分享
登录
Search
标签搜索
LNMP
Linux
Nginx
MySQL
PHP
Server
Blog
Typecho
WPS
Office
Windows
花也
累计撰写
5
篇文章
累计收到
3
条评论
首页
栏目
生活
软件
硬件
服务器
分享
页面
联系
风尘
统计
留言
关于
搜索到
2
篇与
的结果
2023-12-15
typecho博客搭建教程
个人博客搭建教程搭建个人博客,需要以下内容:服务器:具体可见本站LNMP服务器搭建教程域名:域名后缀选择有很多,建议选择.com.net.cn,.org在国内已无法备案ssl证书:腾讯云\阿里云\xx云\CloudFlare\let's ecrypt白嫖博客系统:轻量选择typecho,功能多且通用选wordpress,静态博客选hexo等从购买域名开始我知道,选择域名是件痛苦的事情。痛苦来源于以下方面:大部分人应该都知道.com域名,com域名可信度高、对搜索引擎友好、价格稳定,是互联网域名的典型标志。符合国人习惯的双拼com都被注册完了,剩下一些难读且无意义的拼音,比如"fiao";一些很常见的单词域名基本也被注册完了,基本选不到什么好的;也就只能花费大把力气去不停的搜索或者阿里云的批量搜,然后筛选出一些品相好看、简短且容易翻译成中文的词;大部分品相好看的或者简短有意义的域名都被挂了高价出售,域名被称作"米",这些人被称作"米农";以上适用于.com;其他的域名后缀,比如.net和.cn,个人觉得.cn是比.net好记的,但是.cn必须备案才可以使用;.org已无法备案,国内的厂商也不支持注册了,如果后续考虑做大的话,备案可能是个问题(但是.org是有很多好的双拼域名的);.top/.xyz因为其本身的首年注册很便宜,封了也不在乎,所以大部分的此类域名的用途都不太正规,风评不好;.app/.dev/之类的域名还行,但不常见;现在很火的.ai域名,续费价格挺高的;所以买域名需要很综合的来看;可以考虑域名发音的相似性,简单举例就是华为的麒麟Kyrin和鸿蒙Harmony;我曾经也注册过很多域名,大大小小,多多少少,也花了过千,很多都是无意义但有些品相的.com,食之无味,弃之可惜那种。所以最后都不再续费了,真的让我续费下来的,少之又少。本站域名wexue.com,其实也是一个无奈的折中表现,如果是完整的双拼,价格要加两三个零。"we"是我们的意思,发音近似于"微,唯"等,"xue"就是"雪或者学",我是个中国传统文化爱好者,同时不爱学习,所以取名"唯雪"。个人觉得,域名的发音、品相和长度固然很重要,但是内容更重要,所以如果你真的打算用一个域名长期做下去,那你一定要为你的域名正名。吐槽完毕。下面开始正文:我们此处以com域名为例,讲讲怎么注册,以及注册后要做的事。com域名的新购和续费价格是很稳定的,如果是在阿里云/腾讯云购买,新用户有优惠,续费的话一年在85R左右。想了一下,域名购买好像没啥讲的,大厂的流程都做的很简单明了了。?从购买后开始讲。比如我们在腾讯云购买的域名(腾讯云要比阿里云便宜几块钱?),那么我们到控制台云解析DNS处,添加两条解析记录:(记录值中的10.10.10.10只是一个示例IP地址,这里请填写你服务器的IP地址)主机记录 记录类型 线路类型 记录值 @ A 默认 10.10.10.10(记录值中的domain.com只是示例域名,这里请填写你的域名)主机记录 记录类型 线路类型 记录值 www CNAME 默认 domain.com如果想添加比如blog.wexue.com类似的域名,那么示例如下:主机记录 记录类型 线路类型 记录值 blog A 默认 10.10.10.10域名解析这里就设置完了。隔几分钟后可以ping一下上面设置的域名,看ip地址是否正确。提示:Windows ping用法:按 Windows键 + R键 ,输入cmd,回车,弹出来的黑框框中输入ping -t blog.wexue.com,会显示IP地址和TTL时间Linux ping用法:打开Terminal,输入ping blog.wexue.com,会显示IP地址和TTL时间请将wexue.com改成你自己的域名注:域名解析是将一个域名解析到一个IP地址上,每次访问域名时,都会通过DNS服务器查询域名对应的IP地址,这样才可以找到IP地址所在的服务器。为什么不通过IP地址直接访问呢?举个例子:179.53.82.147,你作为服务器owner,你很可能记得住,但是用户很可能记不住,也不想记。记一个两个还好,多了鬼知道哪个对应哪个。此时一个简单好记且有意义的域名作用就体现出来了。但也有真的使用IP地址访问的,比如正点原子的文档服务器?:ssl证书申请我们在浏览器输入域名访问的时候,有没有注意过,浏览器地址栏会自动在域名前面加上https://这样的字符,这就是加了ssl证书的域名。如果没有加ssl证书,那么浏览器地址栏前面大概率会提示不安全,浏览器地址栏会在域名前面加上http://。就像这样:注:https和http的区别在于https相对于http的流量是加密的,别人无法看到你的通信内容,安全性大大增加。s就是secure的意思。申请开始,白嫖内容。在腾讯云控制台搜索ssl证书,点我的证书-SSL证书,申请免费证书(每年会给20个免费证书)。填写要申请证书的域名,比如我们为drive.wexue.com申请证书,那么就填写drive.wexue.com。邮箱随便填一个,只是用来接收通知用。然后会让添加一个CNAME解析,按他给的信息添加就可以了,等待大概5-10分钟,再回到证书界面,会显示已签发,点击下载,nginx格式的。下载的内容是一个压缩包,里面包含了四个文件,我们需要其中后缀为.pem和.key的文件,将这两个文件命名为blog.pem和blog.key。ssl证书申请部分到此结束。博客系统搭建SSH登录服务器。WinSCP连接服务器。将刚才申请的证书的.pem文件和.key文件传输到服务器上,然后SSH将这两个文件移动到/etc/nginx/ssl文件夹下。切换到/etc/nginx/vhost文件夹下,新建一个.conf文件,比如:blog.confnano /etc/nginx/vhost/blog.conf复制粘贴以下内容:server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/ssl/blog.pem; ssl_certificate_key /etc/nginx/ssl/blog.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; server_name blog.wexue.com; access_log /var/log/nginx/blog_nginx.log combined; index index.html index.htm index.php; root /www/blog/; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } } #error_page 404 /404.html; #error_page 502 /502.html; location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv|mp4)$ { valid_referers none blocked *.wexue.com blog.wexue.com; if ($invalid_referer) { return 403; } } location ~ .*\.php(\/.*)*$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php8.0-fpm.sock; fastcgi_index index.php; include fastcgi.conf; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) { deny all; } }将上面代码里的blog和wexue改成你自己的域名。博客系统搭建此处以typecho为例(wordpress基本相同)。首先在/www文件夹下创建blog文件夹(这个文件夹就是上面代码root /www/blog/;那行的文件夹名字,要创建的文件夹名字和这行的名字请保持一致):mkdir /www/blog然后去typecho官网下载最新的包:我是链接下载后的zip文件使用WinSCP传输到服务器上,比如放在/home/username文件夹下,然后切换到/www/blog文件夹,然后执行:cd /www/blog unzip /home/username/typecho.zip然后回到/www文件夹下,将/www/blog文件夹及该文件夹下的所有文件的拥有者改为www:cd /www chown -R www:www /www/blog博客系统至此搭建完成。注:如果你有其他主题,请将主题解压后放在/www/blog/usr/themes/文件夹下如果你有其他插件,请将主题解压后放在/www/blog/usr/plugins/文件夹下如果你找不到其他主题和插件,请去Github数据库我们的博客是需要数据库的,数据库是个好东西,易备份易恢复,居服务器必备之良药。你可能会问,我们在LNMP搭建部分不是已经做好MySQL数据库了吗?是的,我们是搭建好了MySQL,但是MySQL只是一个数据库服务,它本身并不是数据库,所以我们要创建一个数据库来存储我们的博客内容。输入以下命令:#以root账户进入数据库,需要输入root账户密码 mysql -uroot -p #创建一个普通用户,用户名是username,密码是123456 create user 'username'@'localhost' identified by '123456'; #创建一个数据库,名字为blog create database blog; #将数据库blog的所属用户改为username grant all privileges on blog.* to 'username'@'localhost'; #刷新权限 flush privileges; #退出 exit;至此,数据库就创建完了。开始设置博客首先重启一下nginx,使blog.conf配置文件生效:systemctl restart nginx然后在浏览器输入你的域名,就可以开始设置了。数据库选择pdo_mysql;数据库名填刚才设置的blog;用户名填刚才设置的数据库用户名username;密码填username的密码123456;然后点击安装;网站管理员账户填写你想设定的管理员账户名字;输入管理员密码;输入管理员邮箱;安装;安装完成;此时再访问你的域名,看看是不是成功了。
2023年12月15日
27 阅读
0 评论
0 点赞
2023-12-15
LNMP搭建教程
这是一篇LNMP搭建教程。LNMP是Linux + Nginx + MySQL + PHP的简称。LNMP可以干嘛呢,我们大部分时候看到的各种网站基本都是在这个架构上搭建起来的,基本是想搭建自己的网站服务的第一步了。当然现在还有一些简单的静态页面架构,这个后续有时间再说(其实是我现在也不怎么用静态页面,还不会?)。这篇教程只讨论应用有关的部分,不讨论底层知识。背景:需要搭建博客 + 网盘 + 图床。博客要求是轻量,有数据库每天备份,最终选择typecho;网盘更多的是用对象存储或者一些厂商的云盘服务,最终选择了alist(墙推);图床最终选择是lsky pro,虽然开源版不再更新了,但是依旧很好用。要求:typecho和lsky pro都要求LNMP环境,alist只需要nginx做反代;服务器性能要求至少为2C2G40G;数据库每天自动备份,本地 + 云端各一份;每月的服务器+流量+存储费用在合理范围内。不折腾,稳定,可以长期用。成本:服务器成本:2C2G40G流量1T每年的费用从20刀到80刀不等(按2023年12月份美元对人民币汇率7.3来算,大概146R~584R一年),取决于服务器的性能、网络、稳定性、地理位置等等吧,总体差距还是很大的;存储费用:刚提到要用对象存储,单独使用服务器的40G是远远不够的,而且数据和服务分开可以大大提升数据安全性。国外对象存储价格大多在每TB月付5刀~15刀,支持按量付费,国内一般都是按照资源包的方式购买的。对象存储服务最贵的是CDN流量费用,国外可以考虑白嫖CloudFlare带宽联盟,但是国内访问速度不理想。国内只能靠买资源包,但还划算。另外需要注意:使用国内的CDN服务必须有备案域名,其次国内CDN和国外CDN不通用,国外CDN必须另外购买资源包;SSL证书靠白嫖;时间成本和人力成本。其实服务搭建好后,别时不时想着去动一下,很稳定的。数据和数据库做好备份,基本不需要什么维护。接下来开始搭建(建议先把下面内容看一遍再回来跟着搭建):Linux部分Linux部分主要分为以下几个方面:重装服务器创建用户及设置密码设置SSH端口及禁止root用户登录安装系统必要软件和推荐软件开启防火墙和放行端口1. 重装服务器为什么要先从服务器重装开始呢?因为我们购买服务器的时候,大部分的服务器镜像或者系统都是厂商定制过的,里面多多少少塞了一些厂商的东西,比如对服务器的监控服务等。为了避免监控或者保证服务器的干净,我们先对系统重装一下。如果你一开始就是使用镜像自己安装的,可以跳过这一部分。如果服务器厂商后台可以挂载系统镜像,那手动挂载镜像然后重装是最推荐的办法。如果后台不可以挂载镜像,那就看接下来的重装教程吧。使用厂商给的用户名和密码使用SSH登录服务器。然后在root用户下逐行输入以下几条命令:apt update apt install wget xz-utils openssl gawk file -y wget --no-check-certificate -qO InstallNET.sh 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh' chmod a+x ./InstallNET.sh bash ./InstallNET.sh -d 12 -v 64 -a如果是国内的服务器,执行最后一条命令后,下载镜像速度很慢。因为这条命令默认使用Debian官方服务器,国内基本没法用。所以可以在最后一条命令后面追加--mirror 'http://mirrors.ustc.edu.cn/debian/'以使用中科大的源。追加后的命令如下:bash ./InstallNET.sh -d 12 -v 64 -a --mirror 'http://mirrors.ustc.edu.cn/debian/'等待系统下载完毕,服务器自动重启。如果不出什么幺蛾子的话,等待大概五到十五分钟,服务器安装完毕。安装速度取决于服务器性能和网络。服务器重装完毕后使用root账户和MoeClub.org密码登录服务器。在执行下面操作之前,我们可能会遇到Debian的一个很经典的bash xxx : command not found的错误提示。解决方法,依次输入以下两条命令:echo "PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"" >> /etc/profile source /etc/profile2. 创建用户及设置密码修改root用户密码root密码是一定需要修改的,MoeClub.org是上面的重装脚本自动设置的,凡是使用该重装脚本重装的系统,root密码都是MoeClub.org,所以一定要改成自己的密码。passed root命令提示符会提示输入密码。输入密码后回车。命令提示符会提示再次输入密码。输入密码后回车。提示password update successfully.说明密码设置成功。创建用户useradd -m username以上命令会创建一个用户名为"username"的用户,并在/home/文件夹下创建username文件夹。请将username改成你自己想要设定的用户名,下文遇到username同样改成你自己想要设定的用户名。注: -m参数是指定创建用户同时创建该用户的目录设置用户密码passwd username命令提示符会提示输入密码。输入你想要为username用户设定的密码。回车。命令提示符会提示再次输入密码。再次输入一遍你想要为username用户设定的密码后回车。为了安全,输入密码的时候是看不到密码的。两次输入密码也保证了输入的密码极大概率不会出错。提示password update successfully.说明密码设置成功。3. 设置SSH端口及禁止root用户登录设置SSH端口使用任一编辑器(个人推荐nano编辑器),编辑/etc/ssh/sshd_config文件:nano /etc/ssh/sshd_config找到Port 22所在的行。如果你想将ssh登录端口改为2023,那么就将Port 22修改为Port 2023。SSH是支持多端口登录的,在设置端口为2023的同时,还可以同时设定为2024、2025、8888、等任一Linux端口,只需要添加一行Port 8888就行了。后续就可以使用端口2023或者8888来登录。注意不要和其他服务的端口重复。禁止root用户登录root用户是Linux系统最关键的用户,日常请不要使用该用户进行操作,同时禁止该用户远程登录以防止他人对服务器进行登录攻击。(这个一定要重视,我之前买过一个服务器,平均每周能有几十次登录失败的提示,都不是我个人的登录操作,换端口+禁止root账户登录可以有效防止此类情况发生)上述重装系统后,会默认开放root用户登录(大多数厂商都是此类方式),因为没有其他用于登录的账户了。但是我们上面已经创建了一个账户,所以此处就可以禁止root远程登录了(但是实机或者厂商提供的VNC方式依旧可以正常登录,这两种方式不属于远程)。依旧是上面的sshd_config文件,找到Prohibit root Login的那一行,把最后的yes改为no。然后保存退出该文件,重启一下sshd服务:systemctl restart sshd后续就可以使用我们刚才创建的账户和端口登录服务器了。注意一定要先创建普通用户再禁止root账户登录。4. 安装必要软件和推荐软件如果是国内服务器,在安装软件前,先更换一下软件源为国内的软件源。nano /etc/sources.list然后将文件中的deb.debian.org和security.debian.org修改为mirrors.ustc.edu.cn,再执行以下命令。国外服务器请忽略以上软件源配置。apt update apt dist-upgrade -y apt install sudo net-tools wget unzip tree curl gcc g++ build-essential autoconf libnuma1 libaio1 libmecab2 psmisc iputils-ping procps mecab-ipadic-utf8 libssl-dev git nodejs python3 python3-pip rclone screen iftop lsof aria2 -y ln -s /usr/bin/python3 /usr/bin/python以上命令更新整个系统至最新,并安装了一些推荐软件包(net-tools,wget,curl,unzip,tree,git,nodejs,python3,python3-pip,rclone,screen,iftop,lsof,aria2。这些软件如果不需要可以按需删除),同时设置python3为系统默认的python环境。5. 开启防火墙和放行端口Debian12默认防火墙是nftables,很强大,但是官方文档看的我不是很能理解(●'◡'●)。废话不多说,开干。首先开启站内IPv4流量转发:sed -i "28a net.ipv4.ip_forward=1" /etc/sysctl.conf执行以下几条命令以设定nftables开机自启,同时编辑防火墙规则:systemctl enable nftables nft flush ruleset mv /etc/nftables.conf /etc/nftables.conf.bak nano /etc/nftables.conf将以下内容复制粘贴进去:table inet filter { chain input { type filter hook input priority filter; policy drop; iif "lo" accept ct state established,related accept ip protocol icmp icmp type echo-request ct state new accept ct state invalid drop tcp dport 80 accept tcp dport 443 accept tcp dport 2023 accept tcp dport 8888 accept udp dport 6666 accept tcp dport 6666 accept } chain forward { type filter hook forward priority filter; policy accept; } chain output { type filter hook output priority filter; policy accept; } }保存并关闭文件,然后输入以下命令重启nftables服务:systemctl restart nftables此时nftables防火墙就生效了。简单解释一下以上内容:设置了防火墙规则为:进站数据丢弃,出站数据全部接收,站内转发数据全部接收。因为攻击都是从外部来的,所以不可以让乱七八糟的流量都进服务器,所以进站默认是丢弃的(但是开放了一些必要端口);出站就是服务器的数据向外输出,正常的服务器流量都要出站才可以传达给用户;站内转发就是服务器内部各个网卡间的通信,需要开启。进站规则中:本地回环流量(lo网卡)设置为接收;已经连接的通信数据设置为接收;icmp请求(就是服务器的ping)设置为接收;不合法的通信数据丢弃。开放了http 80端口,https 443端口,上面我们设置的SSH 2023和8888端口,这些都是走的tcp流量,所以只开启了这些端口的tcp流量接收。 tcp dport 80 accept tcp dport 443 accept tcp dport 2023 accept tcp dport 8888 accept开启了6666的tcp和udp的流量接收,我们此处没有用到,这里只是提供一个示例如何打开端口对应的UDP流量。 udp dport 6666 accept tcp dport 6666 accept注意端口不要照抄我的,自己需要用哪些端口就开放哪些,不需要的都建议关掉。至此,Linux部分就设置完了。Nginx部分首先需要创建一个用户www及对应的用户组(www就是我们服务器里提供服务的用户,nginx服务和PHP服务都将属于www)。然后在根目录创建一个文件夹www。当然也可以在其他地方创建不同名字的文件夹,但下方的教程里遇到的时候请注意同步更改命令内容,建议初学还是跟着本教程来,本教程也是按照LNMP.org的一键安装脚本安装后自己摸索出来的。groupadd www useradd -g www www mkdir /www然后开始安装nginx:apt install nginx -y mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak配置nginx:nano /etc/nginx/nginx.conf然后把以下内容复制粘贴进去:user www www; worker_processes auto; error_log /var/log/nginx/error.log crit; pid /run/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; multi_accept on; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 4096m; client_body_buffer_size 100m; sendfile on; tcp_nopush on; keepalive_timeout 120; server_tokens off; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_intercept_errors on; #Gzip Compression gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_http_version 1.1; gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml text/javascript application/javascript application/x-javascript text/x-json application/json application/x-web-app-manifest+json text/css text/plain text/x-component font/opentype application/x-font-ttf application/vnd.ms-fontobject image/x-icon; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; ##Brotli Compression #brotli on; #brotli_comp_level 6; #brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml; ##If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency. #open_file_cache max=1000 inactive=20s; #open_file_cache_valid 30s; #open_file_cache_min_uses 2; #open_file_cache_errors on; ######################## default ############################ server { listen 80; server_name _; access_log /var/log/nginx/access.log combined; root /www/; index index.html index.htm index.php; #error_page 404 /404.html; #error_page 502 /502.html; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } location ~ [^/]\.php(/|$) { #fastcgi_pass remote_php_ip:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) { deny all; } } ########################## vhost ############################# include /etc/nginx/vhost/*.conf; } 保存退出该文件。然后创建两个文件夹:mkdir /etc/nginx/vhost mkdir /etc/nginx/sslvhost用来放置网站的配置文件,ssl用来放置网站的证书。至此,Nginx部分就设置完了。另注:如果你用的是Debian11,那么使用systemctl status nginx的时候,可能会发现提示无法加载nginx.pid,执行以下几条命令就好了:mkdir -p /etc/systemd/system/nginx.service.d printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" >/etc/systemd/system/nginx.service.d/override.conf systemctl daemon-reload systemctl restart nginxMySQL部分需要去MySQL官网下载安装包,或者直接用MariaDB,本文使用MySQL官网安装包的方式安装。MySQL社区版适用于Debian12安装包的官网下载地址:https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-server_8.2.0-1debian12_amd64.deb-bundle.tar或者直接:wget https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-server_8.2.0-1debian12_amd64.deb-bundle.tar下载到本地后解压:tar xvf ./mysql-server_8.2.0-1debian12_amd64.deb-bundle.tar逐行使用以下命令进行安装组件:dpkg -i mysql-common_8.2.0-1debian12_amd64.deb dpkg -i mysql-community-client-plugins_8.2.0-1debian12_amd64.deb dpkg -i mysql-community-client-core_8.2.0-1debian12_amd64.deb dpkg -i mysql-community-client_8.2.0-1debian12_amd64.deb dpkg -i mysql-client_8.2.0-1debian12_amd64.deb dpkg -i mysql-community-server-core_8.2.0-1debian12_amd64.deb dpkg -i mysql-community-server_8.2.0-1debian12_amd64.deb dpkg -i mysql-server_8.2.0-1debian12_amd64.deb在安装mysql-community-server_8.2.0-1debian12_amd64.deb的时候,会提示输入MySQL的root账户密码,输入两次(这里是让设定MySQL的root密码,和Linux系统的root账户不是同一个账户)。然后会让选择密码强度,选择Strong,强密码。以上命令执行完之后,输入以下命令进行一些初始化设置:mysql_secure_installation输入MySQL root账户密码开始设定。是否安装密码增强插件:是密码等级:2是否需要修改root账户密码:直接回车或输入n是否关闭root远程登陆:y是否移除匿名用户:y是否现在刷新权限:y至此,MySQL部分设定结束。注:如果是Debian11或者其他MySQL版本,安装的时候可能会提示缺少libssl1.1,去这里下载:http://ftp.cn.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb然后安装:dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb然后重新执行MySQL的安装过程。PHP部分Debian12默认的PHP版本是PHP8.2,但是lsky pro用8.2版本的PHP会出错,所以我们使用PHP8.0版本。输入以下命令追加PHP源:apt install -y lsb-release apt-transport-https ca-certificates wget wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list apt update然后开始安装PHP:apt install php8.0-fpm php8.0-bcmath php8.0-curl php8.0-xml php8.0-mbstring php8.0-mysql php8.0-pgsql php8.0-redis php8.0-soap php8.0-xmlrpc php8.0-zip php8.0-gd php8.0-imagick php8.0-bz2 -y接下来配置PHP。首先是PHP.ini,这是PHP的配置文件,很长很长,所以建议直接用wget下载,执行以下命令:cd /etc/php/8.0/fpm cp /etc/php/8.0/fpm/php.ini /etc/php/8.0/fpm/php.ini.bak wget --no-check-certificate https://icdn.wexue.com/Server/php.ini -O /etc/php/8.0/fpm/php.ini其次配置php-fpm.conf,这是php-fpm的配置文件,执行以下命令:mv /etc/php/8.0/fpm/php-fpm.conf /etc/php/8.0/fpm/php-fpm.conf.bak nano /etc/php/8.0/fpm/php-fpm.conf然后把以下内容复制粘贴进去:;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] pid = /run/php/php8.0-fpm.pid error_log = /var/log/php8.0-fpm.log log_level = warning emergency_restart_threshold = 30 emergency_restart_interval = 60s process_control_timeout = 5s daemonize = yes ;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ; ;;;;;;;;;;;;;;;;;;;; include=/etc/php/8.0/fpm/pool.d/*.conf保存退出。最后配置www.conf,这是对php-fpm.conf文件的补充覆盖,可以简单理解为PHP网站的配置文件:cd /etc/php/8.0/fpm/pool.d/ mv /etc/php/8.0/fpm/pool.d/www.conf /etc/php/8.0/fpm/pool.d/www.conf.bak nano /etc/php/8.0/fpm/pool.d/www.conf复制粘贴以下内容:[www] listen = /run/php/php8.0-fpm.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 16 pm.start_servers = 10 pm.min_spare_servers = 8 pm.max_spare_servers = 16 pm.max_requests = 2048 pm.process_idle_timeout = 10s request_terminate_timeout = 120 request_slowlog_timeout = 0 ;pm.status_path = /status ;slowlog = log/$pool.log.slow rlimit_files = 51200 rlimit_core = 0 catch_workers_output = yes env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp保存退出。至此,PHP部分配置完毕。结果检查:输入以下命令重启PHP、MySQL和Nginx:systemctl restart php8.0-fpm systemctl restart mysql systemctl restart nginx然后使用以下命令查看PHP、MySQL和Nginx服务状态:systemctl status php8.0-fpm systemctl status mysql systemctl status nginx如果三个服务都是active(running)状态并且无Error提示就说明配置完成了。提示:如果使用systemctl status xxx的时候不显示命令提示符,输入q就可以了。重启一下服务器。
2023年12月15日
21 阅读
0 评论
0 点赞