Linux作为一个服务器操作系统,可以实现很多服务器程序的部署。本文以部署网站博客为例,迅速上手Linux操作系统。
通过在虚拟机中部署WordPress及其他若干开源项目,掌握LNMP(Linux, Nginx, MySQL, PHP)环境的搭建和配置。在Linux系统中下载并安装Nginx(或Apache2)、MySQL(MariaDB)、PHP及相关插件,确保这些组件可以协同工作。此外,实验中还将使用VMware Workstation Pro作为虚拟机软件,部署Debian 12操作系统,借助MobaXterm和Visual Studio Code等工具进行SSH终端连接和文件编辑。
环境配置
实验中我使用了LNMP环境作为实验环境。
Nginx
apt update
apt install nginx -y
# 下载Nginx
systemctl disable --now apache2
apt purge apache2
apt autoremove
# 删除系统自带的apache2
systemctl enable --now nginx
systemctl status nginx
# 设置nginx开机自启动并检查
MariaDB
下载MariaDB并设置。
apt install mariadb-server -y
mysqladmin password '123456'
# 设置密码
mysql -uroot -p123456
SHOW DATABASES;
# 显示当前所有数据
PHP
安装PHP和所需插件
apt install -y php8.2 php8.2-{fpm,cli,common,mysql,xml,curl,gd,mbstring,zip,bcmath,intl,soap,imap,opcache}
测试php是否可用,首先需要到网站的设置文件中启用php,将php结尾的页面传送给php服务端。文件位于/etc/nginx/sites-available/default
server {
listen 80;
server_name default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
重新加载Nginx的设置
nginx -t
systemctl reload nginx
随后编辑一个php脚本用于测试是否可以正常访问服务器的php页面。
/var/www/html/info.php
<?php phpinfo(); ?>
然后打开浏览器访问对应的URL,就可以查看php信息。
Wordpress
网站设置
首先需要新建一个Nginx的网站设置文件,可以直接将原来的设置复制过来。在同一个服务器下的网站需要不同标签分辨开来。可以使用端口,但是唯一不足就是需要记住不同的端口。另一种方法就是利用不同域名来区分,为不同网站分配不同的子域名。在实验中使用这个方法来进行设置。在这里没有设置端口映射,暂时先指向一个内网IP。
然后在Nginx处设置网站/etc/nginx/sites-available/wordpress.conf
server {
listen 80;
server_name wordpress.arorms.cn;
root /var/www/wordpress;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
然后启用网站
ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
下载WordPress
根据设置,首先前往目录/var/www/
然后下载wordpress
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar -xvf latest.tar.gz
设置WordPress
现在可以通过浏览器访问到刚刚部署的WordPress,访问wordpress.arorms.cn
即可看见相关页面。
在图10中,需要到终端手动设置数据库并填入相关信息。
mysql -uroot -p123456
CREATE DATABASE wordpress;
# 创建新数据库
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '123456';
# 创建新用户并设置密码
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
# 设置权限
FLUSH PRIVILEGES;
# 刷新权限
EXIT;
此处提示无法直接写入wp-config.php脚本,需要手动到网站根目录下编辑这样一个脚本文件。/var/www/wordpress/wp-config.php
然后安装。随后是一些基本的站点信息设置,最后完成WordPress的部署。
WordPress的使用
Typecho
如果使用过Markdown作为记录笔记的标记语言,肯定在本地使用相关软件记录下来需要在其他地方查看,比如需要在手机查看自己写的markdown笔记等。可以通过在服务器上编辑markdown笔记。typecho就是一个支持markdown标记语法的网页工具,这样实现了仅需要编辑,就可以多平台访问你的笔记。
设置网站
cd /etc/nginx/sites-available/
vim typecho.conf
# 编辑一个新的typecho.conf
server {
listen 82;
server_name dev2.arorms.cn;
root /var/www/typecho;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
设置完成后检查并重新加载
nginx -t
systemctl reload nginx
下载网站文件
通过网络搜索,找到了项目地址https://github.com/typecho/typecho。
cd /var/www/
git clone git@github.com:typecho/typecho.git
这里由于是新创建的机器,所以好像因为没有配置密钥对所以无法连接至github,需要手动配置一个。
cd ~/.ssh
ssh-keygen
# 生成密钥对
一路回车即可,然后查看pub文件结尾的公钥,复制到github上。
图18 创建好的
然后下载完毕
设置网站
访问dev2.arorms.cn:82
即可看到网站的安装页面
对于图中问题,前往网站根目录,在/usr文件夹中创建uploads文件夹并调整权限。
mkdir /var/www/typecho/usr/uploads
chmod 777 /var/www/typecho/usr/uploads
下一步前往到数据库设置页面,在终端创建一个新的数据库。
mysql -uroot -p123456
CREATE DATABASE typecho;
EXIT;
touch /var/www/typecho/config.inc.php
# 然后通过MobXterm左边的SFTP直接将代码写入
随后是一些基本设置
然后访问发现部署成功
FRP内网穿透
IPv4地址在2019年已分配完毕,今天的个人设备很难拥有一个IPv4地址。而IPv6地址尚未普及,很多情况下还无法访问IPv6的网络。如果想要将项目部署到公网上,必须需要一个公网IP地址。一般来说云平台提供的云服务器都会带有IP地址,可以实现直接访问。而如果是自己的机器或者虚拟机,通常是没有公网IP的,所以需要通过一个在公网下的服务器,将数据转发给客户端和服务端,来实现将项目部署到互联网上,实现公网访问,这里以刚刚实验的虚拟机为例子。
设置FRP服务端
首先需要下载FRP,地址在github上https://github.com/fatedier/frp。FRP服务端需要一个有公网IP的服务器,这里我有一个阿里云的云服务器作为转发数据的服务器,系统是FreeBSD。首先现在服务器下载好相应软件。
注意这里我的服务器系统是FreeBSD,操作的方法与Linux不一样,主要就是需要下载Frp的服务器端并设置开机自启动,详情可以参考下面客户端设置中的方法,是一样的。
其中,要编辑frp服务端的设置。
bindPort = 7000
vhostHTTPPort = 80
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
开启
./frps -c ./frps.toml
设置开机自启动,需要编辑/usr/local/etc/rc.d/frp
#!/bin/sh
# PROVIDE: frps
# REQUIRE: NETWORKING
# KEYWORD: shutdown
. /etc/rc.subr
name="frps"
rcvar="frps_enable"
start_cmd="${name}_start"
stop_cmd="${name}_stop"
frps_start() {
echo "Starting frps..."
nohup /root/frp/frps -c /root/frp/frps.toml >/dev/null 2>&1 &
# 将所有输出丢弃
}
frps_stop() {
echo "Stopping frps..."
pkill -f "/root/frp/frps -c /root/frp/frps.toml"
}
load_rc_config $name
run_rc_command "$1"
随后到/etc/rc.conf
中启用这个脚本
frp_enable="YES"
开启frp
service frp start
设置FRP客户端
首先在github上下载完成后,将文件上传到/opt文件夹中,并解压。
然后编辑frpc.toml,这是客户端的设置文件
serverAddr = "IP地址或者域名"
serverPort = 7000
[[proxies]]
name = "dev2-http"
type = "http"
localPort = 80
customDomains = ["wordpress.arorms.cn"]
随后设置服务,编辑service文件,在/usr/lib/systemd/system
新建一个frp-http.service
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp_0.58.1_linux_amd64/frpc -c /opt/frp_0.58.1_linux_amd64/frpc.toml
[Install]
WantedBy=multi-user.target
然后启动并检查服务即可
systemctl enable --now frp
systemctl status frp
这里我设置的是根据域名转发,所以需要前往域名解析修改,将域名解析指向代理的云服务器。
这里已经将wordpress.arorms.cn解析到了云服务器的地方,浏览器访问http://wordpress.arorms.cn
并且是公网访问,已经可以访问到。