CentOS7 轻松部署 Laravel 应用
一、Linux 常用命令
# 查找文件位置
$ find / -name php.ini
# 查看某个程序运行情况
$ ps aux | grep php
# 查看端口情况
$ netstat -ntlp
1.1 systemctl 常用指令
$ systemctl start mysqld.service # 启动 MySql
$ systemctl stop mysqld.service # 停止 MySql
$ systemctl restart mysqld.service # 重启 MySql
$ systemctl status mysqld.service # 查看 MySql 运行状态
$ systemctl enable mysqld.service # 启用 MySql 开机启动
$ systemctl disable mysqld.service # 禁用 MySql 开机启动
更新软件源
$ yum update
$ yum clean packages
安装 nginx
yum install nginx
# 管理 Nginx 服务
$ systemctl start nginx # 启动 Nginx
$ systemctl stop nginx # 停止 Nginx
$ systemctl restart nginx # 重启 Nginx
# 使用 `systemctl` 命令开关服务的开机自启:
$ systemctl enable nginx # 启用 Nginx 开机启动
$ systemctl disable nginx # 禁用 Nginx 开机启动
安装 PHP-FPM
# 配置 yum 源【来源:https://webtatic.com/】
$ yum install epel-release
$ rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum 搜索源
$ yum search php72
# 安装 php
$ yum install -y php72w php72w-cli php72w-fpm
# 安装 php 扩展【https://webtatic.com/packages/php72/】
$ yum install -y php72w-mbstring php72w-xml php72w-bcmath
$ yum install -y php72w-gd php72w-mysql php72w-opcache php72w-process php72w-devel
# 查看 php 扩展
$ php -m
# 管理 PHP-FPM 服务
$ systemctl restart php-fpm # 重启 PHP-FPM
$ systemctl start php-fpm # 启动 PHP-FPM
$ systemctl stop php-fpm # 停止 PHP-FPM
# 开关机自启
$ systemctl enable php-fpm # 启用 PHP-FPM 开机启动
$ systemctl disable php-fpm # 禁用 PHP-FPM 开机启动
# 确认 PHP-FPM 正常运行
$ ps aux | grep php
安装 Git
$ yum install -y git
$ git --version # 查看 git 版本
# 生成 SSH 秘钥
$ ls -al ~/.ssh # 查看是否 存在 `id_rsa` 与文件 `id_rsa.pub`
$ ssh-keygen -t rsa -C "your_email@example.com" # 一路回车【密码为空】
$ ls -al ~/.ssh # 再次查看是否生成成功
$ cat ~/.ssh/id_rsa.pub # 查看公钥内容
安装 Composer
【来源:https://getcomposer.org/download/】
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" # 或者使用 `$ wget -O composer-setup.php https://getcomposer.org/installer`
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php --filename=composer --install-dir=/usr/local/bin --version=1.9.0
$ php -r "unlink('composer-setup.php');"
# 检查安装情况
$ composer --version
# 淘宝全量镜像【https://learnku.com/composer/wikis/30594】
$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# composer 故障排除
https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode
安装 NodeJs
# 卸载并添加 yum 源
$ yum remove nodejs
$ yum clean all && yum makecache fast
$ yum install -y gcc-c++ make
$ curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash -
# 安装 nodejs
$ yum install -y nodejs
# 查看安装情况
$ node -v
$ npm -v
# 添加淘宝镜像
$ npm config set registry https://registry.npm.taobao.org
安装 yarn
【参考:https://tecadmin.net/install-yarn-centos/】
$ npm install yarn -g
$ yarn -v
# 添加淘宝镜像
$ yarn config set registry https://registry.npm.taobao.org
部署 laravel 应用
$ mkdir /data/website && cd /data/website # 创建项目目录
# 使用 composer 创建 laravel 项目
# 注意:此过程中如果 composer 遇到问题: [请根据此连接进行排查...](https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode)
$ composer create-project --prefer-dist laravel/laravel blog "5.8.*"
$ cd /data/website/blog # 进入项目目录
$ chomd -R 777 storage/ # 设置权限
$ chmod -R 777 bootstrap/cache/ # 设置权限
# 配置 nginx 服务器
$ vim /etc/nginx/conf.d/blog.conf
# 输入以下内容 ##########################################
server {
listen 80;
server_name test.learnku.net; # 此为必修改项,请替换为服务器公网 IP 或域名
root /data/website/blog/public; # 此为必修改项,请注意指向站点根目录的 public 子目录
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
try_files $uri = 400;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
#######################################################
# 重启 nginx 服务器
$ systemctl restart nginx
# 此时域名配置好解析后访问就可以啦。
安装 MySql
# 安装 mysql 官方 yum 源
$ rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 查看 MySQL yum 源
$ yum list | grep mysql # 发现只有 mysql80 的包,这是因为没有开启 mysql57 的包
# 关闭 80 包,开启 57 包
$ yum-config-manager --disable mysql80-community
$ yum-config-manager --enable mysql57-community
# 再次查看 MySQL yum 源
$ yum list | grep mysql # 发现有了 mysql57 的包
# 安装 mysql
$ yum install -y mysql-community-server
$ yum install -y mysql-community-client # 根据需要安装(可不装)
# 管理 mysql
$ systemctl start mysqld # 启动 mysql
$ systemctl stop mysqld # 停止 mysql
# 查看超级账户 root 临时密码
$ grep 'temporary password' /var/log/mysqld.log
# 修改超级账户 root 密码
$ mysql -uroot -p
mysql> ALTER USER "root"@"localhost" IDENTIFIED BY '你的新密码';
mysql> flush privileges;
mysql> exit;
$ systemctl restart mysqld.service
安装 Redis
# [下载 fedora 的 epel 仓库](https://fedoraproject.org/wiki/EPEL/zh-cn)
$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum install -y redis
$ cat /etc/redis.conf # 查看 redis 配置文件【根据需要自行修改】
# 管理程序
$ systemctl start redis # 启动 redis
$ systemctl stop redis # 停止 redis
# 测试 redis
$ ps aux | grep redis # 查看 redis 启动情况
$ redis-cli # 进入 redis 交互命令
redis> keys *
redis> exit # 退出 redis 交互命令
# 客户端程序 PhpRedisAdmin 如有需要自行安装
安装 Memcached
$ yum search memcached # 查看 yum 源中是否存在 memcached
$ yum info memcached # 查看 yum 源中 memcached 版本
$ yum install memcached
# 管理程序
$ systemctl start memcached.service # 启动 memcached 服务
$ systemctl stop memcached.service # 停止 memcached 服务
# 测试 memcached
$ yum install -y telnet
$ telnet 127.0.0.1 11211 # 连接 memcached
memcached> add username 0 0 7
memcached> get username
memcached> quit # 退出 memcached
安装 MongoDB
【官方安装手册】
# 添加 yum 源
$ vim /etc/yum.repos.d/mongodb-org-4.2.repo
# 输入以下内容 ##########################################
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
#######################################################
$ yum install -y mongodb-org
# 管理 mongodb 【参考:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#id4】
$ systemctl start mongod.service # 启动
$ systemctl stop mongod.service # 停止
安装 OpenCC
# 安装依赖
$ # 注意需要 gcc 版本 >= 4.6
$ yum install -y cmake
$ yum install -y doxygen
# 安装 OpenCC【https://github.com/BYVoid/OpenCC】
$ cd /usr/local/src
$ git clone https://github.com/BYVoid/OpenCC.git --depth 1
$ cd OpenCC/
$ make
$ make install
$ opencc --version # 查看 opencc 版本(如果报错)
# 我安装的过程中遇到第1个报错 #####################################################
# 报错信息:
`opencc: error while loading shared libraries: libopencc.so.2: cannot open shared object file: No such file or directory`
# 查找问题
$ find / -name libopencc.so* # 先在系统上查找一下对应文件
# 报错原因:我们要找的 libopencc.so.2 ,在/usb/lib/下面,在 /usr/lib64 下没有(所以我们需要做一下软链)
$ ln -s /usr/lib/libopencc.so.2 /usr/lib64/libopencc.so.2
###############################################################################
# 再次验证
$ opencc --version # 查看 opencc 版本(发现此时 ok 了)
# 测试
$ echo '嚴格區分「一簡對多繁」和「一簡對多異」' | opencc -c t2s
安装 opencc4php
$ cd /usr/local/src
$ git clone https://github.com/nauxliu/opencc4php.git --depth 1
$ cd opencc4php/
$ phpize
$ ./configure
$ make && sudo make install
# 查看最后一句提示:Installing shared extensions: /usr/lib64/php/modules/
# 添加 php 扩展
$ find / -name php.ini # 找到 php.ini 位置
$ vim /etc/php.ini # 上一步找到的文件
# 要添加的内容 ##################################################################
# 通过关键字 `extension` 找到对应的位置添加以下内容即可:
; OpenCC 扩展
extension=opencc.so
###############################################################################
# 重启 php-fpm
$ systemctl restart php-fpm.service
$ php -m # 查看 php 扩展中是否有了 `opencc`
# 测试
$ cd /data/website/
$ vim index.php
# 要添加的内容 ##################################################################
<?php
$od = opencc_open("s2twp.json"); //传入配置文件名
$text = opencc_convert("严格区分", $od);
echo $text . PHP_EOL;
opencc_close($od);
###############################################################################
# 测试【具体使用见:https://github.com/NauxLiu/opencc4php】
$ php index.php # 输出 "嚴格區分";
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。