html
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum update -y
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel curl curl-devel libpng libpng-devel libjpeg libjpeg-devel freetype-devel autoconf libaio
参考链接:https://www.cnblogs.com/lywJ/p/10710361.html
官网地址:http://nginx.org/en/download.html
Nginx官网提供了三个类型的版本 Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版 Stable version:最新稳定版,生产环境上建议使用的版本 Legacy versions:遗留的老版本的稳定版
当前文档使用的nginx版本为nginx-1.28.0
tar -xvf nginx-1.28.0.tar.gz -C /usr/local/
cd /usr/local/nginx-1.28.0/
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--with-http_v2_module \
--with-http_mp4_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-mail \
--with-mail_ssl_module
mkdir -p /var/temp/nginx
make && make install
groupadd nginx
useradd -r -g nginx -s /bin/false nginx
cd /usr/local/nginx
启动nginx:./sbin/nginx
查看nginx是否启动:ps -aux | grep nginx

在浏览器端访问ip,看页面是否返回“Welcome to nginx!”
注:浏览器访问还涉及到防火墙,云服务器可直接去服务商那边配置安全组,本地机房的话,可以相关网络安全部门同事
./sbin/nginx -s stop
vim /lib/systemd/system/nginx.service
输入以下内容:
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
加入开机自启动
systemctl enable nginx
systemctl start nginx #启动nginx
systemctl stop nginx #停止nginx
systemctl restart nginx #重启nginx
vim /usr/local/nginx/conf/nginx.conf
在http{...} 中插入client_max_body_size 100m; #指定上传大小
在http{...}最底部插入include conf.d/*.conf;
参考链接:https://www.php.net/manual/zh/install.unix.nginx.php
下载地址:https://www.php.net/distributions/php-7.2.34.tar.gz
tar -xvf php-7.2.34.tar.gz -C /usr/local/
cd /usr/local/php-7.2.34/
./configure \
--prefix=/usr/local/php \
--with-mysqli \
--with-pdo_mysql=mysqlnd \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-bcmath \
--enable-tokenizer \
--enable-zip
make && make install
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
修改php-fpm的配置项,确保 php-fpm 模块使用 www 用户和 www 用户组的身份运行。
groupadd www
useradd -r -g www -s /bin/false www
vim /usr/local/php/etc/php-fpm.d/www.conf
找到以下内容并修改
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www
group = www
;允许创建的最大子进程数
;max_children越大,并发能力越强,但max_children最大不要超过5000
;每个PHP子进程需要20MB左右内存,过大的max_children会导致服务器不稳定
pm.max_children = 5
;起始进程数(服务启动后初始进程数量)
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2
;最小空闲进程数(清理空闲进程后的保留数量)
pm.min_spare_servers = 1
;最大空闲进程数(当空闲进程达到此值时清理)
pm.max_spare_servers = 3
根据实际需求,修改php.ini里的上传大小等配置
;允许上传文件大小的最大值
upload_max_filesize = 2M
;通过表单POST给PHP的所能接收的最大值
post_max_size = 8M
/usr/local/php/sbin/php-fpmps -aux | grep php-fpm

下载扩展:https://github.com/phpredis/phpredis/releases
tar -xvf phpredis-5.3.4.tar.gz -C /usr/local/
cd /usr/local/phpredis-5.3.4/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改php.ini文件
vi /usr/local/php/lib/php.ini
增加如下内容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/"
extension=redis.so
下载扩展:https://pecl.php.net/package/mongodb,本篇使用的1.13.0版本
tar -xvf mongodb-1.13.0.tgz -C /usr/local/
cd /usr/local/mongodb-1.13.0/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
安装完成后,设置php.ini
vi /usr/local/php/lib/php.ini
添加如下内容:
extension=mongodb.so
将ioncube_loader_lin_7.2.so文件复制到/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/里
mv ~/ioncube_loader_lin_7.2.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
在php.ini文件里,extension=redis.so下面添加下该内容
zend_extension=ioncube_loader_lin_7.2.so
vim /usr/local/php/etc/php-fpm.conf
找到以下内容并修改
pid = /var/run/php-fpm.pid
新建php-fpm服务文件
vim /usr/lib/systemd/system/php-fpm.service
输入以下内容
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载systemctl配置
systemctl daemon-reload
开机自启动php-fpm服务
systemctl enable php-fpm.service
状态管理
systemctl start php-fpm
systemctl status php-fpm
systemctl stop php-fpm
systemctl restart php-fpm
systemctl enable php-fpm
systemctl didable php-fpm
参考链接:https://cloud.tencent.com/developer/article/1902824
官网:https://downloads.mysql.com/archives/community/ 选择mysql5.7版本
tar -xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
chmod 750 /data/mysql
cat <<EOF>> /root/.bash_profile
export PATH=\$PATH:/usr/local/mysql/bin
EOF
生效环境变量
source /root/.bash_profile
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
获取到mysql root账号的初始化密码
mv /etc/my.cnf /etc/my.cnf.default
vim /etc/my.cnf
将下面的内容复制到my.cnf里
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
[mysqld]
binlog_cache_size = 64K
thread_stack = 256K
join_buffer_size = 1024K
query_cache_type = 1
max_heap_table_size = 64M
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 500M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 4M
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 64M
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 100
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/data/mysql/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/mysql
innodb_buffer_pool_size = 256M
innodb_log_file_size = 5M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1
[mysqldump]
quick
max_allowed_packet = 500M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
/usr/local/mysql/support-files/mysql.server start

关闭mysql:/usr/local/mysql/support-files/mysql.server stop
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
systemctl start mysqld #启动mysql
systemctl status mysqld #查看mysql状态
systemctl stop mysqld #停止mysql
systemctl restart mysqld #重启mysql
mysqladmin -uroot -pXB?fLu<g98*O password [新的密码]
有时候用mysqladmin无法修改密码,就需要使用下面的方法
#进入mysql
mysql -uroot -p
#修改密码
set password for root@localhost = password('[新的密码]');
创建一个名为duanshuo,密码为password的用户,只允许从特定主机(例如192.168.0.100)连接,
将‘192.168.0.100’改成 ‘%’,则为允许从任何主机连接;
将‘192.168.0.100’改成 ‘localhost’,则为允许从本地主机连接。
CREATE USER 'duanshuo'@'192.168.0.100' IDENTIFIED BY 'password';
创建一个数据库【osx】
CREATE DATABASE IF NOT EXISTS osx DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
对该角色进行授权,让其对短说的数据库拥有所有权限
GRANT ALL PRIVILEGES ON osx.* TO 'username'@'host' with grant option;
参考链接:https://developer.aliyun.com/article/789869
官网:https://redis.io/download/ 选择Redis7.2.6的版本
tar -xvf redis-7.2.6.tar.gz -C /usr/local/
mv /usr/local/redis-7.2.6/ /usr/local/redis/
cd /usr/local/redis
make MALLOC=libc
make install
cd /usr/local/redis
cp redis.conf redis.conf.default
vim redis.conf
在vi界面命令行模式下输入/daemonize no进行查找,并将该内容修改为··daemonize yes··,然后保存退出


启动redis:redis-server /usr/local/redis/redis.conf
关闭redis:redis-cli shutdown
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/6379.conf #之后redis的配置修改需要在6379.conf上
cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
cd /etc/init.d/
chkconfig redis on
vim /etc/redis/6379.conf
在vi界面命令行模式下输入/requirepass进行查找,并将前方的#删除,修改foobared为自己的密码,然后保存退出


然后修改下service文件
vim /etc/rc.d/init.d/redis
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')
然后将$CLIEXEC -p $REDISPORT shutdown替换成下面的
if [ -z $PASSWORD ]
then
$CLIEXEC -p $REDISPORT shutdown
else
$CLIEXEC -p $REDISPORT -a $PASSWORD shutdown
fi
最后保存执行
systemctl daemon-reload
编辑 /etc/redis/6379.conf
搜索 bind 127.0.0.1

然后在该行后面添加redis服务器的内网地址
根据实际情况分别修改**application/config.php**和**application/extra/queue.php**里的redis配置。
官网: https://nodejs.org 选择node18的版本
tar -xvf node-v18.20.8-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v18.20.8-linux-x64/ /usr/local/node/
sudo ln -s /usr/local/node/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/local/bin/npm
sudo ln -s /usr/local/node/bin/npx /usr/local/bin/npx
默认的官方源为国外地址,访问速度慢,需要更换成国内的
npm config set registry https://registry.npmmirror.com
npm install -g pm2
安装完成后,给pm2创建符号链接
ln -s /usr/local/node/bin/pm2 /usr/local/bin/pm2
mongo为非必须安装软件,不安装不会影响到短说功能上的使用。
根据自己的系统挑选mongodb的源码包,本章为centos7。
下载地址:https://www.mongodb.com/try/download/community-kubernetes-operator
tar -zxvf mongodb-linux-x86_64-rhel70-7.0.5.tgz -C /usr/local
mv /usr/local/mongodb-linux-x86_64-rhel70-7.0.5 /usr/local/mongodb
groupadd mongo
useradd -r -g mongo -s /bin/false mongo
chown -R mongo:mongo /usr/local/mongodb
mkdir -p /usr/local/mongodb/{log,data}
cat <<EOF>> /root/.bash_profile
export PATH=\$PATH:/usr/local/mongodb/bin
EOF
生效环境变量
source /root/.bash_profile
vim /usr/local/mongodb/mongodb.conf
输入以下内容,根据实际情况调整端口(port)和bindIp
## content
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/log/mongodb.log
# Where and how to store data.
storage:
dbPath: /usr/local/mongodb/data
directoryPerDB: true
# how the process runs
processManagement:
fork: true
pidFilePath: /var/run/mongod.pid
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#operationProfiling:
#replication:
# replSetName: bt_main
security:
authorization: enabled
javascriptEnabled: false
#sharding:
# clusterRole: shardsvr
mongod -f /usr/local/mongodb/mongodb.conf #启动
mongod -f /usr/local/mongodb/mongodb.conf --shutdown #停止
vim /lib/systemd/system/mongodb.service
输入以下内容:
[Unit]
Description=Mongodb Service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
加入开机自启动
systemctl enable mongodb
相关命令
systemctl start mongodb #启动mongodb
systemctl stop mongodb #停止mongodb
systemctl restart mongodb #重启mongodb
mongoDB 6.0版本之后。mongoDB安装目录的bin目录下是没有mongo.exe文件的,所以想要使用mongo,需要自行从mongodb官网下载([https://www.mongodb.com/try/download/shell](https://www.mongodb.com/try/download/shell)) 。
本文为centos系统,下载的是rpm包(mongodb-mongosh-2.2.3.x86_64.rpm)。
yum localinstall mongodb-mongosh-2.2.3.x86_64.rpm
mongosh
use admin
db.createUser(
{
user: "admin", #账号
pwd: "adminpassword", # 密码
roles: [ { role: "root", db: "admin" } ]
}
)
use osx;
创建用户,并授予读写权限。
db.createUser(
{
user: "duanshuo", #账号
pwd: "password", # 密码
roles: [ { role: "readWrite", db: "osx" } ]
}
)
修改application/core/util/MongoUtil.php第23行$url = "mongodb://127.0.0.1:27017";代码,将其修改如下
$url = "mongodb://duanshuo:password@127.0.0.1:27017/osx"
在nginx的conf/目录下,创建一个conf.d/的目录。
下载下方的3份txt文件,将其重命名成.conf文件,如果您没有H5/PC端的话,可以不下载osxh5.txt/osxpc.txt。
📎osxbackend.txt📎osxh5.txt📎osxpc.txt
对 osxbackend.conf文件进行修改
如果端口不是80或者443的话,则需要修改第2行或者第3行的端口。
server {
listen 80; #默认是80端口
# listen 443 ssl http2; #443端口是https的
将ssl证书上传到服务器里,推荐上传到nginx的conf/cert/里;
将第2行注释掉,取消第3行的注释;
将第30行到第40行的注释取消(中文注释不要取消哈),并且修改证书的路径和名称;
# ssl证书地址
#ssl_certificate cert/ssl.pem; # pem文件的路径
#ssl_certificate_key cert/ssl.key; # key文件的路径
# ssl验证相关配置
#ssl_session_timeout 5m; #缓存有效期
#ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法
#ssl_protocols TLSv1.2 TLSv1.3; #安全链接可选的加密协议
#ssl_prefer_server_ciphers on; #使用服务器端的首选算法
#ssl_session_cache shared:SSL:10m;
#error_page 497 https://$server_name$request_uri;
修改第4行的域名(xxx.com),改为实际的域名
server_name xxx.com; #后台域名
将短说后台代码同步到服务器里;
修改文件里第10行和第59行,root后面的路径,改为您同步代码时上传的路径;
location / {
root /var/www/html/osxbackend/; #改为实际路径
index index.php index.html index.htm;
if (!-e $request_filename){
rewrite ^(.*)(?:gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)(?:_)([0-9]+)x([0-9]+)(?:m([1-5]))?(?:v([A-Za-z0-9_]*))?$ commonapi/index/thumbImage.html?imgpath=1&width=$2&height=$3&mode=$4&v=$5 ;
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
...
location ~ \.php$ {
root /var/www/html/osxbackend/; #改为实际路径
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
systemctl restart nginx
具体参考 👇👇👇
此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/gogeem#FVxbb
若没有H5端,可跳过
首先,先编译H5端,具体编译过程可参考 👇👇👇
此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/dd6ds2
其次,对osxh5.conf文件进行修改
跟osxbackend.conf类似的修改,修改端口、ssl、域名、网站目录,最后同步到nginx/conf.d/下,重启nginx。浏览器访问域名,验证是否正常访问。
若没有PC端,可跳过
首先,先编译PC端,具体编译过程可参考 👇👇👇
此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/sh6xc5
其次,对osxh5.conf文件进行修改
除了修改端口、ssl、域名外,还需要将下面这段取消注释,开启反向代理。最后同步到nginx/conf.d/下,重启nginx。浏览器访问域名,验证是否正常访问。
#location / {
# proxy_pass http://127.0.0.1.:3000; #实际url
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Connection "upgrade";
# proxy_set_header Upgrade $http_upgrade;
# proxy_read_timeout 120s;
#}

